AODSchedule: Correctly display summary
Properly support all locales and time formats and improve some code Signed-off-by: Sagarrokade006 <Sagarrokade006@gmail.com> Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
@@ -41,6 +41,9 @@ import com.android.settingslib.search.SearchIndexable;
|
|||||||
|
|
||||||
import com.cherish.settings.preferences.SecureSettingListPreference;
|
import com.cherish.settings.preferences.SecureSettingListPreference;
|
||||||
|
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
|
||||||
@SearchIndexable
|
@SearchIndexable
|
||||||
public class AODSchedule extends SettingsPreferenceFragment implements
|
public class AODSchedule extends SettingsPreferenceFragment implements
|
||||||
Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
|
Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
|
||||||
@@ -78,7 +81,7 @@ public class AODSchedule extends SettingsPreferenceFragment implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object objValue) {
|
public boolean onPreferenceChange(Preference preference, Object objValue) {
|
||||||
int value = Integer.valueOf((String) objValue);
|
int value = Integer.parseInt((String) objValue);
|
||||||
int index = mModePref.findIndexOfValue((String) objValue);
|
int index = mModePref.findIndexOfValue((String) objValue);
|
||||||
mModePref.setSummary(mModePref.getEntries()[index]);
|
mModePref.setSummary(mModePref.getEntries()[index]);
|
||||||
Settings.Secure.putIntForUser(getActivity().getContentResolver(),
|
Settings.Secure.putIntForUser(getActivity().getContentResolver(),
|
||||||
@@ -92,12 +95,9 @@ public class AODSchedule extends SettingsPreferenceFragment implements
|
|||||||
public boolean onPreferenceClick(Preference preference) {
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
String[] times = getCustomTimeSetting();
|
String[] times = getCustomTimeSetting();
|
||||||
boolean isSince = preference == mSincePref;
|
boolean isSince = preference == mSincePref;
|
||||||
int hour, minute; hour = minute = 0;
|
int hour, minute;
|
||||||
TimePickerDialog.OnTimeSetListener listener = new TimePickerDialog.OnTimeSetListener() {
|
TimePickerDialog.OnTimeSetListener listener = (view, hourOfDay, minute1) -> {
|
||||||
@Override
|
updateTimeSetting(isSince, hourOfDay, minute1);
|
||||||
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
|
||||||
updateTimeSetting(isSince, hourOfDay, minute);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
if (isSince) {
|
if (isSince) {
|
||||||
String[] sinceValues = times[0].split(":", 0);
|
String[] sinceValues = times[0].split(":", 0);
|
||||||
@@ -136,41 +136,29 @@ public class AODSchedule extends SettingsPreferenceFragment implements
|
|||||||
mTillPref.setSummary("-");
|
mTillPref.setSummary("-");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode == MODE_NIGHT) {
|
if (mode == MODE_NIGHT) {
|
||||||
mSincePref.setSummary(R.string.always_on_display_schedule_sunset);
|
mSincePref.setSummary(R.string.always_on_display_schedule_sunset);
|
||||||
mTillPref.setSummary(R.string.always_on_display_schedule_sunrise);
|
mTillPref.setSummary(R.string.always_on_display_schedule_sunrise);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String outputFormat = DateFormat.is24HourFormat(getContext()) ? "HH:mm" : "hh:mm a";
|
||||||
|
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern(outputFormat);
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
|
||||||
|
LocalTime sinceDT = LocalTime.parse(times[0], formatter);
|
||||||
|
LocalTime tillDT = LocalTime.parse(times[1], formatter);
|
||||||
|
|
||||||
if (mode == MODE_MIXED_SUNSET) {
|
if (mode == MODE_MIXED_SUNSET) {
|
||||||
mSincePref.setSummary(R.string.always_on_display_schedule_sunset);
|
mSincePref.setSummary(R.string.always_on_display_schedule_sunset);
|
||||||
|
mTillPref.setSummary(tillDT.format(outputFormatter));
|
||||||
} else if (mode == MODE_MIXED_SUNRISE) {
|
} else if (mode == MODE_MIXED_SUNRISE) {
|
||||||
mTillPref.setSummary(R.string.always_on_display_schedule_sunrise);
|
mTillPref.setSummary(R.string.always_on_display_schedule_sunrise);
|
||||||
}
|
mSincePref.setSummary(sinceDT.format(outputFormatter));
|
||||||
if (DateFormat.is24HourFormat(getContext())) {
|
|
||||||
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);
|
|
||||||
String[] tillValues = times[1].split(":", 0);
|
|
||||||
int sinceHour = Integer.parseInt(sinceValues[0]);
|
|
||||||
int tillHour = Integer.parseInt(tillValues[0]);
|
|
||||||
String sinceSummary = "";
|
|
||||||
String tillSummary = "";
|
|
||||||
if (sinceHour > 12) {
|
|
||||||
sinceHour -= 12;
|
|
||||||
sinceSummary += String.valueOf(sinceHour) + ":" + sinceValues[1] + " PM";
|
|
||||||
} else {
|
} else {
|
||||||
sinceSummary = times[0].substring(1) + " AM";
|
mSincePref.setSummary(sinceDT.format(outputFormatter));
|
||||||
|
mTillPref.setSummary(tillDT.format(outputFormatter));
|
||||||
}
|
}
|
||||||
if (tillHour > 12) {
|
|
||||||
tillHour -= 12;
|
|
||||||
tillSummary += String.valueOf(tillHour) + ":" + tillValues[1] + " PM";
|
|
||||||
} else {
|
|
||||||
tillSummary = times[0].substring(1) + " AM";
|
|
||||||
}
|
|
||||||
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) {
|
private void updateTimeSetting(boolean since, int hour, int minute) {
|
||||||
|
|||||||
Reference in New Issue
Block a user