[2/2] OmniGears: add config to apply custom shadow on header images

To make text and status icons better visible with bright
images if required.

Change-Id: Idafa96bf1e07c91ef6e3e62efbe6aa505d9d9892
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index e7fe400..6e9a6c1 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -217,6 +217,9 @@
     <string name="status_bar_custom_header_title">Custom header image</string>
     <string name="status_bar_custom_header_summary">Enable notification panel header image</string>
     <string name="daylight_header_pack_title">Header image pack</string>
+    <string name="status_bar_custom_header_shadow_title">Header image shadow</string>
+    <string name="status_bar_custom_header_shadow_summary">For better visibility on bright images</string>
+    <string name="unit_percent">\u0025</string>
 
     <!-- Network traffic -->
     <string name="network_traffic_title">Network traffic</string>
diff --git a/res/xml/bars_settings.xml b/res/xml/bars_settings.xml
index 12c196e..80bd7b2 100644
--- a/res/xml/bars_settings.xml
+++ b/res/xml/bars_settings.xml
@@ -71,15 +71,29 @@
             android:title="@string/notification_title" >
 
             <CheckBoxPreference
-                    android:key="status_bar_custom_header"
-                    android:title="@string/status_bar_custom_header_title"
-                    android:summary="@string/status_bar_custom_header_summary"
-                    android:defaultValue="false"/>
+                android:key="status_bar_custom_header"
+                android:title="@string/status_bar_custom_header_title"
+                android:summary="@string/status_bar_custom_header_summary"
+                android:defaultValue="false"
+                android:persistent="false" />
 
             <ListPreference
                 android:key="daylight_header_pack"
                 android:title="@string/daylight_header_pack_title"
-                android:persistent="false" />
+                android:persistent="false"
+                android:dependency="status_bar_custom_header" />
+
+            <com.android.settings.preference.SeekBarPreference
+                android:key="status_bar_custom_header_shadow"
+                android:title="@string/status_bar_custom_header_shadow_title"
+                android:summary="@string/status_bar_custom_header_shadow_summary"
+                android:defaultValue="0"
+                android:max="100"
+                settings:min="0"
+                settings:unitsLeft=""
+                settings:unitsRight="@string/unit_percent"
+                android:persistent="false"
+                android:dependency="status_bar_custom_header" />
 
             <PreferenceScreen
                     android:title="@string/quick_settings_title"
diff --git a/src/org/omnirom/omnigears/ButtonBrightnessSettings.java b/src/org/omnirom/omnigears/ButtonBrightnessSettings.java
index a0e5d28..e5b56fd 100644
--- a/src/org/omnirom/omnigears/ButtonBrightnessSettings.java
+++ b/src/org/omnirom/omnigears/ButtonBrightnessSettings.java
@@ -82,7 +82,7 @@
         addPreferencesFromResource(R.xml.button_brightness_settings);
 
         PreferenceScreen prefSet = getPreferenceScreen();
-        ContentResolver resolver = getActivity().getContentResolver();
+        ContentResolver resolver = getContentResolver();
 
         mNoButtonBrightness = (CheckBoxPreference) findPreference(KEY_BUTTON_NO_BRIGHTNESS);
         mNoButtonBrightness.setChecked(Settings.System.getInt(resolver,
@@ -95,7 +95,7 @@
         mManualButtonBrightnessNew = (SeekBarPreference) findPreference(KEY_BUTTON_MANUAL_BRIGHTNESS_NEW);
         final int customButtonBrightness = getResources().getInteger(
                 com.android.internal.R.integer.config_button_brightness_default);
-        final int currentBrightness = Settings.System.getInt(getContext().getContentResolver(),
+        final int currentBrightness = Settings.System.getInt(resolver,
                 Settings.System.CUSTOM_BUTTON_BRIGHTNESS, customButtonBrightness);
         mManualButtonBrightnessNew.setValue(currentBrightness);
         mManualButtonBrightnessNew.setOnPreferenceChangeListener(this);
@@ -131,13 +131,13 @@
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
         if (preference == mNoButtonBrightness) {
             boolean checked = ((CheckBoxPreference)preference).isChecked();
-            Settings.System.putInt(getActivity().getContentResolver(),
+            Settings.System.putInt(getContentResolver(),
                     Settings.System.CUSTOM_BUTTON_DISABLE_BRIGHTNESS, checked ? 1:0);
             updateEnablement();
             return true;
         } else if (preference == mLinkButtonBrightness) {
             boolean checked = ((CheckBoxPreference)preference).isChecked();
-            Settings.System.putInt(getActivity().getContentResolver(),
+            Settings.System.putInt(getContentResolver(),
                     Settings.System.CUSTOM_BUTTON_USE_SCREEN_BRIGHTNESS, checked ? 1:0);
             updateEnablement();
             return true;
@@ -155,7 +155,7 @@
                     Settings.System.BUTTON_BACKLIGHT_TIMEOUT, buttonTimeout);
         } else if (preference == mManualButtonBrightnessNew) {
             int buttonBrightness = (Integer) objValue;
-            Settings.System.putInt(getContext().getContentResolver(),
+            Settings.System.putInt(getContentResolver(),
                     Settings.System.CUSTOM_BUTTON_BRIGHTNESS, buttonBrightness);
         } else {
             return false;
diff --git a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
index 7d66027..39710c3 100644
--- a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
@@ -38,6 +38,7 @@
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
+import android.util.Log;
 
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.R;
@@ -61,10 +62,12 @@
     private static final String DAYLIGHT_HEADER_PACK = "daylight_header_pack";
     private static final String DEFAULT_HEADER_PACKAGE = "com.android.systemui";
     private static final String NAVIGATIONBAR_ROOT = "category_navigationbar";
-    private static final String TABLET_NAVIGATION_BAR = "enable_tablet_navigationr";
+    private static final String TABLET_NAVIGATION_BAR = "enable_tablet_navigation";
+    private static final String CUSTOM_HEADER_IMAGE_SHADOW = "status_bar_custom_header_shadow";
 
     private ListPreference mDaylightHeaderPack;
     private CheckBoxPreference mCustomHeaderImage;
+    private SeekBarPreference mHeaderShadow;
 
     @Override
     protected int getMetricsCategory() {
@@ -119,7 +122,12 @@
         mDaylightHeaderPack.setValueIndex(valueIndex >= 0 ? valueIndex : 0);
         mDaylightHeaderPack.setSummary(mDaylightHeaderPack.getEntry());
         mDaylightHeaderPack.setOnPreferenceChangeListener(this);
-        mDaylightHeaderPack.setEnabled(customHeaderImage);
+
+        mHeaderShadow = (SeekBarPreference) findPreference(CUSTOM_HEADER_IMAGE_SHADOW);
+        final int headerShadow = Settings.System.getInt(getContentResolver(),
+                Settings.System.STATUS_BAR_CUSTOM_HEADER_SHADOW, 0);
+        mHeaderShadow.setValue((int)((headerShadow / 255) * 100));
+        mHeaderShadow.setOnPreferenceChangeListener(this);
     }
 
     @Override
@@ -128,7 +136,6 @@
             final boolean value = ((CheckBoxPreference)preference).isChecked();
             Settings.System.putInt(getContentResolver(),
                     Settings.System.STATUS_BAR_CUSTOM_HEADER, value ? 1 : 0);
-            mDaylightHeaderPack.setEnabled(value);
             return true;
         }
         // If we didn't handle it, let preferences handle it.
@@ -143,6 +150,11 @@
                     Settings.System.STATUS_BAR_DAYLIGHT_HEADER_PACK, value);
             int valueIndex = mDaylightHeaderPack.findIndexOfValue(value);
             mDaylightHeaderPack.setSummary(mDaylightHeaderPack.getEntries()[valueIndex]);
+         } else if (preference == mHeaderShadow) {
+            Integer headerShadow = (Integer) newValue;
+            int realHeaderValue = (int) (((double) headerShadow / 100) * 255);
+            Settings.System.putInt(getContentResolver(),
+                    Settings.System.STATUS_BAR_CUSTOM_HEADER_SHADOW, realHeaderValue);
         }
         return true;
     }