[2/2] OmniGears: screen off animation config

Change-Id: Iea7a7b4211dcdf17e88dff6f2943c5b6e5af1c70
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index 3601e49..ad4d58a 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -490,4 +490,16 @@
         <item>7</item>
         <item>5</item>
     </string-array>
+
+    <string-array name="screen_off_animation_entries">
+        <item>@string/screen_off_animation_default</item>
+        <item>@string/screen_off_animation_crt</item>
+        <item>@string/screen_off_animation_scale</item>
+    </string-array>
+
+    <string-array name="screen_off_animation_values" translatable="false">
+        <item>0</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 133f03d..f981518 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -632,4 +632,9 @@
 
     <string name="double_tap_sleep_lockscreen_title">Double tap to sleep on lockscreen</string>
     <string name="double_tap_sleep_lockscreen_summary"></string>
+
+    <string name="screen_off_animation_default">Default</string>
+    <string name="screen_off_animation_crt">CRT</string>
+    <string name="screen_off_animation_scale">Scale</string>
+    <string name="screen_off_animation_title">Screen off animation</string>
 </resources>
diff --git a/res/xml/more_settings.xml b/res/xml/more_settings.xml
index 7ba454d..88aaf71 100644
--- a/res/xml/more_settings.xml
+++ b/res/xml/more_settings.xml
@@ -79,5 +79,11 @@
                 android:summary="@string/volume_steps_summary"
                 android:fragment="org.omnirom.omnigears.system.VolumeSteps" />
 
+            <ListPreference
+                android:key="screen_off_animation"
+                android:title="@string/screen_off_animation_title"
+                android:entries="@array/screen_off_animation_entries"
+                android:entryValues="@array/screen_off_animation_values"
+                android:persistent="false"/>
         </PreferenceCategory>
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/moresettings/MoreSettings.java b/src/org/omnirom/omnigears/moresettings/MoreSettings.java
index ea8dd00..ca110da 100644
--- a/src/org/omnirom/omnigears/moresettings/MoreSettings.java
+++ b/src/org/omnirom/omnigears/moresettings/MoreSettings.java
@@ -27,6 +27,7 @@
 import android.support.v7.preference.PreferenceScreen;
 import android.support.v7.preference.Preference.OnPreferenceChangeListener;
 import android.support.v14.preference.SwitchPreference;
+import android.provider.Settings;
 import android.provider.SearchIndexableResource;
 import android.util.Log;
 
@@ -44,12 +45,14 @@
 import java.util.List;
 import java.util.ArrayList;
 
-public class MoreSettings extends SettingsPreferenceFragment implements Indexable {
+public class MoreSettings extends SettingsPreferenceFragment implements OnPreferenceChangeListener, Indexable {
     private static final String TAG = "MoreSettings";
     private static final String KEY_SHOW_DASHBOARD_COLUMNS = "show_dashboard_columns";
     private static final String KEY_HIDE_DASHBOARD_SUMMARY = "hide_dashboard_summary";
+    private static final String KEY_SCREEN_OFF_ANIMATION = "screen_off_animation";
 
     private SharedPreferences mAppPreferences;
+    private ListPreference mScreenOffAnimation;
 
     @Override
     public int getMetricsCategory() {
@@ -92,6 +95,26 @@
                 return true;
             }
         });
+
+        mScreenOffAnimation = (ListPreference) findPreference(KEY_SCREEN_OFF_ANIMATION);
+        int screenOffAnimation = Settings.Global.getInt(getContentResolver(),
+                Settings.Global.SCREEN_OFF_ANIMATION, 0);
+
+        mScreenOffAnimation.setValue(Integer.toString(screenOffAnimation));
+        mScreenOffAnimation.setSummary(mScreenOffAnimation.getEntry());
+        mScreenOffAnimation.setOnPreferenceChangeListener(this);
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        if (preference == mScreenOffAnimation) {
+            int value = Integer.valueOf((String) newValue);
+            int index = mScreenOffAnimation.findIndexOfValue((String) newValue);
+            mScreenOffAnimation.setSummary(mScreenOffAnimation.getEntries()[index]);
+            Settings.Global.putInt(getContentResolver(), Settings.Global.SCREEN_OFF_ANIMATION, value);
+            return true;
+        }
+        return false;
     }
 
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =