Merge "Only request focus if change was self-triggered" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-03-30 13:35:23 +00:00
committed by Android (Google) Code Review
2 changed files with 37 additions and 22 deletions

View File

@@ -39,12 +39,17 @@ public class NightDisplayActivationPreferenceController extends TogglePreference
private ColorDisplayManager mColorDisplayManager; private ColorDisplayManager mColorDisplayManager;
private NightDisplayTimeFormatter mTimeFormatter; private NightDisplayTimeFormatter mTimeFormatter;
private LayoutPreference mPreference; private LayoutPreference mPreference;
// Night light can also be toggled from QS. If night light wasn't toggled by this preference,
// don't requestFocus
private boolean mButtonTriggered = false;
private Button mTurnOffButton; private Button mTurnOffButton;
private Button mTurnOnButton; private Button mTurnOnButton;
private final OnClickListener mListener = new OnClickListener() { private final OnClickListener mListener = new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
mButtonTriggered = true;
mMetricsFeatureProvider.logClickedPreference(mPreference, mMetricsFeatureProvider.logClickedPreference(mPreference,
SettingsEnums.NIGHT_DISPLAY_SETTINGS); SettingsEnums.NIGHT_DISPLAY_SETTINGS);
mColorDisplayManager.setNightDisplayActivated( mColorDisplayManager.setNightDisplayActivated(
@@ -140,12 +145,18 @@ public class NightDisplayActivationPreferenceController extends TogglePreference
mTurnOnButton.setVisibility(View.GONE); mTurnOnButton.setVisibility(View.GONE);
mTurnOffButton.setVisibility(View.VISIBLE); mTurnOffButton.setVisibility(View.VISIBLE);
mTurnOffButton.setText(buttonText); mTurnOffButton.setText(buttonText);
mTurnOffButton.requestFocus(); if (mButtonTriggered) {
mButtonTriggered = false;
mTurnOffButton.requestFocus();
}
} else { } else {
mTurnOnButton.setVisibility(View.VISIBLE); mTurnOnButton.setVisibility(View.VISIBLE);
mTurnOffButton.setVisibility(View.GONE); mTurnOffButton.setVisibility(View.GONE);
mTurnOnButton.setText(buttonText); mTurnOnButton.setText(buttonText);
mTurnOnButton.requestFocus(); if (mButtonTriggered) {
mButtonTriggered = false;
mTurnOnButton.requestFocus();
}
} }
} }
} }

View File

@@ -39,6 +39,9 @@ public class ZenModeButtonPreferenceController extends AbstractZenModePreference
private static final String TAG = "EnableZenModeButton"; private static final String TAG = "EnableZenModeButton";
private final FragmentManager mFragment; private final FragmentManager mFragment;
// DND can also be toggled from QS. If DND wasn't toggled by this preference, don't requestFocus
private boolean mButtonTriggered = false;
private Button mZenButtonOn; private Button mZenButtonOn;
private Button mZenButtonOff; private Button mZenButtonOff;
@@ -65,7 +68,6 @@ public class ZenModeButtonPreferenceController extends AbstractZenModePreference
if (null == mZenButtonOn) { if (null == mZenButtonOn) {
mZenButtonOn = ((LayoutPreference) preference) mZenButtonOn = ((LayoutPreference) preference)
.findViewById(R.id.zen_mode_settings_turn_on_button); .findViewById(R.id.zen_mode_settings_turn_on_button);
mZenButtonOn.setFocusableInTouchMode(true);
updateZenButtonOnClickListener(preference); updateZenButtonOnClickListener(preference);
} }
@@ -73,6 +75,7 @@ public class ZenModeButtonPreferenceController extends AbstractZenModePreference
mZenButtonOff = ((LayoutPreference) preference) mZenButtonOff = ((LayoutPreference) preference)
.findViewById(R.id.zen_mode_settings_turn_off_button); .findViewById(R.id.zen_mode_settings_turn_off_button);
mZenButtonOff.setOnClickListener(v -> { mZenButtonOff.setOnClickListener(v -> {
mButtonTriggered = true;
writeMetrics(preference, false); writeMetrics(preference, false);
mBackend.setZenMode(Settings.Global.ZEN_MODE_OFF); mBackend.setZenMode(Settings.Global.ZEN_MODE_OFF);
}); });
@@ -88,38 +91,39 @@ public class ZenModeButtonPreferenceController extends AbstractZenModePreference
case Settings.Global.ZEN_MODE_NO_INTERRUPTIONS: case Settings.Global.ZEN_MODE_NO_INTERRUPTIONS:
mZenButtonOff.setVisibility(View.VISIBLE); mZenButtonOff.setVisibility(View.VISIBLE);
mZenButtonOn.setVisibility(View.GONE); mZenButtonOn.setVisibility(View.GONE);
mZenButtonOff.requestFocus(); if (mButtonTriggered) {
mButtonTriggered = false;
mZenButtonOff.requestFocus();
}
break; break;
case Settings.Global.ZEN_MODE_OFF: case Settings.Global.ZEN_MODE_OFF:
default: default:
mZenButtonOff.setVisibility(View.GONE); mZenButtonOff.setVisibility(View.GONE);
updateZenButtonOnClickListener(preference); updateZenButtonOnClickListener(preference);
mZenButtonOn.setVisibility(View.VISIBLE); mZenButtonOn.setVisibility(View.VISIBLE);
mZenButtonOn.requestFocus(); if (mButtonTriggered) {
mButtonTriggered = false;
mZenButtonOn.requestFocus();
}
} }
} }
private void updateZenButtonOnClickListener(Preference preference) { private void updateZenButtonOnClickListener(Preference preference) {
int zenDuration = getZenDuration(); mZenButtonOn.setOnClickListener(v -> {
switch (zenDuration) { mButtonTriggered = true;
case Settings.Secure.ZEN_DURATION_PROMPT: writeMetrics(preference, true);
mZenButtonOn.setOnClickListener(v -> { int zenDuration = getZenDuration();
writeMetrics(preference, true); switch (zenDuration) {
case Settings.Secure.ZEN_DURATION_PROMPT:
new SettingsEnableZenModeDialog().show(mFragment, TAG); new SettingsEnableZenModeDialog().show(mFragment, TAG);
}); break;
break; case Settings.Secure.ZEN_DURATION_FOREVER:
case Settings.Secure.ZEN_DURATION_FOREVER:
mZenButtonOn.setOnClickListener(v -> {
writeMetrics(preference, true);
mBackend.setZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS); mBackend.setZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
}); break;
break; default:
default:
mZenButtonOn.setOnClickListener(v -> {
writeMetrics(preference, true);
mBackend.setZenModeForDuration(zenDuration); mBackend.setZenModeForDuration(zenDuration);
}); }
} });
} }
private void writeMetrics(Preference preference, boolean buttonOn) { private void writeMetrics(Preference preference, boolean buttonOn) {