[2/2] OmniGears: Quick pulldown

This adds an option to toggle between left, right & centre.
left is the 30% from left, right is 30% from right &
centre is 40% in the middle.

Change-Id: Idbbc44c7809ab0b08f38be82b9002a1d48eb6e32
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index 62e464b..2da902a 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -272,4 +272,19 @@
         <item>ic_lockscreen_twitter_normal</item>
     </string-array>
 
+    <!-- Quick pulldown -->
+    <string-array name="quick_pulldown_entries" translatable="false">
+        <item>@string/quick_pulldown_off</item>
+        <item>@string/quick_pulldown_right</item>
+        <item>@string/quick_pulldown_left</item>
+        <item>@string/quick_pulldown_centre</item>
+    </string-array>
+
+    <string-array name="quick_pulldown_values" translatable="false">
+        <item>0</item>
+        <item>1</item>
+        <item>2</item>
+        <item>3</item>
+    </string-array>
+
 </resources>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index e3f7655..d8e3676 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -370,7 +370,12 @@
     <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>
+    <!-- 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="quick_pulldown_centre">Centre</string>
+    <string name="quick_pulldown_left">Left</string>
+    <string name="quick_pulldown_right">Right</string>
+
 </resources>
diff --git a/res/xml/bars_settings.xml b/res/xml/bars_settings.xml
index c173d70..1e6f22e 100644
--- a/res/xml/bars_settings.xml
+++ b/res/xml/bars_settings.xml
@@ -49,11 +49,14 @@
                 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" />
+        <ListPreference
+                android:key="quick_pulldown"
+                android:title="@string/title_quick_pulldown"
+                android:summary="@string/summary_quick_pulldown"
+                android:entries="@array/quick_pulldown_entries"
+                android:entryValues="@array/quick_pulldown_values"
+                android:persistent="false" />
+
     </PreferenceCategory>
 
     <!-- Navigation bar -->
diff --git a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
index 99fced9..ee4b845 100644
--- a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
@@ -27,6 +27,7 @@
 import android.os.RemoteException;
 import android.os.SystemProperties;
 import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceGroup;
 import android.preference.PreferenceScreen;
@@ -43,15 +44,14 @@
     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 QUICK_PULLDOWN = "quick_pulldown";
     private static final String CATEGORY_NAVBAR = "category_navigation_bar";
 
     private CheckBoxPreference mStatusBarBrightnessControl;
     private CheckBoxPreference mStatusBarNotifCount;
     private CheckBoxPreference mStatusBarTraffic;
     private CheckBoxPreference mStatusBarNetworkActivity;
-    private CheckBoxPreference mStatusBarQsPulldown;
+    private ListPreference mQuickPulldown;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -90,6 +90,12 @@
         mStatusBarNetworkActivity.setOnPreferenceChangeListener(this);
         mStatusBarNetworkActivity.setOnPreferenceChangeListener(this);
 
+        mQuickPulldown = (ListPreference) findPreference(QUICK_PULLDOWN);
+        mQuickPulldown.setOnPreferenceChangeListener(this);
+        int statusQuickPulldown = Settings.System.getInt(getContentResolver(),
+                Settings.System.QS_QUICK_PULLDOWN, 0);
+        mQuickPulldown.setValue(String.valueOf(statusQuickPulldown));
+
         boolean hasNavBar = getResources().getBoolean(
                 com.android.internal.R.bool.config_showNavigationBar);
         // Also check, if users without navigation bar force enabled it.
@@ -99,11 +105,6 @@
         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
@@ -128,10 +129,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;
+        } else if (preference == mQuickPulldown) {
+            int statusQuickPulldown = Integer.valueOf((String) objValue);
             Settings.System.putInt(resolver,
-                Settings.System.STATUS_BAR_QS_QUICK_PULLDOWN, value ? 1 : 0);
+                Settings.System.QS_QUICK_PULLDOWN, statusQuickPulldown);
         } else {
             return false;
         }