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();
+    }
+}