Merge "Revert "OmniGears: RU Translation"" into android-4.4
diff --git a/res/layout/preference_application_light.xml b/res/layout/preference_application_light.xml
index f88038c..72b8e1b 100644
--- a/res/layout/preference_application_light.xml
+++ b/res/layout/preference_application_light.xml
@@ -4,6 +4,8 @@
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
+ android:paddingStart="5dp"
+ android:paddingEnd="?android:attr/scrollbarSize"
android:background="?android:attr/selectableItemBackground" >
<ImageView
diff --git a/res/layout/preference_battery_light.xml b/res/layout/preference_battery_light.xml
index 95d4e5a..a1d77c8 100644
--- a/res/layout/preference_battery_light.xml
+++ b/res/layout/preference_battery_light.xml
@@ -4,18 +4,10 @@
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
+ android:paddingStart="5dp"
+ android:paddingEnd="?android:attr/scrollbarSize"
android:background="?android:attr/selectableItemBackground" >
- <ImageView
- android:id="@+android:id/icon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="4dip"
- android:maxWidth="36dip"
- android:maxHeight="36dip"
- android:adjustViewBounds="true"
- android:layout_gravity="center" />
-
<RelativeLayout
android:layout_width="0dip"
android:layout_height="wrap_content"
diff --git a/res/layout/seek_bar_preference.xml b/res/layout/seek_bar_preference.xml
index c53d2fa..6f18b4b 100644
--- a/res/layout/seek_bar_preference.xml
+++ b/res/layout/seek_bar_preference.xml
@@ -43,6 +43,7 @@
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/seekBarPrefUnitsRight"
android:gravity="right"
+ android:paddingRight="5dp"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView android:id="@+id/seekBarPrefUnitsLeft"
diff --git a/res/values-cs/custom_strings.xml b/res/values-cs/custom_strings.xml
index c334a09..b36e560 100644
--- a/res/values-cs/custom_strings.xml
+++ b/res/values-cs/custom_strings.xml
@@ -395,4 +395,15 @@
<string name="soft_back_kill_app_title">Dlouhým stiskem tlačítka zpět vynutit ukončení aplikace</string>
<string name="soft_back_kill_app_summary">Dlouhým stiskem tlačítka zpět vynutíte ukončení aplikace v popředí</string>
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">Baterie kolem odemykacího kruhu</string>
+
+ <!-- Enable camera -->
+ <string name="lockscreen_enable_camera_title">Widget fotoaparátu</string>
+ <string name="lockscreen_enable_camera_summary">Zobrazit widget fotoaparátu vpravo od obrazovky odmeknutí</string>
+
+ <!-- Enable power menu -->
+ <string name="lockscreen_enable_power_menu_title">Povolit nabídku Vypnout</string>
+ <string name="lockscreen_enable_power_menu_summary">Zobrazit nabídku Vypnout při zamčené obrazovce</string>
+
</resources>
diff --git a/res/values-de/custom_strings.xml b/res/values-de/custom_strings.xml
index 05a24b8..4d0832c 100644
--- a/res/values-de/custom_strings.xml
+++ b/res/values-de/custom_strings.xml
@@ -23,6 +23,7 @@
<string name="bars_and_menus_settings">Leisten und Menüs</string>
<string name="bars_and_menus_category_status_bar_title">Statusleiste</string>
+ <string name="bars_and_menus_category_navigation_bar_title">Navigationsleiste</string>
<string name="status_bar_battery_title">Batteriesymbol</string>
<string name="status_bar_toggle_brightness">Helligkeitskontrolle</string>
<string name="status_bar_toggle_brightness_summary">Helligkeit per wischen über die Statusleiste einstellen</string>
@@ -48,7 +49,7 @@
<string name="profiles_add">Hinzufügen</string>
<!-- Notification light dialogs -->
- <string name="edit_light_settings">LED Einstellungen bearbeiten</string>
+ <string name="edit_light_settings">LED-Einstellungen bearbeiten</string>
<string name="pulse_speed_title">Intervall Länge und Geschwindigkeit</string>
<string name="color_list_title">Farbe</string>
<string name="default_time">Normal</string>
@@ -60,8 +61,7 @@
<string name="dialog_test_button">Abbrechen</string>
<!-- Lights settings screen, notification light settings -->
- <string name="lights_category_title">LED</string>
- <string name="notification_pulse_title">LED Benachrichtigung</string>
+ <string name="notification_light_enable">Aktivieren</string>
<string name="notification_light_general_title">Allgemein</string>
<string name="notification_light_applist_title">Anwendungen</string>
<string name="notification_light_phonelist_title">Telefon</string>
@@ -71,6 +71,7 @@
<string name="notification_light_default_value">Standard</string>
<string name="notification_light_missed_call_title">Verpasster Anruf</string>
<string name="notification_light_voicemail_title">Sprachnachricht</string>
+ <string name="notification_pulse_title">LED-Benachrichtigung</string>
<!-- Values for the notification light pulse spinners -->
<string name="pulse_length_always_on">Immer an</string>
@@ -88,8 +89,8 @@
<string name="led_color_green">Grün</string>
<string name="led_color_red">Rot</string>
- <!-- Battery light settings -->
- <string name="battery_light_title">Akku LED</string>
+ <!-- Battery light settings -->
+ <string name="battery_light_title">Akku-LED</string>
<string name="battery_light_enable">Aktivieren</string>
<string name="battery_low_pulse_title">Bei schwachem Akku blinken</string>
<string name="battery_light_list_title">Farben</string>
@@ -97,7 +98,7 @@
<string name="battery_light_medium_color_title">Akku wird geladen</string>
<string name="battery_light_full_color_title">Geladen (90%)</string>
<string name="battery_light_really_full_color_title">Voll geladen (100%)</string>
- <string name="edit_battery_settings">Bearbeite LED Einstellungen</string>
+ <string name="edit_battery_settings">Akku-Einstellungen bearbeiten</string>
<!-- brightness settings -->
<string name="brightness_settings_title">Helligkeitseinstellungen</string>
@@ -119,24 +120,31 @@
<string name="button_auto_brighness_summary">Tastenhelligkeit im Automodus</string>
<string name="button_brightness_category">Tasten</string>
<string name="button_no_brightness">Dunkler Modus</string>
+ <string name="button_no_brightness_summary">Tastenhelligkeit nicht einstellen</string>
+ <string name="button_link_brightness">Mit Bildschirm verknüpfen</string>
<string name="button_link_brightness_summary">Tastenhelligkeit identisch zur Bildschirmhelligkeit</string>
<string name="button_manual_brightness">Manuelle Stufen</string>
<string name="button_manual_brightness_summary">Manuelle Stufen Tastenhelligkeit</string>
<string name="dialog_manual_brightness_title">Manuelle Tastenhelligkeit</string>
<!-- Automatic brightness customization -->
<string name="auto_brightness_setup_title">Automatische Helligkeit</string>
- <string name="light_sensor_current_value">Aktueller Wert Lichtsensor: <xliff:g id="light_level">%d</xliff:g> Lux</string>
+ <string name="light_sensor_current_value">Aktueller Sensorwert: <xliff:g id="light_level">%d</xliff:g> Lux</string>
<string name="auto_brightness_dialog_title">Automatische Helligkeitsstufen</string>
<string name="auto_brightness_level_format"><xliff:g id="level">%1$d</xliff:g></string>
<string name="auto_brightness_last_level_format"><xliff:g id="level">%1$d</xliff:g>+</string>
<string name="auto_brightness_adjust_button">Einstellen</string>
<string name="auto_brightness_close_button">Beenden</string>
<string name="auto_brightness_reset_button">Zurücksetzen</string>
+ <string name="auto_brightness_split_dialog_title">Helligkeitsstufe aufteilen</string>
<string name="auto_brightness_level_dialog_title">Helligkeitsstufe</string>
+ <string name="auto_brightness_lux">Umgebungshelligkeit (Lux)</string>
<string name="auto_brightness_backlight">Helligkeit</string>
- <string name="auto_brightness_reset_dialog_title">Stufen zurücksetzen?</string>
- <string name="auto_brightness_reset_confirmation">Alle Helligkeitsstufen werden auf den Standardwert zurück gesetzt.</string>
+ <string name="auto_brightness_reset_dialog_title">Helligkeitsstufen zurücksetzen?</string>
+ <string name="auto_brightness_reset_confirmation">Alle Helligkeitsstufen werden auf ihre Standardwerte zurückgesetzt.</string>
+ <string name="auto_brightness_split_lux_format">Teilungsoption (zwischen <xliff:g id="min">%1$d</xliff:g> und <xliff:g id="max">%2$d</xliff:g> Lux)</string>
+ <string name="auto_brightness_level_options">Lichtstärke Einstellungen</string>
<string name="auto_brightness_menu_edit">Bearbeiten</string>
+ <string name="auto_brightness_menu_split">Aufteilen</string>
<string name="auto_brightness_menu_remove">Entfernen</string>
<string name="sensor_category">Sensor</string>
<string name="button_timeout_title">Zeitspanne</string>
@@ -151,32 +159,43 @@
<!-- button settings -->
<string name="button_volume_keys_title">Lautstärke</string>
<string name="button_volume_wake_title">Aufwecken mit Lautstärketaste</string>
- <string name="button_volume_wake_summary">Durch drücken der Lautstärketaste erwacht Ihr Telefon</string>
+ <string name="button_volume_wake_summary">Durch Drücken der Lautstärketaste erwacht Ihr Telefon</string>
+ <string name="button_volume_music_control_title">Musik-Steuerung</string>
+ <string name="button_volume_music_control_summary">Bei abgeschaltetem Bildschirm durch langen Druck auf Lautstärketasten zum nächsten / vorherigen Titel springen</string>
+ <string name="button_headsethook_title">Headset</string>
+ <string name="button_headsethook_launch_voice_title">Headset-Button startet Sprachsteuerung</string>
+ <string name="button_headsethook_launch_voice_summary">Headset-Button drücken, um die Sprachsteuerung zu öffnen</string>
<!-- Network speed -->
<string name="show_network_speed">Netzwerkgeschwindigkeit</string>
<string name="show_network_speed_summary">Netzwerkgeschwindigkeit in Statusleiste anzeigen</string>
+ <string name="show_network_speed_bits">Geschwindigkeit in Bits pro Sekunde anzeigen</string>
+ <string name="show_network_speed_bytes">Geschwindigkeit in Bytes pro Sekunde anzeigen</string>
+
+ <!-- Status Bar Activity Indicators -->
+ <string name="show_activity_indicators_on_status_bar_title">Netzwerkaktivitätsanzeige</string>
+ <string name="show_activity_indicators_on_status_bar_summary">Netzwerkaktivität in der Statusleiste anzeigen</string>
<!-- Hardware keys -->
<string name="button_keys_title">Tasten</string>
<string name="keys_bindings_title">Tastenaktionen</string>
- <string name="button_keys_back_title" >Zurück-Taste</string>
- <string name="button_keys_home_title" >Home-Taste</string>
- <string name="button_keys_menu_title" >Menü-Taste</string>
- <string name="button_keys_assist_title" >Such-Taste</string>
- <string name="button_keys_appSwitch_title" >App-Wechsel-Taste</string>
+ <string name="button_keys_back_title">Zurück-Taste</string>
+ <string name="button_keys_home_title">Home-Taste</string>
+ <string name="button_keys_menu_title">Menü-Taste</string>
+ <string name="button_keys_assist_title">Such-Taste</string>
+ <string name="button_keys_appSwitch_title">App-Wechsel-Taste</string>
<string name="keys_enable_custom_title">Benutzerdefinierte Aktionen</string>
<string name="keys_back_press_title">Zurück-Taste</string>
- <string name="keys_back_long_press_title">Zurück-Taste (long press)</string>
+ <string name="keys_back_long_press_title">Zurück-Taste (langer Druck)</string>
<string name="keys_home_press_title">Home-Taste</string>
- <string name="keys_home_long_press_title">Home-Taste (long press)</string>
- <string name="keys_home_double_tap_title">Home-Taste (double tap)</string>
+ <string name="keys_home_long_press_title">Home-Taste (langer Druck)</string>
+ <string name="keys_home_double_tap_title">Home-Taste (Doppeldruck)</string>
<string name="keys_menu_press_title">Menü-Taste</string>
- <string name="keys_menu_long_press_title">Menü-Taste (long press)</string>
+ <string name="keys_menu_long_press_title">Menü-Taste (langer Druck)</string>
<string name="keys_assist_press_title">Such-Taste</string>
- <string name="keys_assist_long_press_title">Such-Taste (long press)</string>
+ <string name="keys_assist_long_press_title">Such-Taste (langer Druck)</string>
<string name="keys_app_switch_press_title">App-Wechsel-Taste</string>
- <string name="keys_app_switch_long_press_title">App-Wechsel-Taste (long press)</string>
+ <string name="keys_app_switch_long_press_title">App-Wechsel-Taste (langer Druck)</string>
<string name="keys_action_nothing">keine Aktion</string>
<string name="keys_action_menu">Öffne/Schließe Menü</string>
<string name="keys_action_app_switch">zuletzt geöffnete Apps</string>
@@ -187,35 +206,58 @@
<string name="keys_action_back">Zurück-Taste</string>
<string name="keys_action_last_app">Wechsel zu letzter App</string>
<string name="keys_action_kill_app">Beende App</string>
+ <string name="keys_action_sleep">Ausschalten</string>
+ <string name="keys_action_normal">Normal drücken</string>
+ <string name="keys_action_long">Lange drücken</string>
+ <string name="keys_action_double">Doppelt drücken</string>
<string name="dialog_no_home_key_title">Keine Home-Aktion</string>
- <string name="no_home_key">Es wurde keiner Taste die \"Home\"-Aktion zugewiesen! Das könnte das Gerät nicht mehr nutzbar machen!</string>
+ <string name="no_home_key">Es ist keine Taste mehr mit der \"Home\" Funktion belegt!\n\nDies kann ihr Gerät unbedienbar machen!</string>
+ <string name="virtual_key_haptic_feedback_title">Vibrieren bei Berührung</string>
+ <string name="virtual_key_haptic_feedback_summary">Aktivierung abhängig von \"Vibrieren bei Berührung\" in den Toneinstellungen</string>
+
+ <!-- Power Menu Options-->
+ <string name="bars_and_menus_category_power_menu_title">Ein/Aus-Menü</string>
+ <string name="power_menu_toggle_screenshot_title">Bildschirmfoto</string>
+ <string name="power_menu_toggle_screenshot_summary">Option für Bildschirmfoto im Ein/Aus-Menü anzeigen</string>
+ <string name="power_menu_toggle_screenrecord_title">Bildschirmvideo</string>
+ <string name="power_menu_toggle_screenrecord_summary">Option für Bildschirmvideo im Ein/Aus-Menü anzeigen</string>
+ <string name="power_menu_toggle_mobile_data_title">Mobile Daten</string>
+ <string name="power_menu_toggle_mobile_data_summary">Option für Mobile Daten im Ein/Aus-Menü anzeigen</string>
+ <string name="power_menu_toggle_airplane_mode_title">Flugmodus</string>
+ <string name="power_menu_toggle_airplane_mode_summary">Option für Flugmodus im Ein/Aus-Menü anzeigen</string>
+ <string name="power_menu_toggle_sound_toggles_title">Toneinstellungen</string>
+ <string name="power_menu_toggle_sound_toggles_summary">Toneinstellungen im Ein/Aus-Menü anzeigen</string>
<!-- Active Display Notifications -->
- <string name="ad_settings_summary">Ändere Active Display Einstellungen </string>
+ <string name="ad_settings_title">ActiveDisplay</string>
+ <string name="ad_settings_summary">ActiveDisplay Einstellungen ändern</string>
<string name="ad_enable_title">Aktivieren</string>
- <string name="ad_enable_summary_on">Active Display aktiviert</string>
- <string name="ad_enable_summary_off">Active Display deaktiviert</string>
+ <string name="ad_enable_summary_on">ActiveDisplay aktiviert</string>
+ <string name="ad_enable_summary_off">ActiveDisplay deaktiviert</string>
<string name="ad_text_title">Benachrichtigungstext</string>
- <string name="ad_text_summary">Benachrichtigungstext um Active Display Ring</string>
+ <string name="ad_text_summary">Benachrichtigungstext um ActiveDisplay-Ring</string>
<string name="ad_all_notifications_title">Alle Benachrichtigungen</string>
- <string name="ad_all_notifications_summary">Zeige alle Benachrichtigungen inkl. fortlaufende und nicht löschbare.</string>
+ <string name="ad_all_notifications_summary">Zeige alle Benachrichtigungen inkl. fortlaufende und nicht löschbare</string>
<string name="ad_hide_low_priority_title">Verstecke niedrige Priorität</string>
- <string name="ad_hide_low_priority_summary">Verstecke Benachrichtigungen mit niedriger Priorität wie z.B. von Google Now.</string>
+ <string name="ad_hide_low_priority_summary">Verstecke Benachrichtigungen mit niedriger Priorität wie z.B. von Google Now</string>
<string name="ad_pocket_mode_title">Taschenmodus</string>
- <string name="ad_pocket_mode_summary">Zeige die Active Display Benachrichtigungen wenn du das Gerät aus der Tasche nimmst.</string>
+ <string name="ad_pocket_mode_summary">ActiveDisplay-Benachrichtigungen anzeigen, wenn das Gerät aus der Tasche genommen wird</string>
<string name="ad_redisplay_title">Wiederholte Anzeige</string>
<string name="ad_timeout_title">Display Ruhezustand</string>
+ <string name="ad_threshold_title">Näherungs-Schwellenwert</string>
<string name="ad_brightness_title">Benachrichtigungshelligkeit</string>
<string name="ad_customizations_title">Anpassungen</string>
<string name="ad_excluded_apps_title">Ausgeschlossene Applikationen</string>
- <string name="ad_excluded_apps_summary">Ausgeschlossene Applikationen werden nicht durch Active Display angezeigt.</string>
- <string name="ad_show_date_title">Datum zeigen</string>
- <string name="ad_show_ampm_title">AM/PM zeigen</string>
+ <string name="ad_excluded_apps_summary">Ausgeschlossene Applikationen werden nicht durch Active Display angezeigt</string>
+ <string name="ad_show_date_title">Datum anzeigen</string>
+ <string name="ad_show_ampm_title">AM/PM anzeigen</string>
<string name="ad_sunlight_mode_title">Sonnenlichtmodus</string>
- <string name="ad_brightness_summary">Helligkeit von Benachrichtigungen, wenn automatische Helligkeit deaktiviert ist.</string>
- <string name="ad_show_date_summary">Zeige das Datum über der Uhr.</string>
- <string name="ad_show_ampm_summary">Zeige AM/PM neben der Zeit wenn 12 Stunden Anzeige gewählt ist.</string>
- <string name="ad_sunlight_mode_summary">Kehre die Farben um wenn man sich in einer hellen Umgebung befindet.</string>
+ <string name="ad_brightness_summary">Helligkeit von Benachrichtigungen, wenn automatische Helligkeit deaktiviert ist</string>
+ <string name="ad_show_date_summary">Datum über der Uhr anzeigen</string>
+ <string name="ad_show_ampm_summary">AM/PM anzeigen, wenn die 12-Stunden-Anzeige aktiviert ist</string>
+ <string name="ad_sunlight_mode_summary">Bei heller Umgebung Farben umkehren</string>
+ <string name="ad_turnoff_mode_title">Display ausschalten</string>
+ <string name="ad_turnoff_mode_summary">Display ausschalten, wenn das Gerät wieder eingepackt wird und es durch ActiveDisplay angeschaltet wurde</string>
<string name="ad_redisplay_never">Niemals</string>
<string name="ad_redisplay_1m">1 Minute</string>
<string name="ad_redisplay_5m">5 Minuten</string>
@@ -230,20 +272,219 @@
<string name="ad_timeout_10s">10 Sekunden</string>
<string name="ad_timeout_15s">15 Sekunden</string>
<string name="ad_timeout_25s">25 Sekunden</string>
+ <string name="ad_threshold_0s">Unmittelbar</string>
+ <string name="ad_threshold_1s">1 Sekunde</string>
+ <string name="ad_threshold_2s">2 Sekunden</string>
+ <string name="ad_threshold_3s">3 Sekunden</string>
+ <string name="ad_threshold_4s">4 Sekunden</string>
+ <string name="ad_threshold_5s">5 Sekunden</string>
<string name="ad_pocket_mode_off">Aus</string>
<string name="ad_pocket_mode_notifications">Nur Benachrichtigungen</string>
<string name="ad_pocket_mode_always">Immer</string>
-
<string name="bars_and_menus_category_recent_panel_title" >Zuletzt geöffnete Apps Menü</string>
- <!-- Recents clear all -->
+ <!-- Recents clear all -->
<string name="show_recent_clear_all_button_title">Zeige alle Apps entfernen Schaltfläche</string>
<string name="show_recent_clear_all_button_summary">Aktivieren, um die alle Apps entfernen Schaltfläche anzuzeigen</string>
- <string name="recent_clear_all_button_location_title">Position der alle Apps entfernen Schaltfläche</string>
- <string name="recent_clear_all_button_location_summary">Wähle in welcher Ecke die alle Apps entfernen Schaltfläche angezeigt werden soll</string>
- <string name="recent_clear_all_button_location_top_left">Oben-Links</string>
- <string name="recent_clear_all_button_location_top_right">Oben-Rechts</string>
- <string name="recent_clear_all_button_location_bottom_left">Unten-Links</string>
- <string name="recent_clear_all_button_location_bottom_right">Unten-Rechts</string>
+ <string name="recent_clear_all_button_location_title">Position alle Apps entfernen Schaltfläche</string>
+ <string name="recent_clear_all_button_location_summary">Wählen Sie die Position der alle Apps entfernen Schaltfläche</string>
+ <string name="recent_clear_all_button_location_top_left">Oben links</string>
+ <string name="recent_clear_all_button_location_top_right">Oben rechts</string>
+ <string name="recent_clear_all_button_location_bottom_left">Unten links</string>
+ <string name="recent_clear_all_button_location_bottom_right">Unten rechts</string>
+ <!-- Memory Indicator -->
+ <string name="show_recents_memory_indicator_title">Arbeitsspeicher-Anzeige</string>
+ <string name="show_recents_memory_indicator_summary">Arbeitsspeicher-Anzeige in der Ansicht der zuletzt geöffneten anzeigen</string>
+ <string name="recents_memory_indicator_location_title">Position Arbeitsspeicher-Anzeige</string>
+ <string name="recents_memory_indicator_location_summary">Wählen Sie die Position der Arbeitsspeicher-Anzeige</string>
+
+ <!-- Contextual Notification Panel Header -->
+ <string name="notification_drawer_category_title">Benachrichtigungsfeld</string>
+ <string name="custom_statusbar_header_title">Kontextbasierter Hintergrund</string>
+ <string name="custom_statusbar_header_summary">Zeigt im Kopf der Benachrichtigungsleiste ein Bild basierend auf Tag und Zeit</string>
+
+ <!-- Volume default -->
+ <string name="button_volume_default_none">Keine</string>
+ <string name="button_volume_default_ringer">Klingelton</string>
+ <string name="button_volume_default_media">Medien</string>
+ <string name="button_volume_default_title">Standard-Lautstärke</string>
+ <string name="button_volume_default_summary">Auswählen, welche Lautstärke standardmäßig geändert wird</string>
+
+ <!-- Navigation Bar customization-->
+ <string name="navigation_bar_title">Tasten und Layout</string>
+ <string name="navigation_bar_help_text">1 - Um die Bearbeitung zu beginnen, tippen Sie auf das Schloss-Symbol\n\n2 - Tippen Sie auf eine beliebige Taste zum Zuweisen oder Ändern der Funktionalität\n\n3 - Langes Drücken auf eine beliebige Taste, um die Reihenfolge zu ändern\n\n4 - Um zu speichern, tippen Sie wieder auf das Schloss-Symbol\n\n5 - Zum Zurücksetzen auf Systemeinstellung auf die Reset-Taste tippen\n\n</string>
+ <string name="navigation_bar_tips">\u2022 Aktionen können nur einer Taste zu selben Zeit zugeordnet werden\n\n\u2022 Die Home-Taste kann nicht neu zugeordnet werden\n\n\u2022 Seitentasten können nicht neu angeordnet werden</string>
+ <string name="navigation_bar_tips_title">Kurztipps</string>
+ <string name="navigation_bar_reset_message">Aktuelle Einstellungen löschen und auf Standardeinstellungen zurücksetzen?</string>
+ <string name="navigation_bar_save_message">Einstellungen der Navigationsleiste gespeichert</string>
+ <string name="navigation_bar_reset_toast">Navigationsleiste auf die Standardeinstellungen zurücksetzen</string>
+ <string name="navigation_bar_menu_editable">Veränderbar</string>
+ <string name="navigation_bar_menu_locked">Gesperrt</string>
+
+ <!-- Navigation ring shortcuts -->
+ <string name="navigation_ring_title">Schnellstart-Verknüpfungen</string>
+ <string name="navring_target_reset_message">Schnellstart-Verknüpfungen auf Standard zurücksetzen?</string>
+ <string name="navring_target_reset">Schnellstart-Verknüpfungen zurückgesetzt</string>
+ <string name="navring_action_open_ime_switcher">Eingabemethode wählen</string>
+ <string name="navring_action_kill_app">App schließen</string>
+ <string name="navring_action_none">Keine</string>
+ <string name="navring_action_take_screenshot">Bildschirmfoto aufnehmen</string>
+ <string name="navring_action_ring_vibrate">Ton/Vibration</string>
+ <string name="navring_action_ring_silent">Ton/Stumm</string>
+ <string name="navring_action_ring_vibrate_silent">Ton/Vibration/Stumm</string>
+ <string name="navring_action_screen_off">Bildschirm sperren</string>
+ <string name="navring_action_torch">Taschenlampe</string>
+ <string name="navring_action_google_now">Google Now</string>
+ <string name="navring_choose_action_title">Aktion auswählen</string>
+ <string name="navring_action_last_app">Zur letzten App wechseln</string>
+
+ <!-- String for IconPicker -->
+ <string name="icon_picker_title">Quelle für Icon auswählen</string>
+ <string name="icon_picker_system_icons_title">System-Icons</string>
+ <string name="icon_picker_gallery_title">Galerie</string>
+ <string name="icon_picker_pack_title">Icon-Paket</string>
+
+ <!-- Lock Screen Shortcuts -->
+ <string name="lockscreen_target_info">Schieber zur gewünschten Position ziehen, um dort eine Anwendung zu platzieren</string>
+ <string name="lockscreen_target_title">Sperrbildschirm-Anwendungen</string>
+ <string name="lockscreen_target_summary">Anwendungen zum Sperrbildschirm hinzufügen</string>
+ <string name="lockscreen_target_reset">Sperrbildschirm-Anwendungen auf Standard zurückgesetzt</string>
+ <string name="lockscreen_target_reset_title">Zurücksetzen</string>
+ <string name="lockscreen_target_reset_message">Anwendungen vom Sperrbildschirm löschen und auf Standard zurücksetzen?</string>
+ <string name="lockscreen_target_empty">Leer</string>
+ <string name="lockscreen_target_edit_title">Abkürzungen und Icon bearbeiten</string>
+ <string name="lockscreen_target_edit_msg">Wählen oder ändern Sie die gewünschte Anwendung oder Aktivität und das zugehörige Icon</string>
+
+ <!-- Lock screen shortcuts -->
+ <string name="picker_activities">Aktivitäten</string>
+ <string name="select_custom_app_title">Benutzerdefinierte App auswählen</string>
+ <string name="select_custom_activity_title">Benutzerdefinierte Aktivität auswählen</string>
+ <string name="icon_picker_choose_icon_title">Icon auswählen</string>
+ <string name="icon_picker_alarm">Alarm</string>
+ <string name="icon_picker_browser">Browser</string>
+ <string name="icon_picker_calendar">Kalender</string>
+ <string name="icon_picker_camera">Kamera</string>
+ <string name="icon_picker_chrome">Chrome</string>
+ <string name="icon_picker_contacts">Kontakte</string>
+ <string name="icon_picker_email">Email</string>
+ <string name="icon_picker_email2">Email Holo</string>
+ <string name="icon_picker_facebook">Facebook</string>
+ <string name="icon_picker_gallery">Galerie</string>
+ <string name="icon_picker_google_small">Google (klein)</string>
+ <string name="icon_picker_googleplus">Google Plus</string>
+ <string name="icon_picker_googletalk">Hangouts</string>
+ <string name="icon_picker_maps">Maps</string>
+ <string name="icon_picker_movie">Video</string>
+ <string name="icon_picker_music">Musik</string>
+ <string name="icon_picker_nav_normal">Navigation</string>
+ <string name="icon_picker_phone">Telefon</string>
+ <string name="icon_picker_podcast">Podcast</string>
+ <string name="icon_picker_rss">RSS</string>
+ <string name="icon_picker_search">Suche</string>
+ <string name="icon_picker_sms">Nachrichten</string>
+ <string name="icon_picker_twitter">Twitter</string>
+
+ <!-- QuickSettings: Dynamic Row -->
+ <string name="qs_configurable_title">Schnelleinstellungen konfigurierbar</string>
+ <string name="qs_configurable_summary">Aktivieren/Deaktivieren dynamischer Zeilenänderungen</string>
+
+ <!-- QuickSettings: Quick Pulldown -->
+ <string name="title_quick_pulldown">Schnelles Öffnen</string>
+ <string name="summary_quick_pulldown">Herunterziehen der Benachrichtigungsleiste am %1$s Rand öffnet die Schnelleinstellungen</string>
+ <string name="quick_pulldown_off">Deaktiviert</string>
+ <string name="quick_pulldown_left">Linke Seite</string>
+ <string name="quick_pulldown_centre">Mitte</string>
+ <string name="quick_pulldown_right">Rechte Seite</string>
+
+ <!-- QuickSettings: Smart Pulldown -->
+ <string name="smart_pulldown_title">Smart Pulldown</string>
+ <string name="smart_pulldown_summary">Öffnet die Schnelleinstellungen, wenn keine %1$s Benachrichtigungen vorliegen.</string>
+ <string name="smart_pulldown_off">Deaktiviert</string>
+ <string name="smart_pulldown_dismissable">Verwerfbar</string>
+ <string name="smart_pulldown_persistent">Anhaltend</string>
+
+ <!-- Cursor control -->
+ <string name="volume_key_cursor_control_title">Cursor bewegen mit Lautstärketasten</string>
+ <string name="volume_key_cursor_control_on">Lautstärke hoch/runter bewegt den Cursor links/rechts</string>
+ <string name="volume_key_cursor_control_on_reverse">Lautstärke hoch/runter bewegt den Cursor rechts/links</string>
+
+ <!-- Quick Swipe -->
+ <string name="quick_swipe_title">Schnell wischen</string>
+ <string name="quick_swipe_summary">Schnell wischen, um zwischen den Schnelleinstellungen und der Benachrichtigungsanzeige zu wechseln</string>
+
+ <!-- navigation bar -->
+ <string name="soft_back_kill_app_title">Aktuelle App beenden</string>
+ <string name="soft_back_kill_app_summary">Langes drücken der Zurück-Taste beendet die App im Vordergrund</string>
+
+ <!-- Sound themes -->
+ <string name="sound_packages_title">Sound-Pakete</string>
+ <string name="install_sound_pack_title">Sound-Pakete installieren</string>
+ <string name="install_sound_pack_summary">Installieren von neuen Sound-Paketen, die dem \"SoundPacks\" Ordner auf dem internen Speicher hinzugefügt wurden</string>
+ <string name="select_sound_pack_title">Sound Paket auswählen</string>
+ <string name="select_sound_pack_summary">Aktives Sound Paket auswählen</string>
+ <string name="default_sound_pack">Standard (System)</string>
+ <string name="error_pack_install">Fehler beim Installieren des Sound Pakets</string>
+
+ <string name="omniswitch_category">OmniSwitch</string>
+ <string name="recents_use_omniswitch_title">Für zuletzt geöffnete Apps verwenden</string>
+ <string name="recents_use_omniswitch_summary">OmniSwitch anstelle der Standard-Ansicht für zuletzt geöffnete Apps verwenden</string>
+ <string name="omniswitch_start_settings_title">Einstellungen</string>
+ <string name="omniswitch_start_settings_summary">OmniSwitch-Einstellungen öffnen</string>
+ <string name="omniswitch_not_installed_title">Warnung</string>
+ <string name="omniswitch_not_installed_summary">OmniSwitch ist nicht installiert</string>
+ <string name="omniswitch_not_installed_message">OmniSwitch ist nicht installiert</string>
+ <string name="omniswitch_first_time_title">Information</string>
+ <string name="omniswitch_first_time_message">Überprüfen sie, ob sie OmniSwitch aktiviert haben. Sie können dies in den \"Einstellungen\" überprüfen</string>
+
+ <string name="emulate_menu_key_title">Hardware Menü-Taste emulieren</string>
+ <string name="emulate_menu_key_summary">Verstecken des Drei-Punkte-Überlaufmenüs in Anwendungen erzwingen. Neustart der App erforderlich</string>
+
+ <string name="force_show_overflow_menu_title">Überlaufmenü anzeigen</string>
+ <string name="force_show_overflow_menu_summary">Anzeige des Drei-Punkte-Überlaufmenüs in Anwendungen erzwingen. Neustart der App erforderlich</string>
+
+ <!-- Clock -->
+ <string name="status_bar_clock">Uhrzeit und Datum</string>
+ <string name="status_bar_clock_title">Uhrzeit- und Datums-Layout</string>
+ <string name="clock_title_enable">Ausrichtung</string>
+ <string name="clock_enabled">Aktiviert</string>
+ <string name="clock_disabled">Deaktiviert</string>
+ <string name="status_bar_show_clock_title">Uhrzeit und Datum anzeigen</string>
+ <string name="status_bar_am_pm_title">AM/PM</string>
+ <string name="status_bar_am_pm_info">24-Stunden-Anzeige ist aktiviert</string>
+ <string name="enable_clock_weekday">Wochentag</string>
+ <string name="enable_clock_weekday_summary">Wochentagabkürzung vor Uhrzeit</string>
+ <string name="right_clock">Rechts</string>
+ <string name="center_clock">Zentriert</string>
+ <string name="dont_show">Nicht anzeigen</string>
+ <string name="clock_date_display">Datum</string>
+ <string name="clock_date_display_summary">Zeige benutzerdefiniertes Datum vor der Uhr</string>
+ <string name="clock_date_style">Layout</string>
+ <string name="clock_date_format">Format</string>
+ <string name="am_pm_clock_normal">Normale Schriftgröße</string>
+ <string name="am_pm_clock_small">Kleine Schriftgröße</string>
+ <string name="am_pm_clock_none">Nicht anzeigen</string>
+ <string name="clock_date_display_none">Nicht anzeigen</string>
+ <string name="clock_date_display_small">Kleine Schriftgröße</string>
+ <string name="clock_date_display_normal">Normale Schriftgröße</string>
+ <string name="clock_date_style_normal">Normal</string>
+ <string name="clock_date_style_lowercase">Kleinbuchstaben</string>
+ <string name="clock_date_style_uppercase">Großbuchstaben</string>
+
+ <string name="security_maximize_widgets_title">Sperrbildschirm Widgets maximieren</string>
+
+ <!-- Enable camera -->
+ <string name="lockscreen_enable_camera_title">Kamera-Widget</string>
+ <string name="lockscreen_enable_camera_summary">Nach rechts wischen, um Kamera-Widget zu zeigen</string>
+
+ <!-- Enable power menu -->
+ <string name="lockscreen_enable_power_menu_title">Ausschalt-Menü aktivieren</string>
+ <string name="lockscreen_enable_power_menu_summary">Ausschalt-Menü anzeigen, wenn der Bildschirm gesperrt ist</string>
+
+ <!-- Lockscreen see through -->
+ <string name="lockscreen_see_through_title">Durchsichtig</string>
+ <string name="lockscreen_see_through_summary">Zeigt den Inhalt hinter dem Sperrbildschirm. Daten könnten für umstehende sichtbar sein.</string>
+
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">Batteriestatus um Entsperrsysmbol</string>
</resources>
diff --git a/res/values-el/custom_strings.xml b/res/values-el/custom_strings.xml
new file mode 100644
index 0000000..dcfafdf
--- /dev/null
+++ b/res/values-el/custom_strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 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.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">Μπαταρία γύρω από δακτύλιο ξεκλειδώματος</string>
+
+</resources>
diff --git a/res/values-es/custom_strings.xml b/res/values-es/custom_strings.xml
new file mode 100644
index 0000000..59b9f56
--- /dev/null
+++ b/res/values-es/custom_strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012-2013 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.
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">Indicar batería en el anillo de desbloqueo</string>
+
+</resources>
diff --git a/res/values-fr/custom_strings.xml b/res/values-fr/custom_strings.xml
index c38ab1a..ea97180 100644
--- a/res/values-fr/custom_strings.xml
+++ b/res/values-fr/custom_strings.xml
@@ -125,13 +125,7 @@
<string name="auto_brightness_menu_remove">Diviser</string>
<string name="sensor_category">Capteurs</string>
<string name="button_timeout_title">Délai</string>
- <plurals name="button_timeout_time">
- <item quantity="one"><xliff:g id="seconds">%d</xliff:g> seconde</item>
- <item quantity="other"><xliff:g id="seconds">%d</xliff:g> secondes</item>
- </plurals>
- <string name="button_timeout_enabled">Activé pour <xliff:g id="timeout">%s</xliff:g></string>
- <string name="button_timeout_disabled">Désactivé</string>
- <string name="dialog_button_timeout_title">Durée d\éclairage des boutons</string>
+ <string name="button_timeout_summary">Désactivé lorsque la valeur est égale à 0</string>
<string name="button_volume_keys_title">Volume</string>
<string name="button_volume_wake_title">Réveil avec boutons Volume</string>
<string name="button_volume_wake_summary">Un appui sur un bouton de volume sortira votre appareil de la veille</string>
@@ -140,10 +134,20 @@
<string name="button_headsethook_title">Casque</string>
<string name="button_headsethook_launch_voice_title">Casque à commande vocale</string>
<string name="button_headsethook_launch_voice_summary">Un appui sur le bouton du casque lance la commande vocale</string>
- <string name="show_network_speed">Indicateur de vitesse réseau</string>
- <string name="show_network_speed_summary">Afficher la vitesse du réseau dans la barre de statut</string>
- <string name="show_network_speed_bits">Afficher la vitesse du réseau en bits par seconde</string>
- <string name="show_network_speed_bytes">Afficher la vitesse du réseau en Bytes par seconde</string>
+ <string name="network_traffic_title">Trafic réseau</string>
+ <string name="show_network_traffic_state">Moniteur dans la barre de statut</string>
+ <string name="show_network_traffic_unit">Afficher l\'unité</string>
+ <string name="show_network_traffic_frequency">Intervalle de mise à jour</string>
+ <string name="show_network_traffic_disable">Désactivé</string>
+ <string name="show_network_traffic_up">Sortant</string>
+ <string name="show_network_traffic_down">Entrant</string>
+ <string name="show_network_traffic_all">Entrant et sortant</string>
+ <string name="show_network_traffic_bit">Bits par seconde</string>
+ <string name="show_network_traffic_byte">Bytes par seconde</string>
+ <string name="show_network_traffic_500">500 ms</string>
+ <string name="show_network_traffic_1000">1000 ms</string>
+ <string name="show_network_traffic_1500">1500 ms</string>
+ <string name="show_network_traffic_2000">2000 ms</string>
<string name="show_activity_indicators_on_status_bar_title">Indicateur d\'activité réseau</string>
<string name="show_activity_indicators_on_status_bar_summary">Afficher un indicateur d\'activité réseau dans la barre de statut</string>
<string name="button_keys_title">Boutons</string>
@@ -199,8 +203,12 @@
<string name="ad_enable_title">Activer</string>
<string name="ad_enable_summary_on">ActiveDisplay activé</string>
<string name="ad_enable_summary_off">ActiveDisplay désactivé</string>
+ <string name="ad_bypass_title">Outrepasser Active Display</string>
+ <string name="ad_bypass_summary">Lors qu\'aucune notification ne sera présente, le mode de poche verrouillera votre appareil</string>
<string name="ad_text_title">Texte des notifications</string>
<string name="ad_text_summary">Afficher le texte des notifications autour du cercle</string>
+ <string name="ad_content_title">Utiliser les notifications personnalisées</string>
+ <string name="ad_content_summary">Utiliser le style d\'affichage d\'Active Display pour afficher les détails des notifications au lieu du style du système</string>
<string name="ad_all_notifications_title">Toutes les notifications</string>
<string name="ad_all_notifications_summary">Afficher toutes les notifications, y compris les notifications non-effaçables</string>
<string name="ad_hide_low_priority_title">Masquer les faibles priorités</string>
@@ -210,10 +218,13 @@
<string name="ad_redisplay_title">Ré-afficher les notifications</string>
<string name="ad_timeout_title">Durée d\'affichage</string>
<string name="ad_threshold_title">Seuil de proximité</string>
+ <string name="ad_threshold_summary">Définir le délai pendant lequel le capteur doit être recouvert avant qu\'Active Display soit affiché</string>
<string name="ad_brightness_title">Luminosité des notifications</string>
<string name="ad_customizations_title">Personnalisation</string>
<string name="ad_excluded_apps_title">Applications exclues</string>
<string name="ad_excluded_apps_summary">Les applications exclues ne seront pas affichées</string>
+ <string name="ad_privacy_apps_title">Mode privé</string>
+ <string name="ad_privacy_apps_summary">Aucun détail provenant de ces applications ne sera affiché</string>
<string name="ad_show_date_title">Afficher la date</string>
<string name="ad_show_ampm_title">Afficher AM/PM</string>
<string name="ad_sunlight_mode_title">Mode haute luminosité</string>
@@ -267,6 +278,15 @@
<string name="button_volume_default_media">Média</string>
<string name="button_volume_default_title">Volume par défaut</string>
<string name="button_volume_default_summary">Définir quel volume modifier par défaut</string>
+ <string name="navigation_bar_title">Boutons et agencement</string>
+ <string name="navigation_bar_help_text">1 - Pour commencer l\'édition, appuyer sur le cadenas\n\n2 - Appuyer sur un des boutons pour assigner ou changer une fonctionnalité\n\n3 - Exercer une pression longue pour modifier l\'ordre\n\n4 - Pour enregistrer, appuyer à nouveau sur le cadenas\n\n5 - Pour remettre à zéro, appuyer sur le bouton \"Réinitialiser\"\n\n</string>
+ <string name="navigation_bar_tips">\u2022 Les actions ne peuvent être assignées qu\'une seule fois\n\n\u2022 Le bouton Accueil ne peut pas être réassigné\n\n\u2022 Les boutons sur le bord ne peuvent être déplacés</string>
+ <string name="navigation_bar_tips_title">Conseils pratiques</string>
+ <string name="navigation_bar_reset_message">Supprimer la configuration actuelle et restaurer les paramètres par défaut\u00A0?</string>
+ <string name="navigation_bar_save_message">Paramètres de la barre de navigation sauvegardés</string>
+ <string name="navigation_bar_reset_toast">Restauration des paramètres par défaut de la barre de navigation</string>
+ <string name="navigation_bar_menu_editable">Éditable</string>
+ <string name="navigation_bar_menu_locked">Verrouillé</string>
<string name="navigation_ring_title">Raccourcis de lancement rapide</string>
<string name="navring_target_reset_message">Supprimer tous les raccourcis de la barre de navigation et revenir à la configuration d\'origine\u00A0?</string>
<string name="navring_target_reset">Raccourcis de la barre de navigation réinitialisés</string>
@@ -322,6 +342,7 @@
<string name="icon_picker_search">Recherche</string>
<string name="icon_picker_sms">Messages</string>
<string name="icon_picker_twitter">Twitter</string>
+ <string name="quick_settings_category_title">Volet des paramètres</string>
<string name="qs_configurable_title">Volet des paramètres configurables</string>
<string name="qs_configurable_summary">Activer les raccourcis configurables dans le volet des paramètres</string>
<string name="title_quick_pulldown">Accés rapide au volet des paramètres</string>
@@ -342,4 +363,62 @@
<string name="quick_swipe_summary">Accès rapide entre les notifications et le panneau des paramètres</string>
<string name="soft_back_kill_app_title">Appui long sur Retour tue l\'application</string>
<string name="soft_back_kill_app_summary">Un appui long sur le bouton retour tuera l\'application en premier plan</string>
+ <string name="sound_packages_title">Pack de sons</string>
+ <string name="install_sound_pack_title">Installer un pack de sons</string>
+ <string name="install_sound_pack_summary">Installer un nouveau pack de sons ajouté dans le dossier SoundPacks du stockage interne</string>
+ <string name="select_sound_pack_title">Sélectionner un pack de sons</string>
+ <string name="select_sound_pack_summary">Sélectionner le pack de sons à activer</string>
+ <string name="default_sound_pack">Défaut (Système)</string>
+ <string name="error_pack_install">Erreur lors de l\'installation du pack de sons</string>
+ <string name="omniswitch_category">OmniSwitch</string>
+ <string name="recents_use_omniswitch_title">Utiliser pour les applications récentes</string>
+ <string name="recents_use_omniswitch_summary">Utiliser OmniSwitch à la place du gestionnaire d\'applications par défaut</string>
+ <string name="omniswitch_start_settings_title">Paramètres</string>
+ <string name="omniswitch_start_settings_summary">Ouvrir les paramètres d\'OmniSwitch</string>
+ <string name="omniswitch_not_installed_title">Attention</string>
+ <string name="omniswitch_not_installed_summary">OmniSwitch n\'est pas installé</string>
+ <string name="omniswitch_not_installed_message">OmniSwitch n\'est pas installé</string>
+ <string name="omniswitch_first_time_title">Informations</string>
+ <string name="omniswitch_first_time_message">Assurez-vous d\'avoir bien activé OmniSwitch. Vous pouvez le vérifier ci-dessous dans le menu \"Paramètres\"</string>
+ <string name="emulate_menu_key_title">Émuler le bouton matériel Menu</string>
+ <string name="emulate_menu_key_summary">Forcer le masquage du menu déroulant à 3 points dans les applications. Nécessite un redémarrage des applications</string>
+ <string name="force_show_overflow_menu_title">Afficher le menu déroulant</string>
+ <string name="force_show_overflow_menu_summary">Forcer l\'affichage du menu déroulant à 3 points dans les applications. Nécessite un redémarrage des applications</string>
+ <string name="status_bar_clock">Date et heure</string>
+ <string name="status_bar_clock_title">Style de la date et de l\'heure</string>
+ <string name="clock_title_enable">Position</string>
+ <string name="clock_enabled">Activé</string>
+ <string name="clock_disabled">Désactivé</string>
+ <string name="clock_color_title">Couleur</string>
+ <string name="status_bar_clock_style_reset">Réinitialiser la couleur</string>
+ <string name="status_bar_show_clock_title">Afficher la date et l\'heure</string>
+ <string name="status_bar_am_pm_title">AM/PM</string>
+ <string name="status_bar_am_pm_info">L\'heure sur 24 heures est activée</string>
+ <string name="enable_clock_weekday">Jour de la semaine</string>
+ <string name="enable_clock_weekday_summary">Jour abrégée de la semaine avant l\'heure</string>
+ <string name="right_clock">À droite</string>
+ <string name="center_clock">Au centre</string>
+ <string name="dont_show">Ne pas afficher</string>
+ <string name="clock_date_display">Date</string>
+ <string name="clock_date_display_summary">Afficher une date personnalisée avant l\'heure</string>
+ <string name="clock_date_style">Style de la date</string>
+ <string name="clock_date_format">Format de la date</string>
+ <string name="am_pm_clock_normal">Police de taille normale</string>
+ <string name="am_pm_clock_small">Police de petite taille</string>
+ <string name="am_pm_clock_none">Ne pas afficher</string>
+ <string name="clock_date_display_none">Ne pas afficher</string>
+ <string name="clock_date_display_small">Police de petite taille</string>
+ <string name="clock_date_display_normal">Police de taille normale</string>
+ <string name="clock_date_style_normal">Normale</string>
+ <string name="clock_date_style_lowercase">Minuscule</string>
+ <string name="clock_date_style_uppercase">Majuscule</string>
+ <string name="battery_around_lockscreen_ring">Niveau de batterie autour de l\'anneau de déverrouillage</string>
+ <string name="security_maximize_widgets_title">Maximiser les widgets</string>
+ <string name="lockscreen_enable_camera_title">Widget Appareil photo</string>
+ <string name="lockscreen_enable_camera_summary">Glisser sur la droite pour activer le widget de l\'appareil photo</string>
+ <string name="lockscreen_enable_power_menu_title">Activer le menu Marche/Arrêt</string>
+ <string name="lockscreen_enable_power_menu_summary">Afficher le menu Marche/Arrêt lorsque l\'écran est verrouillé</string>
+ <string name="lockscreen_see_through_title">Affichage transparent</string>
+ <string name="lockscreen_see_through_summary">Afficher le contenu derrière votre écran de verrouillage, vos données peuvent être visibles à ceux autour de vous</string>
+
</resources>
diff --git a/res/values-it/custom_strings.xml b/res/values-it/custom_strings.xml
index 22030e0..b181958 100644
--- a/res/values-it/custom_strings.xml
+++ b/res/values-it/custom_strings.xml
@@ -188,7 +188,7 @@
<string name="keys_home_long_press_title">Tasto home (pressione lunga)</string>
<string name="keys_home_double_tap_title">Tasto home (doppio tocco)</string>
<string name="keys_menu_press_title">Tasto menu</string>
- <string name="keys_menu_long_press_title">Fasto menu (pressione lunga)</string>
+ <string name="keys_menu_long_press_title">Tasto menu (pressione lunga)</string>
<string name="keys_assist_press_title">Tasto ricerca</string>
<string name="keys_assist_long_press_title">Tasto ricerca (pressione lunga)</string>
<string name="keys_app_switch_press_title">Tasto passa app.</string>
@@ -388,4 +388,9 @@
<!-- navigation bar -->
<string name="soft_back_kill_app_title">Tasto indietro per chiudere le applicazioni</string>
<string name="soft_back_kill_app_summary">Tieni premuto il tasto indietro per chiudere le applicazioni recenti</string>
+
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">Batteria anello di sblocco</string>
+
+ <string name="security_maximize_widgets_title">Massimizza widget lockscreen</string>
</resources>
diff --git a/res/values-nl/custom_strings.xml b/res/values-nl/custom_strings.xml
index 48ee464..b3504cc 100644
--- a/res/values-nl/custom_strings.xml
+++ b/res/values-nl/custom_strings.xml
@@ -107,7 +107,7 @@
<string name="auto_brightness_sensitivity_title">Gevoeligheidsinstellingen</string>
<string name="auto_brightness_sensitivity_summary">Normaal</string>
<string name="auto_brightness_sensitivity_verylow">Heel laag</string>
- <string name="auto_brightness_sensitivity_low">Leeg</string>
+ <string name="auto_brightness_sensitivity_low">Laag</string>
<string name="auto_brightness_sensitivity_medium">Normaal</string>
<string name="auto_brightness_sensitivity_high">Hoog</string>
<string name="auto_brightness_sensitivity_veryhigh">Heel hoog</string>
@@ -159,6 +159,8 @@
<string name="button_volume_keys_title">Volume</string>
<string name="button_volume_wake_title">Volumeknop ontwaken</string>
<string name="button_volume_wake_summary">Maak je apparaat wakker door op de volumeknop te drukken</string>
+ <string name="button_volume_music_control_title">Muziek beheren</string>
+ <string name="button_volume_music_control_summary">Lang drukken op de volume knoppen wisselt van muziek wanneer het scherm uit is</string>
<string name="button_headsethook_title">Koptelefoon</string>
<string name="button_headsethook_launch_voice_title">Koptelefoon start microfoon</string>
<string name="button_headsethook_launch_voice_summary">Drukken op de koptelefoonknop start de microfoon</string>
@@ -166,6 +168,8 @@
<!-- Network speed -->
<string name="show_network_speed">Netwerksnelheidsindicator</string>
<string name="show_network_speed_summary">Toon de netwerksnelheid in de statusbalk</string>
+ <string name="show_network_speed_bits">Toon snelheid in bits per seconde</string>
+ <string name="show_network_speed_bytes">Toon snelheid in Bytes per seconde</string>
<!-- Status Bar Activity Indicators -->
<string name="show_activity_indicators_on_status_bar_title">Netwerk activiteiten indicator</string>
@@ -201,11 +205,14 @@
<string name="keys_action_back">Back knop</string>
<string name="keys_action_last_app">Terug naar laatste app</string>
<string name="keys_action_kill_app">Sluit app</string>
+ <string name="keys_action_sleep">Ga in slaapstand</string>
<string name="keys_action_normal">Normaal indrukken</string>
<string name="keys_action_long">Ingedrukt houden</string>
<string name="keys_action_double">Dubbele tik</string>
<string name="dialog_no_home_key_title">Geen home actie</string>
<string name="no_home_key">Je hebt geen knop toegewezen aan de \"Home"\ actie! Dit kan je apparaat onbruikbaar maken!</string>
+ <string name="virtual_key_haptic_feedback_title">Trillen bij aanraking</string>
+ <string name="virtual_key_haptic_feedback_summary">Inschakelen hangt af van \"Trillen bij aanraking\" bij geluidsinstellingen</string>
<!-- Power Menu Options-->
<string name="bars_and_menus_category_power_menu_title">Power-menu</string>
@@ -213,6 +220,12 @@
<string name="power_menu_toggle_screenshot_summary">Toon schermafbeelding optie in power-menu</string>
<string name="power_menu_toggle_screenrecord_title">Schermopname</string>
<string name="power_menu_toggle_screenrecord_summary">Toon schermopname optie in power-menu</string>
+ <string name="power_menu_toggle_mobile_data_title">Mobiele data</string>
+ <string name="power_menu_toggle_mobile_data_summary">Toon mobiele data optie in power-menu</string>
+ <string name="power_menu_toggle_airplane_mode_title">Vliegmodus</string>
+ <string name="power_menu_toggle_airplane_mode_summary">Toon vliegmodus optie in power-menu</string>
+ <string name="power_menu_toggle_sound_toggles_title">Geluid beheren</string>
+ <string name="power_menu_toggle_sound_toggles_summary">Toon geluidsopties in het power-menu</string>
<!-- Active Display Notifications -->
<string name="ad_settings_title">Actieve weergave</string>
@@ -313,6 +326,7 @@
<string name="navring_action_torch">Zaklamp aan/uit</string>
<string name="navring_action_google_now">Google Now</string>
<string name="navring_choose_action_title">Kies actie</string>
+ <string name="navring_action_last_app">Wissel naar laatste app</string>
<!-- String for IconPicker -->
<string name="icon_picker_title">Kies pictogram bron</string>
@@ -360,4 +374,38 @@
<string name="icon_picker_sms">Berichten</string>
<string name="icon_picker_twitter">Twitter</string>
+ <!-- QuickSettings: Dynamic Row -->
+ <string name="qs_configurable_title">Instelbare snelle instellingen</string>
+ <string name="qs_configurable_summary">In- of uitschakelen van dynamische rij wijzigingen</string>
+
+ <!-- QuickSettings: Quick Pulldown -->
+ <string name="title_quick_pulldown">Snel openen</string>
+ <string name="summary_quick_pulldown">Snelle instellingen openen met een vinger</string>
+ <string name="quick_pulldown_off">Uitgeschakeld</string>
+ <string name="quick_pulldown_centre">Midden</string>
+ <string name="quick_pulldown_left">Links</string>
+ <string name="quick_pulldown_right">Rechts</string>
+
+ <!-- QuickSettings: Smart Pulldown -->
+ <string name="smart_pulldown_title">Slim openen</string>
+ <string name="smart_pulldown_summary">Snelle instellingen openen als er geen notificaties zijn</string>
+ <string name="smart_pulldown_off">Uitgeschakeld</string>
+ <string name="smart_pulldown_dismissable">Openen als er geen verwijderbare notificaties zijn</string>
+ <string name="smart_pulldown_persistent">Openen als er geen notificaties zijn</string>
+
+ <!-- Cursor control -->
+ <string name="volume_key_cursor_control_title">Cursor met volumeknoppen</string>
+ <string name="volume_key_cursor_control_on">Links/rechts</string>
+ <string name="volume_key_cursor_control_on_reverse">Rechts/links</string>
+
+ <!-- Quick Swipe -->
+ <string name="quick_swipe_title">Snel vegen</string>
+ <string name="quick_swipe_summary">Snel vegen tussen snelle instellingen en het notificatie paneel</string>
+
+ <!-- navigation bar -->
+ <string name="soft_back_kill_app_title">Lang drukken op terug sluit app</string>
+ <string name="soft_back_kill_app_summary">Door lang op de terug knop te drukken sluit de app op de voorgrond</string>
+
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">Batterij-niveau om ontgrendelingsring</string>
</resources>
\ No newline at end of file
diff --git a/res/values-pl/custom_strings.xml b/res/values-pl/custom_strings.xml
index e049fe0..ccd2a0a 100644
--- a/res/values-pl/custom_strings.xml
+++ b/res/values-pl/custom_strings.xml
@@ -377,4 +377,6 @@
<string name="volume_key_cursor_control_on">Lewo/prawo</string>
<string name="volume_key_cursor_control_on_reverse">Prawo/lewo</string>
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">Stan baterii wokół pierścienia odblokowania</string>
</resources>
diff --git a/res/values-pt/custom_strings.xml b/res/values-pt/custom_strings.xml
index 1376882..ea87a3c 100644
--- a/res/values-pt/custom_strings.xml
+++ b/res/values-pt/custom_strings.xml
@@ -389,4 +389,6 @@
<string name="volume_key_cursor_control_on">Esquerda/direita</string>
<string name="volume_key_cursor_control_on_reverse">Direita/esquerda</string>
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">Bateria ao redor do anel de desbloqueio</string>
</resources>
diff --git a/res/values-sv/custom_strings.xml b/res/values-sv/custom_strings.xml
index 9624d3c..9df21f4 100644
--- a/res/values-sv/custom_strings.xml
+++ b/res/values-sv/custom_strings.xml
@@ -317,4 +317,5 @@
<string name="volume_key_cursor_control_title">Pekarkontroll</string>
<string name="volume_key_cursor_control_on">Vänster/höger</string>
<string name="volume_key_cursor_control_on_reverse">Höger/vänster</string>
+ <string name="battery_around_lockscreen_ring">Batteri runt upplåsningsring</string>
</resources>
diff --git a/res/values-zh-rCN/custom_strings.xml b/res/values-zh-rCN/custom_strings.xml
index 5e37101..f3f411b 100644
--- a/res/values-zh-rCN/custom_strings.xml
+++ b/res/values-zh-rCN/custom_strings.xml
@@ -384,4 +384,18 @@
<string name="volume_key_cursor_control_on">左/右</string>
<string name="volume_key_cursor_control_on_reverse">右/左</string>
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">在解锁环周围显示电量圈</string>
+
+ <!-- Enable camera -->
+ <string name="lockscreen_enable_camera_title">相机小部件</string>
+ <string name="lockscreen_enable_camera_summary">向左滑动以启动相机</string>
+
+ <!-- Enable power menu -->
+ <string name="lockscreen_enable_power_menu_title">启用电源菜单</string>
+ <string name="lockscreen_enable_power_menu_summary">屏幕锁定时显示电源菜单</string>
+
+ <!-- Lockscreen see through -->
+ <string name="lockscreen_see_through_title">透明锁屏</string>
+ <string name="lockscreen_see_through_summary">显示锁屏后的内容。您的个人信息可被您周围的人看见</string>
</resources>
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index dd68836..1168011 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -315,4 +315,113 @@
<item>2</item>
</string-array>
+ <!--- Clock -->
+ <string-array name="clock_style_entries" translatable="false">
+ <item>@string/right_clock</item>
+ <item>@string/center_clock</item>
+ </string-array>
+
+ <string-array name="clock_style_values" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ </string-array>
+
+ <string-array name="entries_status_bar_am_pm" translatable="false">
+ <item>@string/am_pm_clock_none</item>
+ <item>@string/am_pm_clock_small</item>
+ <item>@string/am_pm_clock_normal</item>
+ </string-array>
+
+ <string-array name="values_status_bar_am_pm" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ </string-array>
+
+ <string-array name="clock_date_display_entries" translatable="false">
+ <item>@string/clock_date_display_none</item>
+ <item>@string/clock_date_display_small</item>
+ <item>@string/clock_date_display_normal</item>
+ </string-array>
+
+ <string-array name="clock_date_display_values" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ </string-array>
+
+ <string-array name="clock_date_style_entries" translatable="false">
+ <item>@string/clock_date_style_normal</item>
+ <item>@string/clock_date_style_lowercase</item>
+ <item>@string/clock_date_style_uppercase</item>
+ </string-array>
+
+ <string-array name="clock_date_style_values" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ </string-array>
+
+ <string-array name="clock_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>
+ </string-array>
+
+ <!-- Network Traffic Display States -->
+ <string-array name="show_network_traffic_state_entries" translatable="false">
+ <item>@string/show_network_traffic_disable</item>
+ <item>@string/show_network_traffic_up</item>
+ <item>@string/show_network_traffic_down</item>
+ <item>@string/show_network_traffic_all</item>
+ </string-array>
+
+ <string-array name="show_network_traffic_state_values" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ </string-array>
+
+ <!-- Network Traffic Display Unit -->
+ <string-array name="show_network_traffic_unit_entries" translatable="false">
+ <item>@string/show_network_traffic_bit</item>
+ <item>@string/show_network_traffic_byte</item>
+ </string-array>
+
+ <string-array name="show_network_traffic_unit_values" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ </string-array>
+
+ <!-- Network Traffic Period -->
+ <string-array name="show_network_traffic_frequency_entries" translatable="false">
+ <item>@string/show_network_traffic_500</item>
+ <item>@string/show_network_traffic_1000</item>
+ <item>@string/show_network_traffic_1500</item>
+ <item>@string/show_network_traffic_2000</item>
+ </string-array>
+
+ <string-array name="show_network_traffic_frequency_values" translatable="false">
+ <item>500</item>
+ <item>1000</item>
+ <item>1500</item>
+ <item>2000</item>
+ </string-array>
+
</resources>
diff --git a/res/values/custom_attrs.xml b/res/values/custom_attrs.xml
index b856986..8364828 100644
--- a/res/values/custom_attrs.xml
+++ b/res/values/custom_attrs.xml
@@ -20,8 +20,9 @@
<declare-styleable name="SeekBarPreference">
<attr name="min" format="integer" />
- <attr name="unitsLeft" format="string" />
- <attr name="unitsRight" format="string" />
+ <attr name="interval" format="integer" />
+ <attr name="unitsLeft" format="string|reference" />
+ <attr name="unitsRight" format="string|reference" />
</declare-styleable>
</resources>
\ No newline at end of file
diff --git a/res/values/custom_integers.xml b/res/values/custom_integers.xml
new file mode 100644
index 0000000..0b75685
--- /dev/null
+++ b/res/values/custom_integers.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The OmniROM Project
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ -->
+
+<resources>
+
+ <!-- Overlays for NetworkTraffic to use -->
+ <integer name="maskUp">0x00000001</integer>
+ <integer name="maskDown">0x00000002</integer>
+ <integer name="maskUnit">0x00000004</integer>
+ <integer name="maskPeriod">0xFFFF0000</integer>
+</resources>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 4d8b168..a50fd30 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -22,7 +22,7 @@
<string name="reset">Reset</string>
<string name="bars_and_menus_settings">Bars and menus</string>
- <string name="active_display_settings">ActiveDisplay</string>
+ <string name="active_display_settings">Active display</string>
<string name="bars_and_menus_category_status_bar_title">Status bar</string>
<string name="bars_and_menus_category_navigation_bar_title">Navigation bar</string>
<string name="status_bar_battery_title">Battery style</string>
@@ -72,6 +72,7 @@
<string name="notification_light_default_value">Default</string>
<string name="notification_light_missed_call_title">Missed call</string>
<string name="notification_light_voicemail_title">Voicemail</string>
+ <string name="notification_light_screen_on_title">Show when screen is on</string>
<!-- Values for the notification light pulse spinners -->
<string name="pulse_length_always_on">Always on</string>
@@ -147,13 +148,7 @@
<string name="auto_brightness_menu_remove">Remove</string>
<string name="sensor_category">Sensor</string>
<string name="button_timeout_title">Timeout</string>
- <plurals name="button_timeout_time">
- <item quantity="one"><xliff:g id="seconds">%d</xliff:g> second</item>
- <item quantity="other"><xliff:g id="seconds">%d</xliff:g> seconds</item>
- </plurals>
- <string name="button_timeout_enabled">Enabled for <xliff:g id="timeout">%s</xliff:g></string>
- <string name="button_timeout_disabled">Disabled</string>
- <string name="dialog_button_timeout_title">Button brightness timeout</string>
+ <string name="button_timeout_summary">Disabled on value 0</string>
<!-- button settings -->
<string name="button_volume_keys_title">Volume</string>
@@ -165,15 +160,25 @@
<string name="button_headsethook_launch_voice_title">Headset launches voice</string>
<string name="button_headsethook_launch_voice_summary">Pressing the headset button will launch voice controls</string>
- <!-- Network speed -->
- <string name="show_network_speed">Network speed indicator</string>
- <string name="show_network_speed_summary">Show network speed in statusbar</string>
- <string name="show_network_speed_bits">Show speed as bits per second</string>
- <string name="show_network_speed_bytes">Show speed as Bytes per second</string>
+ <!-- Network traffic -->
+ <string name="network_traffic_title">Network traffic</string>
+ <string name="show_network_traffic_state">Status bar traffic monitor</string>
+ <string name="show_network_traffic_unit">Display unit</string>
+ <string name="show_network_traffic_frequency">Update interval</string>
+ <string name="show_network_traffic_disable">Disabled</string>
+ <string name="show_network_traffic_up">Outgoing</string>
+ <string name="show_network_traffic_down">Incoming</string>
+ <string name="show_network_traffic_all">Outgoing and incoming</string>
+ <string name="show_network_traffic_bit">Bits per second</string>
+ <string name="show_network_traffic_byte">Bytes per second</string>
+ <string name="show_network_traffic_500">500 ms</string>
+ <string name="show_network_traffic_1000">1000 ms</string>
+ <string name="show_network_traffic_1500">1500 ms</string>
+ <string name="show_network_traffic_2000">2000 ms</string>
<!-- Status Bar Activity Indicators -->
- <string name="show_activity_indicators_on_status_bar_title">Network activity indicator</string>
- <string name="show_activity_indicators_on_status_bar_summary">Show network activity in statusbar</string>
+ <string name="show_activity_indicators_on_status_bar_title">Activity indicators</string>
+ <string name="show_activity_indicators_on_status_bar_summary">Show indicators in signal bars</string>
<!-- Hardware keys -->
<string name="button_keys_title">Keys</string>
@@ -233,31 +238,43 @@
<string name="ad_enable_title">Enable</string>
<string name="ad_enable_summary_on">Active display enabled</string>
<string name="ad_enable_summary_off">Active display disabled</string>
+ <string name="ad_bypass_title">Bypass mode</string>
+ <string name="ad_bypass_summary">Pocket mode will launch the lockscreen when no notifications exist</string>
<string name="ad_text_title">Notification text</string>
<string name="ad_text_summary">Show the notification text around the ring</string>
- <string name="ad_all_notifications_title">All notifications</string>
- <string name="ad_all_notifications_summary">Show all notifications including ongoing, non-clearable notifications</string>
+ <string name="ad_content_title">Custom notification view</string>
+ <string name="ad_content_summary">Use active display style for notification details</string>
+ <string name="ad_annoying_title">Less frequent notification</string>
+ <string name="ad_annoying_summary">Limit the notification to once per time period</string>
+ <string name="ad_double_tap_title">Double tap to sleep</string>
+ <string name="ad_double_tap_summary">Turn screen off with double tap</string>
+ <string name="ad_wallpaper_title">Wallpaper see through</string>
+ <string name="ad_wallpaper_summary">Show blurred wallpaper behind active display</string>
+ <string name="ad_all_notifications_title">Show ongoing</string>
+ <string name="ad_all_notifications_summary">Show non-clearable notifications</string>
<string name="ad_hide_low_priority_title">Hide low priority</string>
- <string name="ad_hide_low_priority_title">Hide low priority</string>
- <string name="ad_hide_low_priority_summary">Hide low priority notifications such as those from Google Now</string>
+ <string name="ad_hide_low_priority_summary">Hide notifications marked as low priority</string>
<string name="ad_pocket_mode_title">Pocket mode</string>
- <string name="ad_pocket_mode_summary">Show active display notifications when you take the device out of your pocket</string>
- <string name="ad_redisplay_title">Redisplay notifications</string>
+ <string name="ad_pocket_mode_summary">Show pending notifications after taking the device out of your pocket</string>
+ <string name="ad_redisplay_title">Re-display notifications</string>
<string name="ad_timeout_title">Display timeout</string>
- <string name="ad_threshold_title">Threshold to proximity</string>
- <string name="ad_brightness_title">Notification brightness</string>
- <string name="ad_customizations_title">Customizations</string>
- <string name="ad_excluded_apps_title">Excluded applications</string>
- <string name="ad_excluded_apps_summary">Excluded applications will not show up in active display</string>
+ <string name="ad_threshold_title">Proximity time threshold</string>
+ <string name="ad_threshold_summary">Time the proximity sensor must be covered before active display is shown</string>
+ <string name="ad_brightness_title">Display brightness</string>
+ <string name="ad_customizations_title">Advanced settings</string>
+ <string name="ad_excluded_apps_title">Excluded apps</string>
+ <string name="ad_excluded_apps_summary">No notifications will be shown for these apps</string>
+ <string name="ad_privacy_apps_title">Privacy mode</string>
+ <string name="ad_privacy_apps_summary">No details will be shown for notifications from these apps</string>
<string name="ad_show_date_title">Show date</string>
<string name="ad_show_ampm_title">Show AM/PM</string>
<string name="ad_sunlight_mode_title">Sunlight mode</string>
- <string name="ad_brightness_summary">Brightness level for displaying notifications when automatic brightness is not enabled</string>
+ <string name="ad_brightness_summary">Used on manual brightness control</string>
<string name="ad_show_date_summary">Show the date above the clock</string>
- <string name="ad_show_ampm_summary">Show AM/PM indicator next to time when using 12hour format</string>
- <string name="ad_sunlight_mode_summary">Invert the colors when in areas with bright light such as direct sunlight</string>
- <string name="ad_turnoff_mode_title">Turn off display</string>
- <string name="ad_turnoff_mode_summary">Turn off display if the device gets pocketed again and was turned on by active display</string>
+ <string name="ad_show_ampm_summary">Show AM/PM indicator when using the 12-hour time format</string>
+ <string name="ad_sunlight_mode_summary">Invert colors in bright environment</string>
+ <string name="ad_turnoff_mode_title">Auto-sleep</string>
+ <string name="ad_turnoff_mode_summary">Put to sleep after woken by pocket mode and returned to the pocket</string>
<string name="ad_redisplay_never">Never</string>
<string name="ad_redisplay_1m">1 minute</string>
<string name="ad_redisplay_5m">5 minutes</string>
@@ -281,7 +298,8 @@
<string name="ad_pocket_mode_off">Off</string>
<string name="ad_pocket_mode_notifications">Notifications only</string>
<string name="ad_pocket_mode_always">Always</string>
- <string name="bars_and_menus_category_recent_panel_title" >Recents view</string>
+
+ <string name="bars_and_menus_category_recent_panel_title">Recents view</string>
<!-- Recents clear all -->
<string name="show_recent_clear_all_button_title">Clear all button</string>
@@ -339,12 +357,6 @@
<string name="navring_choose_action_title">Choose action</string>
<string name="navring_action_last_app">Switch to last app</string>
- <!-- String for IconPicker -->
- <string name="icon_picker_title">Choose icon source</string>
- <string name="icon_picker_system_icons_title">System icons</string>
- <string name="icon_picker_gallery_title">Gallery</string>
- <string name="icon_picker_pack_title">Icon pack</string>
-
<!-- Lock Screen Shortcuts -->
<string name="lockscreen_target_info">Drag the slider to targets to assign shortcuts</string>
<string name="lockscreen_target_title">Slider shortcuts</string>
@@ -385,24 +397,26 @@
<string name="icon_picker_sms">Messaging</string>
<string name="icon_picker_twitter">Twitter</string>
+ <string name="quick_settings_category_title">Quick settings</string>
+
<!-- QuickSettings: Dynamic Row -->
- <string name="qs_configurable_title">QuickSettings configurable</string>
+ <string name="qs_configurable_title">Quick settings configurable</string>
<string name="qs_configurable_summary">Enable/disable dynamic row changes</string>
<!-- QuickSettings: Quick Pulldown -->
<string name="title_quick_pulldown">Quick pulldown</string>
- <string name="summary_quick_pulldown">Quickly pulldown quicksettings with one finger</string>
- <string name="quick_pulldown_off">Off</string>
+ <string name="summary_quick_pulldown">Quickly pulldown quick settings with one finger</string>
+ <string name="quick_pulldown_off">Disabled</string>
<string name="quick_pulldown_centre">Centre</string>
<string name="quick_pulldown_left">Left</string>
<string name="quick_pulldown_right">Right</string>
<!-- QuickSettings: Smart Pulldown -->
<string name="smart_pulldown_title">Smart pulldown</string>
- <string name="smart_pulldown_summary">Open Quick Settings when there are no notifications present</string>
- <string name="smart_pulldown_off">Off</string>
- <string name="smart_pulldown_dismissable">Pulldown if there are no cleareable notifications</string>
- <string name="smart_pulldown_persistent">Pulldown if there are no notifications</string>
+ <string name="smart_pulldown_summary">Open quick settings when there are no notifications present</string>
+ <string name="smart_pulldown_off">Disabled</string>
+ <string name="smart_pulldown_dismissable">If no cleareable notifications</string>
+ <string name="smart_pulldown_persistent">If no notifications</string>
<!-- Cursor control -->
<string name="volume_key_cursor_control_title">Cursor control</string>
@@ -416,4 +430,83 @@
<!-- navigation bar -->
<string name="soft_back_kill_app_title">Long press back to kill app</string>
<string name="soft_back_kill_app_summary">Long pressing back button will kill foreground app</string>
+
+ <!-- Sound themes -->
+ <string name="sound_packages_title">Sound packs</string>
+ <string name="install_sound_pack_title">Install sound pack</string>
+ <string name="install_sound_pack_summary">Install new sound packs added in SoundPacks folder on the internal storage</string>
+ <string name="select_sound_pack_title">Select sound pack</string>
+ <string name="select_sound_pack_summary">Select the active sound pack</string>
+ <string name="default_sound_pack">Default (System)</string>
+ <string name="error_pack_install">Error while installing the sound pack</string>
+
+ <string name="omniswitch_category">OmniSwitch</string>
+ <string name="recents_use_omniswitch_title">Use for recents</string>
+ <string name="recents_use_omniswitch_summary">Use OmniSwitch instead of default recents view</string>
+ <string name="omniswitch_start_settings_title">Settings</string>
+ <string name="omniswitch_start_settings_summary">Open OmniSwitch settings</string>
+ <string name="omniswitch_not_installed_title">Warning</string>
+ <string name="omniswitch_not_installed_summary">OmniSwitch is not installed</string>
+ <string name="omniswitch_not_installed_message">OmniSwitch is not installed</string>
+ <string name="omniswitch_first_time_title">Information</string>
+ <string name="omniswitch_first_time_message">Make sure you have enabled OmniSwitch. You can do this by using \"Settings\" below</string>
+
+ <string name="emulate_menu_key_title">Emulate hardware menu key</string>
+ <string name="emulate_menu_key_summary">Force hide the three-dot overflow menu in applications. Require restart of application</string>
+
+ <string name="force_show_overflow_menu_title">Show overflow menu</string>
+ <string name="force_show_overflow_menu_summary">Force show the three-dot overflow menu in applications. Require restart of application</string>
+
+ <!-- Clock -->
+ <string name="status_bar_clock">Clock and date</string>
+ <string name="status_bar_clock_title">Clock and date style</string>
+ <string name="clock_title_enable">Alignment</string>
+ <string name="clock_enabled">Enabled</string>
+ <string name="clock_disabled">Disabled</string>
+ <string name="clock_color_title">Color</string>
+ <string name="status_bar_clock_style_reset">Reset color</string>
+ <string name="status_bar_show_clock_title">Show clock and date</string>
+ <string name="status_bar_am_pm_title">AM/PM</string>
+ <string name="status_bar_am_pm_info">24-hour clock is enabled</string>
+ <string name="enable_clock_weekday">Day of the week</string>
+ <string name="enable_clock_weekday_summary">Abbreviated day of the week before the time</string>
+ <string name="right_clock">Right clock</string>
+ <string name="center_clock">Center clock</string>
+ <string name="dont_show">Don\'t show</string>
+ <string name="clock_date_display">Date</string>
+ <string name="clock_date_display_summary">Display custom date before the clock</string>
+ <string name="clock_date_style">Date style</string>
+ <string name="clock_date_format">Date format</string>
+ <string name="am_pm_clock_normal">Normal font size</string>
+ <string name="am_pm_clock_small">Small font size</string>
+ <string name="am_pm_clock_none">Don\'t show</string>
+ <string name="clock_date_display_none">Don\'t show</string>
+ <string name="clock_date_display_small">Small font size</string>
+ <string name="clock_date_display_normal">Normal font size</string>
+ <string name="clock_date_style_normal">Normal</string>
+ <string name="clock_date_style_lowercase">Lowercase</string>
+ <string name="clock_date_style_uppercase">Uppercase</string>
+
+ <!-- Lockscreen battery ring -->
+ <string name="battery_around_lockscreen_ring">Battery around unlock ring</string>
+
+ <!-- Lockscreen -->
+ <string name="category_widgets_title">Widgets</string>
+ <string name="category_privacy_title">Privacy</string>
+ <string name="category_background_title">Background</string>
+ <string name="more_settings_title">More</string>
+
+ <!-- Widgets-->
+ <string name="maximize_widgets_title">Maximize</string>
+ <string name="enable_camera_title">Camera</string>
+ <string name="enable_camera_summary">Enable camera widget</string>
+
+ <!-- Privacy -->
+ <string name="enable_power_menu_title">Power menu</string>
+ <string name="enable_power_menu_summary">Enable power menu</string>
+
+ <!-- Background -->
+ <string name="see_through_title">See through</string>
+ <string name="see_through_summary">Show content behind lock screen. Data may be visible to those around you</string>
+
</resources>
diff --git a/res/xml/active_display_settings.xml b/res/xml/active_display_settings.xml
index cc5945b..ddbb5c5 100644
--- a/res/xml/active_display_settings.xml
+++ b/res/xml/active_display_settings.xml
@@ -24,23 +24,27 @@
android:summaryOff="@string/ad_enable_summary_off"
android:summaryOn="@string/ad_enable_summary_on" />
- <CheckBoxPreference
- android:key="ad_text"
- android:persistent="false"
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_content"
+ android:defaultValue="true"
+ android:title="@string/ad_content_title"
+ android:summary="@string/ad_content_summary"
+ android:dependency="ad_enable"/>
+
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_text"
android:title="@string/ad_text_title"
android:summary="@string/ad_text_summary"
android:dependency="ad_enable"/>
- <CheckBoxPreference
- android:key="ad_all_notifications"
- android:persistent="false"
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_all_notifications"
android:title="@string/ad_all_notifications_title"
android:summary="@string/ad_all_notifications_summary"
android:dependency="ad_enable"/>
- <CheckBoxPreference
- android:key="ad_hide_low_priority"
- android:persistent="false"
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_hide_low_priority_notifications"
android:title="@string/ad_hide_low_priority_title"
android:summary="@string/ad_hide_low_priority_summary"
android:dependency="ad_enable"/>
@@ -55,6 +59,13 @@
android:dependency="ad_enable"/>
<CheckBoxPreference
+ android:key="ad_bypass"
+ android:persistent="false"
+ android:title="@string/ad_bypass_title"
+ android:summary="@string/ad_bypass_summary"
+ android:dependency="ad_enable"/>
+
+ <CheckBoxPreference
android:key="ad_sunlight_mode"
android:persistent="false"
android:title="@string/ad_sunlight_mode_title"
@@ -70,20 +81,37 @@
android:entryValues="@array/ad_redisplay_values"
android:dependency="ad_enable"/>
+ <org.omnirom.omnigears.chameleonos.SeekBarPreference
+ android:key="ad_annoying"
+ android:persistent="false"
+ android:title="@string/ad_annoying_title"
+ android:summary="@string/ad_annoying_summary"
+ android:max="60"
+ settings:min="0"
+ settings:interval="1"
+ settings:unitsLeft=""
+ settings:unitsRight="s"
+ android:dependency="ad_enable" />
+
<PreferenceCategory
android:key="ad_customizations"
android:title="@string/ad_customizations_title" />
- <org.omnirom.omnigears.chameleonos.AppMultiSelectListPreference
- android:key="ad_excluded_apps"
- android:persistent="false"
- android:title="@string/ad_excluded_apps_title"
- android:summary="@string/ad_excluded_apps_summary"
- android:dependency="ad_enable" />
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_wallpaper"
+ android:title="@string/ad_wallpaper_title"
+ android:summary="@string/ad_wallpaper_summary"
+ android:dependency="ad_enable"/>
- <CheckBoxPreference
- android:key="ad_show_date"
- android:persistent="false"
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_double_tap"
+ android:title="@string/ad_double_tap_title"
+ android:summary="@string/ad_double_tap_summary"
+ android:dependency="ad_enable"/>
+
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="active_display_show_date"
+ android:defaultValue="true"
android:title="@string/ad_show_date_title"
android:summary="@string/ad_show_date_summary"
android:dependency="ad_enable"/>
@@ -95,6 +123,20 @@
android:summary="@string/ad_show_ampm_summary"
android:dependency="ad_enable"/>
+ <org.omnirom.omnigears.chameleonos.AppMultiSelectListPreference
+ android:key="ad_excluded_apps"
+ android:persistent="false"
+ android:title="@string/ad_excluded_apps_title"
+ android:summary="@string/ad_excluded_apps_summary"
+ android:dependency="ad_enable" />
+
+ <org.omnirom.omnigears.chameleonos.AppMultiSelectListPreference
+ android:key="ad_privacy_apps"
+ android:persistent="false"
+ android:title="@string/ad_privacy_apps_title"
+ android:summary="@string/ad_privacy_apps_summary"
+ android:dependency="ad_enable" />
+
<CheckBoxPreference
android:key="ad_turnoff_mode"
android:persistent="true"
@@ -106,6 +148,7 @@
android:key="ad_threshold"
android:persistent="false"
android:dialogTitle="@string/ad_threshold_title"
+ android:summary="@string/ad_threshold_summary"
android:title="@string/ad_threshold_title"
android:entries="@array/ad_threshold_entries"
android:entryValues="@array/ad_threshold_values"
@@ -125,11 +168,8 @@
android:persistent="false"
android:title="@string/ad_brightness_title"
android:summary="@string/ad_brightness_summary"
- android:max="100"
- settings:min="0"
settings:unitsLeft=""
settings:unitsRight="%"
- android:defaultValue="100"
android:dependency="ad_enable" />
</PreferenceScreen>
diff --git a/res/xml/bars_settings.xml b/res/xml/bars_settings.xml
index 2b19990..f99a5f2 100644
--- a/res/xml/bars_settings.xml
+++ b/res/xml/bars_settings.xml
@@ -37,17 +37,16 @@
android:summary="@string/status_bar_notif_count_summary"
android:persistent="false"/>
- <CheckBoxPreference
- android:key="status_bar_traffic"
- android:title="@string/show_network_speed"
- android:summary="@string/show_network_speed_summary"
- android:persistent="false" />
+ <PreferenceScreen
+ android:fragment="org.omnirom.omnigears.slim.StatusBarClockStyle"
+ android:key="clock_style_pref"
+ android:title="@string/status_bar_clock" />
- <CheckBoxPreference
- android:key="status_bar_network_activity"
- android:title="@string/show_activity_indicators_on_status_bar_title"
- android:summary="@string/show_activity_indicators_on_status_bar_summary"
- android:persistent="false"/>
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:key="category_quick_settings"
+ android:title="@string/quick_settings_category_title">
<ListPreference
android:key="quick_pulldown"
@@ -73,6 +72,40 @@
</PreferenceCategory>
+ <!-- Network traffic meter -->
+ <PreferenceCategory
+ android:key="category_network_traffic"
+ android:title="@string/network_traffic_title">
+
+ <CheckBoxPreference
+ android:key="status_bar_network_activity"
+ android:title="@string/show_activity_indicators_on_status_bar_title"
+ android:summary="@string/show_activity_indicators_on_status_bar_summary"
+ android:persistent="false"/>
+
+ <ListPreference
+ android:key="network_traffic_state"
+ android:title="@string/show_network_traffic_state"
+ android:entries="@array/show_network_traffic_state_entries"
+ android:entryValues="@array/show_network_traffic_state_values"
+ android:persistent="false" />
+
+ <ListPreference
+ android:key="network_traffic_unit"
+ android:title="@string/show_network_traffic_unit"
+ android:entries="@array/show_network_traffic_unit_entries"
+ android:entryValues="@array/show_network_traffic_unit_values"
+ android:persistent="false" />
+
+ <ListPreference
+ android:key="network_traffic_period"
+ android:title="@string/show_network_traffic_frequency"
+ android:entries="@array/show_network_traffic_frequency_entries"
+ android:entryValues="@array/show_network_traffic_frequency_values"
+ android:persistent="false" />
+
+ </PreferenceCategory>
+
<!-- Navigation bar -->
<PreferenceCategory
android:key="category_navigation_bar"
@@ -92,5 +125,11 @@
android:title="@string/soft_back_kill_app_title"
android:summary="@string/soft_back_kill_app_summary"
android:persistent="false"/>
+
+ <CheckBoxPreference
+ android:key="emulate_menu_key"
+ android:title="@string/emulate_menu_key_title"
+ android:summary="@string/emulate_menu_key_summary"
+ android:persistent="false"/>
</PreferenceCategory>
</PreferenceScreen>
diff --git a/res/xml/brightness_settings.xml b/res/xml/brightness_settings.xml
index a71d04c..6c8d0a7 100644
--- a/res/xml/brightness_settings.xml
+++ b/res/xml/brightness_settings.xml
@@ -56,10 +56,15 @@
android:title="@string/button_link_brightness"
android:summary="@string/button_link_brightness_summary"
android:persistent="false"/>
- <Preference
+ <org.omnirom.omnigears.chameleonos.SeekBarPreference
android:key="button_timeout"
- android:title="@string/button_timeout_title" />
-
+ android:title="@string/button_timeout_title"
+ android:summary="@string/button_timeout_summary"
+ android:max="30"
+ settings:min="0"
+ settings:unitsLeft=""
+ settings:unitsRight="@string/unit_sec"
+ android:persistent="false" />
</PreferenceCategory>
<PreferenceCategory
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index ea9a9f9..8e3b781 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -75,6 +75,12 @@
android:summary="@string/virtual_key_haptic_feedback_summary"
android:persistent="false"/>
+ <CheckBoxPreference
+ android:key="force_show_overflow_menu"
+ android:title="@string/force_show_overflow_menu_title"
+ android:summary="@string/force_show_overflow_menu_summary"
+ android:persistent="false"/>
+
<SwitchPreference
android:key="keys_enable_custom"
android:title="@string/keys_enable_custom_title"
diff --git a/res/xml/lockscreen_settings.xml b/res/xml/lockscreen_settings.xml
new file mode 100644
index 0000000..79e30d1
--- /dev/null
+++ b/res/xml/lockscreen_settings.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The OmniROM Project
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ -->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ android:key="lockscreen_settings"
+ android:title="@string/lockscreen_settings_title"
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+
+ <PreferenceCategory
+ android:key="category_widgets"
+ android:title="@string/category_widgets_title"/>
+
+ <CheckBoxPreference
+ android:key="maximize_widgets"
+ android:title="@string/maximize_widgets_title"
+ android:persistent="false"/>
+
+ <CheckBoxPreference
+ android:key="enable_camera"
+ android:title="@string/enable_camera_title"
+ android:summary="@string/enable_camera_summary"
+ android:persistent="false"/>
+
+ <PreferenceCategory
+ android:key="category_privacy"
+ android:title="@string/category_privacy_title"/>
+
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="lockscreen_enable_power_menu"
+ android:title="@string/enable_power_menu_title"
+ android:summary="@string/enable_power_menu_summary"
+ android:defaultValue="true" />
+
+ <PreferenceCategory
+ android:key="category_background"
+ android:title="@string/category_background_title"/>
+
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="lockscreen_see_through"
+ android:title="@string/see_through_title"
+ android:summary="@string/see_through_summary"
+ android:defaultValue="false" />
+
+</PreferenceScreen>
diff --git a/res/xml/more_interface_settings.xml b/res/xml/more_interface_settings.xml
index d17361b..5f82d68 100644
--- a/res/xml/more_interface_settings.xml
+++ b/res/xml/more_interface_settings.xml
@@ -57,4 +57,20 @@
android:dependency="show_recents_memory_indicator"
android:persistent="false" />
+ <PreferenceCategory
+ android:key="category_omniswitch"
+ android:title="@string/omniswitch_category"/>
+
+ <CheckBoxPreference
+ android:key="recents_use_omniswitch"
+ android:title="@string/recents_use_omniswitch_title"
+ android:summary="@string/recents_use_omniswitch_summary"
+ android:persistent="false" />
+
+ <Preference
+ android:key="omniswitch_start_settings"
+ android:title="@string/omniswitch_start_settings_title"
+ android:summary="@string/omniswitch_start_settings_summary"
+ android:persistent="false" />
+
</PreferenceScreen>
diff --git a/res/xml/notification_light_settings.xml b/res/xml/notification_light_settings.xml
index 65df028..f38f4f0 100644
--- a/res/xml/notification_light_settings.xml
+++ b/res/xml/notification_light_settings.xml
@@ -26,6 +26,11 @@
android:key="general_section"
android:title="@string/notification_light_general_title">
+ <CheckBoxPreference
+ android:key="notification_light_screen_on"
+ android:title="@string/notification_light_screen_on_title"
+ android:persistent="false" />
+
<org.omnirom.omnigears.notificationlight.ApplicationLightPreference
android:key="default"
android:title="@string/notification_light_default_value"
diff --git a/res/xml/og_security_settings_chooser.xml b/res/xml/og_security_settings_chooser.xml
new file mode 100644
index 0000000..662f7e2
--- /dev/null
+++ b/res/xml/og_security_settings_chooser.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source 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">
+
+ <PreferenceCategory
+ android:key="og_security_category"
+ android:title="@string/more_settings_title">
+
+ <CheckBoxPreference
+ android:key="battery_around_lockscreen_ring"
+ android:title="@string/battery_around_lockscreen_ring"
+ android:persistent="false"/>
+
+ <Preference
+ android:fragment="org.omnirom.omnigears.interfacesettings.LockscreenTargets"
+ android:key="lockscreen_targets"
+ android:summary="@string/lockscreen_target_summary"
+ android:title="@string/lockscreen_target_title" />
+
+ </PreferenceCategory>
+
+</PreferenceScreen>
diff --git a/res/xml/sound_package_settings.xml b/res/xml/sound_package_settings.xml
new file mode 100644
index 0000000..5adc37a
--- /dev/null
+++ b/res/xml/sound_package_settings.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The OmniROM Project
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ android:key="sound_packages"
+ android:title="@string/sound_packages_title"
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+
+ <ListPreference
+ android:key="install_sound_pack"
+ android:title="@string/install_sound_pack_title"
+ android:summary="@string/install_sound_pack_summary"
+ android:persistent="false"/>
+
+ <ListPreference
+ android:key="select_sound_pack"
+ android:title="@string/select_sound_pack_title"
+ android:summary="@string/select_sound_pack_summary"
+ android:persistent="false" />
+
+</PreferenceScreen>
diff --git a/res/xml/status_bar_clock_style.xml b/res/xml/status_bar_clock_style.xml
new file mode 100644
index 0000000..28f9062
--- /dev/null
+++ b/res/xml/status_bar_clock_style.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2013 SlimRoms 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_clock_title">
+
+ <CheckBoxPreference
+ android:key="status_bar_show_clock"
+ android:title="@string/status_bar_show_clock_title"
+ android:defaultValue="true"
+ android:persistent="false"/>
+
+ <ListPreference
+ android:key="clock_style"
+ android:entries="@array/clock_style_entries"
+ android:entryValues="@array/clock_style_values"
+ android:title="@string/clock_title_enable"
+ android:dependency="status_bar_show_clock"
+ android:persistent="false"/>
+
+ <ListPreference
+ android:key="status_bar_am_pm"
+ android:dialogTitle="@string/status_bar_am_pm_title"
+ android:title="@string/status_bar_am_pm_title"
+ android:entries="@array/entries_status_bar_am_pm"
+ android:entryValues="@array/values_status_bar_am_pm"
+ android:dependency="status_bar_show_clock"
+ android:persistent="false"/>
+
+ <ListPreference
+ android:key="clock_date_display"
+ android:title="@string/clock_date_display"
+ android:summary="@string/clock_date_display_summary"
+ android:entries="@array/clock_date_display_entries"
+ android:entryValues="@array/clock_date_display_values"
+ android:dependency="status_bar_show_clock"
+ android:persistent="false"/>
+
+ <ListPreference
+ android:key="clock_date_style"
+ android:title="@string/clock_date_style"
+ android:entries="@array/clock_date_style_entries"
+ android:entryValues="@array/clock_date_style_values"
+ android:dependency="status_bar_show_clock"
+ android:persistent="false"/>
+
+ <ListPreference
+ android:key="clock_date_format"
+ android:title="@string/clock_date_format"
+ android:entries="@array/clock_date_format_entries_values"
+ android:entryValues="@array/clock_date_format_entries_values"
+ android:dependency="status_bar_show_clock"
+ android:persistent="false"/>
+
+</PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/ButtonSettings.java b/src/org/omnirom/omnigears/ButtonSettings.java
index 2ec08ef..3fd001a 100644
--- a/src/org/omnirom/omnigears/ButtonSettings.java
+++ b/src/org/omnirom/omnigears/ButtonSettings.java
@@ -92,6 +92,7 @@
private static final String KEYS_APP_SWITCH_PRESS = "keys_app_switch_press";
private static final String KEYS_APP_SWITCH_LONG_PRESS = "keys_app_switch_long_press";
private static final String VIRTUAL_KEY_HAPTIC_FEEDBACK = "virtual_key_haptic_feedback";
+ private static final String FORCE_SHOW_OVERFLOW_MENU = "force_show_overflow_menu";
// Available custom actions to perform on a key press.
private static final int ACTION_NOTHING = 0;
@@ -133,6 +134,7 @@
private ListPreference mVolumeDefault;
private CheckBoxPreference mHeadsetHookLaunchVoice;
private CheckBoxPreference mVirtualKeyHapticFeedback;
+ private CheckBoxPreference mForceShowOverflowMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -156,16 +158,14 @@
mVolumeWake.setChecked(Settings.System.getInt(resolver,
Settings.System.VOLUME_WAKE_SCREEN, 0) != 0);
}
- String currentDefault = Settings.System.getString(resolver, Settings.System.VOLUME_KEYS_DEFAULT);
+ int currentDefault = Settings.System.getInt(resolver, Settings.System.VOLUME_KEYS_DEFAULT,
+ Utils.isVoiceCapable(getActivity()) ? AudioSystem.STREAM_RING : AudioSystem.STREAM_MUSIC);
if (!Utils.isVoiceCapable(getActivity())) {
- removeListEntry(mVolumeDefault, String.valueOf(AudioSystem.STREAM_RING));
+ removeListEntry(mVolumeDefault, Integer.toString(AudioSystem.STREAM_RING));
}
- if (currentDefault == null) {
- currentDefault = mVolumeDefault.getEntryValues()[mVolumeDefault.getEntryValues().length - 1].toString();
- }
- mVolumeDefault.setValue(currentDefault);
+ mVolumeDefault.setValue(Integer.toString(currentDefault));
mVolumeDefault.setOnPreferenceChangeListener(this);
mVolumeMusicControl = (CheckBoxPreference) findPreference(BUTTON_VOLUME_MUSIC_CONTROL);
@@ -239,6 +239,8 @@
KEYS_APP_SWITCH_LONG_PRESS);
mVirtualKeyHapticFeedback = (CheckBoxPreference) prefScreen.findPreference(
VIRTUAL_KEY_HAPTIC_FEEDBACK);
+ mForceShowOverflowMenu = (CheckBoxPreference) prefScreen.findPreference(
+ FORCE_SHOW_OVERFLOW_MENU);
if (hasBackKey) {
int backPressAction = Settings.System.getInt(resolver,
@@ -391,6 +393,11 @@
mVirtualKeyHapticFeedback.setChecked(Settings.System.getInt(resolver,
Settings.System.VIRTUAL_KEYS_HAPTIC_FEEDBACK, 1) == 1);
}
+
+ boolean hasNavBar = getResources().getBoolean(
+ com.android.internal.R.bool.config_showNavigationBar);
+ mForceShowOverflowMenu.setChecked(Settings.System.getInt(resolver,
+ Settings.System.FORCE_SHOW_OVERFLOW_MENU, (!hasNavBar && hasMenuKey) ? 0 : 1) == 1);
}
final PreferenceCategory headsethookCategory =
@@ -425,6 +432,11 @@
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.VOLUME_MUSIC_CONTROL, checked ? 1:0);
return true;
+ } else if (preference == mForceShowOverflowMenu){
+ boolean checked = ((CheckBoxPreference)preference).isChecked();
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.FORCE_SHOW_OVERFLOW_MENU, checked ? 1:0);
+ return true;
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
@@ -555,8 +567,8 @@
checkForHomeKey();
return true;
} else if (preference == mVolumeDefault) {
- String value = (String)newValue;
- Settings.System.putString(getContentResolver(), Settings.System.VOLUME_KEYS_DEFAULT, value);
+ int value = Integer.valueOf((String) newValue);
+ Settings.System.putInt(getContentResolver(), Settings.System.VOLUME_KEYS_DEFAULT, value);
return true;
}
return false;
diff --git a/src/org/omnirom/omnigears/batterylight/BatteryLightSettings.java b/src/org/omnirom/omnigears/batterylight/BatteryLightSettings.java
index 45e60b1..0944568 100644
--- a/src/org/omnirom/omnigears/batterylight/BatteryLightSettings.java
+++ b/src/org/omnirom/omnigears/batterylight/BatteryLightSettings.java
@@ -153,7 +153,7 @@
}
}
- @Override
+ /*@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add(0, MENU_RESET, 0, R.string.reset)
.setIcon(R.drawable.ic_settings_backup) // use the backup icon
@@ -185,7 +185,7 @@
Settings.System.putInt(resolver, Settings.System.BATTERY_LIGHT_REALLY_FULL_COLOR,
res.getInteger(com.android.internal.R.integer.config_notificationsBatteryFullARGB));
refreshDefault();
- }
+ }*/
@Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
diff --git a/src/org/omnirom/omnigears/brightness/BrightnessSettings.java b/src/org/omnirom/omnigears/brightness/BrightnessSettings.java
index ab16257..1283f27 100644
--- a/src/org/omnirom/omnigears/brightness/BrightnessSettings.java
+++ b/src/org/omnirom/omnigears/brightness/BrightnessSettings.java
@@ -46,6 +46,7 @@
import android.widget.TextView;
import org.omnirom.omnigears.R;
+import org.omnirom.omnigears.chameleonos.SeekBarPreference;
public class BrightnessSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
@@ -71,8 +72,7 @@
private ManualButtonBrightnessDialog mManualBrightnessDialog;
private boolean mButtonBrightnessSupport;
private IPowerManager mPowerService;
- private ButtonTimeoutDialog mButtonTimeoutDialog;
- private Preference mButtonTimout;
+ private SeekBarPreference mButtonTimoutBar;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -107,11 +107,12 @@
mAutomaticButtonBrightness = (Preference) findPreference(KEY_BUTTON_AUTO_BRIGHTNESS);
mManualButtonBrightness = (Preference) findPreference(KEY_BUTTON_MANUAL_BRIGHTNESS);
- mButtonTimout = (Preference) findPreference(KEY_BUTTON_TIMEOUT);
- // to set initial summary
- mButtonTimeoutDialog = new ButtonTimeoutDialog(getActivity());
- mButtonTimeoutDialog.updateSummary();
+ mButtonTimoutBar = (SeekBarPreference) findPreference(KEY_BUTTON_TIMEOUT);
+ int currentTimeout = Settings.System.getInt(resolver,
+ Settings.System.BUTTON_BACKLIGHT_TIMEOUT, 0);
+ mButtonTimoutBar.setValue(currentTimeout);
+ mButtonTimoutBar.setOnPreferenceChangeListener(this);
mPowerService = IPowerManager.Stub.asInterface(ServiceManager.getService("power"));
@@ -123,7 +124,7 @@
if (mButtonBrightnessSupport){
if (mNoButtonBrightness.isChecked()){
mLinkButtonBrightness.setEnabled(false);
- mButtonTimout.setEnabled(false);
+ mButtonTimoutBar.setEnabled(false);
mAutomaticButtonBrightness.setEnabled(false);
mManualButtonBrightness.setEnabled(false);
} else if (mLinkButtonBrightness.isChecked()){
@@ -133,7 +134,7 @@
} else {
mNoButtonBrightness.setEnabled(true);
mLinkButtonBrightness.setEnabled(true);
- mButtonTimout.setEnabled(true);
+ mButtonTimoutBar.setEnabled(true);
mAutomaticButtonBrightness.setEnabled(true);
mManualButtonBrightness.setEnabled(true);
}
@@ -158,9 +159,6 @@
if (mManualBrightnessDialog != null) {
mManualBrightnessDialog.dismiss();
}
- if (mButtonTimeoutDialog != null) {
- mButtonTimeoutDialog.dismiss();
- }
}
@Override
@@ -171,8 +169,6 @@
showButtonAutoBrightnessDialog();
} else if (preference == mManualButtonBrightness) {
showButtonManualBrightnessDialog();
- } else if (preference == mButtonTimout) {
- showButtonTimoutDialog();
} else if (preference == mNoButtonBrightness) {
boolean checked = ((CheckBoxPreference)preference).isChecked();
Settings.System.putInt(getActivity().getContentResolver(),
@@ -201,6 +197,10 @@
Settings.System.AUTO_BRIGHTNESS_RESPONSIVENESS, sensitivity);
updateAutomaticSensityDescription(value);
+ } else if (preference == mButtonTimoutBar) {
+ int buttonTimeout = (Integer) objValue;
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.BUTTON_BACKLIGHT_TIMEOUT, buttonTimeout);
} else {
return false;
}
@@ -238,14 +238,6 @@
mButtonBrightnessDialog.show();
}
- private void showButtonTimoutDialog() {
- if (mButtonTimeoutDialog.isShowing()) {
- return;
- }
-
- mButtonTimeoutDialog.show();
- }
-
private void showButtonManualBrightnessDialog() {
if (mManualBrightnessDialog != null && mManualBrightnessDialog.isShowing()) {
return;
@@ -386,100 +378,5 @@
});
}
}
- private class ButtonTimeoutDialog extends AlertDialog implements DialogInterface.OnClickListener {
- private SeekBar mTimeoutBar;
- private TextView mTimeoutValue;
- private int mCurrentTimeout;
- private boolean mIsDragging = false;
-
- public ButtonTimeoutDialog(Context context) {
- super(context);
-
- // to allow initial summary setting
- mCurrentTimeout = Settings.System.getInt(getContext().getContentResolver(),
- Settings.System.BUTTON_BACKLIGHT_TIMEOUT, 0);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- final View v = getLayoutInflater().inflate(R.layout.button_timeout, null);
- final Context context = getContext();
-
- mTimeoutBar = (SeekBar) v.findViewById(R.id.timeout_seekbar);
- mTimeoutValue = (TextView) v.findViewById(R.id.timeout_value);
- mTimeoutBar.setMax(30);
-
- setTitle(R.string.dialog_button_timeout_title);
- setCancelable(true);
- setView(v);
-
- initListeners();
- init();
-
- setButton(DialogInterface.BUTTON_POSITIVE, context.getString(R.string.ok), this);
- setButton(DialogInterface.BUTTON_NEGATIVE, context.getString(R.string.cancel), this);
-
- super.onCreate(savedInstanceState);
- }
-
- private void init() {
- mCurrentTimeout = Settings.System.getInt(getContext().getContentResolver(),
- Settings.System.BUTTON_BACKLIGHT_TIMEOUT, 0);
-
- mTimeoutBar.setProgress(mCurrentTimeout);
- mTimeoutValue.setText(getTimeoutString());
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- try {
- Settings.System.putInt(getContext().getContentResolver(),
- Settings.System.BUTTON_BACKLIGHT_TIMEOUT, mCurrentTimeout);
- updateSummary();
- } catch (NumberFormatException e) {
- Log.d(TAG, "NumberFormatException " + e);
- }
- }
- }
-
- private void updateSummary() {
- if (mCurrentTimeout == 0) {
- mButtonTimout.setSummary(R.string.button_timeout_disabled);
- } else {
- mButtonTimout.setSummary(getContext().getString(R.string.button_timeout_enabled,
- getTimeoutString()));
- }
- }
-
- private String getTimeoutString() {
- if (mCurrentTimeout == 0) {
- return getContext().getResources().getString(R.string.button_timeout_disabled);
- } else {
- return getContext().getResources().getQuantityString(
- R.plurals.button_timeout_time, mCurrentTimeout, mCurrentTimeout);
- }
- }
-
- private void initListeners() {
- mTimeoutBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- if (mIsDragging) {
- mCurrentTimeout = mTimeoutBar.getProgress();
- mTimeoutValue.setText(getTimeoutString());
- }
- }
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
- mIsDragging = true;
- }
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- mIsDragging = false;
- }
- });
- }
- }
}
diff --git a/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java b/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
index 4d0bed6..356258c 100644
--- a/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
+++ b/src/org/omnirom/omnigears/chameleonos/ActiveDisplaySettings.java
@@ -16,9 +16,11 @@
package org.omnirom.omnigears.chameleonos;
+import android.app.Activity;
+import android.content.ContentResolver;
import android.content.Context;
-import android.hardware.SensorManager;
import android.os.Bundle;
+import android.os.PowerManager;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
@@ -26,50 +28,57 @@
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.text.format.DateFormat;
import android.text.TextUtils;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
+import com.android.internal.util.omni.DeviceUtils;
+
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
-import static android.hardware.Sensor.TYPE_LIGHT;
-import static android.hardware.Sensor.TYPE_PROXIMITY;
+import android.util.Log;
public class ActiveDisplaySettings extends SettingsPreferenceFragment implements
OnPreferenceChangeListener {
private static final String TAG = "ActiveDisplaySettings";
private static final String KEY_ENABLED = "ad_enable";
- private static final String KEY_SHOW_TEXT = "ad_text";
- private static final String KEY_ALL_NOTIFICATIONS = "ad_all_notifications";
- private static final String KEY_HIDE_LOW_PRIORITY = "ad_hide_low_priority";
+ private static final String KEY_ANNOYING = "ad_annoying";
+ private static final String KEY_BYPASS_CONTENT = "ad_bypass";
private static final String KEY_POCKET_MODE = "ad_pocket_mode";
private static final String KEY_SUNLIGHT_MODE = "ad_sunlight_mode";
private static final String KEY_REDISPLAY = "ad_redisplay";
private static final String KEY_EXCLUDED_APPS = "ad_excluded_apps";
- private static final String KEY_SHOW_DATE = "ad_show_date";
+ private static final String KEY_PRIVACY_APPS = "ad_privacy_apps";
private static final String KEY_SHOW_AMPM = "ad_show_ampm";
private static final String KEY_BRIGHTNESS = "ad_brightness";
private static final String KEY_TIMEOUT = "ad_timeout";
private static final String KEY_THRESHOLD = "ad_threshold";
private static final String KEY_TURNOFF_MODE = "ad_turnoff_mode";
+ private ContentResolver mResolver;
+ private Context mContext;
+
private SwitchPreference mEnabledPref;
- private CheckBoxPreference mShowTextPref;
- private CheckBoxPreference mAllNotificationsPref;
- private CheckBoxPreference mHideLowPriorityPref;
- private ListPreference mPocketModePref;
- private CheckBoxPreference mSunlightModePref;
- private ListPreference mRedisplayPref;
private AppMultiSelectListPreference mExcludedAppsPref;
- private CheckBoxPreference mShowDatePref;
+ private AppMultiSelectListPreference mPrivacyAppsPref;
+ private CheckBoxPreference mBypassPref;
private CheckBoxPreference mShowAmPmPref;
- private SeekBarPreference mBrightnessLevel;
- private ListPreference mDisplayTimeout;
- private ListPreference mProximityThreshold;
+ private CheckBoxPreference mSunlightModePref;
private CheckBoxPreference mTurnOffModePref;
+ private SeekBarPreference mBrightnessLevel;
+ private SeekBarPreference mAnnoyingNotification;
+ private ListPreference mDisplayTimeout;
+ private ListPreference mPocketModePref;
+ private ListPreference mProximityThreshold;
+ private ListPreference mRedisplayPref;
+ private int mMinimumBacklight;
+ private int mMaximumBacklight;
+
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -77,113 +86,153 @@
addPreferencesFromResource(R.xml.active_display_settings);
- mEnabledPref = (SwitchPreference) findPreference(KEY_ENABLED);
- mEnabledPref.setChecked((Settings.System.getInt(getContentResolver(),
+ mContext = getActivity().getApplicationContext();
+ mResolver = mContext.getContentResolver();
+ PreferenceScreen prefSet = getPreferenceScreen();
+
+ mEnabledPref = (SwitchPreference) prefSet.findPreference(KEY_ENABLED);
+ mEnabledPref.setChecked((Settings.System.getInt(mResolver,
Settings.System.ENABLE_ACTIVE_DISPLAY, 0) == 1));
mEnabledPref.setOnPreferenceChangeListener(this);
- mShowTextPref = (CheckBoxPreference) findPreference(KEY_SHOW_TEXT);
- mShowTextPref.setChecked((Settings.System.getInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_TEXT, 0) == 1));
+ mBypassPref = (CheckBoxPreference) prefSet.findPreference(KEY_BYPASS_CONTENT);
+ mPocketModePref = (ListPreference) prefSet.findPreference(KEY_POCKET_MODE);
+ mProximityThreshold = (ListPreference) prefSet.findPreference(KEY_THRESHOLD);
+ mTurnOffModePref = (CheckBoxPreference) prefSet.findPreference(KEY_TURNOFF_MODE);
- mAllNotificationsPref = (CheckBoxPreference) findPreference(KEY_ALL_NOTIFICATIONS);
- mAllNotificationsPref.setChecked((Settings.System.getInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_ALL_NOTIFICATIONS, 0) == 1));
+ if (!DeviceUtils.deviceSupportsProximitySensor(mContext)) {
+ prefSet.removePreference(mPocketModePref);
+ prefSet.removePreference(mBypassPref);
+ prefSet.removePreference(mProximityThreshold);
+ prefSet.removePreference(mTurnOffModePref);
+ } else {
+ mBypassPref.setChecked((Settings.System.getInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_BYPASS, 1) != 0));
- mHideLowPriorityPref = (CheckBoxPreference) findPreference(KEY_HIDE_LOW_PRIORITY);
- mHideLowPriorityPref.setChecked((Settings.System.getInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_HIDE_LOW_PRIORITY_NOTIFICATIONS, 0) == 1));
-
- mPocketModePref = (ListPreference) findPreference(KEY_POCKET_MODE);
- mPocketModePref.setOnPreferenceChangeListener(this);
- int mode = Settings.System.getInt(getContentResolver(),
+ int mode = Settings.System.getInt(mResolver,
Settings.System.ACTIVE_DISPLAY_POCKET_MODE, 0);
mPocketModePref.setValue(String.valueOf(mode));
- updatePocketModeSummary(mode);
- if (!hasProximitySensor()) {
- getPreferenceScreen().removePreference(mPocketModePref);
- }
- mSunlightModePref = (CheckBoxPreference) findPreference(KEY_SUNLIGHT_MODE);
- mSunlightModePref.setChecked((Settings.System.getInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_SUNLIGHT_MODE, 0) == 1));
- if (!hasLightSensor()) {
- getPreferenceScreen().removePreference(mSunlightModePref);
+ mPocketModePref.setSummary(mPocketModePref.getEntry());
+ mPocketModePref.setOnPreferenceChangeListener(this);
+
+ long threshold = Settings.System.getLong(mResolver,
+ Settings.System.ACTIVE_DISPLAY_THRESHOLD, 5000L);
+ mProximityThreshold.setValue(String.valueOf(threshold));
+ mProximityThreshold.setSummary(mProximityThreshold.getEntry());
+ mProximityThreshold.setOnPreferenceChangeListener(this);
+
+ mTurnOffModePref.setChecked((Settings.System.getInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_TURNOFF_MODE, 0) == 1));
}
- PreferenceScreen prefSet = getPreferenceScreen();
+ mSunlightModePref = (CheckBoxPreference) prefSet.findPreference(KEY_SUNLIGHT_MODE);
+
+ if (!DeviceUtils.deviceSupportsLightSensor(mContext)) {
+ prefSet.removePreference(mSunlightModePref);
+ } else {
+ mSunlightModePref.setChecked((Settings.System.getInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_SUNLIGHT_MODE, 0) == 1));
+ }
+
mRedisplayPref = (ListPreference) prefSet.findPreference(KEY_REDISPLAY);
- mRedisplayPref.setOnPreferenceChangeListener(this);
- long timeout = Settings.System.getLong(getContentResolver(),
+ long timeout = Settings.System.getLong(mResolver,
Settings.System.ACTIVE_DISPLAY_REDISPLAY, 0);
mRedisplayPref.setValue(String.valueOf(timeout));
- updateRedisplaySummary(timeout);
+ mRedisplayPref.setSummary(mRedisplayPref.getEntry());
+ mRedisplayPref.setOnPreferenceChangeListener(this);
- mExcludedAppsPref = (AppMultiSelectListPreference) findPreference(KEY_EXCLUDED_APPS);
+ mAnnoyingNotification = (SeekBarPreference) prefSet.findPreference(KEY_ANNOYING);
+ mAnnoyingNotification.setValue(Settings.System.getInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_ANNOYING, 0));
+ mAnnoyingNotification.setOnPreferenceChangeListener(this);
+
+ mExcludedAppsPref = (AppMultiSelectListPreference) prefSet.findPreference(KEY_EXCLUDED_APPS);
Set<String> excludedApps = getExcludedApps();
- if (excludedApps != null) mExcludedAppsPref.setValues(excludedApps);
+ if (excludedApps != null) {
+ mExcludedAppsPref.setValues(excludedApps);
+ }
mExcludedAppsPref.setOnPreferenceChangeListener(this);
- mShowDatePref = (CheckBoxPreference) findPreference(KEY_SHOW_DATE);
- mShowDatePref.setChecked((Settings.System.getInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_SHOW_DATE, 0) == 1));
+ mPrivacyAppsPref = (AppMultiSelectListPreference) prefSet.findPreference(KEY_PRIVACY_APPS);
+ Set<String> privacyApps = getPrivacyApps();
+ if (privacyApps != null) {
+ mPrivacyAppsPref.setValues(privacyApps);
+ }
+ mPrivacyAppsPref.setOnPreferenceChangeListener(this);
- mShowAmPmPref = (CheckBoxPreference) findPreference(KEY_SHOW_AMPM);
- mShowAmPmPref.setChecked((Settings.System.getInt(getContentResolver(),
+ mShowAmPmPref = (CheckBoxPreference) prefSet.findPreference(KEY_SHOW_AMPM);
+ mShowAmPmPref.setChecked((Settings.System.getInt(mResolver,
Settings.System.ACTIVE_DISPLAY_SHOW_AMPM, 0) == 1));
- mBrightnessLevel = (SeekBarPreference) findPreference(KEY_BRIGHTNESS);
- mBrightnessLevel.setValue(Settings.System.getInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_BRIGHTNESS, 100));
- mBrightnessLevel.setOnPreferenceChangeListener(this);
+ PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ mMinimumBacklight = pm.getMinimumScreenBrightnessSetting();
+ mMaximumBacklight = pm.getMaximumScreenBrightnessSetting();
+
+ mBrightnessLevel = (SeekBarPreference) prefSet.findPreference(KEY_BRIGHTNESS);
+ int brightness = Settings.System.getInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_BRIGHTNESS, mMaximumBacklight);
+ int realBrightness = (int)(((float)brightness / (float)mMaximumBacklight) * 100);
+ mBrightnessLevel.setValue(realBrightness);
+ mBrightnessLevel.setOnPreferenceChangeListener(this);
mDisplayTimeout = (ListPreference) prefSet.findPreference(KEY_TIMEOUT);
- mDisplayTimeout.setOnPreferenceChangeListener(this);
- timeout = Settings.System.getLong(getContentResolver(),
+ timeout = Settings.System.getLong(mResolver,
Settings.System.ACTIVE_DISPLAY_TIMEOUT, 8000L);
mDisplayTimeout.setValue(String.valueOf(timeout));
- updateTimeoutSummary(timeout);
-
- mProximityThreshold = (ListPreference) prefSet.findPreference(KEY_THRESHOLD);
- mProximityThreshold.setOnPreferenceChangeListener(this);
- long threshold = Settings.System.getLong(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_THRESHOLD, 5000L);
- mProximityThreshold.setValue(String.valueOf(threshold));
- updateThresholdSummary(threshold);
-
- mTurnOffModePref = (CheckBoxPreference) findPreference(KEY_TURNOFF_MODE);
- mTurnOffModePref.setChecked((Settings.System.getInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_TURNOFF_MODE, 0) == 1));
+ mDisplayTimeout.setSummary(mDisplayTimeout.getEntry());
+ mDisplayTimeout.setOnPreferenceChangeListener(this);
}
+ @Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference == mRedisplayPref) {
- int timeout = Integer.valueOf((String) newValue);
- updateRedisplaySummary(timeout);
+ int val = Integer.parseInt((String) newValue);
+ int index = mRedisplayPref.findIndexOfValue((String) newValue);
+ Settings.System.putInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_REDISPLAY, val);
+ mRedisplayPref.setSummary(mRedisplayPref.getEntries()[index]);
return true;
} else if (preference == mEnabledPref) {
- Settings.System.putInt(getContentResolver(),
+ Settings.System.putInt(mResolver,
Settings.System.ENABLE_ACTIVE_DISPLAY,
((Boolean) newValue).booleanValue() ? 1 : 0);
return true;
} else if (preference == mPocketModePref) {
- int mode = Integer.valueOf((String) newValue);
- updatePocketModeSummary(mode);
+ int val = Integer.parseInt((String) newValue);
+ int index = mPocketModePref.findIndexOfValue((String) newValue);
+ Settings.System.putInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_POCKET_MODE, val);
+ mPocketModePref.setSummary(mPocketModePref.getEntries()[index]);
return true;
} else if (preference == mExcludedAppsPref) {
storeExcludedApps((Set<String>) newValue);
return true;
+ } else if (preference == mPrivacyAppsPref) {
+ storePrivacyApps((Set<String>) newValue);
+ return true;
+ } else if (preference == mAnnoyingNotification) {
+ int annoying = ((Integer)newValue).intValue();
+ Settings.System.putInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_ANNOYING, annoying);
+ return true;
} else if (preference == mBrightnessLevel) {
int brightness = ((Integer)newValue).intValue();
- Settings.System.putInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_BRIGHTNESS, brightness);
+ int realBrightness = Math.max(mMinimumBacklight, (int)(((float)brightness / (float)100) * mMaximumBacklight));
+ Settings.System.putInt(mResolver, Settings.System.ACTIVE_DISPLAY_BRIGHTNESS, realBrightness);
return true;
} else if (preference == mDisplayTimeout) {
- long timeout = Integer.valueOf((String) newValue);
- updateTimeoutSummary(timeout);
+ int val = Integer.parseInt((String) newValue);
+ int index = mDisplayTimeout.findIndexOfValue((String) newValue);
+ Settings.System.putInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_TIMEOUT, val);
+ mDisplayTimeout.setSummary(mDisplayTimeout.getEntries()[index]);
return true;
} else if (preference == mProximityThreshold) {
- long threshold = Integer.valueOf((String) newValue);
- updateThresholdSummary(threshold);
+ int val = Integer.parseInt((String) newValue);
+ int index = mProximityThreshold.findIndexOfValue((String) newValue);
+ Settings.System.putInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_THRESHOLD, val);
+ mProximityThreshold.setSummary(mProximityThreshold.getEntries()[index]);
return true;
}
return false;
@@ -192,40 +241,24 @@
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
boolean value;
-
- if (preference == mShowTextPref) {
- value = mShowTextPref.isChecked();
- Settings.System.putInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_TEXT,
- value ? 1 : 0);
- } else if (preference == mAllNotificationsPref) {
- value = mAllNotificationsPref.isChecked();
- Settings.System.putInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_ALL_NOTIFICATIONS,
- value ? 1 : 0);
- } else if (preference == mHideLowPriorityPref) {
- value = mHideLowPriorityPref.isChecked();
- Settings.System.putInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_HIDE_LOW_PRIORITY_NOTIFICATIONS,
+ if (preference == mBypassPref) {
+ value = mBypassPref.isChecked();
+ Settings.System.putInt(mResolver,
+ Settings.System.ACTIVE_DISPLAY_BYPASS,
value ? 1 : 0);
} else if (preference == mSunlightModePref) {
value = mSunlightModePref.isChecked();
- Settings.System.putInt(getContentResolver(),
+ Settings.System.putInt(mResolver,
Settings.System.ACTIVE_DISPLAY_SUNLIGHT_MODE,
value ? 1 : 0);
- } else if (preference == mShowDatePref) {
- value = mShowDatePref.isChecked();
- Settings.System.putInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_SHOW_DATE,
- value ? 1 : 0);
} else if (preference == mShowAmPmPref) {
value = mShowAmPmPref.isChecked();
- Settings.System.putInt(getContentResolver(),
+ Settings.System.putInt(mResolver,
Settings.System.ACTIVE_DISPLAY_SHOW_AMPM,
value ? 1 : 0);
} else if (preference == mTurnOffModePref) {
value = mTurnOffModePref.isChecked();
- Settings.System.putInt(getContentResolver(),
+ Settings.System.putInt(mResolver,
Settings.System.ACTIVE_DISPLAY_TURNOFF_MODE,
value ? 1 : 0);
} else {
@@ -235,53 +268,12 @@
return true;
}
- private void updatePocketModeSummary(int value) {
- mPocketModePref.setSummary(
- mPocketModePref.getEntries()[mPocketModePref.findIndexOfValue("" + value)]);
- Settings.System.putInt(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_POCKET_MODE, value);
- }
-
- private void updateRedisplaySummary(long value) {
- mRedisplayPref.setSummary(mRedisplayPref.getEntries()[mRedisplayPref.findIndexOfValue("" + value)]);
- Settings.System.putLong(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_REDISPLAY, value);
- }
-
- private void updateTimeoutSummary(long value) {
- try {
- mDisplayTimeout.setSummary(mDisplayTimeout.getEntries()[mDisplayTimeout.findIndexOfValue("" + value)]);
- Settings.System.putLong(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_TIMEOUT, value);
- } catch (ArrayIndexOutOfBoundsException e) {
- }
- }
-
- private void updateThresholdSummary(long value) {
- try {
- mProximityThreshold.setSummary(mProximityThreshold.getEntries()[mProximityThreshold.findIndexOfValue("" + value)]);
- Settings.System.putLong(getContentResolver(),
- Settings.System.ACTIVE_DISPLAY_THRESHOLD, value);
- } catch (ArrayIndexOutOfBoundsException e) {
- }
- }
-
- private boolean hasProximitySensor() {
- SensorManager sm = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
- return sm.getDefaultSensor(TYPE_PROXIMITY) != null;
- }
-
- private boolean hasLightSensor() {
- SensorManager sm = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
- return sm.getDefaultSensor(TYPE_LIGHT) != null;
- }
-
private Set<String> getExcludedApps() {
- String excluded = Settings.System.getString(getContentResolver(),
+ String excluded = Settings.System.getString(mResolver,
Settings.System.ACTIVE_DISPLAY_EXCLUDED_APPS);
- if (TextUtils.isEmpty(excluded))
+ if (TextUtils.isEmpty(excluded)) {
return null;
-
+ }
return new HashSet<String>(Arrays.asList(excluded.split("\\|")));
}
@@ -293,7 +285,32 @@
builder.append(value);
delimiter = "|";
}
- Settings.System.putString(getContentResolver(),
+ Settings.System.putString(mResolver,
Settings.System.ACTIVE_DISPLAY_EXCLUDED_APPS, builder.toString());
}
+
+ private Set<String> getPrivacyApps() {
+ String privacies = Settings.System.getString(mResolver,
+ Settings.System.ACTIVE_DISPLAY_PRIVACY_APPS);
+ if (TextUtils.isEmpty(privacies)) {
+ return null;
+ }
+ return new HashSet<String>(Arrays.asList(privacies.split("\\|")));
+ }
+
+ private void storePrivacyApps(Set<String> values) {
+ StringBuilder builder = new StringBuilder();
+ String delimiter = "";
+ for (String value : values) {
+ builder.append(delimiter);
+ builder.append(value);
+ delimiter = "|";
+ }
+ Settings.System.putString(mResolver,
+ Settings.System.ACTIVE_DISPLAY_PRIVACY_APPS, builder.toString());
+ }
+
+ private boolean is24Hour() {
+ return DateFormat.is24HourFormat(mContext);
+ }
}
diff --git a/src/org/omnirom/omnigears/chameleonos/AppMultiSelectListPreference.java b/src/org/omnirom/omnigears/chameleonos/AppMultiSelectListPreference.java
index 137a7fa..2e8e19d 100644
--- a/src/org/omnirom/omnigears/chameleonos/AppMultiSelectListPreference.java
+++ b/src/org/omnirom/omnigears/chameleonos/AppMultiSelectListPreference.java
@@ -101,6 +101,10 @@
persistStringSet(values);
}
+ public void setClearValues() {
+ mValues.clear();
+ }
+
/**
* Retrieves the current value of the key.
*/
@@ -171,14 +175,17 @@
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
final CharSequence[] defaultValues = a.getTextArray(index);
- final int valueCount = defaultValues.length;
- final Set<String> result = new HashSet<String>();
+ if (defaultValues != null) {
+ final int valueCount = defaultValues.length;
+ final Set<String> result = new HashSet<String>();
- for (int i = 0; i < valueCount; i++) {
- result.add(defaultValues[i].toString());
+ for (int i = 0; i < valueCount; i++) {
+ result.add(defaultValues[i].toString());
+ }
+
+ return result;
}
-
- return result;
+ return null;
}
@Override
@@ -252,11 +259,11 @@
private final static Comparator<MyApplicationInfo> sDisplayNameComparator
= new Comparator<MyApplicationInfo>() {
- public final int
- compare(MyApplicationInfo a, MyApplicationInfo b) {
- return collator.compare(a.label, b.label);
- }
private final Collator collator = Collator.getInstance();
+
+ public final int compare(MyApplicationInfo a, MyApplicationInfo b) {
+ return collator.compare(a.label, b.label);
+ }
};
}
diff --git a/src/org/omnirom/omnigears/chameleonos/SeekBarPreference.java b/src/org/omnirom/omnigears/chameleonos/SeekBarPreference.java
index 1272621..50c83e5 100644
--- a/src/org/omnirom/omnigears/chameleonos/SeekBarPreference.java
+++ b/src/org/omnirom/omnigears/chameleonos/SeekBarPreference.java
@@ -31,7 +31,6 @@
private String mUnitsRight = "";
private SeekBar mSeekBar;
private TextView mTitle;
-
private TextView mStatusText;
public SeekBarPreference(Context context, AttributeSet attrs) {
@@ -52,26 +51,38 @@
}
private void setValuesFromXml(AttributeSet attrs) {
+ final TypedArray typedArray = getContext().obtainStyledAttributes(
+ attrs, R.styleable.SeekBarPreference);
+
mMaxValue = attrs.getAttributeIntValue(ANDROIDNS, "max", 100);
mMinValue = attrs.getAttributeIntValue(SETTINGS, "min", 0);
mUnitsLeft = getAttributeStringValue(attrs, SETTINGS, "unitsLeft", "");
String units = getAttributeStringValue(attrs, SETTINGS, "units", "");
mUnitsRight = getAttributeStringValue(attrs, SETTINGS, "unitsRight", units);
+
+ Integer id = typedArray.getResourceId(R.styleable.SeekBarPreference_unitsRight, 0);
+ if (id > 0) {
+ mUnitsRight = getContext().getResources().getString(id);
+ }
+ id = typedArray.getResourceId(R.styleable.SeekBarPreference_unitsLeft, 0);
+ if (id > 0) {
+ mUnitsLeft = getContext().getResources().getString(id);
+ }
+
try {
String newInterval = attrs.getAttributeValue(SETTINGS, "interval");
if(newInterval != null)
mInterval = Integer.parseInt(newInterval);
- }
- catch(Exception e) {
+ } catch(Exception e) {
Log.e(TAG, "Invalid interval value", e);
}
}
-
+
private String getAttributeStringValue(AttributeSet attrs, String namespace, String name, String defaultValue) {
String value = attrs.getAttributeValue(namespace, name);
- if(value == null)
+ if(value == null) {
value = defaultValue;
-
+ }
return value;
}
@@ -79,10 +90,12 @@
public void onDependencyChanged(Preference dependency, boolean disableDependent) {
super.onDependencyChanged(dependency, disableDependent);
this.setShouldDisableView(true);
- if (mTitle != null)
+ if (mTitle != null) {
mTitle.setEnabled(!disableDependent);
- if (mSeekBar != null)
+ }
+ if (mSeekBar != null) {
mSeekBar.setEnabled(!disableDependent);
+ }
}
@Override
@@ -93,19 +106,16 @@
LayoutInflater mInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layout = (RelativeLayout)mInflater.inflate(R.layout.seek_bar_preference, parent, false);
mTitle = (TextView) layout.findViewById(android.R.id.title);
- }
- catch(Exception e)
- {
+ } catch(Exception e) {
Log.e(TAG, "Error creating seek bar preference", e);
}
return layout;
}
-
+
@Override
public void onBindView(View view) {
super.onBindView(view);
- try
- {
+ try {
// move our seekbar to the new view we've been given
ViewParent oldContainer = mSeekBar.getParent();
ViewGroup newContainer = (ViewGroup) view.findViewById(R.id.seekBarPrefBarContainer);
@@ -120,8 +130,7 @@
newContainer.addView(mSeekBar, ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}
- }
- catch(Exception ex) {
+ } catch(Exception ex) {
Log.e(TAG, "Error binding view: " + ex.toString());
}
updateView(view);
@@ -144,27 +153,29 @@
unitsRight.setText(mUnitsRight);
TextView unitsLeft = (TextView)layout.findViewById(R.id.seekBarPrefUnitsLeft);
unitsLeft.setText(mUnitsLeft);
- }
- catch(Exception e) {
+ } catch(Exception e) {
Log.e(TAG, "Error updating seek bar preference", e);
}
}
-
+
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int newValue = progress + mMinValue;
- if(newValue > mMaxValue)
+
+ if(newValue > mMaxValue) {
newValue = mMaxValue;
- else if(newValue < mMinValue)
+ } else if(newValue < mMinValue) {
newValue = mMinValue;
- else if(mInterval != 1 && newValue % mInterval != 0)
- newValue = Math.round(((float)newValue)/mInterval)*mInterval;
-
+ } else if(mInterval != 1 && newValue % mInterval != 0) {
+ newValue = Math.round(((float)newValue)/mInterval)*mInterval;
+ }
+
// change rejected, revert to the previous value
- if(!callChangeListener(newValue)){
- seekBar.setProgress(mCurrentValue - mMinValue);
+ if (!callChangeListener(newValue)) {
+ seekBar.setProgress(mCurrentValue - mMinValue);
return;
}
+
// change accepted, store it
mCurrentValue = newValue;
mStatusText.setText(String.valueOf(newValue));
@@ -187,15 +198,13 @@
@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
- if(restoreValue) {
+ if (restoreValue) {
mCurrentValue = getPersistedInt(mCurrentValue);
- }
- else {
+ } else {
int temp = 0;
try {
temp = (Integer)defaultValue;
- }
- catch(Exception ex) {
+ } catch(Exception ex) {
Log.e(TAG, "Invalid default value: " + defaultValue.toString());
}
persistInt(temp);
@@ -206,4 +215,22 @@
public void setValue(int value) {
mCurrentValue = value;
}
-}
\ No newline at end of file
+
+ public void setMaxValue(int value) {
+ mMaxValue = value;
+ }
+
+ public void setMinValue(int value) {
+ mMinValue = value;
+ }
+
+ public void updateSeekValue() {
+ mSeekBar.setMax(mMaxValue - mMinValue);
+ }
+
+ @Override
+ public void setEnabled (boolean enabled) {
+ mSeekBar.setEnabled(enabled);
+ super.setEnabled(enabled);
+ }
+}
diff --git a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
index 1bf48a5..81a8f6d 100644
--- a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
@@ -23,21 +23,21 @@
import android.content.ContentResolver;
import android.content.Context;
+import android.content.res.Resources;
+import android.net.TrafficStats;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.preference.CheckBoxPreference;
+import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
-import android.util.DisplayMetrics;
-import android.util.Log;
-import android.view.DisplayInfo;
-import android.view.WindowManager;
-import android.view.WindowManagerGlobal;
+
+import com.android.internal.util.omni.DeviceUtils;
public class BarsSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
@@ -45,33 +45,42 @@
private static final String STATUS_BAR_BRIGHTNESS_CONTROL = "status_bar_brightness_control";
private static final String STATUS_BAR_NOTIF_COUNT = "status_bar_notif_count";
- private static final String STATUS_BAR_TRAFFIC = "status_bar_traffic";
- private static final String STATUS_BAR_NETWORK_ACTIVITY = "status_bar_network_activity";
private static final String QUICK_PULLDOWN = "quick_pulldown";
private static final String SMART_PULLDOWN = "smart_pulldown";
private static final String QUICKSETTINGS_DYNAMIC = "quicksettings_dynamic_row";
private static final String CATEGORY_NAVBAR = "category_navigation_bar";
+ private static final String NETWORK_TRAFFIC_STATE = "network_traffic_state";
+ private static final String NETWORK_TRAFFIC_UNIT = "network_traffic_unit";
+ private static final String NETWORK_TRAFFIC_PERIOD = "network_traffic_period";
+ private static final String STATUS_BAR_NETWORK_ACTIVITY = "status_bar_network_activity";
private static final String SOFT_BACK_KILL_APP = "soft_back_kill_app";
-
- // Device types
- private static final int DEVICE_PHONE = 0;
- private static final int DEVICE_HYBRID = 1;
- private static final int DEVICE_TABLET = 2;
+ private static final String EMULATE_MENU_KEY = "emulate_menu_key";
private CheckBoxPreference mStatusBarBrightnessControl;
private CheckBoxPreference mStatusBarNotifCount;
- private CheckBoxPreference mStatusBarTraffic;
- private CheckBoxPreference mStatusBarNetworkActivity;
private CheckBoxPreference mQuickSettingsDynamic;
private ListPreference mQuickPulldown;
private ListPreference mSmartPulldown;
+ private ListPreference mNetTrafficState;
+ private ListPreference mNetTrafficUnit;
+ private ListPreference mNetTrafficPeriod;
+ private CheckBoxPreference mStatusBarNetworkActivity;
private CheckBoxPreference mSoftBackKillApp;
+ private CheckBoxPreference mEmulateMenuKey;
+
+ private int mNetTrafficVal;
+ private int MASK_UP;
+ private int MASK_DOWN;
+ private int MASK_UNIT;
+ private int MASK_PERIOD;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.bars_settings);
+ loadResources();
+
PreferenceScreen prefSet = getPreferenceScreen();
ContentResolver resolver = getActivity().getContentResolver();
@@ -95,32 +104,20 @@
Settings.System.STATUS_BAR_NOTIF_COUNT, 0) == 1);
mStatusBarNotifCount.setOnPreferenceChangeListener(this);
- mStatusBarTraffic = (CheckBoxPreference) prefSet.findPreference(STATUS_BAR_TRAFFIC);
- int intState = Settings.System.getInt(resolver, Settings.System.STATUS_BAR_TRAFFIC, 0);
- intState = setStatusBarTrafficSummary(intState);
- mStatusBarTraffic.setChecked(intState > 0);
- mStatusBarTraffic.setOnPreferenceChangeListener(this);
-
- mStatusBarNetworkActivity =
- (CheckBoxPreference) prefSet.findPreference(STATUS_BAR_NETWORK_ACTIVITY);
- mStatusBarNetworkActivity.setChecked(Settings.System.getInt(resolver,
- Settings.System.STATUS_BAR_NETWORK_ACTIVITY, 0) == 1);
- mStatusBarNetworkActivity.setOnPreferenceChangeListener(this);
-
mQuickPulldown = (ListPreference) findPreference(QUICK_PULLDOWN);
mSmartPulldown = (ListPreference) findPreference(SMART_PULLDOWN);
- if (isPhone(getActivity())) {
+ if (DeviceUtils.isPhone(getActivity())) {
int quickPulldown = Settings.System.getInt(resolver,
Settings.System.QS_QUICK_PULLDOWN, 0);
mQuickPulldown.setValue(String.valueOf(quickPulldown));
- updateQuickPulldownSummary(quickPulldown);
+ mQuickPulldown.setSummary(mQuickPulldown.getEntry());
mQuickPulldown.setOnPreferenceChangeListener(this);
int smartPulldown = Settings.System.getInt(resolver,
Settings.System.QS_SMART_PULLDOWN, 0);
mSmartPulldown.setValue(String.valueOf(smartPulldown));
- updateSmartPulldownSummary(smartPulldown);
+ mSmartPulldown.setSummary(mSmartPulldown.getEntry());
mSmartPulldown.setOnPreferenceChangeListener(this);
} else {
prefSet.removePreference(mQuickPulldown);
@@ -132,6 +129,45 @@
Settings.System.QUICK_SETTINGS_TILES_ROW, 1) != 0);
mQuickSettingsDynamic.setOnPreferenceChangeListener(this);
+ mStatusBarNetworkActivity =
+ (CheckBoxPreference) prefSet.findPreference(STATUS_BAR_NETWORK_ACTIVITY);
+ mStatusBarNetworkActivity.setChecked(Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_NETWORK_ACTIVITY, 0) == 1);
+ mStatusBarNetworkActivity.setOnPreferenceChangeListener(this);
+
+ mNetTrafficState = (ListPreference) prefSet.findPreference(NETWORK_TRAFFIC_STATE);
+ mNetTrafficUnit = (ListPreference) prefSet.findPreference(NETWORK_TRAFFIC_UNIT);
+ mNetTrafficPeriod = (ListPreference) prefSet.findPreference(NETWORK_TRAFFIC_PERIOD);
+
+ // TrafficStats will return UNSUPPORTED if the device does not support it.
+ if (TrafficStats.getTotalTxBytes() != TrafficStats.UNSUPPORTED &&
+ TrafficStats.getTotalRxBytes() != TrafficStats.UNSUPPORTED) {
+ mNetTrafficVal = Settings.System.getInt(resolver, Settings.System.NETWORK_TRAFFIC_STATE, 0);
+ int intIndex = mNetTrafficVal & (MASK_UP + MASK_DOWN);
+ intIndex = mNetTrafficState.findIndexOfValue(String.valueOf(intIndex));
+ if (intIndex <= 0) {
+ mNetTrafficUnit.setEnabled(false);
+ mNetTrafficPeriod.setEnabled(false);
+ }
+ mNetTrafficState.setValueIndex(intIndex >= 0 ? intIndex : 0);
+ mNetTrafficState.setSummary(mNetTrafficState.getEntry());
+ mNetTrafficState.setOnPreferenceChangeListener(this);
+
+ mNetTrafficUnit.setValueIndex(getBit(mNetTrafficVal, MASK_UNIT) ? 1 : 0);
+ mNetTrafficUnit.setSummary(mNetTrafficUnit.getEntry());
+ mNetTrafficUnit.setOnPreferenceChangeListener(this);
+
+ intIndex = (mNetTrafficVal & MASK_PERIOD) >>> 16;
+ intIndex = mNetTrafficPeriod.findIndexOfValue(String.valueOf(intIndex));
+ mNetTrafficPeriod.setValueIndex(intIndex >= 0 ? intIndex : 1);
+ mNetTrafficPeriod.setSummary(mNetTrafficPeriod.getEntry());
+ mNetTrafficPeriod.setOnPreferenceChangeListener(this);
+ } else {
+ prefSet.removePreference(findPreference(NETWORK_TRAFFIC_STATE));
+ prefSet.removePreference(findPreference(NETWORK_TRAFFIC_UNIT));
+ prefSet.removePreference(findPreference(NETWORK_TRAFFIC_PERIOD));
+ }
+
boolean hasNavBar = getResources().getBoolean(
com.android.internal.R.bool.config_showNavigationBar);
// Also check, if users without navigation bar force enabled it.
@@ -145,6 +181,11 @@
mSoftBackKillApp.setChecked(Settings.System.getInt(resolver,
Settings.System.SOFT_BACK_KILL_APP_ENABLE, 0) == 1);
mSoftBackKillApp.setOnPreferenceChangeListener(this);
+
+ mEmulateMenuKey = (CheckBoxPreference) prefSet.findPreference(EMULATE_MENU_KEY);
+ mEmulateMenuKey.setChecked(Settings.System.getInt(resolver,
+ Settings.System.EMULATE_HW_MENU_KEY, 0) == 1);
+ mEmulateMenuKey.setOnPreferenceChangeListener(this);
}
}
@@ -164,94 +205,83 @@
} else if (preference == mStatusBarNotifCount) {
boolean value = (Boolean) objValue;
Settings.System.putInt(resolver, Settings.System.STATUS_BAR_NOTIF_COUNT, value ? 1 : 0);
- } else if (preference == mStatusBarTraffic) {
-
- // Increment the state and then update the label
- int intState = Settings.System.getInt(resolver, Settings.System.STATUS_BAR_TRAFFIC, 0);
- intState++;
- intState = setStatusBarTrafficSummary(intState);
- Settings.System.putInt(resolver, Settings.System.STATUS_BAR_TRAFFIC, intState);
- if (intState > 1) {return false;}
- } else if (preference == mStatusBarNetworkActivity) {
- boolean value = (Boolean) objValue;
- Settings.System.putInt(resolver, Settings.System.STATUS_BAR_NETWORK_ACTIVITY,
- value ? 1 : 0);
} else if (preference == mQuickSettingsDynamic) {
boolean value = (Boolean) objValue;
Settings.System.putInt(resolver,
Settings.System.QUICK_SETTINGS_TILES_ROW, value ? 1 : 0);
} else if (preference == mQuickPulldown) {
- int quickPulldown = Integer.valueOf((String) objValue);
- Settings.System.putInt(resolver, Settings.System.QS_QUICK_PULLDOWN,
- quickPulldown);
- updateQuickPulldownSummary(quickPulldown);
+ int val = Integer.parseInt((String) objValue);
+ int index = mQuickPulldown.findIndexOfValue((String) objValue);
+ Settings.System.putInt(resolver,
+ Settings.System.QS_QUICK_PULLDOWN, val);
+ mQuickPulldown.setSummary(mQuickPulldown.getEntries()[index]);
} else if (preference == mSmartPulldown) {
- int smartPulldown = Integer.valueOf((String) objValue);
- Settings.System.putInt(resolver, Settings.System.QS_SMART_PULLDOWN,
- smartPulldown);
- updateSmartPulldownSummary(smartPulldown);
+ int val = Integer.parseInt((String) objValue);
+ int index = mSmartPulldown.findIndexOfValue((String) objValue);
+ Settings.System.putInt(resolver,
+ Settings.System.QS_SMART_PULLDOWN, val);
+ mSmartPulldown.setSummary(mSmartPulldown.getEntries()[index]);
+ } else if (preference == mStatusBarNetworkActivity) {
+ boolean value = (Boolean) objValue;
+ Settings.System.putInt(resolver, Settings.System.STATUS_BAR_NETWORK_ACTIVITY,
+ value ? 1 : 0);
+ } else if (preference == mNetTrafficState) {
+ int intState = Integer.valueOf((String)objValue);
+ mNetTrafficVal = setBit(mNetTrafficVal, MASK_UP, getBit(intState, MASK_UP));
+ mNetTrafficVal = setBit(mNetTrafficVal, MASK_DOWN, getBit(intState, MASK_DOWN));
+ Settings.System.putInt(resolver, Settings.System.NETWORK_TRAFFIC_STATE, mNetTrafficVal);
+ int index = mNetTrafficState.findIndexOfValue((String) objValue);
+ mNetTrafficState.setSummary(mNetTrafficState.getEntries()[index]);
+ if (intState == 0) {
+ mNetTrafficUnit.setEnabled(false);
+ mNetTrafficPeriod.setEnabled(false);
+ } else {
+ mNetTrafficUnit.setEnabled(true);
+ mNetTrafficPeriod.setEnabled(true);
+ }
+ } else if (preference == mNetTrafficUnit) {
+ // 1 = Display as Byte/s; default is bit/s
+ mNetTrafficVal = setBit(mNetTrafficVal, MASK_UNIT, ((String)objValue).equals("1"));
+ Settings.System.putInt(resolver, Settings.System.NETWORK_TRAFFIC_STATE, mNetTrafficVal);
+ int index = mNetTrafficUnit.findIndexOfValue((String) objValue);
+ mNetTrafficUnit.setSummary(mNetTrafficUnit.getEntries()[index]);
+ } else if (preference == mNetTrafficPeriod) {
+ int intState = Integer.valueOf((String)objValue);
+ mNetTrafficVal = setBit(mNetTrafficVal, MASK_PERIOD, false) + (intState << 16);
+ Settings.System.putInt(resolver, Settings.System.NETWORK_TRAFFIC_STATE, mNetTrafficVal);
+ int index = mNetTrafficPeriod.findIndexOfValue((String) objValue);
+ mNetTrafficPeriod.setSummary(mNetTrafficPeriod.getEntries()[index]);
} else if (preference == mSoftBackKillApp) {
boolean value = (Boolean) objValue;
Settings.System.putInt(resolver,
Settings.System.SOFT_BACK_KILL_APP_ENABLE, value ? 1 : 0);
+ } else if (preference == mEmulateMenuKey) {
+ boolean value = (Boolean) objValue;
+ Settings.System.putInt(resolver,
+ Settings.System.EMULATE_HW_MENU_KEY, value ? 1 : 0);
} else {
return false;
}
return true;
}
- private int setStatusBarTrafficSummary(int intState) {
- // These states must match com.android.systemui.statusbar.policy.Traffic
- if (intState == 1) {
- mStatusBarTraffic.setSummary(R.string.show_network_speed_bits);
- } else if (intState == 2) {
- mStatusBarTraffic.setSummary(R.string.show_network_speed_bytes);
- } else {
- mStatusBarTraffic.setSummary(R.string.show_network_speed_summary);
- return 0;
- }
- return intState;
+ private void loadResources() {
+ Resources resources = getActivity().getResources();
+ MASK_UP = resources.getInteger(R.integer.maskUp);
+ MASK_DOWN = resources.getInteger(R.integer.maskDown);
+ MASK_UNIT = resources.getInteger(R.integer.maskUnit);
+ MASK_PERIOD = resources.getInteger(R.integer.maskPeriod);
}
- private void updateQuickPulldownSummary(int i) {
- if (i == 0) {
- mQuickPulldown.setSummary(R.string.quick_pulldown_off);
- } else if (i == 1) {
- mQuickPulldown.setSummary(R.string.quick_pulldown_right);
- } else if (i == 2) {
- mQuickPulldown.setSummary(R.string.quick_pulldown_left);
- } else if (i == 3) {
- mQuickPulldown.setSummary(R.string.quick_pulldown_centre);
+ // intMask should only have the desired bit(s) set
+ private int setBit(int intNumber, int intMask, boolean blnState) {
+ if (blnState) {
+ return (intNumber | intMask);
}
+ return (intNumber & ~intMask);
}
- private void updateSmartPulldownSummary(int i) {
- if (i == 0) {
- mSmartPulldown.setSummary(R.string.smart_pulldown_off);
- } else if (i == 1) {
- mSmartPulldown.setSummary(R.string.smart_pulldown_dismissable);
- } else if (i == 2) {
- mSmartPulldown.setSummary(R.string.smart_pulldown_persistent);
- }
- }
-
- private static int getScreenType(Context con) {
- WindowManager wm = (WindowManager) con.getSystemService(Context.WINDOW_SERVICE);
- DisplayInfo outDisplayInfo = new DisplayInfo();
- wm.getDefaultDisplay().getDisplayInfo(outDisplayInfo);
- int shortSize = Math.min(outDisplayInfo.logicalHeight, outDisplayInfo.logicalWidth);
- int shortSizeDp =
- shortSize * DisplayMetrics.DENSITY_DEFAULT / outDisplayInfo.logicalDensityDpi;
- if (shortSizeDp < 600) {
- return DEVICE_PHONE;
- } else if (shortSizeDp < 720) {
- return DEVICE_HYBRID;
- } else {
- return DEVICE_TABLET;
- }
- }
-
- public static boolean isPhone(Context con) {
- return getScreenType(con) == DEVICE_PHONE;
+ private boolean getBit(int intNumber, int intMask) {
+ return (intNumber & intMask) == intMask;
}
}
diff --git a/src/org/omnirom/omnigears/interfacesettings/LockscreenSettings.java b/src/org/omnirom/omnigears/interfacesettings/LockscreenSettings.java
new file mode 100644
index 0000000..f10593a
--- /dev/null
+++ b/src/org/omnirom/omnigears/interfacesettings/LockscreenSettings.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2013 The OmniROM Project
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package org.omnirom.omnigears.interfacesettings;
+
+import android.app.ActivityManager;
+import android.app.ActivityManagerNative;
+import android.app.admin.DevicePolicyManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.UserInfo;
+import android.hardware.Camera;
+import android.os.Bundle;
+import android.os.UserManager;
+import android.os.RemoteException;
+import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.util.Log;
+
+import com.android.internal.widget.LockPatternUtils;
+
+import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LockscreenSettings extends SettingsPreferenceFragment {
+ private static final String TAG = "LockscreenSettings";
+
+ private LockPatternUtils mLockPatternUtils;
+ private DevicePolicyManager mDPM;
+
+ private static final String KEY_MAXIMIZE_WIDGETS = "maximize_widgets";
+ private static final String KEY_ENABLE_CAMERA = "enable_camera";
+ private static final String BATTERY_AROUND_LOCKSCREEN_RING = "battery_around_lockscreen_ring";
+
+ private CheckBoxPreference mMaximizeWidgets;
+ private CheckBoxPreference mEnableCameraWidget;
+ private CheckBoxPreference mLockRingBattery;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.lockscreen_settings);
+
+ ContentResolver resolver = getContentResolver();
+ PreferenceScreen root = getPreferenceScreen();
+ mLockPatternUtils = new LockPatternUtils(getActivity());
+ mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
+
+ if (!mLockPatternUtils.isLockScreenDisabled() && !mLockPatternUtils.isSecure()) {
+ addPreferencesFromResource(R.xml.og_security_settings_chooser);
+ }
+ // Add the additional Omni settings
+ mLockRingBattery = (CheckBoxPreference) root
+ .findPreference(BATTERY_AROUND_LOCKSCREEN_RING);
+ if (mLockRingBattery != null) {
+ mLockRingBattery.setChecked(Settings.System.getInt(getContentResolver(),
+ Settings.System.BATTERY_AROUND_LOCKSCREEN_RING, 0) == 1);
+ }
+
+
+ // Enable or disable keyguard widget checkbox based on DPM state
+ mMaximizeWidgets = (CheckBoxPreference) findPreference(KEY_MAXIMIZE_WIDGETS);
+ if (ActivityManager.isLowRamDeviceStatic() || mLockPatternUtils.isLockScreenDisabled()) {
+ // Widgets take a lot of RAM, so disable them on low-memory devices
+ root.removePreference(mMaximizeWidgets);
+ } else {
+ mMaximizeWidgets.setChecked(Settings.System.getInt(resolver,
+ Settings.System.LOCKSCREEN_MAXIMIZE_WIDGETS, 0) == 1);
+ }
+
+ // Enable or disable camera widget settings based on device
+ mEnableCameraWidget = (CheckBoxPreference) findPreference(KEY_ENABLE_CAMERA);
+ if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA) ||
+ Camera.getNumberOfCameras() == 0) {
+ root.removePreference(mEnableCameraWidget);
+ } else if (isCameraDisabledByDpm()) {
+ mEnableCameraWidget.setEnabled(false);
+ } else {
+ mEnableCameraWidget.setChecked(Settings.System.getInt(resolver,
+ Settings.System.LOCKSCREEN_ENABLE_CAMERA, 1) == 1);
+ }
+ }
+
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+ mLockPatternUtils = new LockPatternUtils(getActivity());
+ if (preference == mMaximizeWidgets) {
+ Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(),
+ Settings.System.LOCKSCREEN_MAXIMIZE_WIDGETS, mMaximizeWidgets.isChecked() ? 1 : 0);
+ } else if (preference == mLockRingBattery) {
+ Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(),
+ Settings.System.BATTERY_AROUND_LOCKSCREEN_RING, mLockRingBattery.isChecked() ? 1 : 0);
+ } else if (preference == mEnableCameraWidget) {
+ Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(),
+ Settings.System.LOCKSCREEN_ENABLE_CAMERA, mEnableCameraWidget.isChecked() ? 1 : 0);
+ }
+ // If we didn't handle it, let preferences handle it.
+ return super.onPreferenceTreeClick(preferenceScreen, preference);
+ }
+
+ private boolean isCameraDisabledByDpm() {
+ final DevicePolicyManager dpm =
+ (DevicePolicyManager) this.getSystemService(Context.DEVICE_POLICY_SERVICE);
+ if (dpm != null) {
+ try {
+ final int userId = ActivityManagerNative.getDefault().getCurrentUser().id;
+ final int disabledFlags = dpm.getKeyguardDisabledFeatures(null, userId);
+ final boolean disabledBecauseKeyguardSecure =
+ (disabledFlags & DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA) != 0;
+ return dpm.getCameraDisabled(null) || disabledBecauseKeyguardSecure;
+ } catch (RemoteException e) {
+ Log.e(TAG, "Can't get userId", e);
+ }
+ }
+ return false;
+ }
+}
diff --git a/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java b/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
index 6ce63ac..08e7e69 100644
--- a/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
@@ -21,8 +21,13 @@
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.R;
+import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
+import android.content.DialogInterface;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
@@ -42,11 +47,22 @@
private static final String SHOW_RECENTS_MEMORY_INDICATOR = "show_recents_memory_indicator";
private static final String RECENTS_MEMORY_INDICATOR_LOCATION =
"recents_memory_indicator_location";
+ private static final String RECENTS_USE_OMNISWITCH = "recents_use_omniswitch";
+ private static final String OMNISWITCH_START_SETTINGS = "omniswitch_start_settings";
+
+ // Package name of the omnniswitch app
+ public static final String OMNISWITCH_PACKAGE_NAME = "org.omnirom.omniswitch";
+ // Intent for launching the omniswitch settings actvity
+ public static Intent INTENT_OMNISWITCH_SETTINGS = new Intent(Intent.ACTION_MAIN)
+ .setClassName(OMNISWITCH_PACKAGE_NAME, OMNISWITCH_PACKAGE_NAME + ".SettingsActivity");
private CheckBoxPreference mRecentClearAll;
private ListPreference mRecentClearAllPosition;
private CheckBoxPreference mShowRecentsMemoryIndicator;
private ListPreference mRecentsMemoryIndicatorPosition;
+ private CheckBoxPreference mRecentsUseOmniSwitch;
+ private Preference mOmniSwitchSettings;
+ private boolean mOmniSwitchInitCalled;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -80,13 +96,34 @@
mRecentsMemoryIndicatorPosition.setValue(recentsMemoryIndicatorPosition);
}
mRecentsMemoryIndicatorPosition.setOnPreferenceChangeListener(this);
+
+ mRecentsUseOmniSwitch = (CheckBoxPreference)
+ prefSet.findPreference(RECENTS_USE_OMNISWITCH);
+
+ try {
+ mRecentsUseOmniSwitch.setChecked(Settings.System.getInt(resolver,
+ Settings.System.RECENTS_USE_OMNISWITCH) == 1);
+ mOmniSwitchInitCalled = true;
+ } catch(SettingNotFoundException e){
+ // if the settings value is unset
+ }
+ mRecentsUseOmniSwitch.setOnPreferenceChangeListener(this);
+
+ mOmniSwitchSettings = (Preference)
+ prefSet.findPreference(OMNISWITCH_START_SETTINGS);
+ mOmniSwitchSettings.setEnabled(mRecentsUseOmniSwitch.isChecked());
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
- return true;
+ if (preference == mOmniSwitchSettings){
+ startActivity(INTENT_OMNISWITCH_SETTINGS);
+ return true;
+ }
+ return super.onPreferenceTreeClick(preferenceScreen, preference);
}
+ @Override
public boolean onPreferenceChange(Preference preference, Object objValue) {
ContentResolver resolver = getActivity().getContentResolver();
if (preference == mRecentClearAll) {
@@ -103,10 +140,59 @@
String value = (String) objValue;
Settings.System.putString(
resolver, Settings.System.RECENTS_MEMORY_INDICATOR_LOCATION, value);
+ } else if (preference == mRecentsUseOmniSwitch) {
+ boolean value = (Boolean) objValue;
+ if (value && !isOmniSwitchInstalled()){
+ openOmniSwitchNotInstalledWarning();
+ return false;
+ }
+
+ // if value has never been set before
+ if (value && !mOmniSwitchInitCalled){
+ openOmniSwitchFirstTimeWarning();
+ mOmniSwitchInitCalled = true;
+ }
+
+ Settings.System.putInt(
+ resolver, Settings.System.RECENTS_USE_OMNISWITCH, value ? 1 : 0);
+ mOmniSwitchSettings.setEnabled(value && isOmniSwitchInstalled());
+ mOmniSwitchSettings.setSummary(isOmniSwitchInstalled() ?
+ getResources().getString(R.string.omniswitch_start_settings_summary) :
+ getResources().getString(R.string.omniswitch_not_installed_summary));
} else {
return false;
}
return true;
}
+
+ private void openOmniSwitchNotInstalledWarning() {
+ new AlertDialog.Builder(getActivity())
+ .setTitle(getResources().getString(R.string.omniswitch_not_installed_title))
+ .setMessage(getResources().getString(R.string.omniswitch_not_installed_message))
+ .setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ }
+ }).show();
+ }
+
+ private void openOmniSwitchFirstTimeWarning() {
+ new AlertDialog.Builder(getActivity())
+ .setTitle(getResources().getString(R.string.omniswitch_first_time_title))
+ .setMessage(getResources().getString(R.string.omniswitch_first_time_message))
+ .setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ }
+ }).show();
+ }
+
+ private boolean isOmniSwitchInstalled() {
+ final PackageManager pm = getPackageManager();
+ try {
+ pm.getPackageInfo(OMNISWITCH_PACKAGE_NAME, PackageManager.GET_ACTIVITIES);
+ return true;
+ } catch (NameNotFoundException e) {
+ return false;
+ }
+ }
}
diff --git a/src/org/omnirom/omnigears/notificationlight/NotificationLightSettings.java b/src/org/omnirom/omnigears/notificationlight/NotificationLightSettings.java
index 2ade194..44031ba 100644
--- a/src/org/omnirom/omnigears/notificationlight/NotificationLightSettings.java
+++ b/src/org/omnirom/omnigears/notificationlight/NotificationLightSettings.java
@@ -78,6 +78,7 @@
private static final String NOTIFICATION_LIGHT_PULSE_VMAIL_COLOR = "notification_light_pulse_vmail_color";
private static final String NOTIFICATION_LIGHT_PULSE_VMAIL_LED_ON = "notification_light_pulse_vmail_led_on";
private static final String NOTIFICATION_LIGHT_PULSE_VMAIL_LED_OFF = "notification_light_pulse_vmail_led_off";
+ private static final String NOTIFICAIION_LIGHT_SCREEN_ON = "notification_light_screen_on";
private static final String PULSE_PREF = "pulse_enabled";
private static final String DEFAULT_PREF = "default";
private static final String CUSTOM_PREF = "custom_enabled";
@@ -95,6 +96,7 @@
private PreferenceGroup mApplicationPrefList;
private SwitchPreference mEnabledPref;
private SwitchPreference mCustomEnabledPref;
+ private CheckBoxPreference mScreenOnNotificationLed;
private ApplicationLightPreference mDefaultPref;
private ApplicationLightPreference mCallPref;
private ApplicationLightPreference mVoicemailPref;
@@ -132,6 +134,11 @@
mDefaultPref = (ApplicationLightPreference) findPreference(DEFAULT_PREF);
mDefaultPref.setOnPreferenceChangeListener(this);
+ mScreenOnNotificationLed = (CheckBoxPreference) findPreference(NOTIFICAIION_LIGHT_SCREEN_ON);
+ mScreenOnNotificationLed.setChecked(Settings.System.getInt(getContentResolver(),
+ Settings.System.SCREEN_ON_NOTIFICATION_LED, 0) == 1);
+ mScreenOnNotificationLed.setOnPreferenceChangeListener(this);
+
// Missed call and Voicemail preferences should only show on devices with a voice capabilities
TelephonyManager tm = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
if (tm.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE) {
@@ -371,6 +378,10 @@
Settings.System.NOTIFICATION_LIGHT_PULSE_CUSTOM_ENABLE, enabled?1:0);
mApplicationPrefList.setEnabled(enabled);
}
+ } else if (preference == mScreenOnNotificationLed) {
+ boolean value = (Boolean) objValue;
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.SCREEN_ON_NOTIFICATION_LED, value ? 1 : 0);
} else {
ApplicationLightPreference lightPref = (ApplicationLightPreference) preference;
updateValues(lightPref.getKey(), lightPref.getColor(),
diff --git a/src/org/omnirom/omnigears/preference/GlobalCheckBoxPreference.java b/src/org/omnirom/omnigears/preference/GlobalCheckBoxPreference.java
new file mode 100644
index 0000000..0ba460f
--- /dev/null
+++ b/src/org/omnirom/omnigears/preference/GlobalCheckBoxPreference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013 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 org.omnirom.omnigears.preference;
+
+import android.content.Context;
+import android.preference.CheckBoxPreference;
+import android.provider.Settings;
+import android.util.AttributeSet;
+
+public class GlobalCheckBoxPreference extends CheckBoxPreference {
+ public GlobalCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public GlobalCheckBoxPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public GlobalCheckBoxPreference(Context context) {
+ super(context, null);
+ }
+
+ @Override
+ protected boolean persistBoolean(boolean value) {
+ if (shouldPersist()) {
+ if (value == getPersistedBoolean(!value)) {
+ // It's already there, so the same as persisting
+ return true;
+ }
+
+ Settings.Global.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+ if (!shouldPersist()) {
+ return defaultReturnValue;
+ }
+
+ return Settings.Global.getInt(getContext().getContentResolver(),
+ getKey(), defaultReturnValue ? 1 : 0) != 0;
+ }
+
+ @Override
+ protected boolean isPersisted() {
+ // Using getString instead of getInt so we can simply check for null
+ // instead of catching an exception. (All values are stored as strings.)
+ return Settings.Global.getString(getContext().getContentResolver(), getKey()) != null;
+ }
+}
diff --git a/src/org/omnirom/omnigears/preference/SecureCheckBoxPreference.java b/src/org/omnirom/omnigears/preference/SecureCheckBoxPreference.java
new file mode 100644
index 0000000..8f4e3f9
--- /dev/null
+++ b/src/org/omnirom/omnigears/preference/SecureCheckBoxPreference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013 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 org.omnirom.omnigears.preference;
+
+import android.content.Context;
+import android.preference.CheckBoxPreference;
+import android.provider.Settings;
+import android.util.AttributeSet;
+
+public class SecureCheckBoxPreference extends CheckBoxPreference {
+ public SecureCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public SecureCheckBoxPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public SecureCheckBoxPreference(Context context) {
+ super(context, null);
+ }
+
+ @Override
+ protected boolean persistBoolean(boolean value) {
+ if (shouldPersist()) {
+ if (value == getPersistedBoolean(!value)) {
+ // It's already there, so the same as persisting
+ return true;
+ }
+
+ Settings.Secure.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+ if (!shouldPersist()) {
+ return defaultReturnValue;
+ }
+
+ return Settings.Secure.getInt(getContext().getContentResolver(),
+ getKey(), defaultReturnValue ? 1 : 0) != 0;
+ }
+
+ @Override
+ protected boolean isPersisted() {
+ // Using getString instead of getInt so we can simply check for null
+ // instead of catching an exception. (All values are stored as strings.)
+ return Settings.Secure.getString(getContext().getContentResolver(), getKey()) != null;
+ }
+}
diff --git a/src/org/omnirom/omnigears/preference/SystemCheckBoxPreference.java b/src/org/omnirom/omnigears/preference/SystemCheckBoxPreference.java
new file mode 100644
index 0000000..8a099e7
--- /dev/null
+++ b/src/org/omnirom/omnigears/preference/SystemCheckBoxPreference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013 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 org.omnirom.omnigears.preference;
+
+import android.content.Context;
+import android.preference.CheckBoxPreference;
+import android.provider.Settings;
+import android.util.AttributeSet;
+
+public class SystemCheckBoxPreference extends CheckBoxPreference {
+ public SystemCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public SystemCheckBoxPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public SystemCheckBoxPreference(Context context) {
+ super(context, null);
+ }
+
+ @Override
+ protected boolean persistBoolean(boolean value) {
+ if (shouldPersist()) {
+ if (value == getPersistedBoolean(!value)) {
+ // It's already there, so the same as persisting
+ return true;
+ }
+
+ Settings.System.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+ if (!shouldPersist()) {
+ return defaultReturnValue;
+ }
+
+ return Settings.System.getInt(getContext().getContentResolver(),
+ getKey(), defaultReturnValue ? 1 : 0) != 0;
+ }
+
+ @Override
+ protected boolean isPersisted() {
+ // Using getString instead of getInt so we can simply check for null
+ // instead of catching an exception. (All values are stored as strings.)
+ return Settings.System.getString(getContext().getContentResolver(), getKey()) != null;
+ }
+}
diff --git a/src/org/omnirom/omnigears/slim/StatusBarClockStyle.java b/src/org/omnirom/omnigears/slim/StatusBarClockStyle.java
new file mode 100644
index 0000000..af73dd4
--- /dev/null
+++ b/src/org/omnirom/omnigears/slim/StatusBarClockStyle.java
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2013 Slimroms 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.omnirom.omnigears.slim;
+
+import android.app.AlertDialog;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceChangeListener;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.text.format.DateFormat;
+
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
+
+import java.util.Date;
+
+import org.omnirom.omnigears.interfacesettings.BarsSettings;
+
+public class StatusBarClockStyle extends SettingsPreferenceFragment
+ implements OnPreferenceChangeListener {
+
+ private static final String TAG = "StatusBarClockStyle";
+
+ private static final String PREF_ENABLE = "clock_style";
+ private static final String PREF_AM_PM_STYLE = "status_bar_am_pm";
+ private static final String PREF_CLOCK_DATE_DISPLAY = "clock_date_display";
+ private static final String PREF_CLOCK_DATE_STYLE = "clock_date_style";
+ private static final String PREF_CLOCK_DATE_FORMAT = "clock_date_format";
+ private static final String STATUS_BAR_CLOCK = "status_bar_show_clock";
+
+ public static final int CLOCK_DATE_STYLE_LOWERCASE = 1;
+ public static final int CLOCK_DATE_STYLE_UPPERCASE = 2;
+
+ private ListPreference mClockStyle;
+ private ListPreference mClockAmPmStyle;
+ private ListPreference mClockDateDisplay;
+ private ListPreference mClockDateStyle;
+ private ListPreference mClockDateFormat;
+ private CheckBoxPreference mStatusBarClock;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ createCustomView();
+ }
+
+ private PreferenceScreen createCustomView() {
+ addPreferencesFromResource(R.xml.status_bar_clock_style);
+ PreferenceScreen prefSet = getPreferenceScreen();
+
+ mClockStyle = (ListPreference) findPreference(PREF_ENABLE);
+ mClockStyle.setOnPreferenceChangeListener(this);
+ mClockStyle.setValue(Integer.toString(Settings.System.getInt(getActivity()
+ .getContentResolver(), Settings.System.STATUSBAR_CLOCK_STYLE,
+ 0)));
+ mClockStyle.setSummary(mClockStyle.getEntry());
+
+ mClockAmPmStyle = (ListPreference) prefSet.findPreference(PREF_AM_PM_STYLE);
+ mClockAmPmStyle.setOnPreferenceChangeListener(this);
+ mClockAmPmStyle.setValue(Integer.toString(Settings.System.getInt(getActivity()
+ .getContentResolver(), Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE,
+ 0)));
+ boolean is24hour = DateFormat.is24HourFormat(getActivity());
+ if (is24hour) {
+ mClockAmPmStyle.setSummary(R.string.status_bar_am_pm_info);
+ } else {
+ mClockAmPmStyle.setSummary(mClockAmPmStyle.getEntry());
+ }
+ mClockAmPmStyle.setEnabled(!is24hour);
+
+ mClockDateDisplay = (ListPreference) findPreference(PREF_CLOCK_DATE_DISPLAY);
+ mClockDateDisplay.setOnPreferenceChangeListener(this);
+ mClockDateDisplay.setValue(Integer.toString(Settings.System.getInt(getActivity()
+ .getContentResolver(), Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY,
+ 0)));
+ mClockDateDisplay.setSummary(mClockDateDisplay.getEntry());
+
+ mClockDateStyle = (ListPreference) findPreference(PREF_CLOCK_DATE_STYLE);
+ mClockDateStyle.setOnPreferenceChangeListener(this);
+ mClockDateStyle.setValue(Integer.toString(Settings.System.getInt(getActivity()
+ .getContentResolver(), Settings.System.STATUSBAR_CLOCK_DATE_STYLE,
+ 2)));
+ mClockDateStyle.setSummary(mClockDateStyle.getEntry());
+
+ mClockDateFormat = (ListPreference) findPreference(PREF_CLOCK_DATE_FORMAT);
+
+ mClockDateFormat.setOnPreferenceChangeListener(this);
+ String clockDateFormat = Settings.System.getString(getActivity().getContentResolver(),
+ Settings.System.STATUSBAR_CLOCK_DATE_FORMAT);
+ if (clockDateFormat == null) {
+ mClockDateFormat.setValue("EEE");
+ } else {
+ mClockDateFormat.setValue(clockDateFormat);
+ }
+ parseClockDateFormats();
+ mClockDateFormat.setSummary(mClockDateFormat.getEntry());
+
+ mStatusBarClock = (CheckBoxPreference) prefSet.findPreference(STATUS_BAR_CLOCK);
+ mStatusBarClock.setChecked((Settings.System.getInt(
+ getActivity().getApplicationContext().getContentResolver(),
+ Settings.System.STATUS_BAR_CLOCK, 1) == 1));
+ mStatusBarClock.setOnPreferenceChangeListener(this);
+
+ try {
+ if (Settings.System.getInt(getActivity().getApplicationContext().getContentResolver(),
+ Settings.System.TIME_12_24) == 24) {
+ mClockAmPmStyle.setEnabled(false);
+ mClockAmPmStyle.setSummary(R.string.status_bar_am_pm_info);
+ }
+ } catch (SettingNotFoundException e ) {
+ }
+
+ boolean mClockDateToggle = Settings.System.getInt(getActivity().getContentResolver(),
+ Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY, 0) != 0;
+ if (!mClockDateToggle) {
+ mClockDateStyle.setEnabled(false);
+ mClockDateFormat.setEnabled(false);
+ }
+
+ return prefSet;
+ }
+
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ if (preference == mClockAmPmStyle) {
+ int val = Integer.parseInt((String) newValue);
+ int index = mClockAmPmStyle.findIndexOfValue((String) newValue);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE, val);
+ mClockAmPmStyle.setSummary(mClockAmPmStyle.getEntries()[index]);
+ return true;
+ } else if (preference == mClockStyle) {
+ int val = Integer.parseInt((String) newValue);
+ int index = mClockStyle.findIndexOfValue((String) newValue);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.STATUSBAR_CLOCK_STYLE, val);
+ mClockStyle.setSummary(mClockStyle.getEntries()[index]);
+ return true;
+ } else if (preference == mClockDateDisplay) {
+ int val = Integer.parseInt((String) newValue);
+ int index = mClockDateDisplay.findIndexOfValue((String) newValue);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.STATUSBAR_CLOCK_DATE_DISPLAY, val);
+ mClockDateDisplay.setSummary(mClockDateDisplay.getEntries()[index]);
+ if (val == 0) {
+ mClockDateStyle.setEnabled(false);
+ mClockDateFormat.setEnabled(false);
+ } else {
+ mClockDateStyle.setEnabled(true);
+ mClockDateFormat.setEnabled(true);
+ }
+ return true;
+ } else if (preference == mClockDateStyle) {
+ int val = Integer.parseInt((String) newValue);
+ int index = mClockDateStyle.findIndexOfValue((String) newValue);
+ Settings.System.putInt(getActivity().getContentResolver(),
+ Settings.System.STATUSBAR_CLOCK_DATE_STYLE, val);
+ mClockDateStyle.setSummary(mClockDateStyle.getEntries()[index]);
+ parseClockDateFormats();
+ return true;
+ } else if (preference == mStatusBarClock) {
+ Settings.System.putInt(getActivity().getApplicationContext().getContentResolver(),
+ Settings.System.STATUS_BAR_CLOCK,
+ (Boolean) newValue ? 1 : 0);
+ return true;
+ } else if (preference == mClockDateFormat) {
+ if ((String) newValue != null) {
+ Settings.System.putString(getActivity().getContentResolver(),
+ Settings.System.STATUSBAR_CLOCK_DATE_FORMAT, (String) newValue);
+ int idx = mClockDateFormat.findIndexOfValue((String) newValue);
+ mClockDateFormat.setSummary(mClockDateFormat.getEntries()[idx]);
+ }
+ return true;
+ }
+ return false;
+ }
+
+ private void parseClockDateFormats() {
+ // Parse and repopulate mClockDateFormats's entries based on current date.
+ String[] dateEntries = getResources().getStringArray(R.array.clock_date_format_entries_values);
+ CharSequence parsedDateEntries[];
+ parsedDateEntries = new String[dateEntries.length];
+ Date now = new Date();
+
+ int dateFormat = Settings.System.getInt(getActivity()
+ .getContentResolver(), Settings.System.STATUSBAR_CLOCK_DATE_STYLE, 2);
+ for (int i = 0; i < dateEntries.length; i++) {
+ 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);
+ }
+
+}
diff --git a/src/org/omnirom/omnigears/sounds/SoundPackageSettings.java b/src/org/omnirom/omnigears/sounds/SoundPackageSettings.java
new file mode 100644
index 0000000..45e4745
--- /dev/null
+++ b/src/org/omnirom/omnigears/sounds/SoundPackageSettings.java
@@ -0,0 +1,309 @@
+/*
+ * Copyright (C) 2014 The OmniROM Project
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package org.omnirom.omnigears.sounds;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import android.content.ContentResolver;
+import android.os.Bundle;
+import android.os.Environment;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
+
+public class SoundPackageSettings extends SettingsPreferenceFragment implements
+ Preference.OnPreferenceChangeListener {
+ private static final String TAG = "SoundPackageSettings";
+
+ private static final String INSTALL_SOUND_PACK = "install_sound_pack";
+ private static final String SELECT_SOUND_PACK = "select_sound_pack";
+
+ private static final String SOUND_PACKS_LOCATION = Environment
+ .getExternalStorageDirectory().getAbsolutePath() + "/SoundPacks/";
+ private static final String INSTALLED_PACKS_LOCATION = "/data/system/soundpacks/";
+
+ private ListPreference mInstallSoundPack;
+ private ListPreference mSelectSoundPack;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.sound_package_settings);
+
+ PreferenceScreen prefSet = getPreferenceScreen();
+
+ mInstallSoundPack = (ListPreference) prefSet
+ .findPreference(INSTALL_SOUND_PACK);
+ mInstallSoundPack.setOnPreferenceChangeListener(this);
+
+ mSelectSoundPack = (ListPreference) prefSet
+ .findPreference(SELECT_SOUND_PACK);
+ mSelectSoundPack.setOnPreferenceChangeListener(this);
+
+ updatePacks();
+ }
+
+ private void updatePacks() {
+ final ContentResolver resolver = getActivity().getContentResolver();
+ List<String> installablePacks = getInstallablePacks();
+
+ if (installablePacks != null && installablePacks.size() > 0) {
+ CharSequence[] packs = listToCharSeqArray(installablePacks, false);
+ mInstallSoundPack.setEntries(packs);
+ mInstallSoundPack.setEntryValues(packs);
+ mInstallSoundPack.setEnabled(true);
+ } else {
+ mInstallSoundPack.setEnabled(false);
+ }
+
+ List<String> selectablePacks = getInstalledPacks();
+
+ if (selectablePacks != null && selectablePacks.size() > 0) {
+ CharSequence[] packs = listToCharSeqArray(selectablePacks, true);
+ mSelectSoundPack.setEntries(packs);
+ mSelectSoundPack.setEntryValues(packs);
+ mSelectSoundPack.setEnabled(true);
+ } else {
+ mSelectSoundPack.setEnabled(false);
+ }
+
+ String activePack = Settings.System.getString(resolver,
+ Settings.System.CUSTOM_SOUND_EFFECTS_PATH);
+ if (activePack == null
+ || activePack.equals(getResources().getString(
+ R.string.default_sound_pack)) || activePack.isEmpty()) {
+ mSelectSoundPack.setValueIndex(0);
+ } else {
+ mSelectSoundPack.setValue(packPathToName(activePack));
+ }
+ }
+
+ private static String packPathToName(String path) {
+ String output = path.substring(0, path.length() - 1);
+ output = output.substring(output.lastIndexOf('/') + 1);
+ return output;
+ }
+
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
+ Preference preference) {
+ return true;
+ }
+
+ public boolean onPreferenceChange(Preference preference, Object objValue) {
+ if (preference == mInstallSoundPack) {
+ try {
+ installPack((String) objValue);
+ } catch (IOException e) {
+ Toast.makeText(getActivity(),
+ getResources().getString(R.string.error_pack_install),
+ Toast.LENGTH_LONG).show();
+ Log.e(TAG, "Unable to install sound pack", e);
+ }
+ return true;
+ } else if (preference == mSelectSoundPack) {
+ selectPack((String) objValue);
+ return true;
+ }
+
+ return false;
+ }
+
+ private CharSequence[] listToCharSeqArray(List<String> list,
+ boolean addDefault) {
+ CharSequence[] packs = new CharSequence[addDefault ? list.size() + 1
+ : list.size()];
+ int i = addDefault ? 1 : 0;
+
+ if (addDefault) {
+ packs[0] = getResources().getString(R.string.default_sound_pack);
+ }
+
+ for (String pack : list) {
+ packs[i] = pack;
+ i++;
+ }
+
+ return packs;
+ }
+
+ public static String stripExtension(String str) {
+ if (str == null)
+ return null;
+ int pos = str.lastIndexOf(".");
+ if (pos == -1)
+ return str;
+ return str.substring(0, pos);
+ }
+
+ private List<String> getInstallablePacks() {
+ File packsDir = new File(SOUND_PACKS_LOCATION);
+
+ Log.d(TAG, "Looking for sound packs in " + SOUND_PACKS_LOCATION);
+
+ // Get all ZIP files in our soundpack install location
+ File[] availPacks = packsDir.listFiles(new FilenameFilter() {
+ @Override
+ public boolean accept(File dir, String filename) {
+ // Must be lowercase
+ return filename.endsWith(".zip");
+ }
+ });
+
+ if (availPacks == null || availPacks.length == 0) {
+ Log.d(TAG, "No installable packs found!");
+ return null;
+ }
+
+ // Filter the pack we already have
+ List<String> installedPacks = getInstalledPacks();
+ List<String> filteredPacks = new ArrayList<String>();
+
+ for (File pack : availPacks) {
+ String packName = stripExtension(pack.getName());
+
+ // XXX: originally, we had this. However, this can cause troubles
+ // when designing
+ // your sound package as you cannot reinstall a package that has
+ // already been
+ // installed (unless you change name every time).
+ // We keep on displaying installable already installed packs instead
+ // until we
+ // implement package uninstaller
+ /*
+ * if (installedPacks == null || (installedPacks.size() > 0 &&
+ * !installedPacks .contains(packName))) {
+ * filteredPacks.add(packName); }
+ */
+ filteredPacks.add(packName);
+ }
+
+ return filteredPacks;
+ }
+
+ private List<String> getInstalledPacks() {
+ File packsDir = new File(INSTALLED_PACKS_LOCATION);
+ if (packsDir.list() != null) {
+ return Arrays.asList(packsDir.list());
+ } else {
+ return null;
+ }
+ }
+
+ private void extractFile(ZipInputStream zipIn, String filePath)
+ throws IOException {
+ BufferedOutputStream bos = new BufferedOutputStream(
+ new FileOutputStream(filePath));
+ byte[] bytesIn = new byte[8192];
+ int read = 0;
+ while ((read = zipIn.read(bytesIn)) != -1) {
+ bos.write(bytesIn, 0, read);
+ }
+ bos.close();
+ }
+
+ private void selectPack(String packName) {
+ final ContentResolver resolver = getActivity().getContentResolver();
+
+ if (packName.equals(getResources().getString(
+ R.string.default_sound_pack))) {
+ Settings.System.putString(resolver,
+ Settings.System.CUSTOM_SOUND_EFFECTS_PATH, null);
+ } else {
+ Settings.System.putString(resolver,
+ Settings.System.CUSTOM_SOUND_EFFECTS_PATH,
+ INSTALLED_PACKS_LOCATION + packName + "/");
+ }
+
+ }
+
+ private void installPack(String packName) throws IOException {
+ // Copy package contents (.ogg and .xml only) to
+ // /data/system/soundpacks/<name>/
+ File rootDir = new File(INSTALLED_PACKS_LOCATION);
+ if (!rootDir.exists()) {
+ rootDir.mkdir();
+ rootDir.setWritable(true, true);
+ rootDir.setReadable(true, false);
+ rootDir.setExecutable(true, false);
+ }
+ File destDir = new File(INSTALLED_PACKS_LOCATION + packName);
+ if (!destDir.exists()) {
+ destDir.mkdir();
+ destDir.setWritable(true, true);
+ destDir.setReadable(true, false);
+ destDir.setExecutable(true, false);
+ }
+
+ ZipInputStream zipIn = new ZipInputStream(new FileInputStream(
+ SOUND_PACKS_LOCATION + packName + ".zip"));
+
+ ZipEntry entry = zipIn.getNextEntry();
+
+ while (entry != null) {
+ if (!entry.getName().endsWith(".xml")
+ && !entry.getName().endsWith(".ogg")) {
+ // We only care about xml and ogg files
+ zipIn.closeEntry();
+ entry = zipIn.getNextEntry();
+ continue;
+ }
+
+ String filePath = INSTALLED_PACKS_LOCATION + packName + "/"
+ + entry.getName();
+ if (!entry.isDirectory()) {
+ extractFile(zipIn, filePath);
+
+ // Update permissions (644 / rw-r--r--)
+ File copied = new File(filePath);
+ copied.setExecutable(false);
+ copied.setReadable(true, false);
+ copied.setWritable(true, true);
+ } else {
+ File dir = new File(filePath);
+ dir.mkdir();
+ destDir.setWritable(true, true);
+ destDir.setReadable(true, false);
+ destDir.setExecutable(true, false);
+ }
+
+ zipIn.closeEntry();
+ entry = zipIn.getNextEntry();
+ }
+ zipIn.close();
+
+ updatePacks();
+ }
+}