Cherish:fix-up: statusbar clock date customization (2/2)

Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
kufikugel
2022-02-26 16:36:43 +07:00
committed by Hưng Phan
parent b981ed252e
commit 0b61f74039
5 changed files with 207 additions and 130 deletions

View File

@@ -74,44 +74,56 @@
<item>2</item>
</string-array>
<!-- Status bar clock and date options -->
<string-array name="entries_status_bar_am_pm">
<item>@string/am_pm_clock_none</item>
<item>@string/am_pm_clock_small</item>
<item>@string/am_pm_clock_normal</item>
<!-- Statusbar Clock -->
<string-array name="status_bar_clock_style_entries" translatable="false">
<item>@string/status_bar_clock_style_left</item>
<item>@string/status_bar_clock_style_center</item>
<item>@string/status_bar_clock_style_right</item>
</string-array>
<string-array name="values_status_bar_am_pm" translatable="false">
<string-array name="status_bar_clock_style_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="clock_date_display_entries">
<string-array name="status_bar_am_pm_entries" translatable="false">
<item>@string/status_bar_am_pm_hidden</item>
<item>@string/status_bar_am_pm_small</item>
<item>@string/status_bar_am_pm_normal</item>
</string-array>
<string-array name="status_bar_am_pm_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="clock_date_display_entries">
<item>@string/clock_date_display_none</item>
<item>@string/clock_date_display_small</item>
<item>@string/clock_date_display_normal</item>
</string-array>
<string-array name="clock_date_display_values" translatable="false">
<string-array name="clock_date_display_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="clock_date_style_entries">
<string-array name="clock_date_style_entries">
<item>@string/clock_date_style_normal</item>
<item>@string/clock_date_style_lowercase</item>
<item>@string/clock_date_style_uppercase</item>
</string-array>
<string-array name="clock_date_style_values" translatable="false">
<string-array name="clock_date_style_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="clock_date_format_entries_values">
<string-array name="clock_date_format_entries_values">
<item>dd/MM/yy</item>
<item>MM/dd/yy</item>
<item>yyyy-MM-dd</item>
@@ -129,6 +141,8 @@
<item>EEE MMM dd</item>
<item>EEE MMMM dd</item>
<item>EEEE dd/MM</item>
<item>EEEE MM/dd</item>
<item>@string/clock_date_format_custom</item>
</string-array>
<string-array name="clock_date_position_entries" translatable="false">
@@ -369,5 +383,4 @@
<item>7</item>
<item>5</item>
</string-array>
</resources>

View File

@@ -234,35 +234,36 @@
<string name="quick_pulldown_left">Pulldown statusbar from left side</string>
<!-- Status bar clock and date options -->
<string name="status_bar_clock_date_title">Clock and date</string>
<string name="status_bar_clock_date_summary">Customize the statusbar clock and date</string>
<string name="status_bar_clock_title">Clock settings</string>
<string name="status_bar_clock">Clock &amp; Date</string>
<string name="clock_enabled">Enabled</string>
<string name="clock_disabled">Disabled</string>
<string name="status_bar_clock_style_reset">Reset color</string>
<string name="status_bar_show_clock_title">Show clock &amp; date</string>
<string name="status_bar_am_pm_title">AM/PM</string>
<string name="status_bar_clock_show">Show clock and date</string>
<string name="status_bar_clock_style_title">Clock style</string>
<string name="status_bar_clock_style_right">Right</string>
<string name="status_bar_clock_style_center">Center</string>
<string name="status_bar_clock_style_left">Left</string>
<string name="status_bar_am_pm_title">AM/PM style</string>
<string name="status_bar_am_pm_info">24-hour clock is enabled</string>
<string name="enable_clock_weekday">Day of the week</string>
<string name="enable_clock_weekday_summary">Abbreviated day of the week before the time</string>
<string name="dont_show">Don\'t show</string>
<string name="status_bar_am_pm_normal">Normal</string>
<string name="status_bar_am_pm_small">Small</string>
<string name="status_bar_am_pm_hidden">Hidden (default)</string>
<string name="clock_seconds_display">Show seconds</string>
<string name="status_bar_date_title">Date settings</string>
<string name="clock_date_display">Date</string>
<string name="clock_date_display_summary">Display custom date before the clock</string>
<string name="clock_date_style">Date style</string>
<string name="clock_date_format">Date format</string>
<string name="clock_date_string_edittext_title">Must be in DateFormat eg. MM/dd/yy</string>
<string name="clock_date_string_edittext_summary">Enter string</string>
<string name="am_pm_clock_normal">Normal font size</string>
<string name="am_pm_clock_small">Small font size</string>
<string name="am_pm_clock_none">Don\'t show</string>
<string name="clock_date_display_none">Don\'t show</string>
<string name="clock_date_display_small">Small font size</string>
<string name="clock_date_display_normal">Normal font size</string>
<string name="clock_date_style">Date style</string>
<string name="clock_date_style_normal">Normal</string>
<string name="clock_date_style_lowercase">Lowercase</string>
<string name="clock_date_style_uppercase">Uppercase</string>
<string name="clock_date_format_custom">Custom java format</string>
<string name="clock_date_format">Date format</string>
<string name="clock_date_string_edittext_title">Must be in DateFormat eg. MM/dd/yy</string>
<string name="clock_date_string_edittext_summary">Enter string</string>
<string name="clock_date_position">Date position</string>
<string name="clock_date_right">Right of time</string>
<string name="clock_date_left">Left of time</string>
<string name="clock_date_position">Date position</string>
<string name="status_bar_clock_auto_hide_title">Auto-hide clock</string>
<string name="status_bar_clock_auto_hide_summary">Hide and show clock at regular intervals of time</string>
<string name="status_bar_clock_auto_hide_hdur_title">Hide duration</string>

View File

@@ -31,9 +31,9 @@
android:title="@string/sb_icons">
<Preference
android:key="status_bar_clock"
android:fragment="com.cherish.settings.fragments.ClockDateSettings"
android:title="@string/status_bar_clock_title" />
android:title="@string/status_bar_clock_date_title"
android:summary="@string/status_bar_clock_date_summary"
android:fragment="com.cherish.settings.fragments.ClockDateSettings" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="data_disabled_icon"

View File

@@ -15,26 +15,38 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<SwitchPreference
android:key="status_bar_show_clock"
android:title="@string/status_bar_show_clock_title"
<PreferenceCategory
android:title="@string/status_bar_clock_title">
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="status_bar_clock"
android:title="@string/status_bar_clock_show"
android:defaultValue="true" />
<ListPreference
android:key="status_bar_am_pm"
android:dialogTitle="@string/status_bar_am_pm_title"
android:title="@string/status_bar_am_pm_title"
android:entries="@array/entries_status_bar_am_pm"
android:entryValues="@array/values_status_bar_am_pm"
android:dependency="status_bar_show_clock" />
<ListPreference
android:key="statusbar_clock_style"
android:title="@string/status_bar_clock_style_title"
android:dialogTitle="@string/status_bar_clock_style_title"
android:entries="@array/status_bar_clock_style_entries"
android:entryValues="@array/status_bar_clock_style_values"
android:summary="%s"
android:dependency="status_bar_clock" />
<ListPreference
android:key="clock_date_display"
android:title="@string/clock_date_display"
android:summary="@string/clock_date_display_summary"
android:entries="@array/clock_date_display_entries"
android:entryValues="@array/clock_date_display_values"
android:dependency="status_bar_show_clock" />
<ListPreference
android:key="statusbar_clock_am_pm_style"
android:title="@string/status_bar_am_pm_title"
android:dialogTitle="@string/status_bar_am_pm_title"
android:entries="@array/status_bar_am_pm_entries"
android:entryValues="@array/status_bar_am_pm_values"
android:summary="%s"
android:dependency="status_bar_clock" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="status_bar_clock_seconds"
android:title="@string/clock_seconds_display"
android:dependency="status_bar_clock"
android:defaultValue="false" />
<com.cherish.settings.preferences.SystemSettingSwitchPreference
android:key="status_bar_clock_auto_hide"
@@ -62,25 +74,44 @@
android:dependency="status_bar_clock_auto_hide"
android:defaultValue="5" />
<ListPreference
android:key="clock_date_style"
android:title="@string/clock_date_style"
android:entries="@array/clock_date_style_entries"
android:entryValues="@array/clock_date_style_values"
android:dependency="status_bar_show_clock" />
</PreferenceCategory>
<ListPreference
android:key="clock_date_format"
android:title="@string/clock_date_format"
android:entries="@array/clock_date_format_entries_values"
android:entryValues="@array/clock_date_format_entries_values"
android:dependency="status_bar_show_clock" />
<PreferenceCategory
android:title="@string/status_bar_date_title">
<ListPreference
android:key="clock_date_position"
android:key="statusbar_clock_date_display"
android:title="@string/clock_date_display"
android:summary="%s"
android:entries="@array/clock_date_display_entries"
android:entryValues="@array/clock_date_display_values"
android:dependency="status_bar_clock" />
<ListPreference
android:key="statusbar_clock_date_position"
android:title="@string/clock_date_position"
android:summary="%s"
android:entries="@array/clock_date_position_entries"
android:entryValues="@array/clock_date_position_values"
android:dependency="status_bar_show_clock" />
android:dependency="statusbar_clock_date_display" />
<ListPreference
android:key="statusbar_clock_date_style"
android:title="@string/clock_date_style"
android:summary="%s"
android:entries="@array/clock_date_style_entries"
android:entryValues="@array/clock_date_style_values"
android:dependency="statusbar_clock_date_display" />
<ListPreference
android:key="statusbar_clock_date_format"
android:title="@string/clock_date_format"
android:summary="%s"
android:entries="@array/clock_date_format_entries_values"
android:entryValues="@array/clock_date_format_entries_values"
android:dependency="statusbar_clock_date_display" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -38,7 +38,8 @@ import android.view.View;
import android.widget.EditText;
import com.android.internal.logging.nano.MetricsProto;
import com.cherish.settings.preferences.SystemSettingSwitchPreference;
import com.cherish.settings.preferences.CustomSeekBarPreference;
import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.SettingsPreferenceFragment;
@@ -53,112 +54,147 @@ import java.util.List;
public class ClockDateSettings extends SettingsPreferenceFragment
implements Preference.OnPreferenceChangeListener, Indexable {
private static final String PREF_AM_PM_STYLE = "status_bar_am_pm";
private static final String PREF_CLOCK_DATE_DISPLAY = "clock_date_display";
private static final String PREF_CLOCK_DATE_STYLE = "clock_date_style";
private static final String PREF_CLOCK_DATE_FORMAT = "clock_date_format";
private static final String PREF_STATUS_BAR_CLOCK = "status_bar_show_clock";
private static final String PREF_CLOCK_DATE_POSITION = "clock_date_position";
private static final String STATUS_BAR_CLOCK = "status_bar_clock";
private static final String STATUS_BAR_CLOCK_SECONDS = "status_bar_clock_seconds";
private static final String STATUS_BAR_CLOCK_STYLE = "statusbar_clock_style";
private static final String STATUS_BAR_AM_PM = "statusbar_clock_am_pm_style";
private static final String STATUS_BAR_CLOCK_DATE_DISPLAY = "statusbar_clock_date_display";
private static final String STATUS_BAR_CLOCK_DATE_STYLE = "statusbar_clock_date_style";
private static final String STATUS_BAR_CLOCK_DATE_FORMAT = "statusbar_clock_date_format";
public static final int CLOCK_DATE_STYLE_LOWERCASE = 1;
public static final int CLOCK_DATE_STYLE_UPPERCASE = 2;
private static final int CUSTOM_CLOCK_DATE_FORMAT_INDEX = 18;
private static final String STATUS_BAR_CLOCK_DATE_POSITION = "statusbar_clock_date_position";
private ListPreference mClockAmPmStyle;
private SystemSettingSwitchPreference mStatusBarClockShow;
private SystemSettingSwitchPreference mStatusBarSecondsShow;
private ListPreference mStatusBarClock;
private ListPreference mStatusBarAmPm;
private ListPreference mClockDateDisplay;
private ListPreference mClockDateStyle;
private ListPreference mClockDateFormat;
private ListPreference mClockDatePosition;
private SwitchPreference mStatusBarClock;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.clock_date_settings);
PreferenceScreen prefSet = getPreferenceScreen();
ContentResolver resolver = getActivity().getContentResolver();
mClockAmPmStyle = (ListPreference) findPreference(PREF_AM_PM_STYLE);
mClockAmPmStyle.setOnPreferenceChangeListener(this);
mClockAmPmStyle.setValue(Integer.toString(Settings.System.getInt(getActivity()
.getContentResolver(), Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE,
0)));
boolean is24hour = DateFormat.is24HourFormat(getActivity());
if (is24hour) {
mClockAmPmStyle.setSummary(R.string.status_bar_am_pm_info);
// clock settings
mStatusBarClockShow = (SystemSettingSwitchPreference) findPreference(STATUS_BAR_CLOCK);
mStatusBarSecondsShow = (SystemSettingSwitchPreference) findPreference(STATUS_BAR_CLOCK_SECONDS);
mStatusBarClock = (ListPreference) findPreference(STATUS_BAR_CLOCK_STYLE);
mStatusBarAmPm = (ListPreference) findPreference(STATUS_BAR_AM_PM);
mClockDateDisplay = (ListPreference) findPreference(STATUS_BAR_CLOCK_DATE_DISPLAY);
mClockDateStyle = (ListPreference) findPreference(STATUS_BAR_CLOCK_DATE_STYLE);
mClockDatePosition = (ListPreference) findPreference(STATUS_BAR_CLOCK_DATE_POSITION);
mStatusBarClockShow.setChecked((Settings.System.getInt(resolver,
Settings.System.STATUSBAR_CLOCK, 1) == 1));
mStatusBarClockShow.setOnPreferenceChangeListener(this);
mStatusBarSecondsShow.setChecked((Settings.System.getInt(resolver,
Settings.System.STATUSBAR_CLOCK_SECONDS, 0) == 1));
mStatusBarSecondsShow.setOnPreferenceChangeListener(this);
int clockStyle = Settings.System.getInt(resolver,
Settings.System.STATUSBAR_CLOCK_STYLE, 0);
mStatusBarClock.setValue(String.valueOf(clockStyle));
mStatusBarClock.setSummary(mStatusBarClock.getEntry());
mStatusBarClock.setOnPreferenceChangeListener(this);
if (DateFormat.is24HourFormat(getActivity())) {
mStatusBarAmPm.setEnabled(false);
mStatusBarAmPm.setSummary(R.string.status_bar_am_pm_info);
} else {
mClockAmPmStyle.setSummary(mClockAmPmStyle.getEntry());
int statusBarAmPm = Settings.System.getInt(resolver,
Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE, 2);
mStatusBarAmPm.setValue(String.valueOf(statusBarAmPm));
mStatusBarAmPm.setSummary(mStatusBarAmPm.getEntry());
mStatusBarAmPm.setOnPreferenceChangeListener(this);
}
mClockAmPmStyle.setEnabled(!is24hour);
mClockDateDisplay = (ListPreference) findPreference(PREF_CLOCK_DATE_DISPLAY);
mClockDateDisplay.setOnPreferenceChangeListener(this);
mClockDateDisplay.setValue(Integer.toString(Settings.System.getInt(getActivity()
.getContentResolver(), Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY,
0)));
// date settings
int clockDateDisplay = Settings.System.getInt(resolver,
Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY, 0);
mClockDateDisplay.setValue(String.valueOf(clockDateDisplay));
mClockDateDisplay.setSummary(mClockDateDisplay.getEntry());
mClockDateDisplay.setOnPreferenceChangeListener(this);
mClockDateStyle = (ListPreference) findPreference(PREF_CLOCK_DATE_STYLE);
mClockDateStyle.setOnPreferenceChangeListener(this);
mClockDateStyle.setValue(Integer.toString(Settings.System.getInt(getActivity()
.getContentResolver(), Settings.System.STATUSBAR_CLOCK_DATE_STYLE,
0)));
int clockDateStyle = Settings.System.getInt(resolver,
Settings.System.STATUSBAR_CLOCK_DATE_STYLE, 0);
mClockDateStyle.setValue(String.valueOf(clockDateStyle));
mClockDateStyle.setSummary(mClockDateStyle.getEntry());
mClockDateStyle.setOnPreferenceChangeListener(this);
mClockDateFormat = (ListPreference) findPreference(PREF_CLOCK_DATE_FORMAT);
mClockDateFormat = (ListPreference) findPreference(STATUS_BAR_CLOCK_DATE_FORMAT);
mClockDateFormat.setOnPreferenceChangeListener(this);
String value = Settings.System.getString(getActivity().getContentResolver(),
Settings.System.STATUSBAR_CLOCK_DATE_FORMAT);
if (value == null || value.isEmpty()) {
value = "EEE";
}
int index = mClockDateFormat.findIndexOfValue((String) value);
if (index == -1) {
mClockDateFormat.setValueIndex(CUSTOM_CLOCK_DATE_FORMAT_INDEX);
} else {
mClockDateFormat.setValue(value);
}
parseClockDateFormats();
mStatusBarClock = (SwitchPreference) findPreference(PREF_STATUS_BAR_CLOCK);
mStatusBarClock.setChecked((Settings.System.getInt(
getActivity().getApplicationContext().getContentResolver(),
Settings.System.STATUSBAR_CLOCK, 1) == 1));
mStatusBarClock.setOnPreferenceChangeListener(this);
mClockDatePosition = (ListPreference) findPreference(PREF_CLOCK_DATE_POSITION);
mClockDatePosition.setOnPreferenceChangeListener(this);
mClockDatePosition.setValue(Integer.toString(Settings.System.getInt(getActivity()
.getContentResolver(), Settings.System.STATUSBAR_CLOCK_DATE_POSITION,
0)));
mClockDatePosition.setSummary(mClockDatePosition.getEntry());
mClockDatePosition.setOnPreferenceChangeListener(this);
boolean mClockDateToggle = Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY, 0) != 0;
if (!mClockDateToggle) {
mClockDateStyle.setEnabled(false);
mClockDateFormat.setEnabled(false);
mClockDatePosition.setEnabled(false);
}
int clockDatePosition = Settings.System.getInt(resolver,
Settings.System.STATUSBAR_CLOCK_DATE_POSITION, 0);
mClockDatePosition.setValue(String.valueOf(clockDatePosition));
mClockDatePosition.setSummary(mClockDatePosition.getEntry());
mClockDatePosition.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
AlertDialog dialog;
if (preference == mClockAmPmStyle) {
int val = Integer.parseInt((String) newValue);
int index = mClockAmPmStyle.findIndexOfValue((String) newValue);
if (preference == mStatusBarClockShow) {
boolean value = (Boolean) newValue;
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE, val);
mClockAmPmStyle.setSummary(mClockAmPmStyle.getEntries()[index]);
Settings.System.STATUSBAR_CLOCK, value ? 1 : 0);
return true;
} else if (preference == mStatusBarSecondsShow) {
boolean value = (Boolean) newValue;
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.STATUSBAR_CLOCK_SECONDS, value ? 1 : 0);
return true;
} else if (preference == mStatusBarClock) {
int clockStyle = Integer.parseInt((String) newValue);
int index = mStatusBarClock.findIndexOfValue((String) newValue);
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.STATUSBAR_CLOCK_STYLE, clockStyle);
mStatusBarClock.setSummary(mStatusBarClock.getEntries()[index]);
return true;
} else if (preference == mStatusBarAmPm) {
int statusBarAmPm = Integer.valueOf((String) newValue);
int index = mStatusBarAmPm.findIndexOfValue((String) newValue);
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE, statusBarAmPm);
mStatusBarAmPm.setSummary(mStatusBarAmPm.getEntries()[index]);
return true;
} else if (preference == mClockDateDisplay) {
int val = Integer.parseInt((String) newValue);
int clockDateDisplay = Integer.valueOf((String) newValue);
int index = mClockDateDisplay.findIndexOfValue((String) newValue);
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY, val);
Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY, clockDateDisplay);
mClockDateDisplay.setSummary(mClockDateDisplay.getEntries()[index]);
if (val == 0) {
if (clockDateDisplay == 0) {
mClockDateStyle.setEnabled(false);
mClockDateFormat.setEnabled(false);
mClockDatePosition.setEnabled(false);
@@ -169,22 +205,17 @@ public class ClockDateSettings extends SettingsPreferenceFragment
}
return true;
} else if (preference == mClockDateStyle) {
int val = Integer.parseInt((String) newValue);
int clockDateStyle = Integer.valueOf((String) newValue);
int index = mClockDateStyle.findIndexOfValue((String) newValue);
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.STATUSBAR_CLOCK_DATE_STYLE, val);
Settings.System.STATUSBAR_CLOCK_DATE_STYLE, clockDateStyle);
mClockDateStyle.setSummary(mClockDateStyle.getEntries()[index]);
parseClockDateFormats();
return true;
} else if (preference == mStatusBarClock) {
Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(),
Settings.System.STATUSBAR_CLOCK,
(Boolean) newValue ? 1 : 0);
return true;
} else if (preference == mClockDateFormat) {
int index = mClockDateFormat.findIndexOfValue((String) newValue);
if (index == CUSTOM_CLOCK_DATE_FORMAT_INDEX) {
if (index == CUSTOM_CLOCK_DATE_FORMAT_INDEX) {
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
alert.setTitle(R.string.clock_date_string_edittext_title);
alert.setMessage(R.string.clock_date_string_edittext_summary);
@@ -206,7 +237,8 @@ public class ClockDateSettings extends SettingsPreferenceFragment
}
Settings.System.putString(getActivity().getContentResolver(),
Settings.System.STATUSBAR_CLOCK_DATE_FORMAT, value);
return;
return;
}
});
@@ -233,8 +265,8 @@ public class ClockDateSettings extends SettingsPreferenceFragment
mClockDatePosition.setSummary(mClockDatePosition.getEntries()[index]);
parseClockDateFormats();
return true;
}
return false;
}
return false;
}
private void parseClockDateFormats() {