diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index c3103b8..1059dbf 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -583,13 +583,6 @@ Left Center Hidden - Auto hide - Hide clock if launcher is visible - Hide clock at regular interval - Hide duration - Number of seconds to hide clock - Show duration - Number of seconds to wait before hiding clock AM/PM style 24-hour clock is enabled Normal diff --git a/res/xml/cherish_settings_status_bar_clock.xml b/res/xml/cherish_settings_status_bar_clock.xml index fbe6335..223c320 100644 --- a/res/xml/cherish_settings_status_bar_clock.xml +++ b/res/xml/cherish_settings_status_bar_clock.xml @@ -8,40 +8,6 @@ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:title="@string/status_bar_clock_title"> - - - - - - - - 0); + mClockDatePosition.setOnPreferenceChangeListener(this); + + mClockDateStyle = (SystemSettingListPreference) findPreference(CLOCK_DATE_STYLE); + mClockDateStyle.setEnabled(dateDisplay > 0); + mClockDateStyle.setOnPreferenceChangeListener(this); + + mClockDateFormat = (ListPreference) findPreference(CLOCK_DATE_FORMAT); + if (mClockDateFormat.getValue() == null) { + mClockDateFormat.setValue("EEE"); + } + parseClockDateFormats(); + mClockDateFormat.setEnabled(dateDisplay > 0); + mClockDateFormat.setOnPreferenceChangeListener(this); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { + AlertDialog dialog; ContentResolver resolver = getActivity().getContentResolver(); + if (preference == mClockDateDisplay) { + int val = Integer.parseInt((String) newValue); + if (val == 0) { + mClockDatePosition.setEnabled(false); + mClockDateStyle.setEnabled(false); + mClockDateFormat.setEnabled(false); + } else { + mClockDatePosition.setEnabled(true); + mClockDateStyle.setEnabled(true); + mClockDateFormat.setEnabled(true); + } + return true; + } else if (preference == mClockDatePosition) { + parseClockDateFormats(); + return true; + } else if (preference == mClockDateStyle) { + parseClockDateFormats(); + return true; + } else if (preference == mClockDateFormat) { + int index = mClockDateFormat.findIndexOfValue((String) newValue); + + if (index == CUSTOM_CLOCK_DATE_FORMAT_INDEX) { + AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); + alert.setTitle(R.string.status_bar_date_string_edittext_title); + alert.setMessage(R.string.status_bar_date_string_edittext_summary); + + final EditText input = new EditText(getActivity()); + String oldText = Settings.System.getString( + resolver, + Settings.System.STATUS_BAR_CLOCK_DATE_FORMAT); + if (oldText != null) { + input.setText(oldText); + } + alert.setView(input); + + alert.setPositiveButton(R.string.menu_save, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialogInterface, int whichButton) { + String value = input.getText().toString(); + if (value.equals("")) { + return; + } + Settings.System.putString(resolver, + Settings.System.STATUS_BAR_CLOCK_DATE_FORMAT, value); + + return; + } + }); + + alert.setNegativeButton(R.string.menu_cancel, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialogInterface, int which) { + return; + } + }); + dialog = alert.create(); + dialog.show(); + } else { + if ((String) newValue != null) { + Settings.System.putString(resolver, + Settings.System.STATUS_BAR_CLOCK_DATE_FORMAT, (String) newValue); + } + } + return true; + } return false; } + private void parseClockDateFormats() { + String[] dateEntries = getResources().getStringArray( + R.array.status_bar_date_format_entries_values); + CharSequence parsedDateEntries[]; + parsedDateEntries = new String[dateEntries.length]; + Date now = new Date(); + + int lastEntry = dateEntries.length - 1; + int dateFormat = Settings.System.getIntForUser(getActivity() + .getContentResolver(), Settings.System.STATUS_BAR_CLOCK_DATE_STYLE, 0, UserHandle.USER_CURRENT); + for (int i = 0; i < dateEntries.length; i++) { + if (i == lastEntry) { + parsedDateEntries[i] = dateEntries[i]; + } else { + String newDate; + CharSequence dateString = DateFormat.format(dateEntries[i], now); + if (dateFormat == CLOCK_DATE_STYLE_LOWERCASE) { + newDate = dateString.toString().toLowerCase(); + } else if (dateFormat == CLOCK_DATE_STYLE_UPPERCASE) { + newDate = dateString.toString().toUpperCase(); + } else { + newDate = dateString.toString(); + } + + parsedDateEntries[i] = newDate; + } + } + mClockDateFormat.setEntries(parsedDateEntries); + } + @Override public int getMetricsCategory() { return MetricsEvent.CHERISH_SETTINGS; @@ -87,4 +225,4 @@ public class Clock extends SettingsPreferenceFragment implements */ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.cherish_settings_status_bar_clock); -} +} \ No newline at end of file