ShortcutPreference Toggle design.
- For target SDK < 30 app show as preference item to trigger shortcut on/off. - For target SDK >= 30 app show two item: the left one can edit shortcut and the right one be a on/off trigger button. The design is reference from WIFI setting which has similar comportment. Bug: 148989269 Test: Test result in Buganizer. Change-Id: I815206d9e885c01bf3e6445820176aed4a743323
This commit is contained in:
@@ -69,7 +69,7 @@ import java.util.stream.Collectors;
|
||||
* and dialog management.
|
||||
*/
|
||||
public abstract class ToggleFeaturePreferenceFragment extends SettingsPreferenceFragment
|
||||
implements ShortcutPreference.OnClickListener {
|
||||
implements ShortcutPreference.OnClickCallback {
|
||||
|
||||
protected DividerSwitchPreference mToggleServiceDividerSwitchPreference;
|
||||
protected ShortcutPreference mShortcutPreference;
|
||||
@@ -277,33 +277,38 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
|
||||
*/
|
||||
int ENABLE_WARNING_FROM_TOGGLE = 1002;
|
||||
|
||||
|
||||
/** OPEN: Settings > Accessibility > Downloaded toggle service > Shortcut checkbox. */
|
||||
int ENABLE_WARNING_FROM_SHORTCUT = 1003;
|
||||
|
||||
/**
|
||||
* OPEN: Settings > Accessibility > Downloaded toggle service > Shortcut checkbox
|
||||
* toggle.
|
||||
*/
|
||||
int ENABLE_WARNING_FROM_SHORTCUT_TOGGLE = 1004;
|
||||
|
||||
/**
|
||||
* OPEN: Settings > Accessibility > Downloaded toggle service > Toggle use service to
|
||||
* disable service.
|
||||
*/
|
||||
int DISABLE_WARNING_FROM_TOGGLE = 1004;
|
||||
int DISABLE_WARNING_FROM_TOGGLE = 1005;
|
||||
|
||||
/**
|
||||
* OPEN: Settings > Accessibility > Magnification > Toggle user service in button
|
||||
* navigation.
|
||||
*/
|
||||
int ACCESSIBILITY_BUTTON_TUTORIAL = 1005;
|
||||
int ACCESSIBILITY_BUTTON_TUTORIAL = 1006;
|
||||
|
||||
/**
|
||||
* OPEN: Settings > Accessibility > Magnification > Toggle user service in gesture
|
||||
* navigation.
|
||||
*/
|
||||
int GESTURE_NAVIGATION_TUTORIAL = 1006;
|
||||
int GESTURE_NAVIGATION_TUTORIAL = 1007;
|
||||
|
||||
/**
|
||||
* OPEN: Settings > Accessibility > Downloaded toggle service > Toggle user service > Show
|
||||
* launch tutorial.
|
||||
*/
|
||||
int LAUNCH_ACCESSIBILITY_TUTORIAL = 1007;
|
||||
int LAUNCH_ACCESSIBILITY_TUTORIAL = 1008;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -516,7 +521,15 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
|
||||
SharedPreferenceUtils.setUserShortcutType(context, info);
|
||||
}
|
||||
|
||||
private String getShortcutTypeSummary(Context context) {
|
||||
protected CharSequence getShortcutTypeSummary(Context context) {
|
||||
if (!mShortcutPreference.isSettingsEditable()) {
|
||||
return context.getText(R.string.accessibility_shortcut_edit_dialog_title_hardware);
|
||||
}
|
||||
|
||||
if (!mShortcutPreference.isChecked()) {
|
||||
return context.getText(R.string.switch_off_text);
|
||||
}
|
||||
|
||||
final int shortcutType = getUserShortcutType(context, UserShortcutType.SOFTWARE);
|
||||
int resId = R.string.accessibility_shortcut_edit_summary_software;
|
||||
if (AccessibilityUtil.isGestureNavigateEnabled(context)) {
|
||||
@@ -569,12 +582,13 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
|
||||
}
|
||||
|
||||
updateUserShortcutType(/* saveChanges= */ true);
|
||||
if (mShortcutPreference.getChecked()) {
|
||||
if (mShortcutPreference.isChecked()) {
|
||||
AccessibilityUtil.optInAllValuesToSettings(getPrefContext(), mUserShortcutType,
|
||||
mComponentName);
|
||||
AccessibilityUtil.optOutAllValuesFromSettings(getPrefContext(), ~mUserShortcutType,
|
||||
mComponentName);
|
||||
}
|
||||
mShortcutPreference.setChecked(true);
|
||||
mShortcutPreference.setSummary(
|
||||
getShortcutTypeSummary(getPrefContext()));
|
||||
}
|
||||
@@ -606,7 +620,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
|
||||
mShortcutPreference = new ShortcutPreference(getPrefContext(), null);
|
||||
mShortcutPreference.setPersistent(false);
|
||||
mShortcutPreference.setKey(getShortcutPreferenceKey());
|
||||
mShortcutPreference.setOnClickListener(this);
|
||||
mShortcutPreference.setOnClickCallback(this);
|
||||
|
||||
final CharSequence title = getString(R.string.accessibility_shortcut_title, mPackageName);
|
||||
mShortcutPreference.setTitle(title);
|
||||
@@ -629,19 +643,20 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCheckboxClicked(ShortcutPreference preference) {
|
||||
public void onToggleClicked(ShortcutPreference preference) {
|
||||
if (mComponentName == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final int shortcutTypes = getUserShortcutType(getPrefContext(), UserShortcutType.SOFTWARE);
|
||||
if (preference.getChecked()) {
|
||||
if (preference.isChecked()) {
|
||||
AccessibilityUtil.optInAllValuesToSettings(getPrefContext(), shortcutTypes,
|
||||
mComponentName);
|
||||
} else {
|
||||
AccessibilityUtil.optOutAllValuesFromSettings(getPrefContext(), shortcutTypes,
|
||||
mComponentName);
|
||||
}
|
||||
mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user