diff options
author | Stanley Wang <stanleytfwang@google.com> | 2021-02-03 23:40:46 +0800 |
---|---|---|
committer | Stanley Wang <stanleytfwang@google.com> | 2021-02-23 16:21:52 +0800 |
commit | 86cc0579f32145f64737000ceca5e3905fb901df (patch) | |
tree | d633beb236b1a5651178185a084172e8e9d1a541 /src | |
parent | a9f090358156c89db6ab05f5fdf313331f7b4101 (diff) | |
download | packages_apps_Settings-86cc0579f32145f64737000ceca5e3905fb901df.tar.gz packages_apps_Settings-86cc0579f32145f64737000ceca5e3905fb901df.tar.bz2 packages_apps_Settings-86cc0579f32145f64737000ceca5e3905fb901df.zip |
Replace the SwitchBar with MainSwitch.
- Update wi-fi calling switch.
- Update the switches in Accessibility
Fix: 178673860
Fix: 177968565
Test: Run robotest and apply the widget in Settings and see the ui
Change-Id: Id10e6a110f418ea500a2eaf3c54752bef4f36507
Diffstat (limited to 'src')
15 files changed, 154 insertions, 170 deletions
diff --git a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java index 6b44a0a0f8..0c1876f95d 100644 --- a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java @@ -38,7 +38,7 @@ public class InvisibleToggleAccessibilityServicePreferenceFragment extends @Override protected void onInstallSwitchPreferenceToggleSwitch() { super.onInstallSwitchPreferenceToggleSwitch(); - mToggleServiceDividerSwitchPreference.setVisible(false); + mToggleServiceSwitchPreference.setVisible(false); } /** diff --git a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java index b2c3c4dbf8..4db7857786 100644 --- a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java +++ b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java @@ -36,15 +36,14 @@ import android.view.View; import android.view.accessibility.AccessibilityManager; import androidx.annotation.Nullable; -import androidx.preference.SwitchPreference; import com.android.settings.R; +import com.android.settings.widget.SettingsMainSwitchPreference; import java.util.List; /** Fragment for providing open activity button. */ -public class LaunchAccessibilityActivityPreferenceFragment extends - ToggleFeaturePreferenceFragment { +public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeaturePreferenceFragment { private static final String TAG = "LaunchA11yActivity"; private static final String EMPTY_STRING = ""; @@ -52,7 +51,7 @@ public class LaunchAccessibilityActivityPreferenceFragment extends public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mToggleServiceDividerSwitchPreference.setSwitchVisibility(View.GONE); + mToggleServiceSwitchPreference.hide(); } @Override @@ -62,16 +61,6 @@ public class LaunchAccessibilityActivityPreferenceFragment extends } @Override - protected void onInstallSwitchPreferenceToggleSwitch() { - super.onInstallSwitchPreferenceToggleSwitch(); - mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener((preference) -> { - final boolean checked = ((DividerSwitchPreference) preference).isChecked(); - onPreferenceToggled(mPreferenceKey, checked); - return false; - }); - } - - @Override protected void onProcessArguments(Bundle arguments) { super.onProcessArguments(arguments); @@ -111,7 +100,7 @@ public class LaunchAccessibilityActivityPreferenceFragment extends } @Override - protected void updateToggleServiceTitle(SwitchPreference switchPreference) { + protected void updateToggleServiceTitle(SettingsMainSwitchPreference switchPreference) { final AccessibilityShortcutInfo info = getAccessibilityShortcutInfo(); final String switchBarText = (info == null) ? EMPTY_STRING : getString( R.string.accessibility_service_primary_open_title, diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index 04491cccd4..02016e5e03 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -41,14 +41,15 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.View; import android.view.accessibility.AccessibilityManager; +import android.widget.Switch; import androidx.preference.Preference; -import androidx.preference.SwitchPreference; import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; import com.android.settings.password.ConfirmDeviceCredentialActivity; +import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.accessibility.AccessibilityUtils; import java.util.List; @@ -198,7 +199,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends } @Override - protected void updateToggleServiceTitle(SwitchPreference switchPreference) { + protected void updateToggleServiceTitle(SettingsMainSwitchPreference switchPreference) { final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); final String switchBarText = (info == null) ? "" : getString(R.string.accessibility_service_primary_switch_title, @@ -206,13 +207,14 @@ public class ToggleAccessibilityServicePreferenceFragment extends switchPreference.setTitle(switchBarText); } - private void updateSwitchBarToggleSwitch() { + @Override + protected void updateSwitchBarToggleSwitch() { final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext()) .contains(mComponentName); - if (mToggleServiceDividerSwitchPreference.isChecked() == checked) { + if (mToggleServiceSwitchPreference.isChecked() == checked) { return; } - mToggleServiceDividerSwitchPreference.setChecked(checked); + mToggleServiceSwitchPreference.setChecked(checked); } /** @@ -263,7 +265,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends } private void handleConfirmServiceEnabled(boolean confirmed) { - mToggleServiceDividerSwitchPreference.setChecked(confirmed); + mToggleServiceSwitchPreference.setChecked(confirmed); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, confirmed); onPreferenceToggled(mPreferenceKey, confirmed); } @@ -286,9 +288,10 @@ public class ToggleAccessibilityServicePreferenceFragment extends } @Override - protected void onInstallSwitchPreferenceToggleSwitch() { - super.onInstallSwitchPreferenceToggleSwitch(); - mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener(this::onPreferenceClick); + public void onSwitchChanged(Switch switchView, boolean isChecked) { + if (isChecked != mToggleServiceSwitchPreference.isChecked()) { + onPreferenceClick(mToggleServiceSwitchPreference); + } } @Override @@ -296,7 +299,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends final int shortcutTypes = retrieveUserShortcutType(getPrefContext(), mComponentName.flattenToString(), UserShortcutType.SOFTWARE); if (preference.isChecked()) { - if (!mToggleServiceDividerSwitchPreference.isChecked()) { + if (!mToggleServiceSwitchPreference.isChecked()) { preference.setChecked(false); showPopupDialog(DialogEnums.ENABLE_WARNING_FROM_SHORTCUT_TOGGLE); } else { @@ -314,7 +317,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends @Override public void onSettingsClicked(ShortcutPreference preference) { final boolean isServiceOnOrShortcutAdded = mShortcutPreference.isChecked() - || mToggleServiceDividerSwitchPreference.isChecked(); + || mToggleServiceSwitchPreference.isChecked(); showPopupDialog(isServiceOnOrShortcutAdded ? DialogEnums.EDIT_SHORTCUT : DialogEnums.ENABLE_WARNING_FROM_SHORTCUT); } @@ -453,9 +456,14 @@ public class ToggleAccessibilityServicePreferenceFragment extends } private boolean onPreferenceClick(Preference preference) { - boolean checked = ((DividerSwitchPreference) preference).isChecked(); + boolean checked = ((SettingsMainSwitchPreference) preference).isChecked(); if (checked) { - mToggleServiceDividerSwitchPreference.setChecked(false); + mToggleServiceSwitchPreference.setChecked(true); + getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, + /* enableService */ true); + showDialog(DialogEnums.DISABLE_WARNING_FROM_TOGGLE); + } else { + mToggleServiceSwitchPreference.setChecked(false); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, /* disableService */ false); if (!mShortcutPreference.isChecked()) { @@ -466,11 +474,6 @@ public class ToggleAccessibilityServicePreferenceFragment extends showPopupDialog(DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL); } } - } else { - mToggleServiceDividerSwitchPreference.setChecked(true); - getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, - /* enableService */ true); - showDialog(DialogEnums.DISABLE_WARNING_FROM_TOGGLE); } return true; } diff --git a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java index a45cd49656..7fd30c6755 100644 --- a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java @@ -31,15 +31,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import androidx.preference.SwitchPreference; - import com.android.settings.R; +import com.android.settings.widget.SettingsMainSwitchPreference; import java.util.ArrayList; import java.util.List; /** Settings page for color inversion. */ -public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePreferenceFragment { +public class ToggleColorInversionPreferenceFragment extends + ToggleFeaturePreferenceFragment { private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED; private final Handler mHandler = new Handler(); @@ -64,26 +64,15 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere @Override protected void onRemoveSwitchPreferenceToggleSwitch() { super.onRemoveSwitchPreferenceToggleSwitch(); - mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener(null); + mToggleServiceSwitchPreference.setOnPreferenceClickListener(null); } @Override - protected void updateToggleServiceTitle(SwitchPreference switchPreference) { + protected void updateToggleServiceTitle(SettingsMainSwitchPreference switchPreference) { switchPreference.setTitle(R.string.accessibility_display_inversion_switch_title); } @Override - protected void onInstallSwitchPreferenceToggleSwitch() { - super.onInstallSwitchPreferenceToggleSwitch(); - updateSwitchBarToggleSwitch(); - mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener((preference) -> { - boolean checked = ((SwitchPreference) preference).isChecked(); - onPreferenceToggled(mPreferenceKey, checked); - return false; - }); - } - - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mComponentName = COLOR_INVERSION_COMPONENT_NAME; @@ -128,11 +117,12 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere mComponentName); } - private void updateSwitchBarToggleSwitch() { + @Override + protected void updateSwitchBarToggleSwitch() { final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON; - if (mToggleServiceDividerSwitchPreference.isChecked() == checked) { + if (mToggleServiceSwitchPreference.isChecked() == checked) { return; } - mToggleServiceDividerSwitchPreference.setChecked(checked); + mToggleServiceSwitchPreference.setChecked(checked); } } diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java index 3fb9b38e5c..c12884b04a 100644 --- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java @@ -33,11 +33,10 @@ import android.view.View; import android.view.ViewGroup; import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; -import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexable; @@ -99,34 +98,19 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - updatePreferenceOrder(); } /** Customizes the order by preference key. */ - private List<String> getPreferenceOrderList() { - List<String> lists = new ArrayList<>(); - lists.add(KEY_PREVIEW); + protected List<String> getPreferenceOrderList() { + final List<String> lists = new ArrayList<>(); lists.add(KEY_USE_SERVICE_PREFERENCE); + lists.add(KEY_PREVIEW); lists.add(KEY_CATEGORY_MODE); lists.add(KEY_GENERAL_CATEGORY); lists.add(KEY_INTRODUCTION_CATEGORY); return lists; } - private void updatePreferenceOrder() { - List<String> lists = getPreferenceOrderList(); - final PreferenceScreen preferenceScreen = getPreferenceScreen(); - preferenceScreen.setOrderingAsAdded(false); - - final int size = lists.size(); - for (int i = 0; i < size; i++) { - final Preference preference = preferenceScreen.findPreference(lists.get(i)); - if (preference != null) { - preference.setOrder(i); - } - } - } - @Override public void onResume() { super.onResume(); @@ -175,37 +159,27 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe @Override protected void onRemoveSwitchPreferenceToggleSwitch() { super.onRemoveSwitchPreferenceToggleSwitch(); - mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener(null); + mToggleServiceSwitchPreference.setOnPreferenceClickListener(null); } @Override - protected void updateToggleServiceTitle(SwitchPreference switchPreference) { + protected void updateToggleServiceTitle(SettingsMainSwitchPreference switchPreference) { switchPreference.setTitle(R.string.accessibility_daltonizer_primary_switch_title); } @Override - protected void onInstallSwitchPreferenceToggleSwitch() { - super.onInstallSwitchPreferenceToggleSwitch(); - updateSwitchBarToggleSwitch(); - mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener((preference) -> { - boolean checked = ((SwitchPreference) preference).isChecked(); - onPreferenceToggled(mPreferenceKey, checked); - return false; - }); - } - - @Override int getUserShortcutTypes() { return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), mComponentName); } - private void updateSwitchBarToggleSwitch() { + @Override + protected void updateSwitchBarToggleSwitch() { final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON; - if (mToggleServiceDividerSwitchPreference.isChecked() == checked) { + if (mToggleServiceSwitchPreference.isChecked() == checked) { return; } - mToggleServiceDividerSwitchPreference.setChecked(checked); + mToggleServiceSwitchPreference.setChecked(checked); } public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index 87d07a82b9..ec22a28aee 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -40,20 +40,22 @@ import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener; import android.widget.CheckBox; import android.widget.ImageView; +import android.widget.Switch; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; -import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; import com.android.settings.widget.SettingsMainSwitchBar; +import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.accessibility.AccessibilityUtils; import com.android.settingslib.widget.FooterPreference; +import com.android.settingslib.widget.OnMainSwitchChangeListener; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -66,9 +68,9 @@ import java.util.Locale; * and dialog management. */ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreferenceFragment - implements ShortcutPreference.OnClickCallback { + implements ShortcutPreference.OnClickCallback, OnMainSwitchChangeListener { - protected DividerSwitchPreference mToggleServiceDividerSwitchPreference; + protected SettingsMainSwitchPreference mToggleServiceSwitchPreference; protected ShortcutPreference mShortcutPreference; protected Preference mSettingsPreference; protected String mPreferenceKey; @@ -88,6 +90,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference protected static final String KEY_INTRODUCTION_CATEGORY = "introduction_categories"; private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference"; protected static final String KEY_SAVED_USER_SHORTCUT_TYPE = "shortcut_type"; + protected static final String KEY_ANIMATED_IMAGE = "animated_image"; private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener; private SettingsContentObserver mSettingsContentObserver; @@ -153,7 +156,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference onProcessArguments(getArguments()); initAnimatedImagePreference(); - initToggleServiceDividerSwitchPreference(); + initToggleServiceSwitchPreference(); initGeneralCategory(); initShortcutPreference(); initSettingsPreference(); @@ -162,7 +165,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference installActionBarToggleSwitch(); - updateToggleServiceTitle(mToggleServiceDividerSwitchPreference); + updateToggleServiceTitle(mToggleServiceSwitchPreference); mTouchExplorationStateChangeListener = isTouchExplorationEnabled -> { removeDialog(DialogEnums.EDIT_SHORTCUT); @@ -178,6 +181,8 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference final SettingsActivity activity = (SettingsActivity) getActivity(); final SettingsMainSwitchBar switchBar = activity.getSwitchBar(); switchBar.hide(); + + updatePreferenceOrder(); } @Override @@ -305,12 +310,17 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference removeActionBarToggleSwitch(); } + @Override + public void onSwitchChanged(Switch switchView, boolean isChecked) { + onPreferenceToggled(mPreferenceKey, isChecked); + } + /** * Returns the shortcut type list which has been checked by user. */ abstract int getUserShortcutTypes(); - protected void updateToggleServiceTitle(SwitchPreference switchPreference) { + protected void updateToggleServiceTitle(SettingsMainSwitchPreference switchPreference) { switchPreference.setTitle(R.string.accessibility_service_primary_switch_title); } @@ -318,18 +328,24 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference protected void onInstallSwitchPreferenceToggleSwitch() { // Implement this to set a checked listener. + updateSwitchBarToggleSwitch(); + mToggleServiceSwitchPreference.addOnSwitchChangeListener(this); } protected void onRemoveSwitchPreferenceToggleSwitch() { // Implement this to reset a checked listener. } + protected void updateSwitchBarToggleSwitch() { + // Implement this to update the state of switch. + } + private void installActionBarToggleSwitch() { onInstallSwitchPreferenceToggleSwitch(); } private void removeActionBarToggleSwitch() { - mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener(null); + mToggleServiceSwitchPreference.setOnPreferenceClickListener(null); onRemoveSwitchPreferenceToggleSwitch(); } @@ -361,6 +377,31 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference } } + /** Customizes the order by preference key. */ + protected List<String> getPreferenceOrderList() { + final List<String> lists = new ArrayList<>(); + lists.add(KEY_USE_SERVICE_PREFERENCE); + lists.add(KEY_ANIMATED_IMAGE); + lists.add(KEY_GENERAL_CATEGORY); + lists.add(KEY_INTRODUCTION_CATEGORY); + return lists; + } + + private void updatePreferenceOrder() { + final List<String> lists = getPreferenceOrderList(); + + final PreferenceScreen preferenceScreen = getPreferenceScreen(); + preferenceScreen.setOrderingAsAdded(false); + + final int size = lists.size(); + for (int i = 0; i < size; i++) { + final Preference preference = preferenceScreen.findPreference(lists.get(i)); + if (preference != null) { + preference.setOrder(i); + } + } + } + private Drawable getDrawableFromUri(Uri imageUri) { if (mImageGetterCacheView == null) { mImageGetterCacheView = new ImageView(getPrefContext()); @@ -401,19 +442,20 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference animatedImagePreference.setImageUri(mImageUri); animatedImagePreference.setSelectable(false); animatedImagePreference.setMaxHeight(screenHalfHeight); + animatedImagePreference.setKey(KEY_ANIMATED_IMAGE); getPreferenceScreen().addPreference(animatedImagePreference); } - private void initToggleServiceDividerSwitchPreference() { - mToggleServiceDividerSwitchPreference = new DividerSwitchPreference(getPrefContext()); - mToggleServiceDividerSwitchPreference.setKey(KEY_USE_SERVICE_PREFERENCE); + private void initToggleServiceSwitchPreference() { + mToggleServiceSwitchPreference = new SettingsMainSwitchPreference(getPrefContext()); + mToggleServiceSwitchPreference.setKey(KEY_USE_SERVICE_PREFERENCE); if (getArguments().containsKey(AccessibilitySettings.EXTRA_CHECKED)) { final boolean enabled = getArguments().getBoolean(AccessibilitySettings.EXTRA_CHECKED); - mToggleServiceDividerSwitchPreference.setChecked(enabled); + mToggleServiceSwitchPreference.setChecked(enabled); } - getPreferenceScreen().addPreference(mToggleServiceDividerSwitchPreference); + getPreferenceScreen().addPreference(mToggleServiceSwitchPreference); } private void initGeneralCategory() { @@ -598,7 +640,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference * This method will be invoked when a button in the edit shortcut dialog is clicked. * * @param dialog The dialog that received the click - * @param which The button that was clicked + * @param which The button that was clicked */ protected void callOnAlertDialogCheckboxClicked(DialogInterface dialog, int which) { if (mComponentName == null) { @@ -676,7 +718,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference } /** - * Setups a configurable default if the setting has never been set. + * Setups a configurable default if the setting has never been set. */ private static void setupDefaultShortcutIfNecessary(Context context) { final String targetKey = Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE; diff --git a/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java index ca19681d42..09690d96ba 100644 --- a/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleReduceBrightColorsPreferenceFragment.java @@ -29,13 +29,10 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; -import androidx.preference.SwitchPreference; - import com.android.internal.accessibility.AccessibilityShortcutController; import com.android.settings.R; import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; @@ -44,6 +41,7 @@ import java.util.List; /** Settings for reducing brightness. */ @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePreferenceFragment { + private static final String REDUCE_BRIGHT_COLORS_ACTIVATED_KEY = Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED; private static final String KEY_INTENSITY = "rbc_intensity"; @@ -73,7 +71,7 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre mSettingsContentObserver = new SettingsContentObserver(mHandler, enableServiceFeatureKeys) { @Override public void onChange(boolean selfChange, Uri uri) { - updateSwitchBarToggleSwitch(); + updateSwitchBarToggleSwitch(); } }; @@ -83,11 +81,10 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - updatePreferenceOrder(); } /** Customizes the order by preference key. */ - private List<String> getPreferenceOrderList() { + protected List<String> getPreferenceOrderList() { final List<String> lists = new ArrayList<>(); lists.add(KEY_USE_SERVICE_PREFERENCE); lists.add(KEY_INTENSITY); @@ -97,20 +94,6 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre return lists; } - private void updatePreferenceOrder() { - final List<String> lists = getPreferenceOrderList(); - final PreferenceScreen preferenceScreen = getPreferenceScreen(); - preferenceScreen.setOrderingAsAdded(false); - - final int size = lists.size(); - for (int i = 0; i < size; i++) { - final Preference preference = preferenceScreen.findPreference(lists.get(i)); - if (preference != null) { - preference.setOrder(i); - } - } - } - @Override public void onResume() { super.onResume(); @@ -151,41 +134,31 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre @Override protected void onRemoveSwitchPreferenceToggleSwitch() { super.onRemoveSwitchPreferenceToggleSwitch(); - mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener( + mToggleServiceSwitchPreference.setOnPreferenceClickListener( /* onPreferenceClickListener= */ null); } @Override - protected void updateToggleServiceTitle(SwitchPreference switchPreference) { + protected void updateToggleServiceTitle(SettingsMainSwitchPreference switchPreference) { switchPreference.setTitle(R.string.reduce_bright_colors_preference_title); } @Override - protected void onInstallSwitchPreferenceToggleSwitch() { - super.onInstallSwitchPreferenceToggleSwitch(); - updateSwitchBarToggleSwitch(); - mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener((preference) -> { - boolean checked = ((SwitchPreference) preference).isChecked(); - onPreferenceToggled(mPreferenceKey, checked); - return false; - }); - } - - @Override int getUserShortcutTypes() { return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), mComponentName); } - private void updateSwitchBarToggleSwitch() { + @Override + protected void updateSwitchBarToggleSwitch() { final boolean checked = Settings.Secure.getInt(getContentResolver(), REDUCE_BRIGHT_COLORS_ACTIVATED_KEY, OFF) == ON; mRbcIntensityPreferenceController.updateState(getPreferenceScreen() .findPreference(KEY_INTENSITY)); mRbcPersistencePreferenceController.updateState(getPreferenceScreen() .findPreference(KEY_PERSIST)); - if (mToggleServiceDividerSwitchPreference.isChecked() != checked) { - mToggleServiceDividerSwitchPreference.setChecked(checked); + if (mToggleServiceSwitchPreference.isChecked() != checked) { + mToggleServiceSwitchPreference.setChecked(checked); } } diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 8e14e5a471..ff467226ea 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -304,8 +304,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends @Override protected void onInstallSwitchPreferenceToggleSwitch() { - super.onInstallSwitchPreferenceToggleSwitch(); - mToggleServiceDividerSwitchPreference.setVisible(false); + mToggleServiceSwitchPreference.setVisible(false); } @Override diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java index bea528a788..86ead5c681 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentForSetupWizard.java @@ -33,12 +33,12 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard // Log the final choice in value if it's different from the previous value. Bundle args = getArguments(); if ((args != null) && args.containsKey(AccessibilitySettings.EXTRA_CHECKED)) { - if (mToggleServiceDividerSwitchPreference.isChecked() != args.getBoolean( + if (mToggleServiceSwitchPreference.isChecked() != args.getBoolean( AccessibilitySettings.EXTRA_CHECKED)) { // TODO: Distinguish between magnification modes mMetricsFeatureProvider.action(getContext(), SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION, - mToggleServiceDividerSwitchPreference.isChecked()); + mToggleServiceSwitchPreference.isChecked()); } } super.onStop(); diff --git a/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java index 4d7b65359b..c0d54e8eee 100644 --- a/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java +++ b/src/com/android/settings/accessibility/ToggleScreenReaderPreferenceFragmentForSetupWizard.java @@ -28,7 +28,7 @@ public class ToggleScreenReaderPreferenceFragmentForSetupWizard @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mToggleSwitchWasInitiallyChecked = mToggleServiceDividerSwitchPreference.isChecked(); + mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked(); } @Override @@ -39,10 +39,10 @@ public class ToggleScreenReaderPreferenceFragmentForSetupWizard @Override public void onStop() { // Log the final choice in value if it's different from the previous value. - if (mToggleServiceDividerSwitchPreference.isChecked() != mToggleSwitchWasInitiallyChecked) { + if (mToggleServiceSwitchPreference.isChecked() != mToggleSwitchWasInitiallyChecked) { mMetricsFeatureProvider.action(getContext(), SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER, - mToggleServiceDividerSwitchPreference.isChecked()); + mToggleServiceSwitchPreference.isChecked()); } super.onStop(); } diff --git a/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java index 87b846945a..4334cd0e7a 100644 --- a/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java +++ b/src/com/android/settings/accessibility/ToggleSelectToSpeakPreferenceFragmentForSetupWizard.java @@ -28,7 +28,7 @@ public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mToggleSwitchWasInitiallyChecked = mToggleServiceDividerSwitchPreference.isChecked(); + mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked(); } @Override @@ -39,10 +39,10 @@ public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard @Override public void onStop() { // Log the final choice in value if it's different from the previous value. - if (mToggleServiceDividerSwitchPreference.isChecked() != mToggleSwitchWasInitiallyChecked) { + if (mToggleServiceSwitchPreference.isChecked() != mToggleSwitchWasInitiallyChecked) { mMetricsFeatureProvider.action(getContext(), SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK, - mToggleServiceDividerSwitchPreference.isChecked()); + mToggleServiceSwitchPreference.isChecked()); } super.onStop(); diff --git a/src/com/android/settings/accessibility/VolumeShortcutToggleScreenReaderPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/VolumeShortcutToggleScreenReaderPreferenceFragmentForSetupWizard.java index 6e4a233c60..4337177449 100644 --- a/src/com/android/settings/accessibility/VolumeShortcutToggleScreenReaderPreferenceFragmentForSetupWizard.java +++ b/src/com/android/settings/accessibility/VolumeShortcutToggleScreenReaderPreferenceFragmentForSetupWizard.java @@ -29,7 +29,7 @@ public class VolumeShortcutToggleScreenReaderPreferenceFragmentForSetupWizard @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mToggleSwitchWasInitiallyChecked = mToggleServiceDividerSwitchPreference.isChecked(); + mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked(); } @Override @@ -40,10 +40,10 @@ public class VolumeShortcutToggleScreenReaderPreferenceFragmentForSetupWizard @Override public void onStop() { // Log the final choice in value if it's different from the previous value. - if (mToggleServiceDividerSwitchPreference.isChecked() != mToggleSwitchWasInitiallyChecked) { + if (mToggleServiceSwitchPreference.isChecked() != mToggleSwitchWasInitiallyChecked) { mMetricsFeatureProvider.action(getContext(), SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER, - mToggleServiceDividerSwitchPreference.isChecked()); + mToggleServiceSwitchPreference.isChecked()); } super.onStop(); diff --git a/src/com/android/settings/accessibility/VolumeShortcutToggleSelectToSpeakPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/VolumeShortcutToggleSelectToSpeakPreferenceFragmentForSetupWizard.java index 3dd648cd59..acdfdc980d 100644 --- a/src/com/android/settings/accessibility/VolumeShortcutToggleSelectToSpeakPreferenceFragmentForSetupWizard.java +++ b/src/com/android/settings/accessibility/VolumeShortcutToggleSelectToSpeakPreferenceFragmentForSetupWizard.java @@ -29,7 +29,7 @@ public class VolumeShortcutToggleSelectToSpeakPreferenceFragmentForSetupWizard @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mToggleSwitchWasInitiallyChecked = mToggleServiceDividerSwitchPreference.isChecked(); + mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked(); } @Override @@ -40,10 +40,10 @@ public class VolumeShortcutToggleSelectToSpeakPreferenceFragmentForSetupWizard @Override public void onStop() { // Log the final choice in value if it's different from the previous value. - if (mToggleServiceDividerSwitchPreference.isChecked() != mToggleSwitchWasInitiallyChecked) { + if (mToggleServiceSwitchPreference.isChecked() != mToggleSwitchWasInitiallyChecked) { mMetricsFeatureProvider.action(getContext(), SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK, - mToggleServiceDividerSwitchPreference.isChecked()); + mToggleServiceSwitchPreference.isChecked()); } super.onStop(); diff --git a/src/com/android/settings/widget/SettingsMainSwitchPreference.java b/src/com/android/settings/widget/SettingsMainSwitchPreference.java index 2a7aa7384a..76f9b41d80 100644 --- a/src/com/android/settings/widget/SettingsMainSwitchPreference.java +++ b/src/com/android/settings/widget/SettingsMainSwitchPreference.java @@ -44,7 +44,8 @@ public class SettingsMainSwitchPreference extends TwoStatePreference { private final List<OnMainSwitchChangeListener> mSwitchChangeListeners = new ArrayList<>(); private SettingsMainSwitchBar mMainSwitchBar; - private String mTitle; + private CharSequence mTitle; + private boolean mIsVisible; private RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin; @@ -77,16 +78,22 @@ public class SettingsMainSwitchPreference extends TwoStatePreference { holder.setDividerAllowedBelow(false); mMainSwitchBar = (SettingsMainSwitchBar) holder.findViewById(R.id.main_switch_bar); + mMainSwitchBar.show(); updateStatus(isChecked()); registerListenerToSwitchBar(); + + if (!mIsVisible) { + mMainSwitchBar.hide(); + } } private void init(Context context, AttributeSet attrs) { setLayoutResource(R.layout.preference_widget_main_switch); + mIsVisible = true; if (attrs != null) { - TypedArray a = context.obtainStyledAttributes(attrs, + final TypedArray a = context.obtainStyledAttributes(attrs, androidx.preference.R.styleable.Preference, 0/*defStyleAttr*/, 0/*defStyleRes*/); final CharSequence title = TypedArrayUtils.getText(a, @@ -99,6 +106,14 @@ public class SettingsMainSwitchPreference extends TwoStatePreference { } } + @Override + public void setChecked(boolean checked) { + super.setChecked(checked); + if (mMainSwitchBar != null) { + mMainSwitchBar.setChecked(checked); + } + } + /** * Return the SettingsMainSwitchBar */ @@ -106,11 +121,9 @@ public class SettingsMainSwitchPreference extends TwoStatePreference { return mMainSwitchBar; } - /** - * Set the preference title text - */ - public void setTitle(String text) { - mTitle = text; + @Override + public void setTitle(CharSequence title) { + mTitle = title; if (mMainSwitchBar != null) { mMainSwitchBar.setTitle(mTitle); } @@ -133,6 +146,7 @@ public class SettingsMainSwitchPreference extends TwoStatePreference { * Show the MainSwitchBar */ public void show() { + mIsVisible = true; if (mMainSwitchBar != null) { mMainSwitchBar.show(); } @@ -142,6 +156,7 @@ public class SettingsMainSwitchPreference extends TwoStatePreference { * Hide the MainSwitchBar */ public void hide() { + mIsVisible = false; if (mMainSwitchBar != null) { mMainSwitchBar.hide(); } diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java index 735fecc9c9..024c1c3303 100644 --- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java @@ -55,14 +55,15 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.ims.WifiCallingQueryImsState; -import com.android.settings.widget.SwitchBar; +import com.android.settings.widget.SettingsMainSwitchBar; +import com.android.settingslib.widget.OnMainSwitchChangeListener; /** * This is the inner class of {@link WifiCallingSettings} fragment. * The preference screen lets you enable/disable Wi-Fi Calling and change Wi-Fi Calling mode. */ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment - implements SwitchBar.OnSwitchChangeListener, + implements OnMainSwitchChangeListener, Preference.OnPreferenceChangeListener { private static final String TAG = "WifiCallingForSub"; @@ -85,8 +86,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment public static final int LAUCH_APP_UPDATE = 1; //UI objects - private SwitchBar mSwitchBar; - private Switch mSwitch; + private SettingsMainSwitchBar mSwitchBar; private ListWithEntrySummaryPreference mButtonWfcMode; private ListWithEntrySummaryPreference mButtonWfcRoamingMode; private Preference mUpdateAddress; @@ -190,7 +190,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment mSwitchBar = getView().findViewById(R.id.switch_bar); mSwitchBar.show(); - mSwitch = mSwitchBar.getSwitch(); } @Override @@ -296,7 +295,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode.setOnPreferenceChangeListener(this); - mButtonWfcRoamingMode = findPreference(BUTTON_WFC_ROAMING_MODE); + mButtonWfcRoamingMode = findPreference(BUTTON_WFC_ROAMING_MODE); mButtonWfcRoamingMode.setOnPreferenceChangeListener(this); mUpdateAddress = findPreference(PREFERENCE_EMERGENCY_ADDRESS); @@ -403,7 +402,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment final WifiCallingQueryImsState queryIms = queryImsState(mSubId); final boolean wfcEnabled = queryIms.isEnabledByUser() && queryIms.isAllowUserControl(); - mSwitch.setChecked(wfcEnabled); + mSwitchBar.setChecked(wfcEnabled); final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting(); final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting(); mButtonWfcMode.setValue(Integer.toString(wfcMode)); |