Accessibility Service & Shortcut Redesign - Primary action - toggle button design

Implements DividerSwitchPreference to replace ToggleSwitch

Bug: 142528112
Test: Manual test

Change-Id: I0d80d16bfa941f7ee333a2c5680a25a26c42809d
This commit is contained in:
menghanli
2020-02-03 22:12:45 +08:00
parent da645144e0
commit 6eb3912f31
17 changed files with 246 additions and 156 deletions

View File

@@ -39,12 +39,13 @@ import android.view.MenuInflater;
import android.view.View;
import android.view.accessibility.AccessibilityManager;
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.SwitchBar;
import com.android.settings.widget.ToggleSwitch;
import com.android.settingslib.accessibility.AccessibilityUtils;
import java.util.List;
@@ -186,21 +187,21 @@ public class ToggleAccessibilityServicePreferenceFragment extends
}
@Override
protected void updateSwitchBarText(SwitchBar switchBar) {
protected void updateToggleServiceTitle(SwitchPreference switchPreference) {
final AccessibilityServiceInfo info = getAccessibilityServiceInfo();
final String switchBarText = (info == null) ? "" :
getString(R.string.accessibility_service_master_switch_title,
info.getResolveInfo().loadLabel(getPackageManager()));
switchBar.setSwitchBarText(switchBarText, switchBarText);
switchPreference.setTitle(switchBarText);
}
private void updateSwitchBarToggleSwitch() {
final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext())
.contains(mComponentName);
if (mSwitchBar.isChecked() == checked) {
if (mToggleServiceDividerSwitchPreference.isChecked() == checked) {
return;
}
mSwitchBar.setCheckedInternal(checked);
mToggleServiceDividerSwitchPreference.setChecked(checked);
}
/**
@@ -251,7 +252,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends
}
private void handleConfirmServiceEnabled(boolean confirmed) {
mSwitchBar.setCheckedInternal(confirmed);
mToggleServiceDividerSwitchPreference.setChecked(confirmed);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, confirmed);
onPreferenceToggled(mPreferenceKey, confirmed);
}
@@ -274,9 +275,9 @@ public class ToggleAccessibilityServicePreferenceFragment extends
}
@Override
protected void onInstallSwitchBarToggleSwitch() {
super.onInstallSwitchBarToggleSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(this::onBeforeCheckedChanged);
protected void onInstallSwitchPreferenceToggleSwitch() {
super.onInstallSwitchPreferenceToggleSwitch();
mToggleServiceDividerSwitchPreference.setOnPreferenceClickListener(this::onPreferenceClick);
}
@Override
@@ -410,9 +411,10 @@ public class ToggleAccessibilityServicePreferenceFragment extends
mDialog.dismiss();
}
private boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
private boolean onPreferenceClick(Preference preference) {
boolean checked = ((DividerSwitchPreference) preference).isChecked();
if (checked) {
mSwitchBar.setCheckedInternal(false);
mToggleServiceDividerSwitchPreference.setChecked(false);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED,
/* disableService */ false);
if (!mShortcutPreference.getChecked()) {
@@ -424,7 +426,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends
}
}
} else {
mSwitchBar.setCheckedInternal(true);
mToggleServiceDividerSwitchPreference.setChecked(true);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED,
/* enableService */ true);
showDialog(DialogEnums.DISABLE_WARNING_FROM_TOGGLE);