OmniGears: Power Menu animations [2/2]

Change-Id: I994bb65f4196c05dd92308bea7eb797ee30232be
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index 46f1bc7..44d447b 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -248,4 +248,16 @@
         <item>1</item>
         <item>2</item>
     </string-array>
+    <!-- Power menu Animations  -->
+    <string-array name="power_menu_animations_entries">
+        <item>@string/power_menu_animation_enter</item>
+        <item>@string/power_menu_animation_bottom</item>
+        <item>@string/power_menu_animation_top</item>
+    </string-array>
+
+    <string-array name="power_menu_animations_values" translatable="false">
+        <item>0</item>
+        <item>1</item>
+        <item>2</item>
+    </string-array>
 </resources>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 1fc58ae..353c8e2 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -327,6 +327,7 @@
     <string name="global_actions_title">Power menu</string>
     <string name="global_actions_summary">Actions shown in power menu</string>
     <string name="global_actions_header">Some actions are only visible depending on the setup or only if the device is unlocked</string>
+    <string name="global_actions_anim">Appearance</string>
 
     <string name="font_sample_text">11:57</string>
 
@@ -345,4 +346,11 @@
     <string name="status_bar_quick_qs_pulldown_off">Off</string>
     <string name="status_bar_quick_qs_pulldown_left">Left</string>
     <string name="status_bar_quick_qs_pulldown_right">Right</string>
+    <!-- Power menu Animations  -->
+    <string name="power_menu_animation_title">Power menu animation</string>
+    <string name="power_menu_animation_summary">Change the enter/exit animation of the power menu</string>
+    <string name="power_menu_animation_dialog_title">Select power menu animation</string>
+    <string name="power_menu_animation_enter">Omni (default)</string>
+    <string name="power_menu_animation_bottom">Bottom</string>
+    <string name="power_menu_animation_top">Top</string>
 </resources>
diff --git a/res/xml/global_actions.xml b/res/xml/global_actions.xml
index 2744ee3..0e5c439 100644
--- a/res/xml/global_actions.xml
+++ b/res/xml/global_actions.xml
@@ -71,4 +71,16 @@
             android:key="dnd"
             android:title="@string/global_actions_dnd_title"
             android:persistent="false" />
+    <PreferenceCategory
+        android:key="global_actions_anim" 
+        android:title="@string/global_actions_anim" >
+         <ListPreference
+            android:key="power_menu_animations"
+            android:title="@string/power_menu_animation_title"
+            android:dialogTitle="@string/power_menu_animation_dialog_title"
+            android:entries="@array/power_menu_animations_entries"
+            android:entryValues="@array/power_menu_animations_values"
+            android:summary="@string/power_menu_animation_summary"
+            android:persistent="false" />
+    </PreferenceCategory>
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/interfacesettings/GlobalActionsSettings.java b/src/org/omnirom/omnigears/interfacesettings/GlobalActionsSettings.java
index c2cdc59..5da2950 100644
--- a/src/org/omnirom/omnigears/interfacesettings/GlobalActionsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/GlobalActionsSettings.java
@@ -21,6 +21,7 @@
 import android.content.Context;
 import android.os.Bundle;
 import android.os.UserManager;
+import android.support.v7.preference.ListPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceGroup;
 import android.support.v7.preference.PreferenceManager;
@@ -47,11 +48,14 @@
 public class GlobalActionsSettings extends SettingsPreferenceFragment implements
         OnPreferenceChangeListener, Indexable {
     private static final String TAG = "GlobalActionsSettings";
- //   private static final String GLOBAL_ACTIONS = "global_actions";
+    private static final String POWER_MENU_ANIMATIONS = "power_menu_animations";
+//   private static final String GLOBAL_ACTIONS = "global_actions";
 
     private LinkedHashMap<String, Boolean> mGlobalActionsMap;
 //    private PreferenceScreen prefScreen = null;
 
+    ListPreference mPowerMenuAnimations;
+
     @Override
     protected int getMetricsCategory() {
         return MetricsEvent.OMNI_SETTINGS;
@@ -77,6 +81,12 @@
         final String enabledActions = Settings.System.getString(contentResolver,
                 Settings.System.GLOBAL_ACTIONS_LIST);
 
+        mPowerMenuAnimations = (ListPreference) findPreference(POWER_MENU_ANIMATIONS);
+        mPowerMenuAnimations.setValue(String.valueOf(Settings.System.getInt(
+                getContentResolver(), Settings.System.POWER_MENU_ANIMATIONS, 0)));
+        mPowerMenuAnimations.setSummary(mPowerMenuAnimations.getEntry());
+        mPowerMenuAnimations.setOnPreferenceChangeListener(this);
+
         List<String> enabledActionsList = null;
         if (enabledActions != null) {
             enabledActionsList = Arrays.asList(enabledActions.split(","));
@@ -138,7 +148,16 @@
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object objValue) {
-        return false;
+         ContentResolver resolver = getActivity().getContentResolver();
+         boolean result = false;
+         if (preference == mPowerMenuAnimations) {
+            Settings.System.putInt(getContentResolver(), Settings.System.POWER_MENU_ANIMATIONS,
+                    Integer.valueOf((String) objValue));
+            mPowerMenuAnimations.setValue(String.valueOf(objValue));
+            mPowerMenuAnimations.setSummary(mPowerMenuAnimations.getEntry());
+            return true;
+          }
+          return result;
     }
 
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =