From b55f7fa4641aff0fb837f4cd81dc1e66b1e885be Mon Sep 17 00:00:00 2001 From: Danny Baumann Date: Mon, 15 Jul 2013 13:32:26 +0200 Subject: Make notification-shade-collapse-after-dismiss behaviour configurable. Change-Id: Icbf706a582279b86d901fb727b58663713606521 --- AndroidManifest.xml | 2 - res/values-af/cm_strings.xml | 1 - res/values-cs/cm_strings.xml | 1 - res/values-da/cm_strings.xml | 1 - res/values-de/cm_strings.xml | 1 - res/values-el/cm_strings.xml | 2 - res/values-es/cm_strings.xml | 1 - res/values-fi/cm_strings.xml | 1 - res/values-fr/cm_strings.xml | 1 - res/values-hu/cm_strings.xml | 1 - res/values-it/cm_strings.xml | 1 - res/values-iw/cm_strings.xml | 1 - res/values-ja/cm_strings.xml | 1 - res/values-ko/cm_strings.xml | 1 - res/values-lt/cm_strings.xml | 1 - res/values-nb/cm_strings.xml | 1 - res/values-nl/cm_strings.xml | 1 - res/values-pl/cm_strings.xml | 1 - res/values-pt/cm_strings.xml | 3 +- res/values-ro/cm_strings.xml | 1 - res/values-ru/cm_strings.xml | 3 +- res/values-tr/cm_strings.xml | 1 - res/values-uk/cm_strings.xml | 1 - res/values-zh-rCN/cm_strings.xml | 1 - res/values/cm_arrays.xml | 20 + res/values/cm_strings.xml | 11 +- res/xml/notification_drawer.xml | 80 +++ res/xml/power_widget_settings.xml | 72 --- res/xml/system_settings.xml | 2 +- .../settings/cyanogenmod/NotificationDrawer.java | 597 +++++++++++++++++++++ .../android/settings/cyanogenmod/PowerWidget.java | 581 -------------------- .../android/settings/cyanogenmod/StatusBar.java | 74 ++- 32 files changed, 742 insertions(+), 725 deletions(-) create mode 100644 res/xml/notification_drawer.xml delete mode 100644 res/xml/power_widget_settings.xml create mode 100644 src/com/android/settings/cyanogenmod/NotificationDrawer.java delete mode 100644 src/com/android/settings/cyanogenmod/PowerWidget.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index eeee2a5..46c0142 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1550,8 +1550,6 @@ /> - - Gesluit Kraglegstukke Kraglegstukke - Legstukgedrag Maak die kennisgewingslaai toe na wisseling Steek aanwysers weg Steek rolstaaf weg diff --git a/res/values-cs/cm_strings.xml b/res/values-cs/cm_strings.xml index e4a3d2f..6167d19 100644 --- a/res/values-cs/cm_strings.xml +++ b/res/values-cs/cm_strings.xml @@ -468,7 +468,6 @@ Power widget Aktivovat Power widget - Chování widgetu Skrýt oblast po změně Skrýt zvýraznění Skrýt posuvník diff --git a/res/values-da/cm_strings.xml b/res/values-da/cm_strings.xml index 29535d6..8c37934 100644 --- a/res/values-da/cm_strings.xml +++ b/res/values-da/cm_strings.xml @@ -388,7 +388,6 @@ Låst Strømwidget Strømwidget - Widget-adfærd Luk panel ved ændring Skjul indikatorer Skjul rullepanel diff --git a/res/values-de/cm_strings.xml b/res/values-de/cm_strings.xml index 00daf21..92c9cd0 100644 --- a/res/values-de/cm_strings.xml +++ b/res/values-de/cm_strings.xml @@ -372,7 +372,6 @@ Belegung der Lautstärketasten umkehren, wenn das Gerät gedreht wird Energie-Widget Energiesteuerung - Widget-Verhalten Nach Änd. schließen Indikator verbergen Scrollbar verbergen diff --git a/res/values-el/cm_strings.xml b/res/values-el/cm_strings.xml index 81c805d..458a396 100644 --- a/res/values-el/cm_strings.xml +++ b/res/values-el/cm_strings.xml @@ -392,8 +392,6 @@ Κλειδωμένο Power widget Power widget - Συμπεριφορά widget - Απόκρυψη μετά από αλλαγή Απόκρυψη ένδειξης Απόκρυψη μπάρας ολίσθισης Πλήκτρα widget diff --git a/res/values-es/cm_strings.xml b/res/values-es/cm_strings.xml index 8150e9a..7e9a908 100644 --- a/res/values-es/cm_strings.xml +++ b/res/values-es/cm_strings.xml @@ -402,7 +402,6 @@ Bloqueada Controles de Energía Barra de energía - Comportamiento Ocultar al pulsar Ocultar indicadores Ocultar barra de desplazamiento diff --git a/res/values-fi/cm_strings.xml b/res/values-fi/cm_strings.xml index 21e4e68..2724ef0 100644 --- a/res/values-fi/cm_strings.xml +++ b/res/values-fi/cm_strings.xml @@ -328,7 +328,6 @@ Haku sovelluksessa Pikanäppäimet Pikanäppäimet - Näppäimen käytös Piilota osoittimet Piilota muutettaessa Piilota vierityspalkki diff --git a/res/values-fr/cm_strings.xml b/res/values-fr/cm_strings.xml index 8fdffab..8f226e8 100644 --- a/res/values-fr/cm_strings.xml +++ b/res/values-fr/cm_strings.xml @@ -402,7 +402,6 @@ Verrouillée Widget d\'alimentation Widget d\'alimentation - Comportement du widget Fermer après changement Cacher les notifications Cacher barre de défilement diff --git a/res/values-hu/cm_strings.xml b/res/values-hu/cm_strings.xml index e4b4d8a..635b0c0 100644 --- a/res/values-hu/cm_strings.xml +++ b/res/values-hu/cm_strings.xml @@ -392,7 +392,6 @@ Zárolt Energiagazdálkodás Engedélyezés - Viselkedés Elrejtés kapcsoló kiválasztásakor Jelölők elrejtése Görgetősáv elrejtése diff --git a/res/values-it/cm_strings.xml b/res/values-it/cm_strings.xml index 89aca38..b47b974 100644 --- a/res/values-it/cm_strings.xml +++ b/res/values-it/cm_strings.xml @@ -394,7 +394,6 @@ Bloccata Widget alimentazione Widget alimentazione - Comportamento widget Nascondi dopo modifica Nascondi indicatori Nascondi barra scorrimento diff --git a/res/values-iw/cm_strings.xml b/res/values-iw/cm_strings.xml index 59ff823..00b761e 100644 --- a/res/values-iw/cm_strings.xml +++ b/res/values-iw/cm_strings.xml @@ -358,7 +358,6 @@ נעול Power widget Power widget - התנהגות ה-Wigdet סגור את המגירה בשינוי Hide indicators הסתר את פס הגלילה diff --git a/res/values-ja/cm_strings.xml b/res/values-ja/cm_strings.xml index 316743f..53424ac 100644 --- a/res/values-ja/cm_strings.xml +++ b/res/values-ja/cm_strings.xml @@ -150,7 +150,6 @@ ロック中 電源管理ウィジェット 電源管理ウィジェットを表示 - ウィジェットの挙動 変更したら隠す スクロールバーを隠す ウィジェットボタン diff --git a/res/values-ko/cm_strings.xml b/res/values-ko/cm_strings.xml index e25c0b7..de9d298 100644 --- a/res/values-ko/cm_strings.xml +++ b/res/values-ko/cm_strings.xml @@ -319,7 +319,6 @@ 잠김 전원 위젯 전원 위젯 - 위젯 설정 상태 변경 후 서랍 닫기 상태 표시 숨기기 스크롤바 숨기기 diff --git a/res/values-lt/cm_strings.xml b/res/values-lt/cm_strings.xml index e682992..9ec8e7c 100644 --- a/res/values-lt/cm_strings.xml +++ b/res/values-lt/cm_strings.xml @@ -357,7 +357,6 @@ Užrakintas Valdiklis užuolaidoje Valdiklis užuolaidoje - Valdiklio elgsena Užverti užuolaidą pasirinkus Slepti indikatorius Slepti šliaužiklį diff --git a/res/values-nb/cm_strings.xml b/res/values-nb/cm_strings.xml index 9c833ff..97d16e5 100644 --- a/res/values-nb/cm_strings.xml +++ b/res/values-nb/cm_strings.xml @@ -387,7 +387,6 @@ Låst Strømkontroll Strømkontroll - Modul-oppførsel Lukk Varslingsskuffen ved endring Skjul indikator Skjul rullefelt diff --git a/res/values-nl/cm_strings.xml b/res/values-nl/cm_strings.xml index dd527b6..dc7ab84 100644 --- a/res/values-nl/cm_strings.xml +++ b/res/values-nl/cm_strings.xml @@ -407,7 +407,6 @@ Let op:\nAangezien het beginvolume hoger is ingesteld dan het beltoonvolume, wor Vergrendeld Energiewidget Energiewidget - Widgetgedrag Verbergen bij wijziging Indicatoren verbergen Schuifbalk verbergen diff --git a/res/values-pl/cm_strings.xml b/res/values-pl/cm_strings.xml index eabc4ea..cd86ccd 100644 --- a/res/values-pl/cm_strings.xml +++ b/res/values-pl/cm_strings.xml @@ -362,7 +362,6 @@ Zablokowano Widżet zasilania Widżet zasilania - Zachowanie widżetu Zamknij szufladę aplikacji po zmianie Ukryj wskaźniki Ukryj paski przewijania diff --git a/res/values-pt/cm_strings.xml b/res/values-pt/cm_strings.xml index 115a2f5..18ce21a 100644 --- a/res/values-pt/cm_strings.xml +++ b/res/values-pt/cm_strings.xml @@ -354,7 +354,6 @@ Busca dentro do app Widget de energia Mostrar widget de energia - Comportamendo de Widget Esconder ao mudar Esconder barra de rolagem Botões do widget @@ -746,4 +745,4 @@ controle adicionais. \'Remover\' apaga a linha selecionada. Varredura completada Padrão Rotacionar tela de bloqueio - \ No newline at end of file + diff --git a/res/values-ro/cm_strings.xml b/res/values-ro/cm_strings.xml index 3f827f7..c22a0ef 100644 --- a/res/values-ro/cm_strings.xml +++ b/res/values-ro/cm_strings.xml @@ -345,7 +345,6 @@ "Căutare în int. aplicaţiilor" "Power Widget" "Power widget" - "Comportament widget" "Închideţi sertarul la modificare" "Ascundeţi indicatorii" "Ascundeţi bara de defilare" diff --git a/res/values-ru/cm_strings.xml b/res/values-ru/cm_strings.xml index 7e0da3f..8d18e0f 100644 --- a/res/values-ru/cm_strings.xml +++ b/res/values-ru/cm_strings.xml @@ -494,7 +494,6 @@ Кнопки в панели уведомлений Кнопки в панели уведомлений - Поведение виджета Скрывать при изменении Скрывать индикаторы Скрывать полосу прокрутки @@ -927,4 +926,4 @@ Системные приложения Фильтр разрешений - \ No newline at end of file + diff --git a/res/values-tr/cm_strings.xml b/res/values-tr/cm_strings.xml index 2c30ee0..2dba3e7 100644 --- a/res/values-tr/cm_strings.xml +++ b/res/values-tr/cm_strings.xml @@ -387,7 +387,6 @@ Kilitli Power widget Power widget - Widget davranışı Değişiklikte çekmeceyi kapat Göstericileri gizle Kaydırma çubuğu gizle diff --git a/res/values-uk/cm_strings.xml b/res/values-uk/cm_strings.xml index 92d7693..4ebb135 100644 --- a/res/values-uk/cm_strings.xml +++ b/res/values-uk/cm_strings.xml @@ -347,7 +347,6 @@ Заблоковано Кнопки в панелі сповіщень Кнопки в панелі сповіщень - Поведінка віджета Приховувати при зміні Приховувати індикатори Приховувати полосу прокрутки diff --git a/res/values-zh-rCN/cm_strings.xml b/res/values-zh-rCN/cm_strings.xml index 662c311..9ebe6b0 100644 --- a/res/values-zh-rCN/cm_strings.xml +++ b/res/values-zh-rCN/cm_strings.xml @@ -387,7 +387,6 @@ 已锁定 电控小部件 电控小部件 - 小部件行为 做出操作后关闭通知栏 隐藏指示器 隐藏滚动条 diff --git a/res/values/cm_arrays.xml b/res/values/cm_arrays.xml index bc0ec04..4b2c9bb 100644 --- a/res/values/cm_arrays.xml +++ b/res/values/cm_arrays.xml @@ -597,5 +597,25 @@ 50 25 + + + + @string/collapse_on_dismiss_never + @string/collapse_on_dismiss_if_empty + @string/collapse_on_dismiss_if_no_clearable + + + + @string/collapse_on_dismiss_never_summary + @string/collapse_on_dismiss_if_empty_summary + @string/collapse_on_dismiss_if_no_clearable_summary + + + + 0 + 1 + 2 + + diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index cc507c3..400f82e 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -164,6 +164,14 @@ Notification drawer + Behaviour + Auto-close drawer + Disabled + If none remaining + If no removable remaining + Leave notification tray open when removing notifications + Close notification tray when removing the last notification + Close notification tray when removing the last removable notification Lock screen @@ -570,7 +578,6 @@ Power widget Power widget - Widget behavior Close drawer on change Hide indicators Hide scrollbar @@ -668,8 +675,6 @@ Percentage Circle Circle with percentage - - Show notification count Display number of pending notifications diff --git a/res/xml/notification_drawer.xml b/res/xml/notification_drawer.xml new file mode 100644 index 0000000..6b6d689 --- /dev/null +++ b/res/xml/notification_drawer.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/xml/power_widget_settings.xml b/res/xml/power_widget_settings.xml deleted file mode 100644 index 7b464d3..0000000 --- a/res/xml/power_widget_settings.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/xml/system_settings.xml b/res/xml/system_settings.xml index c5ffb5d..995cff2 100644 --- a/res/xml/system_settings.xml +++ b/res/xml/system_settings.xml @@ -31,7 +31,7 @@ mCheckBoxPrefs = new HashMap(); + + MultiSelectListPreference mBrightnessMode; + ListPreference mNetworkMode; + ListPreference mScreenTimeoutMode; + MultiSelectListPreference mRingMode; + ListPreference mFlashMode; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + addPreferencesFromResource(R.xml.power_widget); + + PreferenceScreen prefSet = getPreferenceScreen(); + PackageManager pm = getPackageManager(); + + if (getActivity().getApplicationContext() == null) { + return; + } + + mBrightnessMode = (MultiSelectListPreference) prefSet + .findPreference(EXP_BRIGHTNESS_MODE); + String storedBrightnessMode = Settings.System.getString(getActivity() + .getApplicationContext().getContentResolver(), + Settings.System.EXPANDED_BRIGHTNESS_MODE); + if (storedBrightnessMode != null) { + String[] brightnessModeArray = TextUtils.split(storedBrightnessMode, SEPARATOR); + mBrightnessMode.setValues(new HashSet(Arrays.asList(brightnessModeArray))); + updateSummary(storedBrightnessMode, mBrightnessMode, R.string.pref_brightness_mode_summary); + } + mBrightnessMode.setOnPreferenceChangeListener(this); + mNetworkMode = (ListPreference) prefSet.findPreference(EXP_NETWORK_MODE); + mNetworkMode.setOnPreferenceChangeListener(this); + mScreenTimeoutMode = (ListPreference) prefSet.findPreference(EXP_SCREENTIMEOUT_MODE); + mScreenTimeoutMode.setOnPreferenceChangeListener(this); + mRingMode = (MultiSelectListPreference) prefSet.findPreference(EXP_RING_MODE); + String storedRingMode = Settings.System.getString(getActivity() + .getApplicationContext().getContentResolver(), + Settings.System.EXPANDED_RING_MODE); + if (storedRingMode != null) { + String[] ringModeArray = TextUtils.split(storedRingMode, SEPARATOR); + mRingMode.setValues(new HashSet(Arrays.asList(ringModeArray))); + updateSummary(storedRingMode, mRingMode, R.string.pref_ring_mode_summary); + } + mRingMode.setOnPreferenceChangeListener(this); + mFlashMode = (ListPreference) prefSet.findPreference(EXP_FLASH_MODE); + mFlashMode.setOnPreferenceChangeListener(this); + + // TODO: set the default values of the items + + // Update the summary text + mNetworkMode.setSummary(mNetworkMode.getEntry()); + mScreenTimeoutMode.setSummary(mScreenTimeoutMode.getEntry()); + mFlashMode.setSummary(mFlashMode.getEntry()); + + // Add the available buttons to the list + PreferenceCategory prefButtons = (PreferenceCategory) prefSet + .findPreference(BUTTONS_CATEGORY); + + // Add the available mode buttons, incase they need to be removed later + PreferenceCategory prefButtonsModes = (PreferenceCategory) prefSet + .findPreference(BUTTON_MODES_CATEGORY); + + // empty our preference category and set it to order as added + prefButtons.removeAll(); + prefButtons.setOrderingAsAdded(false); + + // emtpy our checkbox map + mCheckBoxPrefs.clear(); + + // get our list of buttons + ArrayList buttonList = PowerWidgetUtil.getButtonListFromString(PowerWidgetUtil + .getCurrentButtons(getActivity().getApplicationContext())); + + // Don't show WiMAX option if not supported + boolean isWimaxEnabled = WimaxHelper.isWimaxSupported(getActivity()); + if (!isWimaxEnabled) { + PowerWidgetUtil.BUTTONS.remove(PowerWidgetUtil.BUTTON_WIMAX); + } + + // Don't show mobile data options if not supported + if (!deviceSupportsMobileData(getActivity())) { + PowerWidgetUtil.BUTTONS.remove(PowerWidgetUtil.BUTTON_MOBILEDATA); + PowerWidgetUtil.BUTTONS.remove(PowerWidgetUtil.BUTTON_NETWORKMODE); + PowerWidgetUtil.BUTTONS.remove(PowerWidgetUtil.BUTTON_WIFIAP); + prefButtonsModes.removePreference(mNetworkMode); + } + + // fill that checkbox map! + for (PowerWidgetUtil.ButtonInfo button : PowerWidgetUtil.BUTTONS.values()) { + // create a checkbox + CheckBoxPreference cb = new CheckBoxPreference(getActivity() + .getApplicationContext()); + + // set a dynamic key based on button id + cb.setKey(SELECT_BUTTON_KEY_PREFIX + button.getId()); + + // set vanity info + cb.setTitle(button.getTitleResId()); + + // set our checked state + if (buttonList.contains(button.getId())) { + cb.setChecked(true); + } else { + cb.setChecked(false); + } + + // add to our prefs set + mCheckBoxPrefs.put(cb, button.getId()); + + // specific checks for availability on some platforms + if (PowerWidgetUtil.BUTTON_FLASHLIGHT.equals(button.getId()) && + !getResources().getBoolean(R.bool.has_led_flash)) { + // disable flashlight if it's not supported + cb.setEnabled(false); + mFlashMode.setEnabled(false); + } else if (PowerWidgetUtil.BUTTON_NETWORKMODE.equals(button.getId())) { + // some phones run on networks not supported by this button, + // so disable it + int network_state = -99; + + try { + network_state = Settings.Global.getInt(getActivity() + .getApplicationContext().getContentResolver(), + Settings.Global.PREFERRED_NETWORK_MODE); + } catch (Settings.SettingNotFoundException e) { + Log.e(TAG, "Unable to retrieve PREFERRED_NETWORK_MODE", e); + } + + switch (network_state) { + // list of supported network modes + case Phone.NT_MODE_WCDMA_PREF: + case Phone.NT_MODE_WCDMA_ONLY: + case Phone.NT_MODE_GSM_UMTS: + case Phone.NT_MODE_GSM_ONLY: + break; + default: + cb.setEnabled(false); + break; + } + } + + // add to the category + prefButtons.addPreference(cb); + } + } + + public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, + Preference preference) { + // we only modify the button list if it was one of our checks that + // was clicked + boolean buttonWasModified = false; + ArrayList buttonList = new ArrayList(); + for (Map.Entry entry : mCheckBoxPrefs.entrySet()) { + if (entry.getKey().isChecked()) { + buttonList.add(entry.getValue()); + } + + if (preference == entry.getKey()) { + buttonWasModified = true; + } + } + + if (buttonWasModified) { + // now we do some wizardry and reset the button list + PowerWidgetUtil.saveCurrentButtons(getActivity().getApplicationContext(), + PowerWidgetUtil.mergeInNewButtonString( + PowerWidgetUtil.getCurrentButtons(getActivity() + .getApplicationContext()), PowerWidgetUtil + .getButtonStringFromList(buttonList))); + return true; + } + + return false; + } + + private class MultiSelectListPreferenceComparator implements Comparator { + private MultiSelectListPreference pref; + + MultiSelectListPreferenceComparator(MultiSelectListPreference p) { + pref = p; + } + + @Override + public int compare(String lhs, String rhs) { + return Integer.compare(pref.findIndexOfValue(lhs), + pref.findIndexOfValue(rhs)); + } + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + if (preference == mBrightnessMode) { + ArrayList arrValue = new ArrayList((Set) newValue); + Collections.sort(arrValue, new MultiSelectListPreferenceComparator(mBrightnessMode)); + Settings.System.putString(getActivity().getApplicationContext().getContentResolver(), + Settings.System.EXPANDED_BRIGHTNESS_MODE, TextUtils.join(SEPARATOR, arrValue)); + updateSummary(TextUtils.join(SEPARATOR, arrValue), + mBrightnessMode, R.string.pref_brightness_mode_summary); + } else if (preference == mNetworkMode) { + int value = Integer.valueOf((String) newValue); + int index = mNetworkMode.findIndexOfValue((String) newValue); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.EXPANDED_NETWORK_MODE, value); + mNetworkMode.setSummary(mNetworkMode.getEntries()[index]); + } else if (preference == mScreenTimeoutMode) { + int value = Integer.valueOf((String) newValue); + int index = mScreenTimeoutMode.findIndexOfValue((String) newValue); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.EXPANDED_SCREENTIMEOUT_MODE, value); + mScreenTimeoutMode.setSummary(mScreenTimeoutMode.getEntries()[index]); + } else if (preference == mRingMode) { + ArrayList arrValue = new ArrayList((Set) newValue); + Collections.sort(arrValue, new MultiSelectListPreferenceComparator(mRingMode)); + Settings.System.putString(getActivity().getApplicationContext().getContentResolver(), + Settings.System.EXPANDED_RING_MODE, TextUtils.join(SEPARATOR, arrValue)); + updateSummary(TextUtils.join(SEPARATOR, arrValue), mRingMode, R.string.pref_ring_mode_summary); + } else if (preference == mFlashMode) { + int value = Integer.valueOf((String) newValue); + int index = mFlashMode.findIndexOfValue((String) newValue); + Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + Settings.System.EXPANDED_FLASH_MODE, value); + mFlashMode.setSummary(mFlashMode.getEntries()[index]); + } + return true; + } + + private void updateSummary(String val, MultiSelectListPreference pref, int defSummary) { + // Update summary message with current values + final String[] values = parseStoredValue(val); + if (values != null) { + final int length = values.length; + final CharSequence[] entries = pref.getEntries(); + StringBuilder summary = new StringBuilder(); + for (int i = 0; i < (length); i++) { + CharSequence entry = entries[Integer.parseInt(values[i])]; + if ((length - i) > 2) { + summary.append(entry).append(", "); + } else if ((length - i) == 2) { + summary.append(entry).append(" & "); + } else if ((length - i) == 1) { + summary.append(entry); + } + } + pref.setSummary(summary); + } else { + pref.setSummary(defSummary); + } + } + + public static String[] parseStoredValue(CharSequence val) { + if (TextUtils.isEmpty(val)) { + return null; + } else { + return val.toString().split(SEPARATOR); + } + } + + } + + public static class PowerWidgetOrder extends ListFragment + { + private static final String TAG = "PowerWidgetOrderActivity"; + + private ListView mButtonList; + private ButtonAdapter mButtonAdapter; + View mContentView = null; + Context mContext; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + mContentView = inflater.inflate(R.layout.order_power_widget_buttons_activity, null); + return mContentView; + } + + /** Called when the activity is first created. */ + // @Override + // public void onCreate(Bundle icicle) + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mContext = getActivity().getApplicationContext(); + + mButtonList = getListView(); + ((TouchInterceptor) mButtonList).setDropListener(mDropListener); + mButtonAdapter = new ButtonAdapter(mContext); + setListAdapter(mButtonAdapter); + } + + @Override + public void onDestroy() { + ((TouchInterceptor) mButtonList).setDropListener(null); + setListAdapter(null); + super.onDestroy(); + } + + @Override + public void onResume() { + super.onResume(); + // reload our buttons and invalidate the views for redraw + mButtonAdapter.reloadButtons(); + mButtonList.invalidateViews(); + } + + private TouchInterceptor.DropListener mDropListener = new TouchInterceptor.DropListener() { + public void drop(int from, int to) { + // get the current button list + ArrayList buttons = PowerWidgetUtil.getButtonListFromString( + PowerWidgetUtil.getCurrentButtons(mContext)); + + // move the button + if (from < buttons.size()) { + String button = buttons.remove(from); + + if (to <= buttons.size()) { + buttons.add(to, button); + + // save our buttons + PowerWidgetUtil.saveCurrentButtons(mContext, + PowerWidgetUtil.getButtonStringFromList(buttons)); + + // tell our adapter/listview to reload + mButtonAdapter.reloadButtons(); + mButtonList.invalidateViews(); + } + } + } + }; + + private class ButtonAdapter extends BaseAdapter { + private Context mContext; + private Resources mSystemUIResources = null; + private LayoutInflater mInflater; + private ArrayList mButtons; + + public ButtonAdapter(Context c) { + mContext = c; + mInflater = LayoutInflater.from(mContext); + + PackageManager pm = mContext.getPackageManager(); + if (pm != null) { + try { + mSystemUIResources = pm.getResourcesForApplication("com.android.systemui"); + } catch (Exception e) { + mSystemUIResources = null; + Log.e(TAG, "Could not load SystemUI resources", e); + } + } + + reloadButtons(); + } + + public void reloadButtons() { + ArrayList buttons = PowerWidgetUtil.getButtonListFromString( + PowerWidgetUtil.getCurrentButtons(mContext)); + + mButtons = new ArrayList(); + for (String button : buttons) { + if (PowerWidgetUtil.BUTTONS.containsKey(button)) { + mButtons.add(PowerWidgetUtil.BUTTONS.get(button)); + } + } + } + + public int getCount() { + return mButtons.size(); + } + + public Object getItem(int position) { + return mButtons.get(position); + } + + public long getItemId(int position) { + return position; + } + + public View getView(int position, View convertView, ViewGroup parent) { + final View v; + if (convertView == null) { + v = mInflater.inflate(R.layout.order_power_widget_button_list_item, null); + } else { + v = convertView; + } + + PowerWidgetUtil.ButtonInfo button = mButtons.get(position); + + final TextView name = (TextView) v.findViewById(R.id.name); + final ImageView icon = (ImageView) v.findViewById(R.id.icon); + + name.setText(button.getTitleResId()); + + // assume no icon first + icon.setVisibility(View.GONE); + + // attempt to load the icon for this button + if (mSystemUIResources != null) { + int resId = mSystemUIResources.getIdentifier(button.getIcon(), null, null); + if (resId > 0) { + try { + Drawable d = mSystemUIResources.getDrawable(resId); + icon.setVisibility(View.VISIBLE); + icon.setImageDrawable(d); + } catch (Exception e) { + Log.e(TAG, "Error retrieving icon drawable", e); + } + } + } + + return v; + } + } + } + +} diff --git a/src/com/android/settings/cyanogenmod/PowerWidget.java b/src/com/android/settings/cyanogenmod/PowerWidget.java deleted file mode 100644 index 33091b7..0000000 --- a/src/com/android/settings/cyanogenmod/PowerWidget.java +++ /dev/null @@ -1,581 +0,0 @@ -/* - * Copyright (C) 2011 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 java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import android.app.ListFragment; -import android.content.Context; -import android.content.pm.PackageManager; -import android.content.res.Resources; -import android.graphics.drawable.Drawable; -import android.net.wimax.WimaxHelper; -import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.ListPreference; -import android.preference.MultiSelectListPreference; -import android.preference.Preference; -import android.preference.PreferenceCategory; -import android.preference.PreferenceScreen; -import android.provider.Settings; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; - -import com.android.internal.telephony.Phone; -import com.android.settings.R; -import com.android.settings.SettingsPreferenceFragment; - -import static com.android.internal.util.cm.QSUtils.deviceSupportsMobileData; - -public class PowerWidget extends SettingsPreferenceFragment implements - Preference.OnPreferenceChangeListener { - private static final String TAG = "PowerWidget"; - private static final String SEPARATOR = "OV=I=XseparatorX=I=VO"; - private static final String UI_EXP_WIDGET = "expanded_widget"; - private static final String UI_EXP_WIDGET_HIDE_ONCHANGE = "expanded_hide_onchange"; - private static final String UI_EXP_WIDGET_HIDE_SCROLLBAR = "expanded_hide_scrollbar"; - private static final String UI_EXP_WIDGET_HAPTIC_FEEDBACK = "expanded_haptic_feedback"; - - private CheckBoxPreference mPowerWidget; - private CheckBoxPreference mPowerWidgetHideOnChange; - private CheckBoxPreference mPowerWidgetHideScrollBar; - private ListPreference mPowerWidgetHapticFeedback; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - if (getPreferenceManager() != null) { - addPreferencesFromResource(R.xml.power_widget_settings); - - PreferenceScreen prefSet = getPreferenceScreen(); - - mPowerWidget = (CheckBoxPreference) prefSet.findPreference(UI_EXP_WIDGET); - mPowerWidgetHideOnChange = (CheckBoxPreference) prefSet - .findPreference(UI_EXP_WIDGET_HIDE_ONCHANGE); - mPowerWidgetHideScrollBar = (CheckBoxPreference) prefSet - .findPreference(UI_EXP_WIDGET_HIDE_SCROLLBAR); - - mPowerWidgetHapticFeedback = (ListPreference) prefSet - .findPreference(UI_EXP_WIDGET_HAPTIC_FEEDBACK); - mPowerWidgetHapticFeedback.setOnPreferenceChangeListener(this); - mPowerWidgetHapticFeedback.setSummary(mPowerWidgetHapticFeedback.getEntry()); - - mPowerWidget.setChecked((Settings.System.getInt(getActivity().getApplicationContext() - .getContentResolver(), - Settings.System.EXPANDED_VIEW_WIDGET, 0) == 1)); - mPowerWidgetHideOnChange.setChecked((Settings.System.getInt(getActivity() - .getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_HIDE_ONCHANGE, 0) == 1)); - mPowerWidgetHideScrollBar.setChecked((Settings.System.getInt(getActivity() - .getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_HIDE_SCROLLBAR, 0) == 1)); - mPowerWidgetHapticFeedback.setValue(Integer.toString(Settings.System.getInt( - getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_HAPTIC_FEEDBACK, 2))); - } - } - - public boolean onPreferenceChange(Preference preference, Object newValue) { - if (preference == mPowerWidgetHapticFeedback) { - int intValue = Integer.parseInt((String) newValue); - int index = mPowerWidgetHapticFeedback.findIndexOfValue((String) newValue); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_HAPTIC_FEEDBACK, intValue); - mPowerWidgetHapticFeedback.setSummary(mPowerWidgetHapticFeedback.getEntries()[index]); - return true; - } - return false; - } - - public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { - boolean value; - - if (preference == mPowerWidget) { - value = mPowerWidget.isChecked(); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_VIEW_WIDGET, - value ? 1 : 0); - } else if (preference == mPowerWidgetHideOnChange) { - value = mPowerWidgetHideOnChange.isChecked(); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_HIDE_ONCHANGE, - value ? 1 : 0); - } else if (preference == mPowerWidgetHideScrollBar) { - value = mPowerWidgetHideScrollBar.isChecked(); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_HIDE_SCROLLBAR, - value ? 1 : 0); - } else { - // If we didn't handle it, let preferences handle it. - return super.onPreferenceTreeClick(preferenceScreen, preference); - } - - return true; - } - - public static class PowerWidgetChooser extends SettingsPreferenceFragment - implements Preference.OnPreferenceChangeListener { - - public PowerWidgetChooser() { - } - - private static final String TAG = "PowerWidgetActivity"; - - private static final String BUTTONS_CATEGORY = "pref_buttons"; - private static final String BUTTON_MODES_CATEGORY = "pref_buttons_modes"; - private static final String SELECT_BUTTON_KEY_PREFIX = "pref_button_"; - - private static final String EXP_BRIGHTNESS_MODE = "pref_brightness_mode"; - private static final String EXP_NETWORK_MODE = "pref_network_mode"; - private static final String EXP_SCREENTIMEOUT_MODE = "pref_screentimeout_mode"; - private static final String EXP_RING_MODE = "pref_ring_mode"; - private static final String EXP_FLASH_MODE = "pref_flash_mode"; - - private HashMap mCheckBoxPrefs = new HashMap(); - - MultiSelectListPreference mBrightnessMode; - ListPreference mNetworkMode; - ListPreference mScreenTimeoutMode; - MultiSelectListPreference mRingMode; - ListPreference mFlashMode; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - addPreferencesFromResource(R.xml.power_widget); - - PreferenceScreen prefSet = getPreferenceScreen(); - PackageManager pm = getPackageManager(); - - if (getActivity().getApplicationContext() == null) { - return; - } - - mBrightnessMode = (MultiSelectListPreference) prefSet - .findPreference(EXP_BRIGHTNESS_MODE); - String storedBrightnessMode = Settings.System.getString(getActivity() - .getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_BRIGHTNESS_MODE); - if (storedBrightnessMode != null) { - String[] brightnessModeArray = TextUtils.split(storedBrightnessMode, SEPARATOR); - mBrightnessMode.setValues(new HashSet(Arrays.asList(brightnessModeArray))); - updateSummary(storedBrightnessMode, mBrightnessMode, R.string.pref_brightness_mode_summary); - } - mBrightnessMode.setOnPreferenceChangeListener(this); - mNetworkMode = (ListPreference) prefSet.findPreference(EXP_NETWORK_MODE); - mNetworkMode.setOnPreferenceChangeListener(this); - mScreenTimeoutMode = (ListPreference) prefSet.findPreference(EXP_SCREENTIMEOUT_MODE); - mScreenTimeoutMode.setOnPreferenceChangeListener(this); - mRingMode = (MultiSelectListPreference) prefSet.findPreference(EXP_RING_MODE); - String storedRingMode = Settings.System.getString(getActivity() - .getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_RING_MODE); - if (storedRingMode != null) { - String[] ringModeArray = TextUtils.split(storedRingMode, SEPARATOR); - mRingMode.setValues(new HashSet(Arrays.asList(ringModeArray))); - updateSummary(storedRingMode, mRingMode, R.string.pref_ring_mode_summary); - } - mRingMode.setOnPreferenceChangeListener(this); - mFlashMode = (ListPreference) prefSet.findPreference(EXP_FLASH_MODE); - mFlashMode.setOnPreferenceChangeListener(this); - - // TODO: set the default values of the items - - // Update the summary text - mNetworkMode.setSummary(mNetworkMode.getEntry()); - mScreenTimeoutMode.setSummary(mScreenTimeoutMode.getEntry()); - mFlashMode.setSummary(mFlashMode.getEntry()); - - // Add the available buttons to the list - PreferenceCategory prefButtons = (PreferenceCategory) prefSet - .findPreference(BUTTONS_CATEGORY); - - // Add the available mode buttons, incase they need to be removed later - PreferenceCategory prefButtonsModes = (PreferenceCategory) prefSet - .findPreference(BUTTON_MODES_CATEGORY); - - // empty our preference category and set it to order as added - prefButtons.removeAll(); - prefButtons.setOrderingAsAdded(false); - - // emtpy our checkbox map - mCheckBoxPrefs.clear(); - - // get our list of buttons - ArrayList buttonList = PowerWidgetUtil.getButtonListFromString(PowerWidgetUtil - .getCurrentButtons(getActivity().getApplicationContext())); - - // Don't show WiMAX option if not supported - boolean isWimaxEnabled = WimaxHelper.isWimaxSupported(getActivity()); - if (!isWimaxEnabled) { - PowerWidgetUtil.BUTTONS.remove(PowerWidgetUtil.BUTTON_WIMAX); - } - - // Don't show mobile data options if not supported - if (!deviceSupportsMobileData(getActivity())) { - PowerWidgetUtil.BUTTONS.remove(PowerWidgetUtil.BUTTON_MOBILEDATA); - PowerWidgetUtil.BUTTONS.remove(PowerWidgetUtil.BUTTON_NETWORKMODE); - PowerWidgetUtil.BUTTONS.remove(PowerWidgetUtil.BUTTON_WIFIAP); - prefButtonsModes.removePreference(mNetworkMode); - } - - // fill that checkbox map! - for (PowerWidgetUtil.ButtonInfo button : PowerWidgetUtil.BUTTONS.values()) { - // create a checkbox - CheckBoxPreference cb = new CheckBoxPreference(getActivity() - .getApplicationContext()); - - // set a dynamic key based on button id - cb.setKey(SELECT_BUTTON_KEY_PREFIX + button.getId()); - - // set vanity info - cb.setTitle(button.getTitleResId()); - - // set our checked state - if (buttonList.contains(button.getId())) { - cb.setChecked(true); - } else { - cb.setChecked(false); - } - - // add to our prefs set - mCheckBoxPrefs.put(cb, button.getId()); - - // specific checks for availability on some platforms - if (PowerWidgetUtil.BUTTON_FLASHLIGHT.equals(button.getId()) && - !getResources().getBoolean(R.bool.has_led_flash)) { - // disable flashlight if it's not supported - cb.setEnabled(false); - mFlashMode.setEnabled(false); - } else if (PowerWidgetUtil.BUTTON_NETWORKMODE.equals(button.getId())) { - // some phones run on networks not supported by this button, - // so disable it - int network_state = -99; - - try { - network_state = Settings.Global.getInt(getActivity() - .getApplicationContext().getContentResolver(), - Settings.Global.PREFERRED_NETWORK_MODE); - } catch (Settings.SettingNotFoundException e) { - Log.e(TAG, "Unable to retrieve PREFERRED_NETWORK_MODE", e); - } - - switch (network_state) { - // list of supported network modes - case Phone.NT_MODE_WCDMA_PREF: - case Phone.NT_MODE_WCDMA_ONLY: - case Phone.NT_MODE_GSM_UMTS: - case Phone.NT_MODE_GSM_ONLY: - break; - default: - cb.setEnabled(false); - break; - } - } - - // add to the category - prefButtons.addPreference(cb); - } - } - - public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, - Preference preference) { - // we only modify the button list if it was one of our checks that - // was clicked - boolean buttonWasModified = false; - ArrayList buttonList = new ArrayList(); - for (Map.Entry entry : mCheckBoxPrefs.entrySet()) { - if (entry.getKey().isChecked()) { - buttonList.add(entry.getValue()); - } - - if (preference == entry.getKey()) { - buttonWasModified = true; - } - } - - if (buttonWasModified) { - // now we do some wizardry and reset the button list - PowerWidgetUtil.saveCurrentButtons(getActivity().getApplicationContext(), - PowerWidgetUtil.mergeInNewButtonString( - PowerWidgetUtil.getCurrentButtons(getActivity() - .getApplicationContext()), PowerWidgetUtil - .getButtonStringFromList(buttonList))); - return true; - } - - return false; - } - - private class MultiSelectListPreferenceComparator implements Comparator { - private MultiSelectListPreference pref; - - MultiSelectListPreferenceComparator(MultiSelectListPreference p) { - pref = p; - } - - @Override - public int compare(String lhs, String rhs) { - return Integer.compare(pref.findIndexOfValue(lhs), - pref.findIndexOfValue(rhs)); - } - } - - public boolean onPreferenceChange(Preference preference, Object newValue) { - if (preference == mBrightnessMode) { - ArrayList arrValue = new ArrayList((Set) newValue); - Collections.sort(arrValue, new MultiSelectListPreferenceComparator(mBrightnessMode)); - Settings.System.putString(getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_BRIGHTNESS_MODE, TextUtils.join(SEPARATOR, arrValue)); - updateSummary(TextUtils.join(SEPARATOR, arrValue), - mBrightnessMode, R.string.pref_brightness_mode_summary); - } else if (preference == mNetworkMode) { - int value = Integer.valueOf((String) newValue); - int index = mNetworkMode.findIndexOfValue((String) newValue); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_NETWORK_MODE, value); - mNetworkMode.setSummary(mNetworkMode.getEntries()[index]); - } else if (preference == mScreenTimeoutMode) { - int value = Integer.valueOf((String) newValue); - int index = mScreenTimeoutMode.findIndexOfValue((String) newValue); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_SCREENTIMEOUT_MODE, value); - mScreenTimeoutMode.setSummary(mScreenTimeoutMode.getEntries()[index]); - } else if (preference == mRingMode) { - ArrayList arrValue = new ArrayList((Set) newValue); - Collections.sort(arrValue, new MultiSelectListPreferenceComparator(mRingMode)); - Settings.System.putString(getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_RING_MODE, TextUtils.join(SEPARATOR, arrValue)); - updateSummary(TextUtils.join(SEPARATOR, arrValue), mRingMode, R.string.pref_ring_mode_summary); - } else if (preference == mFlashMode) { - int value = Integer.valueOf((String) newValue); - int index = mFlashMode.findIndexOfValue((String) newValue); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.EXPANDED_FLASH_MODE, value); - mFlashMode.setSummary(mFlashMode.getEntries()[index]); - } - return true; - } - - private void updateSummary(String val, MultiSelectListPreference pref, int defSummary) { - // Update summary message with current values - final String[] values = parseStoredValue(val); - if (values != null) { - final int length = values.length; - final CharSequence[] entries = pref.getEntries(); - StringBuilder summary = new StringBuilder(); - for (int i = 0; i < (length); i++) { - CharSequence entry = entries[Integer.parseInt(values[i])]; - if ((length - i) > 2) { - summary.append(entry).append(", "); - } else if ((length - i) == 2) { - summary.append(entry).append(" & "); - } else if ((length - i) == 1) { - summary.append(entry); - } - } - pref.setSummary(summary); - } else { - pref.setSummary(defSummary); - } - } - - public static String[] parseStoredValue(CharSequence val) { - if (TextUtils.isEmpty(val)) { - return null; - } else { - return val.toString().split(SEPARATOR); - } - } - - } - - public static class PowerWidgetOrder extends ListFragment - { - private static final String TAG = "PowerWidgetOrderActivity"; - - private ListView mButtonList; - private ButtonAdapter mButtonAdapter; - View mContentView = null; - Context mContext; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - mContentView = inflater.inflate(R.layout.order_power_widget_buttons_activity, null); - return mContentView; - } - - /** Called when the activity is first created. */ - // @Override - // public void onCreate(Bundle icicle) - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - mContext = getActivity().getApplicationContext(); - - mButtonList = getListView(); - ((TouchInterceptor) mButtonList).setDropListener(mDropListener); - mButtonAdapter = new ButtonAdapter(mContext); - setListAdapter(mButtonAdapter); - } - - @Override - public void onDestroy() { - ((TouchInterceptor) mButtonList).setDropListener(null); - setListAdapter(null); - super.onDestroy(); - } - - @Override - public void onResume() { - super.onResume(); - // reload our buttons and invalidate the views for redraw - mButtonAdapter.reloadButtons(); - mButtonList.invalidateViews(); - } - - private TouchInterceptor.DropListener mDropListener = new TouchInterceptor.DropListener() { - public void drop(int from, int to) { - // get the current button list - ArrayList buttons = PowerWidgetUtil.getButtonListFromString( - PowerWidgetUtil.getCurrentButtons(mContext)); - - // move the button - if (from < buttons.size()) { - String button = buttons.remove(from); - - if (to <= buttons.size()) { - buttons.add(to, button); - - // save our buttons - PowerWidgetUtil.saveCurrentButtons(mContext, - PowerWidgetUtil.getButtonStringFromList(buttons)); - - // tell our adapter/listview to reload - mButtonAdapter.reloadButtons(); - mButtonList.invalidateViews(); - } - } - } - }; - - private class ButtonAdapter extends BaseAdapter { - private Context mContext; - private Resources mSystemUIResources = null; - private LayoutInflater mInflater; - private ArrayList mButtons; - - public ButtonAdapter(Context c) { - mContext = c; - mInflater = LayoutInflater.from(mContext); - - PackageManager pm = mContext.getPackageManager(); - if (pm != null) { - try { - mSystemUIResources = pm.getResourcesForApplication("com.android.systemui"); - } catch (Exception e) { - mSystemUIResources = null; - Log.e(TAG, "Could not load SystemUI resources", e); - } - } - - reloadButtons(); - } - - public void reloadButtons() { - ArrayList buttons = PowerWidgetUtil.getButtonListFromString( - PowerWidgetUtil.getCurrentButtons(mContext)); - - mButtons = new ArrayList(); - for (String button : buttons) { - if (PowerWidgetUtil.BUTTONS.containsKey(button)) { - mButtons.add(PowerWidgetUtil.BUTTONS.get(button)); - } - } - } - - public int getCount() { - return mButtons.size(); - } - - public Object getItem(int position) { - return mButtons.get(position); - } - - public long getItemId(int position) { - return position; - } - - public View getView(int position, View convertView, ViewGroup parent) { - final View v; - if (convertView == null) { - v = mInflater.inflate(R.layout.order_power_widget_button_list_item, null); - } else { - v = convertView; - } - - PowerWidgetUtil.ButtonInfo button = mButtons.get(position); - - final TextView name = (TextView) v.findViewById(R.id.name); - final ImageView icon = (ImageView) v.findViewById(R.id.icon); - - name.setText(button.getTitleResId()); - - // assume no icon first - icon.setVisibility(View.GONE); - - // attempt to load the icon for this button - if (mSystemUIResources != null) { - int resId = mSystemUIResources.getIdentifier(button.getIcon(), null, null); - if (resId > 0) { - try { - Drawable d = mSystemUIResources.getDrawable(resId); - icon.setVisibility(View.VISIBLE); - icon.setImageDrawable(d); - } catch (Exception e) { - Log.e(TAG, "Error retrieving icon drawable", e); - } - } - } - - return v; - } - } - } - -} diff --git a/src/com/android/settings/cyanogenmod/StatusBar.java b/src/com/android/settings/cyanogenmod/StatusBar.java index f9e911a..7b739ad 100644 --- a/src/com/android/settings/cyanogenmod/StatusBar.java +++ b/src/com/android/settings/cyanogenmod/StatusBar.java @@ -16,6 +16,7 @@ package com.android.settings.cyanogenmod; +import android.content.ContentResolver; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; @@ -49,7 +50,6 @@ public class StatusBar extends SettingsPreferenceFragment implements OnPreferenc private CheckBoxPreference mStatusBarClock; private CheckBoxPreference mStatusBarBrightnessControl; private CheckBoxPreference mStatusBarNotifCount; - private PreferenceCategory mPrefCategoryGeneral; @Override public void onCreate(Bundle savedInstanceState) { @@ -58,6 +58,7 @@ public class StatusBar extends SettingsPreferenceFragment implements OnPreferenc addPreferencesFromResource(R.xml.status_bar); PreferenceScreen prefSet = getPreferenceScreen(); + ContentResolver resolver = getActivity().getContentResolver(); mStatusBarClock = (CheckBoxPreference) prefSet.findPreference(STATUS_BAR_CLOCK); mStatusBarBrightnessControl = (CheckBoxPreference) prefSet.findPreference(STATUS_BAR_BRIGHTNESS_CONTROL); @@ -65,15 +66,15 @@ public class StatusBar extends SettingsPreferenceFragment implements OnPreferenc mStatusBarBattery = (ListPreference) prefSet.findPreference(STATUS_BAR_BATTERY); mStatusBarCmSignal = (ListPreference) prefSet.findPreference(STATUS_BAR_SIGNAL); - mStatusBarClock.setChecked((Settings.System.getInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_CLOCK, 1) == 1)); + mStatusBarClock.setChecked(Settings.System.getInt(resolver, Settings.System.STATUS_BAR_CLOCK, 1) == 1); + mStatusBarClock.setOnPreferenceChangeListener(this); if (DateFormat.is24HourFormat(getActivity())) { ((PreferenceCategory) prefSet.findPreference(STATUS_BAR_CLOCK_CATEGORY)) .removePreference(prefSet.findPreference(STATUS_BAR_AM_PM)); } else { mStatusBarAmPm = (ListPreference) prefSet.findPreference(STATUS_BAR_AM_PM); - int statusBarAmPm = Settings.System.getInt(getActivity().getContentResolver(), + int statusBarAmPm = Settings.System.getInt(resolver, Settings.System.STATUS_BAR_AM_PM, 2); mStatusBarAmPm.setValue(String.valueOf(statusBarAmPm)); @@ -81,91 +82,84 @@ public class StatusBar extends SettingsPreferenceFragment implements OnPreferenc mStatusBarAmPm.setOnPreferenceChangeListener(this); } - mStatusBarBrightnessControl.setChecked((Settings.System.getInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_BRIGHTNESS_CONTROL, 0) == 1)); + mStatusBarBrightnessControl.setChecked(Settings.System.getInt(resolver, + Settings.System.STATUS_BAR_BRIGHTNESS_CONTROL, 0) == 1); + mStatusBarBrightnessControl.setChecked(Settings.System.getInt(resolver, + Settings.System.STATUS_BAR_BRIGHTNESS_CONTROL, 0) == 1); + mStatusBarBrightnessControl.setOnPreferenceChangeListener(this); try { - if (Settings.System.getInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) { + if (Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE) + == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) { mStatusBarBrightnessControl.setEnabled(false); mStatusBarBrightnessControl.setSummary(R.string.status_bar_toggle_info); } } catch (SettingNotFoundException e) { } - int statusBarBattery = Settings.System.getInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_BATTERY, 0); + int statusBarBattery = Settings.System.getInt(resolver, Settings.System.STATUS_BAR_BATTERY, 0); mStatusBarBattery.setValue(String.valueOf(statusBarBattery)); mStatusBarBattery.setSummary(mStatusBarBattery.getEntry()); mStatusBarBattery.setOnPreferenceChangeListener(this); - int signalStyle = Settings.System.getInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_SIGNAL_TEXT, 0); + int signalStyle = Settings.System.getInt(resolver, Settings.System.STATUS_BAR_SIGNAL_TEXT, 0); mStatusBarCmSignal.setValue(String.valueOf(signalStyle)); mStatusBarCmSignal.setSummary(mStatusBarCmSignal.getEntry()); mStatusBarCmSignal.setOnPreferenceChangeListener(this); mStatusBarNotifCount = (CheckBoxPreference) prefSet.findPreference(STATUS_BAR_NOTIF_COUNT); - mStatusBarNotifCount.setChecked((Settings.System.getInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_NOTIF_COUNT, 0) == 1)); + mStatusBarNotifCount.setChecked(Settings.System.getInt(resolver, + Settings.System.STATUS_BAR_NOTIF_COUNT, 0) == 1); + mStatusBarNotifCount.setOnPreferenceChangeListener(this); - mPrefCategoryGeneral = (PreferenceCategory) findPreference(STATUS_BAR_CATEGORY_GENERAL); + PreferenceCategory generalCategory = + (PreferenceCategory) findPreference(STATUS_BAR_CATEGORY_GENERAL); if (Utils.isWifiOnly(getActivity())) { - mPrefCategoryGeneral.removePreference(mStatusBarCmSignal); + generalCategory.removePreference(mStatusBarCmSignal); } if (Utils.isTablet(getActivity())) { - mPrefCategoryGeneral.removePreference(mStatusBarBrightnessControl); + generalCategory.removePreference(mStatusBarBrightnessControl); } - } + @Override public boolean onPreferenceChange(Preference preference, Object newValue) { + ContentResolver resolver = getActivity().getContentResolver(); if (mStatusBarAmPm != null && preference == mStatusBarAmPm) { int statusBarAmPm = Integer.valueOf((String) newValue); int index = mStatusBarAmPm.findIndexOfValue((String) newValue); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_AM_PM, statusBarAmPm); + Settings.System.putInt(resolver, Settings.System.STATUS_BAR_AM_PM, statusBarAmPm); mStatusBarAmPm.setSummary(mStatusBarAmPm.getEntries()[index]); return true; } else if (preference == mStatusBarBattery) { int statusBarBattery = Integer.valueOf((String) newValue); int index = mStatusBarBattery.findIndexOfValue((String) newValue); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_BATTERY, statusBarBattery); + Settings.System.putInt(resolver, Settings.System.STATUS_BAR_BATTERY, statusBarBattery); mStatusBarBattery.setSummary(mStatusBarBattery.getEntries()[index]); return true; } else if (preference == mStatusBarCmSignal) { int signalStyle = Integer.valueOf((String) newValue); int index = mStatusBarCmSignal.findIndexOfValue((String) newValue); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_SIGNAL_TEXT, signalStyle); + Settings.System.putInt(resolver, Settings.System.STATUS_BAR_SIGNAL_TEXT, signalStyle); mStatusBarCmSignal.setSummary(mStatusBarCmSignal.getEntries()[index]); return true; - } - return false; - } - - public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { - boolean value; - - if (preference == mStatusBarClock) { - value = mStatusBarClock.isChecked(); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_CLOCK, value ? 1 : 0); + } else if (preference == mStatusBarClock) { + boolean value = (Boolean) newValue; + Settings.System.putInt(resolver, Settings.System.STATUS_BAR_CLOCK, value ? 1 : 0); return true; } else if (preference == mStatusBarBrightnessControl) { - value = mStatusBarBrightnessControl.isChecked(); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), + boolean value = (Boolean) newValue; + Settings.System.putInt(resolver, Settings.System.STATUS_BAR_BRIGHTNESS_CONTROL, value ? 1 : 0); return true; } else if (preference == mStatusBarNotifCount) { - value = mStatusBarNotifCount.isChecked(); - Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(), - Settings.System.STATUS_BAR_NOTIF_COUNT, value ? 1 : 0); + boolean value = (Boolean) newValue; + Settings.System.putInt(resolver, Settings.System.STATUS_BAR_NOTIF_COUNT, value ? 1 : 0); return true; } + return false; } } -- cgit v1.1