Merge "navbar: show menu if nav bars are force enabled via property" into android-4.4
diff --git a/res/values-it/custom_strings.xml b/res/values-it/custom_strings.xml
index 2f41c93..df9555f 100644
--- a/res/values-it/custom_strings.xml
+++ b/res/values-it/custom_strings.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <!--  Copyright (C) 2013 The OmniROM Project
 
   Parts Copyright (C) 2012-2013 The CyanogenMod Project
@@ -158,8 +158,8 @@
     <string name="button_volume_wake_title">Attiva con il pulsante volume</string>
     <string name="button_volume_wake_summary">Premendo un pulsante del volume si attiverà il tuo dispositivo</string>
     <string name="button_headsethook_title">Auricolari</string>
-    <string name="button_headsethook_launch_voice_title">Comandi vocali auriculare</string>
-    <string name="button_headsethook_launch_voice_summary">Premendo il pulsante dell\'auricolare si lanceranno i comandi vocali</string>
+    <string name="button_headsethook_launch_voice_title">Comandi vocali auricolare</string>
+    <string name="button_headsethook_launch_voice_summary">Premendo il pulsante dell\'auricolare si eseguiranno i comandi vocali</string>
 
     <!-- Network speed -->
     <string name="show_network_speed">Mostra velocità della rete</string>
@@ -204,13 +204,21 @@
     <string name="keys_action_double">Doppio tocco</string>
     <string name="dialog_no_home_key_title">Nessuna azione tasto Home</string>
     <string name="no_home_key">Non hai assegnato nessuna azione al tasto \"Home\"! Questo può rendere il dispositivo inutilizzabile!</string>
+    <string name="virtual_key_haptic_feedback_title">Vibrazione e tocco</string>
+    <string name="virtual_key_haptic_feedback_summary">Attivare le dipendenze di \"Vibrazione e tocco\" nelle impostazioni audio</string>
 
     <!-- Power Menu Options-->
     <string name="bars_and_menus_category_power_menu_title">Menu di spegnimento</string>
     <string name="power_menu_toggle_screenshot_title">Mostra screenshot</string>
-    <string name="power_menu_toggle_screenshot_summary">Mostra l\'opzione di screenshot nel menu di spegnimento</string>
+    <string name="power_menu_toggle_screenshot_summary">Mostra l\'opzione di Screenshot nel menu di spegnimento</string>
     <string name="power_menu_toggle_screenrecord_title">Mostra registra schermo</string>
-    <string name="power_menu_toggle_screenrecord_summary">Mostra l\'opzione registra schermo nel menu di spegnimento</string>
+    <string name="power_menu_toggle_screenrecord_summary">Mostra l\'opzione Registra schermo nel menu di spegnimento</string>
+<string name="power_menu_toggle_mobile_data_title">Dati</string>
+    <string name="power_menu_toggle_mobile_data_summary">Mostra l\'opzione Dati nel menu di spegnimento</string>
+    <string name="power_menu_toggle_airplane_mode_title">Modalità aereo</string>
+    <string name="power_menu_toggle_airplane_mode_summary">Mostra l\'opzione Modalità aereo nel menu di spegnimento</string>
+    <string name="power_menu_toggle_sound_toggles_title">Audio</string>
+    <string name="power_menu_toggle_sound_toggles_summary">Mostra l\'opzione Audio nel menu di spegnimento</string>
 
     <!-- Active Display Notifications -->
     <string name="ad_settings_title">Active display</string>
@@ -356,5 +364,8 @@
     <string name="icon_picker_search">Ricerca</string>
     <string name="icon_picker_sms">Messaggi</string>
     <string name="icon_picker_twitter">Twitter</string>
+    <!-- Status Bar QS Quick pulldown -->
+    <string name="qs_quick_pulldown_title">Impostazioni rapide barra di stato</string>
+    <string name="qs_quick_pulldown_summary">Accedi alle impostazioni rapide effettuando uno swipe verso il basso sul lato destro della barra di stato</string>
 
 </resources>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 85df0dd..e3f7655 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -157,8 +157,10 @@
 
     <!-- button settings -->
     <string name="button_volume_keys_title">Volume</string>
-    <string name="button_volume_wake_title">Volume button wake</string>
-    <string name="button_volume_wake_summary">Pressing a volume button will wake your device</string>
+    <string name="button_volume_wake_title">Button wake</string>
+    <string name="button_volume_wake_summary">Pressing a volume button will wake the device</string>
+    <string name="button_volume_music_control_title">Music control</string>
+    <string name="button_volume_music_control_summary">Long press volume buttons to switch tracks while screen off</string>
     <string name="button_headsethook_title">Headset</string>
     <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>
@@ -206,6 +208,8 @@
     <string name="keys_action_double">Double tap</string>
     <string name="dialog_no_home_key_title">No home action</string>
     <string name="no_home_key">You have no button assigned to the \"Home\" action! This can make your device unusable!</string>
+    <string name="virtual_key_haptic_feedback_title">Vibrate on touch</string>
+    <string name="virtual_key_haptic_feedback_summary">Enable depends on \"Vibrate on touch\" in sound settings</string>
 
     <!-- Power Menu Options-->
     <string name="bars_and_menus_category_power_menu_title">Power menu</string>
@@ -213,6 +217,12 @@
     <string name="power_menu_toggle_screenshot_summary">Show screenshot option in Power Menu</string>
     <string name="power_menu_toggle_screenrecord_title">Screen Record</string>
     <string name="power_menu_toggle_screenrecord_summary">Show screen Record option in Power Menu</string>
+    <string name="power_menu_toggle_mobile_data_title">Mobile Data</string>
+    <string name="power_menu_toggle_mobile_data_summary">Show Mobile Data option in Power Menu</string>
+    <string name="power_menu_toggle_airplane_mode_title">Airplane mode</string>
+    <string name="power_menu_toggle_airplane_mode_summary">Show Airplane option in Power Menu</string>
+    <string name="power_menu_toggle_sound_toggles_title">Sound toggles</string>
+    <string name="power_menu_toggle_sound_toggles_summary">Show sound toggles in Power Menu</string>
 
     <!-- Active Display Notifications -->
     <string name="ad_settings_title">Active display</string>
@@ -360,4 +370,7 @@
     <string name="icon_picker_sms">Messaging</string>
     <string name="icon_picker_twitter">Twitter</string>
 
+    <!-- Status Bar QS Quick pulldown -->
+    <string name="qs_quick_pulldown_title">Quick Settings pulldown</string>
+    <string name="qs_quick_pulldown_summary">Access Quick Settings by pulling down on the right side of the status bar</string>
 </resources>
diff --git a/res/xml/bars_settings.xml b/res/xml/bars_settings.xml
index 6ce53a3..c173d70 100644
--- a/res/xml/bars_settings.xml
+++ b/res/xml/bars_settings.xml
@@ -48,6 +48,12 @@
                 android:title="@string/show_activity_indicators_on_status_bar_title"
                 android:summary="@string/show_activity_indicators_on_status_bar_summary"
                 android:persistent="false"/>
+
+        <CheckBoxPreference
+            android:key="status_bar_qs_quick_pulldown"
+            android:title="@string/qs_quick_pulldown_title"
+            android:summary="@string/qs_quick_pulldown_summary"
+            android:persistent="false" />
     </PreferenceCategory>
 
     <!-- Navigation bar -->
diff --git a/res/xml/button_settings.xml b/res/xml/button_settings.xml
index 2260816..af82a56 100644
--- a/res/xml/button_settings.xml
+++ b/res/xml/button_settings.xml
@@ -49,12 +49,24 @@
             android:entryValues="@array/button_volume_default_values"
             android:persistent="false"/>
 
+        <CheckBoxPreference
+            android:key="button_volume_music_control"
+            android:title="@string/button_volume_music_control_title"
+            android:summary="@string/button_volume_music_control_summary"
+            android:persistent="false"/>
+
     </PreferenceCategory>
 
     <PreferenceCategory
         android:key="button_keys"
         android:title="@string/button_keys_title" >
 
+        <CheckBoxPreference
+            android:key="virtual_key_haptic_feedback"
+            android:title="@string/virtual_key_haptic_feedback_title"
+            android:summary="@string/virtual_key_haptic_feedback_summary"
+            android:persistent="false"/>
+
         <SwitchPreference
             android:key="keys_enable_custom"
             android:title="@string/keys_enable_custom_title"
diff --git a/res/xml/menus_settings.xml b/res/xml/menus_settings.xml
index 4858f90..6c2bd93 100644
--- a/res/xml/menus_settings.xml
+++ b/res/xml/menus_settings.xml
@@ -26,6 +26,12 @@
             android:title="@string/bars_and_menus_category_power_menu_title">
 
     <CheckBoxPreference
+            android:key="power_menu_mobile_data"
+            android:title="@string/power_menu_toggle_mobile_data_title"
+            android:summary="@string/power_menu_toggle_mobile_data_summary"
+            android:persistent="false"/>
+
+    <CheckBoxPreference
             android:key="power_menu_screenshot"
             android:title="@string/power_menu_toggle_screenshot_title"
             android:summary="@string/power_menu_toggle_screenshot_summary"
@@ -36,6 +42,18 @@
             android:title="@string/power_menu_toggle_screenrecord_title"
             android:summary="@string/power_menu_toggle_screenrecord_summary"
             android:persistent="false"/>
+
+    <CheckBoxPreference
+            android:key="power_menu_airplane_mode"
+            android:title="@string/power_menu_toggle_airplane_mode_title"
+            android:summary="@string/power_menu_toggle_airplane_mode_summary"
+            android:persistent="false"/>
+
+    <CheckBoxPreference
+            android:key="power_menu_sound_toggles"
+            android:title="@string/power_menu_toggle_sound_toggles_title"
+            android:summary="@string/power_menu_toggle_sound_toggles_summary"
+            android:persistent="false"/>
     </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/ButtonSettings.java b/src/org/omnirom/omnigears/ButtonSettings.java
index d73b6e3..2c80af0 100644
--- a/src/org/omnirom/omnigears/ButtonSettings.java
+++ b/src/org/omnirom/omnigears/ButtonSettings.java
@@ -36,8 +36,10 @@
 
 import android.content.ContentResolver;
 import android.content.res.Resources;
+import android.content.Context;
 import android.media.AudioSystem;
 import android.os.Bundle;
+import android.os.Vibrator;
 import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
@@ -71,6 +73,7 @@
     
     private static final String BUTTON_VOLUME_WAKE = "button_volume_wake_screen";
     private static final String BUTTON_VOLUME_DEFAULT = "button_volume_default_screen";
+    private static final String BUTTON_VOLUME_MUSIC_CONTROL = "button_volume_music_control";
     private static final String CATEGORY_HEADSETHOOK = "button_headsethook";
     private static final String BUTTON_HEADSETHOOK_LAUNCH_VOICE = "button_headsethook_launch_voice";
 
@@ -87,6 +90,7 @@
     private static final String KEYS_ASSIST_LONG_PRESS = "keys_assist_long_press";
     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";
 
     // Available custom actions to perform on a key press.
     private static final int ACTION_NOTHING = 0;
@@ -109,6 +113,7 @@
     private static final int KEY_MASK_APP_SWITCH = 0x10;
 
     private CheckBoxPreference mVolumeWake;
+    private CheckBoxPreference mVolumeMusicControl;
     private SwitchPreference mEnableCustomBindings;
     private ListPreference mBackPressAction;
     private ListPreference mBackLongPressAction;
@@ -124,6 +129,7 @@
     private Map<String, Integer> mKeySettings = new HashMap<String, Integer>();
     private ListPreference mVolumeDefault;
     private CheckBoxPreference mHeadsetHookLaunchVoice;
+    private CheckBoxPreference mVirtualKeyHapticFeedback;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -131,7 +137,7 @@
 
         addPreferencesFromResource(R.xml.button_settings);
 
-        final ContentResolver resolver = getActivity().getContentResolver();
+        final ContentResolver resolver = getContentResolver();
         final PreferenceScreen prefScreen = getPreferenceScreen();
         final Resources res = getResources();
 
@@ -158,6 +164,10 @@
             }
             mVolumeDefault.setValue(currentDefault);
             mVolumeDefault.setOnPreferenceChangeListener(this);
+
+            mVolumeMusicControl = (CheckBoxPreference) findPreference(BUTTON_VOLUME_MUSIC_CONTROL);
+            mVolumeMusicControl.setChecked(Settings.System.getInt(resolver,
+                    Settings.System.VOLUME_MUSIC_CONTROL, 0) != 0);
         } else {
             prefScreen.removePreference(volumeCategory);
         }
@@ -215,9 +225,11 @@
                     KEYS_APP_SWITCH_PRESS);
             mAppSwitchLongPressAction = (ListPreference) prefScreen.findPreference(
                     KEYS_APP_SWITCH_LONG_PRESS);
+            mVirtualKeyHapticFeedback = (CheckBoxPreference) prefScreen.findPreference(
+                    VIRTUAL_KEY_HAPTIC_FEEDBACK);
 
             if (hasBackKey) {
-                int backPressAction = Settings.System.getInt(getContentResolver(),
+                int backPressAction = Settings.System.getInt(resolver,
                         Settings.System.KEY_BACK_ACTION, ACTION_BACK);
 
                 mBackPressAction.setValue(Integer.toString(backPressAction));
@@ -226,7 +238,7 @@
 
                 mKeySettings.put(Settings.System.KEY_BACK_ACTION, backPressAction);
 
-                int backLongPressAction = Settings.System.getInt(getContentResolver(),
+                int backLongPressAction = Settings.System.getInt(resolver,
                         Settings.System.KEY_BACK_LONG_PRESS_ACTION, ACTION_NOTHING);
 
                 mBackLongPressAction.setValue(Integer.toString(backLongPressAction));
@@ -239,7 +251,7 @@
             }
 
             if (hasHomeKey) {
-                int homePressAction = Settings.System.getInt(getContentResolver(),
+                int homePressAction = Settings.System.getInt(resolver,
                         Settings.System.KEY_HOME_ACTION, ACTION_HOME);
 
                 mHomePressAction.setValue(Integer.toString(homePressAction));
@@ -261,11 +273,11 @@
                 }
 
                 if (hasAppSwitchKey) {
-                    homeLongPressAction = Settings.System.getInt(getContentResolver(),
+                    homeLongPressAction = Settings.System.getInt(resolver,
                             Settings.System.KEY_HOME_LONG_PRESS_ACTION, ACTION_NOTHING);
                 } else {
                     int defaultAction = ACTION_NOTHING;
-                    homeLongPressAction = Settings.System.getInt(getContentResolver(),
+                    homeLongPressAction = Settings.System.getInt(resolver,
                             Settings.System.KEY_HOME_LONG_PRESS_ACTION, longPressOnHomeBehavior);
                 }
                 mHomeLongPressAction.setValue(Integer.toString(homeLongPressAction));
@@ -277,7 +289,7 @@
                 int doubleTapOnHomeBehavior = getResources().getInteger(
                         com.android.internal.R.integer.config_doubleTapOnHomeBehavior);
 
-                int homeDoubleTapAction = Settings.System.getInt(getContentResolver(),
+                int homeDoubleTapAction = Settings.System.getInt(resolver,
                             Settings.System.KEY_HOME_DOUBLE_TAP_ACTION,
                             doubleTapOnHomeBehavior == 1 ? ACTION_APP_SWITCH : ACTION_NOTHING);
 
@@ -291,7 +303,7 @@
             }
 
             if (hasMenuKey) {
-                int menuPressAction = Settings.System.getInt(getContentResolver(),
+                int menuPressAction = Settings.System.getInt(resolver,
                         Settings.System.KEY_MENU_ACTION, ACTION_MENU);
                 mMenuPressAction.setValue(Integer.toString(menuPressAction));
                 mMenuPressAction.setSummary(mMenuPressAction.getEntry());
@@ -304,7 +316,7 @@
                     menuLongPressAction = ACTION_SEARCH;
                 }
 
-                menuLongPressAction = Settings.System.getInt(getContentResolver(),
+                menuLongPressAction = Settings.System.getInt(resolver,
                             Settings.System.KEY_MENU_LONG_PRESS_ACTION, menuLongPressAction);
 
                 mMenuLongPressAction.setValue(Integer.toString(menuLongPressAction));
@@ -317,7 +329,7 @@
             }
 
             if (hasAssistKey) {
-                int assistPressAction = Settings.System.getInt(getContentResolver(),
+                int assistPressAction = Settings.System.getInt(resolver,
                         Settings.System.KEY_ASSIST_ACTION, ACTION_SEARCH);
                 mAssistPressAction.setValue(Integer.toString(assistPressAction));
                 mAssistPressAction.setSummary(mAssistPressAction.getEntry());
@@ -325,7 +337,7 @@
 
                 mKeySettings.put(Settings.System.KEY_ASSIST_ACTION, assistPressAction);
 
-                int assistLongPressAction = Settings.System.getInt(getContentResolver(),
+                int assistLongPressAction = Settings.System.getInt(resolver,
                         Settings.System.KEY_ASSIST_LONG_PRESS_ACTION, ACTION_VOICE_SEARCH);
                 mAssistLongPressAction.setValue(Integer.toString(assistLongPressAction));
                 mAssistLongPressAction.setSummary(mAssistLongPressAction.getEntry());
@@ -337,7 +349,7 @@
             }
 
             if (hasAppSwitchKey) {
-                int appSwitchPressAction = Settings.System.getInt(getContentResolver(),
+                int appSwitchPressAction = Settings.System.getInt(resolver,
                         Settings.System.KEY_APP_SWITCH_ACTION, ACTION_APP_SWITCH);
                 mAppSwitchPressAction.setValue(Integer.toString(appSwitchPressAction));
                 mAppSwitchPressAction.setSummary(mAppSwitchPressAction.getEntry());
@@ -345,7 +357,7 @@
 
                 mKeySettings.put(Settings.System.KEY_APP_SWITCH_ACTION, appSwitchPressAction);
 
-                int appSwitchLongPressAction = Settings.System.getInt(getContentResolver(),
+                int appSwitchLongPressAction = Settings.System.getInt(resolver,
                         Settings.System.KEY_APP_SWITCH_LONG_PRESS_ACTION, ACTION_NOTHING);
                 mAppSwitchLongPressAction.setValue(Integer.toString(appSwitchLongPressAction));
                 mAppSwitchLongPressAction.setSummary(mAppSwitchLongPressAction.getEntry());
@@ -356,10 +368,17 @@
                 prefScreen.removePreference(keysAppSwitchCategory);
             }
 
-            mEnableCustomBindings.setChecked((Settings.System.getInt(getActivity().
-                    getApplicationContext().getContentResolver(),
+            mEnableCustomBindings.setChecked((Settings.System.getInt(resolver,
                     Settings.System.HARDWARE_KEY_REBINDING, 0) == 1));
 		    mEnableCustomBindings.setOnPreferenceChangeListener(this);
+
+            Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
+            if (vibrator == null || !vibrator.hasVibrator()) {
+                removePreference(VIRTUAL_KEY_HAPTIC_FEEDBACK);
+            } else {
+                mVirtualKeyHapticFeedback.setChecked(Settings.System.getInt(resolver,
+                        Settings.System.VIRTUAL_KEYS_HAPTIC_FEEDBACK, 1) == 1);
+            }
         }
 
         final PreferenceCategory headsethookCategory =
@@ -374,16 +393,26 @@
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
         if (preference == mVolumeWake) {
             boolean checked = ((CheckBoxPreference)preference).isChecked();
-            Settings.System.putInt(getActivity().getContentResolver(),
+            Settings.System.putInt(getContentResolver(),
                     Settings.System.VOLUME_WAKE_SCREEN, checked ? 1:0);
             return true;
         }
         else if (preference == mHeadsetHookLaunchVoice) {
             boolean checked = ((CheckBoxPreference)preference).isChecked();
-            Settings.System.putInt(getActivity().getContentResolver(),
+            Settings.System.putInt(getContentResolver(),
                     Settings.System.HEADSETHOOK_LAUNCH_VOICE, checked ? 1:0);
 
             return true;
+        } else if (preference == mVirtualKeyHapticFeedback){
+            boolean checked = ((CheckBoxPreference)preference).isChecked();
+            Settings.System.putInt(getContentResolver(),
+                    Settings.System.VIRTUAL_KEYS_HAPTIC_FEEDBACK, checked ? 1:0);
+            return true;
+        } else if (preference == mVolumeMusicControl) {
+            boolean checked = ((CheckBoxPreference)preference).isChecked();
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.VOLUME_MUSIC_CONTROL, checked ? 1:0);
+            return true;
         }
 
         return super.onPreferenceTreeClick(preferenceScreen, preference);
@@ -507,7 +536,7 @@
             return true;
         } else if (preference == mVolumeDefault) {
             String value = (String)newValue;
-            Settings.System.putString(getActivity().getContentResolver(), Settings.System.VOLUME_KEYS_DEFAULT, value);
+            Settings.System.putString(getContentResolver(), Settings.System.VOLUME_KEYS_DEFAULT, value);
             return true;
         }
         return false;
diff --git a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
index af54188..99fced9 100644
--- a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
@@ -43,6 +43,7 @@
     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 STATUS_BAR_QS_QUICK_PULLDOWN = "status_bar_qs_quick_pulldown";
 
     private static final String CATEGORY_NAVBAR = "category_navigation_bar";
 
@@ -50,6 +51,7 @@
     private CheckBoxPreference mStatusBarNotifCount;
     private CheckBoxPreference mStatusBarTraffic;
     private CheckBoxPreference mStatusBarNetworkActivity;
+    private CheckBoxPreference mStatusBarQsPulldown;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -97,6 +99,11 @@
         if (!hasNavBar) {
             prefSet.removePreference(findPreference(CATEGORY_NAVBAR));
         }
+
+        mStatusBarQsPulldown = (CheckBoxPreference) prefSet.findPreference(STATUS_BAR_QS_QUICK_PULLDOWN);
+        mStatusBarQsPulldown.setChecked(Settings.System.getInt(resolver,
+            Settings.System.STATUS_BAR_QS_QUICK_PULLDOWN, 0) == 1);
+        mStatusBarQsPulldown.setOnPreferenceChangeListener(this);
     }
 
     @Override
@@ -121,6 +128,10 @@
             boolean value = (Boolean) objValue;
             Settings.System.putInt(resolver,
                 Settings.System.STATUS_BAR_NETWORK_ACTIVITY, value ? 1 : 0);
+        } else if (preference == mStatusBarQsPulldown) {
+            boolean value = (Boolean) objValue;
+            Settings.System.putInt(resolver,
+                Settings.System.STATUS_BAR_QS_QUICK_PULLDOWN, value ? 1 : 0);
         } else {
             return false;
         }
diff --git a/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java b/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java
index 76630d6..7f0b309 100644
--- a/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java
@@ -31,17 +31,26 @@
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
 import android.util.Log;
+import android.net.ConnectivityManager;
 
 public class MenusSettings extends SettingsPreferenceFragment implements
         Preference.OnPreferenceChangeListener {
     private static final String TAG = "MenusSettings";
     private ContentResolver resolver;
 
+    private static final String POWER_MENU_CATEGORY = "category_power_menu";
     private static final String POWER_MENU_SCREENSHOT = "power_menu_screenshot";
     private static final String POWER_MENU_SCREENRECORD = "power_menu_screenrecord";
+    private static final String POWER_MENU_MOBILE_DATA = "power_menu_mobile_data";
+    private static final String POWER_MENU_AIRPLANE_MODE = "power_menu_airplane_mode";
+    private static final String POWER_MENU_SOUND_TOGGLES = "power_menu_sound_toggles";
+
 
     private CheckBoxPreference mScreenshotPowerMenu;
     private CheckBoxPreference mScreenrecordPowerMenu;
+    private CheckBoxPreference mMobileDataPowerMenu;
+    private CheckBoxPreference mAirplaneModePowerMenu;
+    private CheckBoxPreference mSoundTogglesPowerMenu;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -51,21 +60,42 @@
         PreferenceScreen prefSet = getPreferenceScreen();
         resolver = getActivity().getContentResolver();
 
-        boolean mHasScreenRecord = getActivity().getResources().getBoolean(
-                com.android.internal.R.bool.config_enableScreenrecordChord);
-
         mScreenshotPowerMenu = (CheckBoxPreference) prefSet.findPreference(POWER_MENU_SCREENSHOT);
         mScreenshotPowerMenu.setChecked(Settings.System.getInt(resolver,
                 Settings.System.SCREENSHOT_IN_POWER_MENU, 0) == 1);
         mScreenshotPowerMenu.setOnPreferenceChangeListener(this);
 
+        mMobileDataPowerMenu = (CheckBoxPreference) prefSet.findPreference(POWER_MENU_MOBILE_DATA);
+        Context context = getActivity();
+        ConnectivityManager cm = (ConnectivityManager)
+                context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        if(cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) {
+            mMobileDataPowerMenu.setChecked(Settings.System.getInt(resolver,
+                Settings.System.MOBILE_DATA_IN_POWER_MENU, 0) == 1);
+            mMobileDataPowerMenu.setOnPreferenceChangeListener(this);
+        } else {
+            prefSet.removePreference(mMobileDataPowerMenu);
+        }
+
+        mAirplaneModePowerMenu = (CheckBoxPreference) prefSet.findPreference(POWER_MENU_AIRPLANE_MODE);
+        mAirplaneModePowerMenu.setChecked(Settings.System.getInt(resolver,
+                Settings.System.AIRPLANE_MODE_IN_POWER_MENU, 1) == 1);
+        mAirplaneModePowerMenu.setOnPreferenceChangeListener(this);
+
+        mSoundTogglesPowerMenu = (CheckBoxPreference) prefSet.findPreference(POWER_MENU_SOUND_TOGGLES);
+        mSoundTogglesPowerMenu.setChecked(Settings.System.getInt(resolver,
+                Settings.System.SOUND_TOGGLES_IN_POWER_MENU, 1) == 1);
+        mSoundTogglesPowerMenu.setOnPreferenceChangeListener(this);
+
         mScreenrecordPowerMenu = (CheckBoxPreference) prefSet.findPreference(POWER_MENU_SCREENRECORD);
-        if(mHasScreenRecord) {
+        if (!getResources().getBoolean(com.android.internal.R.bool.config_enableScreenrecordChord)) {
+            PreferenceGroup powerMenuCategory = (PreferenceGroup)
+                findPreference(POWER_MENU_CATEGORY);
+            powerMenuCategory.removePreference(mScreenrecordPowerMenu);
+        } else {
             mScreenrecordPowerMenu.setChecked(Settings.System.getInt(resolver,
                     Settings.System.SCREENRECORD_IN_POWER_MENU, 0) == 1);
             mScreenrecordPowerMenu.setOnPreferenceChangeListener(this);
-        } else {
-            prefSet.removePreference(mScreenrecordPowerMenu);
         }
     }
 
@@ -81,6 +111,15 @@
         } else if (preference == mScreenrecordPowerMenu) {
             boolean value = (Boolean) objValue;
             Settings.System.putInt(resolver, Settings.System.SCREENRECORD_IN_POWER_MENU, value ? 1 : 0);
+        } else if (preference == mMobileDataPowerMenu) {
+            boolean value = (Boolean) objValue;
+            Settings.System.putInt(resolver, Settings.System.MOBILE_DATA_IN_POWER_MENU, value ? 1 : 0);
+        } else if (preference == mAirplaneModePowerMenu) {
+            boolean value = (Boolean) objValue;
+            Settings.System.putInt(resolver, Settings.System.AIRPLANE_MODE_IN_POWER_MENU, value ? 1 : 0);
+        } else if (preference == mSoundTogglesPowerMenu) {
+            boolean value = (Boolean) objValue;
+            Settings.System.putInt(resolver, Settings.System.SOUND_TOGGLES_IN_POWER_MENU, value ? 1 : 0);
         } else {
             return false;
         }