Merge "[2/2] OmniGears: Add more Power Menu Options" into android-4.4
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 7b67319..beb459b 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -213,6 +213,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>
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/interfacesettings/MenusSettings.java b/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java
index d230d36..7f0b309 100644
--- a/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/MenusSettings.java
@@ -31,6 +31,7 @@
 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 {
@@ -40,9 +41,16 @@
     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) {
@@ -57,6 +65,28 @@
                 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 (!getResources().getBoolean(com.android.internal.R.bool.config_enableScreenrecordChord)) {
             PreferenceGroup powerMenuCategory = (PreferenceGroup)
@@ -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;
         }