Use MainSwitchPreference to replace the button style switches.

Fix: 177967926
Fix: 177968295
Fix: 177967925
Fix: 177968078

Test: Run robotest and apply the widget in Settings and see the ui
Change-Id: Ie854de96e5495fa564fb8a097ed4547bbd2b10c5
This commit is contained in:
Stanley Wang
2021-01-29 01:17:43 +08:00
parent 70864998c4
commit 10b7a7d483
25 changed files with 307 additions and 513 deletions

View File

@@ -16,43 +16,30 @@
package com.android.settings.display;
import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_FOCUSED;
import android.content.Context;
import android.hardware.display.ColorDisplayManager;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Switch;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
public class NightDisplayActivationPreferenceController extends TogglePreferenceController {
/**
* Controller that updates the night display.
*/
public class NightDisplayActivationPreferenceController extends
TogglePreferenceController implements OnMainSwitchChangeListener {
private final MetricsFeatureProvider mMetricsFeatureProvider;
private ColorDisplayManager mColorDisplayManager;
private NightDisplayTimeFormatter mTimeFormatter;
private LayoutPreference mPreference;
private Button mTurnOffButton;
private Button mTurnOnButton;
private final OnClickListener mListener = new OnClickListener() {
@Override
public void onClick(View v) {
mMetricsFeatureProvider.logClickedPreference(mPreference, getMetricsCategory());
mColorDisplayManager.setNightDisplayActivated(
!mColorDisplayManager.isNightDisplayActivated());
updateStateInternal(true);
}
};
private MainSwitchPreference mPreference;
public NightDisplayActivationPreferenceController(Context context, String key) {
super(context, key);
@@ -64,7 +51,7 @@ public class NightDisplayActivationPreferenceController extends TogglePreference
@Override
public int getAvailabilityStatus() {
return ColorDisplayManager.isNightDisplayAvailable(mContext) ? AVAILABLE
return ColorDisplayManager.isNightDisplayAvailable(mContext) ? AVAILABLE_UNSEARCHABLE
: UNSUPPORTED_ON_DEVICE;
}
@@ -82,16 +69,24 @@ public class NightDisplayActivationPreferenceController extends TogglePreference
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey());
mTurnOnButton = mPreference.findViewById(R.id.night_display_turn_on_button);
mTurnOnButton.setOnClickListener(mListener);
mTurnOffButton = mPreference.findViewById(R.id.night_display_turn_off_button);
mTurnOffButton.setOnClickListener(mListener);
mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey());
mPreference.addOnSwitchChangeListener(this);
mPreference.updateStatus(mColorDisplayManager.isNightDisplayActivated());
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
final boolean activated = mColorDisplayManager.isNightDisplayActivated();
if (isChecked != activated) {
// TODO(b/179017365): Create a controller which extends TogglePreferenceController to
// control the toggle preference.
setChecked(isChecked);
}
}
@Override
public final void updateState(Preference preference) {
updateStateInternal(false);
updateStateInternal();
}
/** FOR SLICES */
@@ -111,46 +106,14 @@ public class NightDisplayActivationPreferenceController extends TogglePreference
return mTimeFormatter.getAutoModeSummary(mContext, mColorDisplayManager);
}
private void updateStateInternal(boolean selfChanged) {
if (mTurnOnButton == null || mTurnOffButton == null) {
return;
}
private void updateStateInternal() {
final boolean isActivated = mColorDisplayManager.isNightDisplayActivated();
final int autoMode = mColorDisplayManager.getNightDisplayAutoMode();
String buttonText;
if (autoMode == ColorDisplayManager.AUTO_MODE_CUSTOM_TIME) {
buttonText = mContext.getString(isActivated
? R.string.night_display_activation_off_custom
: R.string.night_display_activation_on_custom,
mTimeFormatter.getFormattedTimeString(isActivated
? mColorDisplayManager.getNightDisplayCustomStartTime()
: mColorDisplayManager.getNightDisplayCustomEndTime()));
} else if (autoMode == ColorDisplayManager.AUTO_MODE_TWILIGHT) {
buttonText = mContext.getString(isActivated
? R.string.night_display_activation_off_twilight
: R.string.night_display_activation_on_twilight);
} else {
buttonText = mContext.getString(isActivated
? R.string.night_display_activation_off_manual
: R.string.night_display_activation_on_manual);
}
if (isActivated) {
mTurnOnButton.setVisibility(View.GONE);
mTurnOffButton.setVisibility(View.VISIBLE);
mTurnOffButton.setText(buttonText);
if (selfChanged) {
mTurnOffButton.sendAccessibilityEvent(TYPE_VIEW_FOCUSED);
}
} else {
mTurnOnButton.setVisibility(View.VISIBLE);
mTurnOffButton.setVisibility(View.GONE);
mTurnOnButton.setText(buttonText);
if (selfChanged) {
mTurnOnButton.sendAccessibilityEvent(TYPE_VIEW_FOCUSED);
}
mTimeFormatter.getFormattedTimeString(isActivated
? mColorDisplayManager.getNightDisplayCustomStartTime()
: mColorDisplayManager.getNightDisplayCustomEndTime());
}
}
}