diff options
author | Danesh M <daneshm90@gmail.com> | 2015-10-28 14:07:03 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2015-10-29 11:00:12 -0700 |
commit | 44365c774032211ef562042d7955fb162aab01dd (patch) | |
tree | 9cbfe71ae5a953f7dfcd08793ea2222eb8f0c21b | |
parent | 8fddb5deec8b6e1aa69c6cb3037882857135d1d0 (diff) | |
download | packages_apps_Settings-44365c774032211ef562042d7955fb162aab01dd.zip packages_apps_Settings-44365c774032211ef562042d7955fb162aab01dd.tar.gz packages_apps_Settings-44365c774032211ef562042d7955fb162aab01dd.tar.bz2 |
Settings : Port forward statusbar settings
Change-Id: I4077929106316935921e3e5baae5d15f481d4115
-rw-r--r-- | proguard.flags | 1 | ||||
-rw-r--r-- | res/drawable/ic_settings_extdesk_hidenavbar.xml | 27 | ||||
-rw-r--r-- | res/values/cm_arrays.xml | 61 | ||||
-rw-r--r-- | res/values/cm_strings.xml | 34 | ||||
-rw-r--r-- | res/xml/dashboard_categories.xml | 8 | ||||
-rw-r--r-- | res/xml/status_bar_settings.xml | 60 | ||||
-rw-r--r-- | src/com/android/settings/cyanogenmod/StatusBarSettings.java | 192 |
7 files changed, 383 insertions, 0 deletions
diff --git a/proguard.flags b/proguard.flags index 578ff4d..991c31c 100644 --- a/proguard.flags +++ b/proguard.flags @@ -16,6 +16,7 @@ -keep class com.android.settings.users.* -keep class com.android.settings.nfc.* -keep class com.android.settings.notification.* +-keep class com.android.settings.cyanogenmod.* # Keep click responders -keepclassmembers class com.android.settings.inputmethod.UserDictionaryAddWordActivity { diff --git a/res/drawable/ic_settings_extdesk_hidenavbar.xml b/res/drawable/ic_settings_extdesk_hidenavbar.xml new file mode 100644 index 0000000..8f83ff0 --- /dev/null +++ b/res/drawable/ic_settings_extdesk_hidenavbar.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2012-2015 The CyanogenMod 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. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + <path + android:fillColor="#039588" + android:pathData="M18,20H6V8h12V20Z +M18,2H6C4.9,2,4,2.9,4,4v16c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2L18,2z" /> +</vector>
\ No newline at end of file diff --git a/res/values/cm_arrays.xml b/res/values/cm_arrays.xml index c4df71e..a558cb8 100644 --- a/res/values/cm_arrays.xml +++ b/res/values/cm_arrays.xml @@ -208,4 +208,65 @@ <item>2500</item> <item>5000</item> </string-array> + + <string-array name="status_bar_clock_style_entries" translatable="false"> + <item>@string/status_bar_clock_style_right</item> + <item>@string/status_bar_clock_style_center</item> + <item>@string/status_bar_clock_style_left</item> + <item>@string/status_bar_clock_style_hidden</item> + </string-array> + + <string-array name="status_bar_clock_style_entries_rtl" 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> + <item>@string/status_bar_clock_style_hidden</item> + </string-array> + + <string-array name="status_bar_clock_style_values" translatable="false"> + <item>1</item> + <item>2</item> + <item>3</item> + <item>0</item> + </string-array> + + <string-array name="status_bar_am_pm_entries" translatable="false"> + <item>@string/status_bar_am_pm_normal</item> + <item>@string/status_bar_am_pm_small</item> + <item>@string/status_bar_am_pm_hidden</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="status_bar_battery_style_entries" translatable="false"> + <item>@string/status_bar_battery_style_icon_portrait</item> + <item>@string/status_bar_battery_style_icon_landscape</item> + <item>@string/status_bar_battery_style_circle</item> + <item>@string/status_bar_battery_style_text</item> + <item>@string/status_bar_battery_style_hidden</item> + </string-array> + + <string-array name="status_bar_battery_style_values" translatable="false"> + <item>0</item> + <item>5</item> + <item>2</item> + <item>6</item> + <item>4</item> + </string-array> + + <string-array name="status_bar_battery_percentage_entries" translatable="false"> + <item>@string/status_bar_battery_percentage_default</item> + <item>@string/status_bar_battery_percentage_text_inside</item> + <item>@string/status_bar_battery_percentage_text_next</item> + </string-array> + + <string-array name="status_bar_battery_percentage_values" translatable="false"> + <item>0</item> + <item>1</item> + <item>2</item> + </string-array> </resources> diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 140d14d..0f69af7 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -310,4 +310,38 @@ <string name="unlock_scramble_pin_layout_title">Scramble layout</string> <string name="unlock_scramble_pin_layout_summary">Scramble PIN layout when unlocking device</string> + + <!-- Status bar --> + <string name="status_bar_title">Status bar</string> + <string name="status_bar_toggle_brightness">Brightness control</string> + <string name="status_bar_toggle_brightness_summary">Adjust brightness by sliding across the status bar</string> + <string name="status_bar_notif_count_title">Show notification count</string> + <string name="status_bar_notif_count_summary">Display the number of pending notifications</string> + + <!-- Status bar - Clock --> + <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_left">Left</string> + <string name="status_bar_clock_style_center">Center</string> + <string name="status_bar_clock_style_hidden">Hidden</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 (default)</string> + + <!-- Status bar - Battery --> + <string name="status_bar_battery_style_title">Battery status style</string> + <string name="status_bar_battery_style_icon_portrait">Icon portrait</string> + <string name="status_bar_battery_style_icon_landscape">Icon landscape</string> + <string name="status_bar_battery_style_circle">Circle</string> + <string name="status_bar_battery_style_text">Text</string> + <string name="status_bar_battery_style_hidden">Hidden</string> + + <!-- Status bar - Battery percentage --> + <string name="status_bar_battery_percentage_title">Battery percentage</string> + <string name="status_bar_battery_percentage_default">Hidden</string> + <string name="status_bar_battery_percentage_text_inside">Inside the icon</string> + <string name="status_bar_battery_percentage_text_next">Next to the icon</string> </resources> diff --git a/res/xml/dashboard_categories.xml b/res/xml/dashboard_categories.xml index 0df4931..1d9c9bd 100644 --- a/res/xml/dashboard_categories.xml +++ b/res/xml/dashboard_categories.xml @@ -185,6 +185,14 @@ android:icon="@drawable/ic_settings_profiles" /> + <!-- Status bar --> + <dashboard-tile + android:id="@+id/status_bar_settings" + android:title="@string/status_bar_title" + android:fragment="com.android.settings.cyanogenmod.StatusBarSettings" + android:icon="@drawable/ic_settings_extdesk_hidenavbar" + /> + <!-- Location --> <dashboard-tile android:id="@+id/location_settings" diff --git a/res/xml/status_bar_settings.xml b/res/xml/status_bar_settings.xml new file mode 100644 index 0000000..3836732 --- /dev/null +++ b/res/xml/status_bar_settings.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (C) 2014-2015 The CyanogenMod 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" + android:title="@string/status_bar_title"> + + <ListPreference + android:key="status_bar_clock" + 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" /> + + <ListPreference + android:key="status_bar_am_pm" + 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" /> + + <ListPreference + android:key="status_bar_battery_style" + android:title="@string/status_bar_battery_style_title" + android:dialogTitle="@string/status_bar_battery_style_title" + android:entries="@array/status_bar_battery_style_entries" + android:entryValues="@array/status_bar_battery_style_values" /> + + <ListPreference + android:key="status_bar_show_battery_percent" + android:title="@string/status_bar_battery_percentage_title" + android:dialogTitle="@string/status_bar_battery_percentage_title" + android:entries="@array/status_bar_battery_percentage_entries" + android:entryValues="@array/status_bar_battery_percentage_values" /> + + <com.android.settings.cyanogenmod.SystemSettingSwitchPreference + android:key="status_bar_brightness_control" + android:title="@string/status_bar_toggle_brightness" + android:summary="@string/status_bar_toggle_brightness_summary" + android:defaultValue="false" /> + + <com.android.settings.cyanogenmod.SystemSettingSwitchPreference + android:key="status_bar_notif_count" + android:title="@string/status_bar_notif_count_title" + android:summary="@string/status_bar_notif_count_summary" + android:defaultValue="false" /> +</PreferenceScreen> diff --git a/src/com/android/settings/cyanogenmod/StatusBarSettings.java b/src/com/android/settings/cyanogenmod/StatusBarSettings.java new file mode 100644 index 0000000..a2762f4 --- /dev/null +++ b/src/com/android/settings/cyanogenmod/StatusBarSettings.java @@ -0,0 +1,192 @@ +/* + * Copyright (C) 2014-2015 The CyanogenMod 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 com.android.settings.cyanogenmod; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; +import android.os.Bundle; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.provider.SearchIndexableResource; +import android.provider.Settings; +import android.telephony.TelephonyManager; +import android.text.format.DateFormat; +import android.view.View; + +import com.android.internal.logging.MetricsLogger; +import com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.Utils; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.search.Indexable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import cyanogenmod.providers.CMSettings; + +public class StatusBarSettings extends SettingsPreferenceFragment + implements OnPreferenceChangeListener, Indexable { + + private static final String TAG = "StatusBar"; + + private static final String STATUS_BAR_CLOCK_STYLE = "status_bar_clock"; + private static final String STATUS_BAR_AM_PM = "status_bar_am_pm"; + private static final String STATUS_BAR_BATTERY_STYLE = "status_bar_battery_style"; + private static final String STATUS_BAR_SHOW_BATTERY_PERCENT = "status_bar_show_battery_percent"; + + private static final int STATUS_BAR_BATTERY_STYLE_HIDDEN = 4; + private static final int STATUS_BAR_BATTERY_STYLE_TEXT = 6; + + private ListPreference mStatusBarClock; + private ListPreference mStatusBarAmPm; + private ListPreference mStatusBarBattery; + private ListPreference mStatusBarBatteryShowPercent; + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + addPreferencesFromResource(R.xml.status_bar_settings); + + ContentResolver resolver = getActivity().getContentResolver(); + + mStatusBarClock = (ListPreference) findPreference(STATUS_BAR_CLOCK_STYLE); + mStatusBarAmPm = (ListPreference) findPreference(STATUS_BAR_AM_PM); + mStatusBarBattery = (ListPreference) findPreference(STATUS_BAR_BATTERY_STYLE); + mStatusBarBatteryShowPercent = + (ListPreference) findPreference(STATUS_BAR_SHOW_BATTERY_PERCENT); + + int clockStyle = CMSettings.System.getInt(resolver, + CMSettings.System.STATUS_BAR_CLOCK, 1); + 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 { + int statusBarAmPm = CMSettings.System.getInt(resolver, + CMSettings.System.STATUS_BAR_AM_PM, 2); + mStatusBarAmPm.setValue(String.valueOf(statusBarAmPm)); + mStatusBarAmPm.setSummary(mStatusBarAmPm.getEntry()); + mStatusBarAmPm.setOnPreferenceChangeListener(this); + } + + int batteryStyle = CMSettings.System.getInt(resolver, + CMSettings.System.STATUS_BAR_BATTERY_STYLE, 0); + mStatusBarBattery.setValue(String.valueOf(batteryStyle)); + mStatusBarBattery.setSummary(mStatusBarBattery.getEntry()); + mStatusBarBattery.setOnPreferenceChangeListener(this); + + int batteryShowPercent = CMSettings.System.getInt(resolver, + CMSettings.System.STATUS_BAR_SHOW_BATTERY_PERCENT, 0); + mStatusBarBatteryShowPercent.setValue(String.valueOf(batteryShowPercent)); + mStatusBarBatteryShowPercent.setSummary(mStatusBarBatteryShowPercent.getEntry()); + enableStatusBarBatteryDependents(batteryStyle); + mStatusBarBatteryShowPercent.setOnPreferenceChangeListener(this); + } + + @Override + protected int getMetricsCategory() { + // todo add a constant in MetricsLogger.java + return MetricsLogger.MAIN_SETTINGS; + } + + @Override + public void onResume() { + super.onResume(); + // Adjust clock position for RTL if necessary + Configuration config = getResources().getConfiguration(); + if (config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) { + mStatusBarClock.setEntries(getActivity().getResources().getStringArray( + R.array.status_bar_clock_style_entries_rtl)); + mStatusBarClock.setSummary(mStatusBarClock.getEntry()); + } + } + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + ContentResolver resolver = getActivity().getContentResolver(); + if (preference == mStatusBarClock) { + int clockStyle = Integer.parseInt((String) newValue); + int index = mStatusBarClock.findIndexOfValue((String) newValue); + CMSettings.System.putInt( + resolver, CMSettings.System.STATUS_BAR_CLOCK, clockStyle); + mStatusBarClock.setSummary(mStatusBarClock.getEntries()[index]); + return true; + } else if (preference == mStatusBarAmPm) { + int statusBarAmPm = Integer.valueOf((String) newValue); + int index = mStatusBarAmPm.findIndexOfValue((String) newValue); + CMSettings.System.putInt( + resolver, CMSettings.System.STATUS_BAR_AM_PM, statusBarAmPm); + mStatusBarAmPm.setSummary(mStatusBarAmPm.getEntries()[index]); + return true; + } else if (preference == mStatusBarBattery) { + int batteryStyle = Integer.valueOf((String) newValue); + int index = mStatusBarBattery.findIndexOfValue((String) newValue); + CMSettings.System.putInt( + resolver, CMSettings.System.STATUS_BAR_BATTERY_STYLE, batteryStyle); + mStatusBarBattery.setSummary(mStatusBarBattery.getEntries()[index]); + enableStatusBarBatteryDependents(batteryStyle); + return true; + } else if (preference == mStatusBarBatteryShowPercent) { + int batteryShowPercent = Integer.valueOf((String) newValue); + int index = mStatusBarBatteryShowPercent.findIndexOfValue((String) newValue); + CMSettings.System.putInt( + resolver, CMSettings.System.STATUS_BAR_SHOW_BATTERY_PERCENT, batteryShowPercent); + mStatusBarBatteryShowPercent.setSummary( + mStatusBarBatteryShowPercent.getEntries()[index]); + return true; + } + return false; + } + + private void enableStatusBarBatteryDependents(int batteryIconStyle) { + if (batteryIconStyle == STATUS_BAR_BATTERY_STYLE_HIDDEN || + batteryIconStyle == STATUS_BAR_BATTERY_STYLE_TEXT) { + mStatusBarBatteryShowPercent.setEnabled(false); + } else { + mStatusBarBatteryShowPercent.setEnabled(true); + } + } + + public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider() { + @Override + public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, + boolean enabled) { + ArrayList<SearchIndexableResource> result = + new ArrayList<SearchIndexableResource>(); + + SearchIndexableResource sir = new SearchIndexableResource(context); + sir.xmlResId = R.xml.status_bar_settings; + result.add(sir); + + return result; + } + + @Override + public List<String> getNonIndexableKeys(Context context) { + ArrayList<String> result = new ArrayList<String>(); + return result; + } + }; +} |