Merge "[Settings] Support master switch of inline toggle of Settings Injection v2"
This commit is contained in:
@@ -60,6 +60,7 @@ import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.dashboard.profileselector.ProfileSelectDialog;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.widget.MasterSwitchPreference;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.drawer.ActivityTile;
|
||||
import com.android.settingslib.drawer.DashboardCategory;
|
||||
@@ -303,7 +304,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
setSwitchEnabled(pref, false);
|
||||
ThreadUtils.postOnBackgroundThread(() -> {
|
||||
final Map<String, IContentProvider> providerMap = new ArrayMap<>();
|
||||
final Bundle result = TileUtils.putBooleanToUri(mContext, uri, providerMap,
|
||||
final Bundle result = TileUtils.putBooleanToUriAndGetResult(mContext, uri, providerMap,
|
||||
EXTRA_SWITCH_CHECKED_STATE, checked);
|
||||
|
||||
ThreadUtils.postOnMainThread(() -> {
|
||||
@@ -335,14 +336,20 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
}
|
||||
|
||||
private void setSwitchChecked(Preference pref, boolean checked) {
|
||||
if (pref instanceof SwitchPreference) {
|
||||
if (pref instanceof MasterSwitchPreference) {
|
||||
((MasterSwitchPreference) pref).setChecked(checked);
|
||||
} else if (pref instanceof SwitchPreference) {
|
||||
((SwitchPreference) pref).setChecked(checked);
|
||||
}
|
||||
}
|
||||
|
||||
private void setSwitchEnabled(Preference pref, boolean enabled) {
|
||||
if (pref instanceof MasterSwitchPreference) {
|
||||
((MasterSwitchPreference) pref).setSwitchEnabled(enabled);
|
||||
} else {
|
||||
pref.setEnabled(enabled);
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void bindIcon(Preference preference, Tile tile, boolean forceRoundedIcon) {
|
||||
|
@@ -38,6 +38,7 @@ import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.PreferenceControllerListHelper;
|
||||
import com.android.settings.core.SettingsBaseActivity;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.widget.MasterSwitchPreference;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||
@@ -453,6 +454,8 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
Preference createPreference(Tile tile) {
|
||||
return tile instanceof ProviderTile
|
||||
? new SwitchPreference(getPrefContext())
|
||||
: tile.hasSwitch()
|
||||
? new MasterSwitchPreference(getPrefContext())
|
||||
: new Preference(getPrefContext());
|
||||
}
|
||||
|
||||
|
@@ -36,6 +36,7 @@ public class MasterSwitchPreference extends TwoTargetPreference {
|
||||
|
||||
private Switch mSwitch;
|
||||
private boolean mChecked;
|
||||
private boolean mCheckedSet;
|
||||
private boolean mEnableSwitch = true;
|
||||
|
||||
public MasterSwitchPreference(Context context, AttributeSet attrs,
|
||||
@@ -94,11 +95,16 @@ public class MasterSwitchPreference extends TwoTargetPreference {
|
||||
}
|
||||
|
||||
public void setChecked(boolean checked) {
|
||||
// Always set checked the first time; don't assume the field's default of false.
|
||||
final boolean changed = mChecked != checked;
|
||||
if (changed || !mCheckedSet) {
|
||||
mChecked = checked;
|
||||
mCheckedSet = true;
|
||||
if (mSwitch != null) {
|
||||
mSwitch.setChecked(checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setSwitchEnabled(boolean enabled) {
|
||||
mEnableSwitch = enabled;
|
||||
|
@@ -48,6 +48,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settings.slices.BlockingSlicePrefController;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settings.widget.MasterSwitchPreference;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||
@@ -323,6 +324,15 @@ public class DashboardFragmentTest {
|
||||
assertThat(pref).isInstanceOf(SwitchPreference.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createPreference_isActivityTileAndHasSwitch_returnMasterSwitchPreference() {
|
||||
mActivityTile.getMetaData().putString(META_DATA_PREFERENCE_SWITCH_URI, "uri");
|
||||
|
||||
final Preference pref = mTestFragment.createPreference(mActivityTile);
|
||||
|
||||
assertThat(pref).isInstanceOf(MasterSwitchPreference.class);
|
||||
}
|
||||
|
||||
private static class TestPreferenceController extends AbstractPreferenceController
|
||||
implements PreferenceControllerMixin {
|
||||
|
||||
|
@@ -58,7 +58,7 @@ public class ShadowTileUtils {
|
||||
}
|
||||
|
||||
@Implementation
|
||||
public static Bundle putBooleanToUri(Context context, Uri uri,
|
||||
public static Bundle putBooleanToUriAndGetResult(Context context, Uri uri,
|
||||
Map<String, IContentProvider> providerMap, String key, boolean value) {
|
||||
sChecked = value;
|
||||
return sResult;
|
||||
|
Reference in New Issue
Block a user