Merge "Adjust UX for toggles when active scorer is not set."

This commit is contained in:
TreeHugger Robot
2017-07-05 21:19:58 +00:00
committed by Android (Google) Code Review
6 changed files with 166 additions and 45 deletions

View File

@@ -25,7 +25,6 @@ import android.provider.SearchIndexableResource;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.network.NetworkScoreManagerWrapper;
import com.android.settings.network.NetworkScorerPickerPreferenceController;
@@ -43,6 +42,7 @@ public class ConfigureWifiSettings extends DashboardFragment {
private static final String TAG = "ConfigureWifiSettings";
private WifiWakeupPreferenceController mWifiWakeupPreferenceController;
private UseOpenWifiPreferenceController mUseOpenWifiPreferenceController;
@Override
@@ -58,8 +58,14 @@ public class ConfigureWifiSettings extends DashboardFragment {
@Override
public void onAttach(Context context) {
super.onAttach(context);
mProgressiveDisclosureMixin.setTileLimit(
mUseOpenWifiPreferenceController.isAvailable() ? 3 : 2);
int tileLimit = 1;
if (mWifiWakeupPreferenceController.isAvailable()) {
tileLimit++;
}
if (mUseOpenWifiPreferenceController.isAvailable()) {
tileLimit++;
}
mProgressiveDisclosureMixin.setTileLimit(tileLimit);
}
@Override
@@ -71,11 +77,13 @@ public class ConfigureWifiSettings extends DashboardFragment {
protected List<AbstractPreferenceController> getPreferenceControllers(Context context) {
final NetworkScoreManagerWrapper networkScoreManagerWrapper =
new NetworkScoreManagerWrapper(context.getSystemService(NetworkScoreManager.class));
mWifiWakeupPreferenceController = new WifiWakeupPreferenceController(
context, getLifecycle(), networkScoreManagerWrapper);
mUseOpenWifiPreferenceController = new UseOpenWifiPreferenceController(context, this,
networkScoreManagerWrapper, getLifecycle());
final WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new WifiWakeupPreferenceController(context, getLifecycle()));
controllers.add(mWifiWakeupPreferenceController);
controllers.add(new NetworkScorerPickerPreferenceController(context,
networkScoreManagerWrapper));
controllers.add(new NotifyOpenNetworksPreferenceController(context, getLifecycle()));

View File

@@ -8,7 +8,6 @@ import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver;
import android.net.NetworkScoreManager;
import android.net.NetworkScorerAppData;
import android.net.Uri;
import android.os.Handler;
@@ -20,14 +19,17 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
import com.android.settings.network.NetworkScoreManagerWrapper;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.network.NetworkScoreManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
import java.util.List;
/**
* {@link AbstractPreferenceController} that controls whether a user wants to enable the "use open
* networks automatically" feature provider by the current network recommendation provider.
@@ -45,6 +47,7 @@ public class UseOpenWifiPreferenceController extends AbstractPreferenceControlle
private Preference mPreference;
private ComponentName mEnableUseWifiComponentName;
private boolean mDoFeatureSupportedScorersExist;
public UseOpenWifiPreferenceController(Context context, Fragment fragment,
NetworkScoreManagerWrapper networkScoreManagerWrapper, Lifecycle lifecycle) {
@@ -54,6 +57,7 @@ public class UseOpenWifiPreferenceController extends AbstractPreferenceControlle
mNetworkScoreManagerWrapper = networkScoreManagerWrapper;
mSettingObserver = new SettingObserver();
updateEnableUseWifiComponentName();
checkForFeatureSupportedScorers();
lifecycle.addObserver(this);
}
@@ -63,6 +67,21 @@ public class UseOpenWifiPreferenceController extends AbstractPreferenceControlle
appData == null ? null : appData.getEnableUseOpenWifiActivity();
}
private void checkForFeatureSupportedScorers() {
if (mEnableUseWifiComponentName != null) {
mDoFeatureSupportedScorersExist = true;
return;
}
List<NetworkScorerAppData> scorers = mNetworkScoreManagerWrapper.getAllValidScorers();
for (NetworkScorerAppData scorer : scorers) {
if (scorer.getEnableUseOpenWifiActivity() != null) {
mDoFeatureSupportedScorersExist = true;
return;
}
}
mDoFeatureSupportedScorersExist = false;
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
@@ -81,7 +100,7 @@ public class UseOpenWifiPreferenceController extends AbstractPreferenceControlle
@Override
public boolean isAvailable() {
return mEnableUseWifiComponentName != null;
return mDoFeatureSupportedScorersExist;
}
@Override
@@ -95,8 +114,23 @@ public class UseOpenWifiPreferenceController extends AbstractPreferenceControlle
return;
}
final SwitchPreference useOpenWifiPreference = (SwitchPreference) preference;
useOpenWifiPreference.setVisible(isAvailable());
boolean isScorerSet = mNetworkScoreManagerWrapper.getActiveScorerPackage() != null;
boolean doesActiveScorerSupportFeature = mEnableUseWifiComponentName != null;
useOpenWifiPreference.setChecked(isSettingEnabled());
useOpenWifiPreference.setVisible(isAvailable());
useOpenWifiPreference.setEnabled(isScorerSet && doesActiveScorerSupportFeature);
if (!isScorerSet) {
useOpenWifiPreference.setSummary(
R.string.use_open_wifi_automatically_summary_scoring_disabled);
} else if (!doesActiveScorerSupportFeature) {
useOpenWifiPreference.setSummary(
R.string.use_open_wifi_automatically_summary_scorer_unsupported_disabled);
} else {
useOpenWifiPreference.setSummary(R.string.use_open_wifi_automatically_summary);
}
}
@Override

View File

@@ -26,9 +26,10 @@ import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.network.NetworkScoreManagerWrapper;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -43,10 +44,13 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause {
private static final String KEY_ENABLE_WIFI_WAKEUP = "enable_wifi_wakeup";
private final NetworkScoreManagerWrapper mNetworkScoreManager;
private SettingObserver mSettingObserver;
public WifiWakeupPreferenceController(Context context, Lifecycle lifecycle) {
public WifiWakeupPreferenceController(
Context context, Lifecycle lifecycle, NetworkScoreManagerWrapper networkScoreManager) {
super(context);
mNetworkScoreManager = networkScoreManager;
lifecycle.addObserver(this);
}
@@ -112,11 +116,17 @@ public class WifiWakeupPreferenceController extends AbstractPreferenceController
boolean networkRecommendationsEnabled = Settings.Global.getInt(
mContext.getContentResolver(),
Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED, 0) == 1;
enableWifiWakeup.setEnabled(networkRecommendationsEnabled && wifiScanningEnabled);
boolean activeScorerSet = mNetworkScoreManager.getActiveScorerPackage() != null;
enableWifiWakeup.setEnabled(
networkRecommendationsEnabled && wifiScanningEnabled && activeScorerSet);
enableWifiWakeup.setSummary(wifiScanningEnabled ?
R.string.wifi_wakeup_summary :
R.string.wifi_wakeup_summary_scanning_disabled);
if (!activeScorerSet) {
enableWifiWakeup.setSummary(R.string.wifi_wakeup_summary_scoring_disabled);
} else if (!wifiScanningEnabled) {
enableWifiWakeup.setSummary(R.string.wifi_wakeup_summary_scanning_disabled);
} else {
enableWifiWakeup.setSummary(R.string.wifi_wakeup_summary);
}
}
class SettingObserver extends ContentObserver {