Evolver: Status bar clock customizations [2/2]

Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: AnierinB <anierin@evolution-x.org>
This commit is contained in:
Pranav Vashi
2024-05-17 22:26:51 +09:00
committed by Joey Huab
parent 5802e61322
commit 164eb3185b
6 changed files with 534 additions and 13 deletions

View File

@@ -94,6 +94,127 @@
<item>3</item>
</string-array>
<!-- Status bar/Clock & date-->
<string-array name="status_bar_clock_position_entries" translatable="false">
<item>@string/status_bar_clock_position_right</item>
<item>@string/status_bar_clock_position_center</item>
<item>@string/status_bar_clock_position_left</item>
<item>@string/status_bar_clock_position_hidden</item>
</string-array>
<string-array name="status_bar_clock_position_entries_rtl" translatable="false">
<item>@string/status_bar_clock_position_left</item>
<item>@string/status_bar_clock_position_center</item>
<item>@string/status_bar_clock_position_right</item>
<item>@string/status_bar_clock_position_hidden</item>
</string-array>
<string-array name="status_bar_clock_position_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="status_bar_clock_position_values_rtl" translatable="false">
<item>2</item>
<item>1</item>
<item>0</item>
<item>3</item>
</string-array>
<string-array name="status_bar_clock_position_entries_notch" translatable="false">
<item>@string/status_bar_clock_position_right</item>
<item>@string/status_bar_clock_position_left</item>
<item>@string/status_bar_clock_position_hidden</item>
</string-array>
<string-array name="status_bar_clock_position_entries_notch_rtl" translatable="false">
<item>@string/status_bar_clock_position_left</item>
<item>@string/status_bar_clock_position_right</item>
<item>@string/status_bar_clock_position_hidden</item>
</string-array>
<string-array name="status_bar_clock_position_values_notch" translatable="false">
<item>0</item>
<item>2</item>
<item>3</item>
</string-array>
<string-array name="status_bar_clock_position_values_notch_rtl" translatable="false">
<item>2</item>
<item>0</item>
<item>3</item>
</string-array>
<string-array name="status_bar_am_pm_entries" translatable="false">
<item>@string/status_bar_am_pm_hidden</item>
<item>@string/status_bar_am_pm_normal</item>
<item>@string/status_bar_am_pm_small</item>
</string-array>
<string-array name="status_bar_am_pm_values" translatable="false">
<item>2</item>
<item>0</item>
<item>1</item>
</string-array>
<string-array name="clock_date_position_entries" translatable="false">
<item>@string/status_bar_clock_date_left</item>
<item>@string/status_bar_clock_date_right</item>
</string-array>
<string-array name="clock_date_position_values" translatable="false">
<item>0</item>
<item>1</item>
</string-array>
<string-array name="status_bar_date_entries">
<item>@string/status_bar_date_none</item>
<item>@string/status_bar_date_small</item>
<item>@string/status_bar_date_normal</item>
</string-array>
<string-array name="status_bar_date_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="status_bar_date_style_entries">
<item>@string/status_bar_date_style_normal</item>
<item>@string/status_bar_date_style_lowercase</item>
<item>@string/status_bar_date_style_uppercase</item>
</string-array>
<string-array name="status_bar_date_style_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
<string-array name="status_bar_date_format_entries_values" translatable="false">
<item>dd/MM/yy</item>
<item>MM/dd/yy</item>
<item>yyyy-MM-dd</item>
<item>yyyy-dd-MM</item>
<item>dd-MM-yyyy</item>
<item>MM-dd-yyyy</item>
<item>MMM dd</item>
<item>MMM dd, yyyy</item>
<item>MMMM dd, yyyy</item>
<item>EEE</item>
<item>EEE dd</item>
<item>EEE dd/MM</item>
<item>EEE MM/dd</item>
<item>EEE dd MMM</item>
<item>EEE MMM dd</item>
<item>EEE MMMM dd</item>
<item>EEEE dd/MM</item>
<item>EEEE MM/dd</item>
<item>@string/status_bar_date_format_custom</item>
</string-array>
<!-- Status bar - Battery -->
<string-array name="status_bar_battery_style_entries" translatable="false">
<item>@string/status_bar_battery_style_icon_portrait</item>

View File

@@ -152,6 +152,8 @@
<string name="status_bar_battery_percent_text_next_left">Next to the icon (left)</string>
<string name="status_bar_battery_text_charging_title">Battery percentage when charging</string>
<string name="status_bar_battery_text_charging_summary">Always display battery percentage when charging</string>
<string name="status_bar_clock_and_date_title">Clock &amp; date</string>
<string name="status_bar_clock_and_date_summary">Customize clock &amp; date</string>
<string name="status_bar_data_disabled_icon_title">Data disabled indicator</string>
<string name="status_bar_data_disabled_icon_summary">Display an indicator next to signal icon when data is disabled</string>
<string name="status_bar_4g_icon_title">4G icon</string>
@@ -176,6 +178,43 @@
<string name="status_bar_carrier_lock_screen_title">Carrier name on lockscreen</string>
<string name="status_bar_carrier_lock_screen_summary">Display carrier name on lockscreen status bar</string>
<!-- Status bar/Clock & date-->
<string name="status_bar_clock_position_title">Clock position</string>
<string name="status_bar_clock_position_right">Right</string>
<string name="status_bar_clock_position_left">Left</string>
<string name="status_bar_clock_position_center">Center</string>
<string name="status_bar_clock_position_hidden">Hidden</string>
<string name="status_bar_clock_seconds_title">Clock seconds</string>
<string name="status_bar_clock_seconds_summary">Display seconds next to clock in status bar</string>
<string name="status_bar_clock_auto_hide_intervals_title">Auto hide at intervals</string>
<string name="status_bar_clock_auto_hide_intervals_summary">Hide clock at specific time based intervals</string>
<string name="status_bar_clock_auto_hide_hdur_title">Hide duration</string>
<string name="status_bar_clock_auto_hide_hdur_summary">Number of seconds to hide clock</string>
<string name="status_bar_clock_auto_hide_sdur_title">Show duration</string>
<string name="status_bar_clock_auto_hide_sdur_summary">Number of seconds to wait before hiding clock</string>
<string name="status_bar_clock_auto_hide_launcher_title">Auto hide on launcher</string>
<string name="status_bar_clock_auto_hide_launcher_summary">Hide clock if launcher is visible</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="status_bar_am_pm_normal">Normal</string>
<string name="status_bar_am_pm_small">Small</string>
<string name="status_bar_am_pm_hidden">Hidden</string>
<string name="status_bar_date_title">Date</string>
<string name="status_bar_date_none">Hidden</string>
<string name="status_bar_date_small">Small</string>
<string name="status_bar_date_normal">Normal</string>
<string name="status_bar_date_format_title">Date format</string>
<string name="status_bar_date_style">Date style</string>
<string name="status_bar_date_style_normal">Normal</string>
<string name="status_bar_date_style_lowercase">Lowercase</string>
<string name="status_bar_date_style_uppercase">Uppercase</string>
<string name="status_bar_date_format_custom">Custom java format</string>
<string name="status_bar_date_string_edittext_title">Must be in DateFormat eg. MM/dd/yy</string>
<string name="status_bar_date_string_edittext_summary">Enter string</string>
<string name="status_bar_clock_date_position">Date position</string>
<string name="status_bar_clock_date_right">Right of time</string>
<string name="status_bar_clock_date_left">Left of time</string>
<!-- Status bar/Network traffic -->
<string name="network_traffic_location_title">Location</string>
<string name="network_traffic_location_disable">Disabled</string>

View File

@@ -13,6 +13,12 @@
android:key="lock_screen_interface_category"
android:title="@string/lock_screen_interface_category">
<org.evolution.settings.preferences.SystemSettingSwitchPreference
android:key="lockscreen_show_carrier"
android:title="@string/status_bar_carrier_lock_screen_title"
android:summary="@string/status_bar_carrier_lock_screen_summary"
android:defaultValue="true" />
<!-- Charging stats -->
<org.evolution.settings.preferences.SystemSettingSwitchPreference
android:key="lockscreen_battery_info"

View File

@@ -41,6 +41,20 @@
<intent android:action="com.android.settings.action.STATUS_BAR_TUNER" />
</Preference>
<!-- Clock & date -->
<Preference
android:key="clock"
android:title="@string/status_bar_clock_and_date_title"
android:summary="@string/status_bar_clock_and_date_summary"
android:fragment="org.evolution.settings.fragments.statusbar.Clock" />
<!-- Network traffic -->
<Preference
android:key="network_traffic_settings"
android:title="@string/status_bar_network_traffic_settings_title"
android:summary="@string/status_bar_network_traffic_settings_summary"
android:fragment="org.evolution.settings.fragments.statusbar.NetworkTrafficSettings" />
<!-- Battery styles -->
<org.evolution.settings.preferences.SystemSettingListPreference
android:key="status_bar_battery_style"
@@ -78,12 +92,6 @@
android:summary="@string/status_bar_4g_icon_summary"
android:defaultValue="false" />
<org.evolution.settings.preferences.SystemSettingSwitchPreference
android:key="lockscreen_show_carrier"
android:title="@string/status_bar_carrier_lock_screen_title"
android:summary="@string/status_bar_carrier_lock_screen_summary"
android:defaultValue="true" />
<!-- Wi-Fi standard icon -->
<org.evolution.settings.preferences.SystemSettingSwitchPreference
android:key="wifi_standard_icon"
@@ -105,13 +113,6 @@
android:summary="@string/status_bar_colored_icons_summary"
android:defaultValue="false" />
<!-- Network traffic -->
<Preference
android:key="network_traffic_settings"
android:title="@string/status_bar_network_traffic_settings_title"
android:summary="@string/status_bar_network_traffic_settings_summary"
android:fragment="org.evolution.settings.fragments.statusbar.NetworkTrafficSettings" />
<!-- Notification counter -->
<org.evolution.settings.preferences.SystemSettingSwitchPreference
android:key="statusbar_notif_count"

View File

@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2018-2024 crDroid Android Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/status_bar_clock_and_date_title" >
<lineageos.preference.LineageSystemSettingListPreference
android:key="status_bar_clock"
android:title="@string/status_bar_clock_position_title"
android:summary="%s"
android:dialogTitle="@string/status_bar_clock_position_title"
android:entries="@array/status_bar_clock_position_entries"
android:entryValues="@array/status_bar_clock_position_values"
android:defaultValue="2" />
<org.evolution.settings.preferences.SystemSettingSwitchPreference
android:key="status_bar_clock_auto_hide"
android:title="@string/status_bar_clock_auto_hide_intervals_title"
android:summary="@string/status_bar_clock_auto_hide_intervals_summary"
android:defaultValue="false" />
<org.evolution.settings.preferences.SystemSettingSeekBarPreference
android:key="status_bar_clock_auto_hide_hduration"
android:title="@string/status_bar_clock_auto_hide_hdur_title"
android:summary="@string/status_bar_clock_auto_hide_hdur_summary"
android:dependency="status_bar_clock_auto_hide"
android:max="300"
settings:min="5"
settings:interval="5"
android:defaultValue="60"
settings:units="@string/unit_seconds" />
<org.evolution.settings.preferences.SystemSettingSeekBarPreference
android:key="status_bar_clock_auto_hide_sduration"
android:title="@string/status_bar_clock_auto_hide_sdur_title"
android:summary="@string/status_bar_clock_auto_hide_sdur_summary"
android:dependency="status_bar_clock_auto_hide"
android:max="300"
settings:min="5"
settings:interval="5"
android:defaultValue="5"
settings:units="@string/unit_seconds" />
<lineageos.preference.LineageSystemSettingSwitchPreference
android:key="status_bar_clock_auto_hide"
android:title="@string/status_bar_clock_auto_hide_launcher_title"
android:summary="@string/status_bar_clock_auto_hide_launcher_summary"
android:defaultValue="false" />
<org.evolution.settings.preferences.SystemSettingSwitchPreference
android:key="status_bar_clock_seconds"
android:title="@string/status_bar_clock_seconds_title"
android:summary="@string/status_bar_clock_seconds_summary"
android:defaultValue="false" />
<lineageos.preference.LineageSystemSettingListPreference
android:key="status_bar_am_pm"
android:title="@string/status_bar_am_pm_title"
android:summary="%s"
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:defaultValue="2" />
<org.evolution.settings.preferences.SystemSettingListPreference
android:key="status_bar_clock_date_display"
android:title="@string/status_bar_date_title"
android:entries="@array/status_bar_date_entries"
android:entryValues="@array/status_bar_date_values"
android:defaultValue="0" />
<org.evolution.settings.preferences.SystemSettingListPreference
android:key="status_bar_clock_date_position"
android:title="@string/status_bar_clock_date_position"
android:entries="@array/clock_date_position_entries"
android:entryValues="@array/clock_date_position_values"
android:defaultValue="0" />
<org.evolution.settings.preferences.SystemSettingListPreference
android:key="status_bar_clock_date_style"
android:title="@string/status_bar_date_style"
android:entries="@array/status_bar_date_style_entries"
android:entryValues="@array/status_bar_date_style_values"
android:defaultValue="0" />
<ListPreference
android:key="status_bar_clock_date_format"
android:title="@string/status_bar_date_format_title"
android:entries="@array/status_bar_date_format_entries_values"
android:entryValues="@array/status_bar_date_format_entries_values" />
</PreferenceScreen>

View File

@@ -0,0 +1,248 @@
/*
* Copyright (C) 2016-2024 crDroid Android Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.evolution.settings.fragments.statusbar;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.format.DateFormat;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.Preference.OnPreferenceChangeListener;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settingslib.search.SearchIndexable;
import java.util.Date;
import java.util.List;
import lineageos.preference.LineageSystemSettingListPreference;
import lineageos.providers.LineageSettings;
import org.evolution.settings.preferences.CustomSeekBarPreference;
import org.evolution.settings.preferences.SystemSettingListPreference;
import org.evolution.settings.utils.DeviceUtils;
@SearchIndexable
public class Clock extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
private static final String TAG = "Clock";
private static final String STATUS_BAR_CLOCK_POSITION = "status_bar_clock";
private static final String STATUS_BAR_AM_PM = "status_bar_am_pm";
private static final String CLOCK_DATE_DISPLAY = "status_bar_clock_date_display";
private static final String CLOCK_DATE_POSITION = "status_bar_clock_date_position";
private static final String CLOCK_DATE_STYLE = "status_bar_clock_date_style";
private static final String CLOCK_DATE_FORMAT = "status_bar_clock_date_format";
private static final int CLOCK_DATE_STYLE_LOWERCASE = 1;
private static final int CLOCK_DATE_STYLE_UPPERCASE = 2;
private static final int CUSTOM_CLOCK_DATE_FORMAT_INDEX = 18;
private LineageSystemSettingListPreference mClockPosition;
private LineageSystemSettingListPreference mStatusBarAmPm;
private SystemSettingListPreference mClockDateDisplay;
private SystemSettingListPreference mClockDatePosition;
private SystemSettingListPreference mClockDateStyle;
private ListPreference mClockDateFormat;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.status_bar_clock);
ContentResolver resolver = getActivity().getContentResolver();
Context mContext = getActivity().getApplicationContext();
mClockPosition =
(LineageSystemSettingListPreference) findPreference(STATUS_BAR_CLOCK_POSITION);
if (getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
if (DeviceUtils.hasCenteredCutout(mContext)) {
mClockPosition.setEntries(R.array.status_bar_clock_position_entries_notch_rtl);
mClockPosition.setEntryValues(R.array.status_bar_clock_position_values_notch_rtl);
} else {
mClockPosition.setEntries(R.array.status_bar_clock_position_entries_rtl);
mClockPosition.setEntryValues(R.array.status_bar_clock_position_values_rtl);
}
} else if (DeviceUtils.hasCenteredCutout(mContext)) {
mClockPosition.setEntries(R.array.status_bar_clock_position_entries_notch);
mClockPosition.setEntryValues(R.array.status_bar_clock_position_values_notch);
}
mStatusBarAmPm =
(LineageSystemSettingListPreference) findPreference(STATUS_BAR_AM_PM);
if (DateFormat.is24HourFormat(getActivity())) {
mStatusBarAmPm.setEnabled(false);
mStatusBarAmPm.setSummary(R.string.status_bar_am_pm_info);
}
int dateDisplay = Settings.System.getIntForUser(resolver,
Settings.System.STATUS_BAR_CLOCK_DATE_DISPLAY, 0, UserHandle.USER_CURRENT);
mClockDateDisplay = (SystemSettingListPreference) findPreference(CLOCK_DATE_DISPLAY);
mClockDateDisplay.setOnPreferenceChangeListener(this);
mClockDatePosition = (SystemSettingListPreference) findPreference(CLOCK_DATE_POSITION);
mClockDatePosition.setEnabled(dateDisplay > 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.EVOLVER;
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.status_bar_clock) {
@Override
public List<String> getNonIndexableKeys(Context context) {
List<String> keys = super.getNonIndexableKeys(context);
return keys;
}
};
}