From 7c4a19993ad1aa6845ca5a61bcc877a3dc6270b9 Mon Sep 17 00:00:00 2001 From: idoybh Date: Sat, 11 Dec 2021 00:20:03 +0000 Subject: [PATCH] AODSchedule: Add support for mixed time & sun modes [2/2] Also make the code a bit more readable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hưng Phan --- res/values/cherish_arrays.xml | 4 ++ res/values/cherish_strings.xml | 3 ++ .../settings/fragments/AODSchedule.java | 37 ++++++++++++------- .../fragments/LockScreenSettings.java | 19 ++++++++-- 4 files changed, 47 insertions(+), 16 deletions(-) diff --git a/res/values/cherish_arrays.xml b/res/values/cherish_arrays.xml index 6f6a115..c433cc9 100644 --- a/res/values/cherish_arrays.xml +++ b/res/values/cherish_arrays.xml @@ -397,11 +397,15 @@ @string/disabled @string/night_display_auto_mode_twilight @string/night_display_auto_mode_custom + @string/always_on_display_schedule_mixed_sunset + @string/always_on_display_schedule_mixed_sunrise 0 1 + 3 + 4 2 diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index 76bf877..50e426f 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -611,4 +611,7 @@ Always on display schedule Sunset Sunrise + Turns on from sunset till a time + Turns on from a time till sunrise + diff --git a/src/com/cherish/settings/fragments/AODSchedule.java b/src/com/cherish/settings/fragments/AODSchedule.java index 80a24d9..7fc985a 100644 --- a/src/com/cherish/settings/fragments/AODSchedule.java +++ b/src/com/cherish/settings/fragments/AODSchedule.java @@ -15,6 +15,12 @@ */ package com.cherish.settings.fragments; +import static com.cherish.settings.fragments.LockScreenSettings.MODE_DISABLED; +import static com.cherish.settings.fragments.LockScreenSettings.MODE_NIGHT; +import static com.cherish.settings.fragments.LockScreenSettings.MODE_TIME; +import static com.cherish.settings.fragments.LockScreenSettings.MODE_MIXED_SUNSET; +import static com.cherish.settings.fragments.LockScreenSettings.MODE_MIXED_SUNRISE; + import android.app.TimePickerDialog; import android.content.ContentResolver; import android.content.Context; @@ -60,13 +66,13 @@ public class AODSchedule extends SettingsPreferenceFragment implements mTillPref.setOnPreferenceClickListener(this); int mode = Settings.Secure.getIntForUser(resolver, - MODE_KEY, 0, UserHandle.USER_CURRENT); + MODE_KEY, MODE_DISABLED, UserHandle.USER_CURRENT); mModePref = (SecureSettingListPreference) findPreference(MODE_KEY); mModePref.setValue(String.valueOf(mode)); mModePref.setSummary(mModePref.getEntry()); mModePref.setOnPreferenceChangeListener(this); - updateTimeEnablement(mode == 2); + updateTimeEnablement(mode); updateTimeSummary(mode); } @@ -77,7 +83,7 @@ public class AODSchedule extends SettingsPreferenceFragment implements mModePref.setSummary(mModePref.getEntries()[index]); Settings.Secure.putIntForUser(getActivity().getContentResolver(), MODE_KEY, value, UserHandle.USER_CURRENT); - updateTimeEnablement(value == 2); + updateTimeEnablement(value); updateTimeSummary(value); return true; } @@ -115,9 +121,9 @@ public class AODSchedule extends SettingsPreferenceFragment implements return value.split(",", 0); } - private void updateTimeEnablement(boolean enabled) { - mSincePref.setEnabled(enabled); - mTillPref.setEnabled(enabled); + private void updateTimeEnablement(int mode) { + mSincePref.setEnabled(mode == MODE_TIME || mode == MODE_MIXED_SUNRISE); + mTillPref.setEnabled(mode == MODE_TIME || mode == MODE_MIXED_SUNSET); } private void updateTimeSummary(int mode) { @@ -125,19 +131,24 @@ public class AODSchedule extends SettingsPreferenceFragment implements } private void updateTimeSummary(String[] times, int mode) { - if (mode == 0) { + if (mode == MODE_DISABLED) { mSincePref.setSummary("-"); mTillPref.setSummary("-"); return; } - if (mode == 1) { + if (mode == MODE_NIGHT) { mSincePref.setSummary(R.string.always_on_display_schedule_sunset); mTillPref.setSummary(R.string.always_on_display_schedule_sunrise); return; } + if (mode == MODE_MIXED_SUNSET) { + mSincePref.setSummary(R.string.always_on_display_schedule_sunset); + } else if (mode == MODE_MIXED_SUNRISE) { + mTillPref.setSummary(R.string.always_on_display_schedule_sunrise); + } if (DateFormat.is24HourFormat(getContext())) { - mSincePref.setSummary(times[0]); - mTillPref.setSummary(times[1]); + if (mode != MODE_MIXED_SUNSET) mSincePref.setSummary(times[0]); + if (mode != MODE_MIXED_SUNRISE) mTillPref.setSummary(times[1]); return; } String[] sinceValues = times[0].split(":", 0); @@ -158,8 +169,8 @@ public class AODSchedule extends SettingsPreferenceFragment implements } else { tillSummary = times[0].substring(1) + " AM"; } - mSincePref.setSummary(sinceSummary); - mTillPref.setSummary(tillSummary); + if (mode != MODE_MIXED_SUNSET) mSincePref.setSummary(sinceSummary); + if (mode != MODE_MIXED_SUNRISE) mTillPref.setSummary(tillSummary); } private void updateTimeSetting(boolean since, int hour, int minute) { @@ -174,7 +185,7 @@ public class AODSchedule extends SettingsPreferenceFragment implements Settings.Secure.putStringForUser(getActivity().getContentResolver(), Settings.Secure.DOZE_ALWAYS_ON_AUTO_TIME, times[0] + "," + times[1], UserHandle.USER_CURRENT); - updateTimeSummary(times, 2); + updateTimeSummary(times, Integer.parseInt(mModePref.getValue())); } @Override diff --git a/src/com/cherish/settings/fragments/LockScreenSettings.java b/src/com/cherish/settings/fragments/LockScreenSettings.java index 3bab4e2..983a36b 100644 --- a/src/com/cherish/settings/fragments/LockScreenSettings.java +++ b/src/com/cherish/settings/fragments/LockScreenSettings.java @@ -60,6 +60,12 @@ public class LockScreenSettings extends SettingsPreferenceFragment implements private static final String AOD_SCHEDULE_KEY = "always_on_display_schedule"; + static final int MODE_DISABLED = 0; + static final int MODE_NIGHT = 1; + static final int MODE_TIME = 2; + static final int MODE_MIXED_SUNSET = 3; + static final int MODE_MIXED_SUNRISE = 4; + Preference mAODPref; @Override @@ -96,15 +102,22 @@ public class LockScreenSettings extends SettingsPreferenceFragment implements int mode = Settings.Secure.getIntForUser(getActivity().getContentResolver(), Settings.Secure.DOZE_ALWAYS_ON_AUTO_MODE, 0, UserHandle.USER_CURRENT); switch (mode) { - case 0: + default: + case MODE_DISABLED: mAODPref.setSummary(R.string.disabled); break; - case 1: + case MODE_NIGHT: mAODPref.setSummary(R.string.night_display_auto_mode_twilight); break; - case 2: + case MODE_TIME: mAODPref.setSummary(R.string.night_display_auto_mode_custom); break; + case MODE_MIXED_SUNSET: + mAODPref.setSummary(R.string.always_on_display_schedule_mixed_sunset); + break; + case MODE_MIXED_SUNRISE: + mAODPref.setSummary(R.string.always_on_display_schedule_mixed_sunrise); + break; } }