Add settings for scheduling dark theme
Adding a settings page similar to night light for Dark theme. it will allow the user to schedule
dark mode from sunrise to sunset
Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.display.DarkUIPreferenceControllerTest" && \
make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.display.darkmode.DarkModeActivationPreferenceControllerTest" && \
make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.display.darkmode.DarkModeObserverTest" && \
make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.display.darkmode.DarkModeScheduleSelectorControllerTest"
Fixes: 141567787
Change-Id: I3094b655c04f59c23a95162a1be5ee8260e28a48
(cherry picked from commit 0828e6be9c
)
This commit is contained in:
@@ -21,6 +21,7 @@ import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.PowerManager;
|
||||
import android.provider.Settings;
|
||||
|
||||
@@ -28,10 +29,10 @@ import androidx.annotation.VisibleForTesting;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.TogglePreferenceController;
|
||||
import com.android.settings.display.darkmode.DarkModePreference;
|
||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||
import com.android.settingslib.core.lifecycle.events.OnStart;
|
||||
import com.android.settingslib.core.lifecycle.events.OnStop;
|
||||
@@ -44,7 +45,7 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
|
||||
public static final int DIALOG_SEEN = 1;
|
||||
|
||||
@VisibleForTesting
|
||||
SwitchPreference mPreference;
|
||||
Preference mPreference;
|
||||
|
||||
private UiModeManager mUiModeManager;
|
||||
private PowerManager mPowerManager;
|
||||
@@ -68,7 +69,8 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
|
||||
|
||||
@Override
|
||||
public boolean isChecked() {
|
||||
return mUiModeManager.getNightMode() == UiModeManager.MODE_NIGHT_YES;
|
||||
return (mContext.getResources().getConfiguration().uiMode
|
||||
& Configuration.UI_MODE_NIGHT_YES) != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -92,10 +94,7 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
|
||||
showDarkModeDialog();
|
||||
return false;
|
||||
}
|
||||
mUiModeManager.setNightMode(isChecked
|
||||
? UiModeManager.MODE_NIGHT_YES
|
||||
: UiModeManager.MODE_NIGHT_NO);
|
||||
return true;
|
||||
return mUiModeManager.setNightModeActivated(isChecked);
|
||||
}
|
||||
|
||||
private void showDarkModeDialog() {
|
||||
@@ -113,12 +112,10 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
|
||||
boolean isBatterySaver = isPowerSaveMode();
|
||||
mPreference.setEnabled(!isBatterySaver);
|
||||
if (isBatterySaver) {
|
||||
int stringId = mUiModeManager.getNightMode() == UiModeManager.MODE_NIGHT_YES
|
||||
int stringId = isChecked()
|
||||
? R.string.dark_ui_mode_disabled_summary_dark_theme_on
|
||||
: R.string.dark_ui_mode_disabled_summary_dark_theme_off;
|
||||
mPreference.setSummary(mContext.getString(stringId));
|
||||
} else {
|
||||
mPreference.setSummary(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,22 +124,17 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
|
||||
return mPowerManager.isPowerSaveMode();
|
||||
}
|
||||
|
||||
|
||||
@VisibleForTesting
|
||||
void setUiModeManager(UiModeManager uiModeManager) {
|
||||
mUiModeManager = uiModeManager;
|
||||
}
|
||||
|
||||
public void setParentFragment(Fragment fragment) {
|
||||
mFragment = fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
mContext.registerReceiver(mReceiver,
|
||||
new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
|
||||
}
|
||||
|
||||
// used by AccessibilitySettings
|
||||
public void setParentFragment(Fragment fragment) {
|
||||
mFragment = fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
mContext.unregisterReceiver(mReceiver);
|
||||
|
Reference in New Issue
Block a user