Use SettingsLib's MainSwitchBar to replace SwitchBar in Settings.

To log Settings metrics, the MainSwitch extends MainSwitchBar and
replace the SwitchBar in SettingsActivity.

Bug: 175181773
Test: Run robotest and apply the widget in Settings and see the ui

Change-Id: I3add3702e9058ad9192b5172c7cf0e2ccfb55a70
This commit is contained in:
Stanley Wang
2020-12-25 16:27:32 +08:00
parent c61c2fb1d7
commit b87ddba6cd
51 changed files with 783 additions and 271 deletions

View File

@@ -21,28 +21,32 @@ import android.content.Context;
import android.net.Uri;
import android.os.PowerManager;
import android.provider.SettingsSlicesContract;
import android.widget.Switch;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.fuelgauge.BatterySaverReceiver;
import com.android.settings.widget.TwoStateButtonPreference;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.fuelgauge.BatterySaverUtils;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.OnMainSwitchChangeListener;
/**
* Controller to update the battery saver button
*/
public class BatterySaverButtonPreferenceController extends
TogglePreferenceController implements
LifecycleObserver, OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
TogglePreferenceController implements OnMainSwitchChangeListener, LifecycleObserver,
OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
private final BatterySaverReceiver mBatterySaverReceiver;
private final PowerManager mPowerManager;
private TwoStateButtonPreference mPreference;
private MainSwitchPreference mPreference;
public BatterySaverButtonPreferenceController(Context context, String key) {
super(context, key);
@@ -84,7 +88,15 @@ public class BatterySaverButtonPreferenceController extends
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
mPreference = screen.findPreference(getPreferenceKey());
mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey());
mPreference.setTitle(mContext.getString(R.string.battery_saver_main_switch_title));
mPreference.addOnSwitchChangeListener(this);
mPreference.updateStatus(isChecked());
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
setChecked(isChecked);
}
@Override
@@ -95,6 +107,7 @@ public class BatterySaverButtonPreferenceController extends
@Override
public boolean setChecked(boolean stateOn) {
// This screen already shows a warning, so we don't need another warning.
mPreference.updateStatus(isChecked());
return BatterySaverUtils.setPowerSaveMode(mContext, stateOn,
false /* needFirstTimeWarning */);
}
@@ -109,8 +122,5 @@ public class BatterySaverButtonPreferenceController extends
@Override
public void onBatteryChanged(boolean pluggedIn) {
if (mPreference != null) {
mPreference.setButtonEnabled(!pluggedIn);
}
}
}