Loading res/xml/one_handed_settings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -56,4 +56,5 @@ settings:controller="com.android.settings.gestures.OneHandedActionShowNotificationPrefController"/> </PreferenceCategory> </PreferenceScreen> src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java +62 −3 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.accessibility; import static com.android.settings.accessibility.AccessibilityDialogUtils.DialogEnums; import static com.android.settings.accessibility.ToggleFeaturePreferenceFragment.KEY_GENERAL_CATEGORY; import android.app.Dialog; import android.app.settings.SettingsEnums; Loading @@ -34,11 +35,13 @@ import android.view.ViewGroup; import android.view.accessibility.AccessibilityManager; import android.widget.CheckBox; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.utils.LocaleUtils; import com.google.android.setupcompat.util.WizardManagerHelper; Loading @@ -50,7 +53,7 @@ import java.util.Locale; /** * Base class for accessibility fragments shortcut functions and dialog management. */ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPreferenceFragment public abstract class AccessibilityShortcutPreferenceFragment extends DashboardFragment implements ShortcutPreference.OnClickCallback { private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference"; protected static final String KEY_SAVED_USER_SHORTCUT_TYPE = "shortcut_type"; Loading Loading @@ -88,6 +91,10 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr setPreferenceScreen(preferenceScreen); } if (showGeneralCategory()) { initGeneralCategory(); } final List<String> shortcutFeatureKeys = new ArrayList<>(); shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS); shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE); Loading Loading @@ -151,6 +158,7 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr @Override public Dialog onCreateDialog(int dialogId) { final Dialog dialog; switch (dialogId) { case DialogEnums.EDIT_SHORTCUT: final CharSequence dialogTitle = getPrefContext().getString( Loading @@ -158,11 +166,17 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr final int dialogType = WizardManagerHelper.isAnySetupWizard(getIntent()) ? AccessibilityDialogUtils.DialogType.EDIT_SHORTCUT_GENERIC_SUW : AccessibilityDialogUtils.DialogType.EDIT_SHORTCUT_GENERIC; final Dialog dialog = AccessibilityDialogUtils.showEditShortcutDialog( dialog = AccessibilityDialogUtils.showEditShortcutDialog( getPrefContext(), dialogType, dialogTitle, this::callOnAlertDialogCheckboxClicked); setupEditShortcutDialog(dialog); return dialog; case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL: dialog = AccessibilityGestureNavigationTutorial .createAccessibilityTutorialDialog(getPrefContext(), getUserShortcutTypes()); dialog.setCanceledOnTouchOutside(false); return dialog; default: throw new IllegalArgumentException("Unsupported dialogId " + dialogId); } Loading @@ -173,6 +187,8 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr switch (dialogId) { case DialogEnums.EDIT_SHORTCUT: return SettingsEnums.DIALOG_ACCESSIBILITY_SERVICE_EDIT_SHORTCUT; case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL: return SettingsEnums.DIALOG_ACCESSIBILITY_TUTORIAL; default: return SettingsEnums.ACTION_UNKNOWN; } Loading Loading @@ -202,6 +218,11 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext())); } /** * Overrides to return specific shortcut preference key * * @return String The specific shortcut preference key */ protected String getShortcutPreferenceKey() { return KEY_SHORTCUT_PREFERENCE; } Loading Loading @@ -238,6 +259,13 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr return value; } /** * Returns the shortcut type list which has been checked by user. */ protected int getUserShortcutTypes() { return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), getComponentName()); }; /** * This method will be invoked when a button in the edit shortcut dialog is clicked. Loading @@ -259,6 +287,15 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext())); } @VisibleForTesting void initGeneralCategory() { final PreferenceCategory generalCategory = new PreferenceCategory(getPrefContext()); generalCategory.setKey(KEY_GENERAL_CATEGORY); generalCategory.setTitle(getGeneralCategoryDescription(null)); getPreferenceScreen().addPreference(generalCategory); } @VisibleForTesting void saveNonEmptyUserShortcutType(int type) { if (type == AccessibilityUtil.UserShortcutType.EMPTY) { Loading @@ -270,6 +307,28 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr PreferredShortcuts.saveUserShortcutType(getPrefContext(), shortcut); } /** * Overrides to return customized description for general category above shortcut * * @return CharSequence The customized description for general category */ protected CharSequence getGeneralCategoryDescription(@Nullable CharSequence title) { if (title == null || title.toString().isEmpty()) { // Return default 'Options' string for category return getContext().getString(R.string.accessibility_screen_option); } return title; } /** * Overrides to determinate if showing additional category description above shortcut * * @return boolean true to show category, false otherwise. */ protected boolean showGeneralCategory() { return false; } private void setDialogTextAreaClickListener(View dialogView, CheckBox checkBox) { final View dialogTextArea = dialogView.findViewById(R.id.container); dialogTextArea.setOnClickListener(v -> checkBox.toggle()); Loading src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference private static final String DRAWABLE_FOLDER = "drawable"; protected static final String KEY_USE_SERVICE_PREFERENCE = "use_service"; protected static final String KEY_GENERAL_CATEGORY = "general_categories"; public static final String KEY_GENERAL_CATEGORY = "general_categories"; protected static final String KEY_HTML_DESCRIPTION_PREFERENCE = "html_description"; private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference"; protected static final String KEY_SAVED_USER_SHORTCUT_TYPE = "shortcut_type"; Loading src/com/android/settings/gestures/OneHandedEnablePreferenceController.java +7 −2 Original line number Diff line number Diff line Loading @@ -17,19 +17,23 @@ package com.android.settings.gestures; import android.content.Context; import android.provider.Settings; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; /** * The controller to handle one-handed mode enable or disable state. **/ * Preference controller for One-handed mode shortcut settings */ public class OneHandedEnablePreferenceController extends BasePreferenceController { private static final String ONE_HANDED_ENABLED = Settings.Secure.ONE_HANDED_MODE_ENABLED; public OneHandedEnablePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public int getAvailabilityStatus() { return OneHandedSettingsUtils.isSupportOneHandedMode() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } Loading @@ -40,4 +44,5 @@ public class OneHandedEnablePreferenceController extends BasePreferenceControlle OneHandedSettingsUtils.isOneHandedModeEnabled(mContext) ? R.string.gesture_setting_on : R.string.gesture_setting_off); } } src/com/android/settings/gestures/OneHandedSettings.java +57 −11 Original line number Diff line number Diff line Loading @@ -17,21 +17,41 @@ package com.android.settings.gestures; import android.app.settings.SettingsEnums; import android.content.ComponentName; import android.content.Context; import android.os.Bundle; import android.os.UserHandle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.android.internal.accessibility.AccessibilityShortcutController; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; /** * The Fragment for one-handed mode settings. * Fragment for One-handed mode settings * * <p>The child {@link AccessibilityShortcutPreferenceFragment} shows the actual UI for * providing basic accessibility shortcut service setup. */ @SearchIndexable public class OneHandedSettings extends DashboardFragment { public class OneHandedSettings extends AccessibilityShortcutPreferenceFragment { private static final String ONE_HANDED_SHORTCUT_KEY = "one_handed_shortcuts_preference"; private String mFeatureName; private static final String TAG = "OneHandedSettings"; @Override protected void updatePreferenceStates() { OneHandedSettingsUtils.setUserId(UserHandle.myUserId()); super.updatePreferenceStates(); } @Override public int getDialogMetricsCategory(int dialogId) { final int dialogMetrics = super.getDialogMetricsCategory(dialogId); return dialogMetrics == SettingsEnums.ACTION_UNKNOWN ? SettingsEnums.SETTINGS_ONE_HANDED : dialogMetrics; } @Override public int getMetricsCategory() { Loading @@ -39,14 +59,29 @@ public class OneHandedSettings extends DashboardFragment { } @Override protected String getLogTag() { return TAG; protected String getShortcutPreferenceKey() { return ONE_HANDED_SHORTCUT_KEY; } @Override protected void updatePreferenceStates() { OneHandedSettingsUtils.setUserId(UserHandle.myUserId()); super.updatePreferenceStates(); protected boolean showGeneralCategory() { return true; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return super.onCreateView(inflater, container, savedInstanceState); } @Override protected ComponentName getComponentName() { return AccessibilityShortcutController.ONE_HANDED_COMPONENT_NAME; } @Override protected CharSequence getLabelName() { return mFeatureName; } @Override Loading @@ -54,6 +89,17 @@ public class OneHandedSettings extends DashboardFragment { return R.xml.one_handed_settings; } @Override protected String getLogTag() { return null; } @Override public void onCreate(Bundle savedInstanceState) { mFeatureName = getContext().getString(R.string.one_handed_title); super.onCreate(savedInstanceState); } public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.one_handed_settings) { @Override Loading Loading
res/xml/one_handed_settings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -56,4 +56,5 @@ settings:controller="com.android.settings.gestures.OneHandedActionShowNotificationPrefController"/> </PreferenceCategory> </PreferenceScreen>
src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java +62 −3 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.accessibility; import static com.android.settings.accessibility.AccessibilityDialogUtils.DialogEnums; import static com.android.settings.accessibility.ToggleFeaturePreferenceFragment.KEY_GENERAL_CATEGORY; import android.app.Dialog; import android.app.settings.SettingsEnums; Loading @@ -34,11 +35,13 @@ import android.view.ViewGroup; import android.view.accessibility.AccessibilityManager; import android.widget.CheckBox; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.utils.LocaleUtils; import com.google.android.setupcompat.util.WizardManagerHelper; Loading @@ -50,7 +53,7 @@ import java.util.Locale; /** * Base class for accessibility fragments shortcut functions and dialog management. */ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPreferenceFragment public abstract class AccessibilityShortcutPreferenceFragment extends DashboardFragment implements ShortcutPreference.OnClickCallback { private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference"; protected static final String KEY_SAVED_USER_SHORTCUT_TYPE = "shortcut_type"; Loading Loading @@ -88,6 +91,10 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr setPreferenceScreen(preferenceScreen); } if (showGeneralCategory()) { initGeneralCategory(); } final List<String> shortcutFeatureKeys = new ArrayList<>(); shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS); shortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE); Loading Loading @@ -151,6 +158,7 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr @Override public Dialog onCreateDialog(int dialogId) { final Dialog dialog; switch (dialogId) { case DialogEnums.EDIT_SHORTCUT: final CharSequence dialogTitle = getPrefContext().getString( Loading @@ -158,11 +166,17 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr final int dialogType = WizardManagerHelper.isAnySetupWizard(getIntent()) ? AccessibilityDialogUtils.DialogType.EDIT_SHORTCUT_GENERIC_SUW : AccessibilityDialogUtils.DialogType.EDIT_SHORTCUT_GENERIC; final Dialog dialog = AccessibilityDialogUtils.showEditShortcutDialog( dialog = AccessibilityDialogUtils.showEditShortcutDialog( getPrefContext(), dialogType, dialogTitle, this::callOnAlertDialogCheckboxClicked); setupEditShortcutDialog(dialog); return dialog; case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL: dialog = AccessibilityGestureNavigationTutorial .createAccessibilityTutorialDialog(getPrefContext(), getUserShortcutTypes()); dialog.setCanceledOnTouchOutside(false); return dialog; default: throw new IllegalArgumentException("Unsupported dialogId " + dialogId); } Loading @@ -173,6 +187,8 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr switch (dialogId) { case DialogEnums.EDIT_SHORTCUT: return SettingsEnums.DIALOG_ACCESSIBILITY_SERVICE_EDIT_SHORTCUT; case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL: return SettingsEnums.DIALOG_ACCESSIBILITY_TUTORIAL; default: return SettingsEnums.ACTION_UNKNOWN; } Loading Loading @@ -202,6 +218,11 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext())); } /** * Overrides to return specific shortcut preference key * * @return String The specific shortcut preference key */ protected String getShortcutPreferenceKey() { return KEY_SHORTCUT_PREFERENCE; } Loading Loading @@ -238,6 +259,13 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr return value; } /** * Returns the shortcut type list which has been checked by user. */ protected int getUserShortcutTypes() { return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), getComponentName()); }; /** * This method will be invoked when a button in the edit shortcut dialog is clicked. Loading @@ -259,6 +287,15 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext())); } @VisibleForTesting void initGeneralCategory() { final PreferenceCategory generalCategory = new PreferenceCategory(getPrefContext()); generalCategory.setKey(KEY_GENERAL_CATEGORY); generalCategory.setTitle(getGeneralCategoryDescription(null)); getPreferenceScreen().addPreference(generalCategory); } @VisibleForTesting void saveNonEmptyUserShortcutType(int type) { if (type == AccessibilityUtil.UserShortcutType.EMPTY) { Loading @@ -270,6 +307,28 @@ public abstract class AccessibilityShortcutPreferenceFragment extends SettingsPr PreferredShortcuts.saveUserShortcutType(getPrefContext(), shortcut); } /** * Overrides to return customized description for general category above shortcut * * @return CharSequence The customized description for general category */ protected CharSequence getGeneralCategoryDescription(@Nullable CharSequence title) { if (title == null || title.toString().isEmpty()) { // Return default 'Options' string for category return getContext().getString(R.string.accessibility_screen_option); } return title; } /** * Overrides to determinate if showing additional category description above shortcut * * @return boolean true to show category, false otherwise. */ protected boolean showGeneralCategory() { return false; } private void setDialogTextAreaClickListener(View dialogView, CheckBox checkBox) { final View dialogTextArea = dialogView.findViewById(R.id.container); dialogTextArea.setOnClickListener(v -> checkBox.toggle()); Loading
src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference private static final String DRAWABLE_FOLDER = "drawable"; protected static final String KEY_USE_SERVICE_PREFERENCE = "use_service"; protected static final String KEY_GENERAL_CATEGORY = "general_categories"; public static final String KEY_GENERAL_CATEGORY = "general_categories"; protected static final String KEY_HTML_DESCRIPTION_PREFERENCE = "html_description"; private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference"; protected static final String KEY_SAVED_USER_SHORTCUT_TYPE = "shortcut_type"; Loading
src/com/android/settings/gestures/OneHandedEnablePreferenceController.java +7 −2 Original line number Diff line number Diff line Loading @@ -17,19 +17,23 @@ package com.android.settings.gestures; import android.content.Context; import android.provider.Settings; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; /** * The controller to handle one-handed mode enable or disable state. **/ * Preference controller for One-handed mode shortcut settings */ public class OneHandedEnablePreferenceController extends BasePreferenceController { private static final String ONE_HANDED_ENABLED = Settings.Secure.ONE_HANDED_MODE_ENABLED; public OneHandedEnablePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public int getAvailabilityStatus() { return OneHandedSettingsUtils.isSupportOneHandedMode() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } Loading @@ -40,4 +44,5 @@ public class OneHandedEnablePreferenceController extends BasePreferenceControlle OneHandedSettingsUtils.isOneHandedModeEnabled(mContext) ? R.string.gesture_setting_on : R.string.gesture_setting_off); } }
src/com/android/settings/gestures/OneHandedSettings.java +57 −11 Original line number Diff line number Diff line Loading @@ -17,21 +17,41 @@ package com.android.settings.gestures; import android.app.settings.SettingsEnums; import android.content.ComponentName; import android.content.Context; import android.os.Bundle; import android.os.UserHandle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.android.internal.accessibility.AccessibilityShortcutController; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; /** * The Fragment for one-handed mode settings. * Fragment for One-handed mode settings * * <p>The child {@link AccessibilityShortcutPreferenceFragment} shows the actual UI for * providing basic accessibility shortcut service setup. */ @SearchIndexable public class OneHandedSettings extends DashboardFragment { public class OneHandedSettings extends AccessibilityShortcutPreferenceFragment { private static final String ONE_HANDED_SHORTCUT_KEY = "one_handed_shortcuts_preference"; private String mFeatureName; private static final String TAG = "OneHandedSettings"; @Override protected void updatePreferenceStates() { OneHandedSettingsUtils.setUserId(UserHandle.myUserId()); super.updatePreferenceStates(); } @Override public int getDialogMetricsCategory(int dialogId) { final int dialogMetrics = super.getDialogMetricsCategory(dialogId); return dialogMetrics == SettingsEnums.ACTION_UNKNOWN ? SettingsEnums.SETTINGS_ONE_HANDED : dialogMetrics; } @Override public int getMetricsCategory() { Loading @@ -39,14 +59,29 @@ public class OneHandedSettings extends DashboardFragment { } @Override protected String getLogTag() { return TAG; protected String getShortcutPreferenceKey() { return ONE_HANDED_SHORTCUT_KEY; } @Override protected void updatePreferenceStates() { OneHandedSettingsUtils.setUserId(UserHandle.myUserId()); super.updatePreferenceStates(); protected boolean showGeneralCategory() { return true; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return super.onCreateView(inflater, container, savedInstanceState); } @Override protected ComponentName getComponentName() { return AccessibilityShortcutController.ONE_HANDED_COMPONENT_NAME; } @Override protected CharSequence getLabelName() { return mFeatureName; } @Override Loading @@ -54,6 +89,17 @@ public class OneHandedSettings extends DashboardFragment { return R.xml.one_handed_settings; } @Override protected String getLogTag() { return null; } @Override public void onCreate(Bundle savedInstanceState) { mFeatureName = getContext().getString(R.string.one_handed_title); super.onCreate(savedInstanceState); } public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.one_handed_settings) { @Override Loading