AODSchedule: Add support for mixed time & sun modes [2/2]

Also make the code a bit more readable

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
idoybh
2021-12-11 00:20:03 +00:00
committed by Hưng Phan
parent 960c5259be
commit 7c4a19993a
4 changed files with 47 additions and 16 deletions

View File

@@ -397,11 +397,15 @@
<item>@string/disabled</item>
<item>@string/night_display_auto_mode_twilight</item>
<item>@string/night_display_auto_mode_custom</item>
<item>@string/always_on_display_schedule_mixed_sunset</item>
<item>@string/always_on_display_schedule_mixed_sunrise</item>
</string-array>
<string-array name="doze_always_on_auto_mode_values" translatable="false">
<item>0</item>
<item>1</item>
<item>3</item>
<item>4</item>
<item>2</item>
</string-array>

View File

@@ -611,4 +611,7 @@
<string name="always_on_display_schedule_title">Always on display schedule</string>
<string name="always_on_display_schedule_sunset">Sunset</string>
<string name="always_on_display_schedule_sunrise">Sunrise</string>
<string name="always_on_display_schedule_mixed_sunset">Turns on from sunset till a time</string>
<string name="always_on_display_schedule_mixed_sunrise">Turns on from a time till sunrise</string>
</resources>

View File

@@ -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

View File

@@ -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;
}
}