[2/2] OmniGears: add support Tinted System bar
thanks to ChameleonOs and Thinking Bridge for the base code
also thanks to @MuhammadAG for Actionbar implementation (Xposed-Tinted-Status-Bar)
this allow statusbar an navigationbar background to follow color from Top and Bottom of application
see https://plus.google.com/107971916147063794392/posts/Eaqn5UAvKDt
PS.3 :
change String (need help here xD)
hide some option if device unsupport navigation bar
add more option xD
PS.4 :
move option into new section
better string (i hope xD)
PS.5 :
update strings
PS7:
-fix remove from category
-another string rework
PS. 8 :
remove gradient option
Change-Id: Ibec4ad643dd447863b476807e6775ccd9aa693b8
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index e6e40dc..d5906e7 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -278,6 +278,25 @@
<item>ic_lockscreen_twitter_normal</item>
</string-array>
+ <!-- tinted statusbar -->
+ <string-array name="tinted_statusbar_entries" translatable="false">
+ <item>@string/tinted_statusbar_off</item>
+ <item>@string/tinted_statusbar_actionbar</item>
+ <item>@string/tinted_statusbar_system</item>
+ </string-array>
+
+ <string-array name="tinted_statusbar_values" translatable="false">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ </string-array>
+
+ <string-array name="tinted_statusbar_option_entries" translatable="false">
+ <item>@string/tinted_statusbar_statusbar</item>
+ <item>@string/tinted_statusbar_navbar</item>
+ <item>@string/tinted_statusbar_all</item>
+ </string-array>
+
<!-- Quick pulldown -->
<string-array name="quick_pulldown_entries" translatable="false">
<item>@string/quick_pulldown_off</item>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index dd0e3c8..8deadaa 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -417,6 +417,21 @@
<string name="icon_picker_sms">Messaging</string>
<string name="icon_picker_twitter">Twitter</string>
+ <!-- Tinted statusbar -->
+ <string name="tinted_statusbar_title">Colors</string>
+ <string name="title_tinted_statusbar">Dynamic color change</string>
+ <string name="title_tinted_statusbar_option">Apply color to</string>
+ <string name="tinted_statusbar_off">Disabled</string>
+ <string name="tinted_statusbar_actionbar">Action bar color</string>
+ <string name="tinted_statusbar_system">Screen color</string>
+ <string name="tinted_statusbar_statusbar">Status bar</string>
+ <string name="tinted_statusbar_navbar">Navigation bar</string>
+ <string name="tinted_statusbar_all">Both</string>
+ <string name="tinted_statusbar_filter_title">Reverse color</string>
+ <string name="tinted_statusbar_filter_summary">Enable using reverse color</string>
+ <string name="tinted_statusbar_transparent_title">Status bar opacity</string>
+ <string name="tinted_navbar_transparent_title">Navigation bar opacity</string>
+
<string name="quick_settings_category_title">Quick settings</string>
<!-- QuickSettings: Dynamic Row -->
diff --git a/res/xml/bars_settings.xml b/res/xml/bars_settings.xml
index 2dba831..80c116b 100644
--- a/res/xml/bars_settings.xml
+++ b/res/xml/bars_settings.xml
@@ -20,6 +20,54 @@
android:title="@string/interface_bars_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+ <!-- Tinted statusbar -->
+ <PreferenceCategory
+ android:key="category_tinted_statusbar"
+ android:title="@string/tinted_statusbar_title">
+
+ <ListPreference
+ android:key="tinted_statusbar"
+ android:title="@string/title_tinted_statusbar"
+ android:entries="@array/tinted_statusbar_entries"
+ android:entryValues="@array/tinted_statusbar_values"
+ android:defaultValue="0"
+ android:persistent="false" />
+
+ <ListPreference
+ android:key="tinted_statusbar_option"
+ android:title="@string/title_tinted_statusbar_option"
+ android:entries="@array/tinted_statusbar_option_entries"
+ android:entryValues="@array/tinted_statusbar_values"
+ android:defaultValue="0"
+ android:persistent="false" />
+
+ <org.omnirom.omnigears.preference.SystemCheckBoxPreference
+ android:key="status_bar_tinted_filter"
+ android:title="@string/tinted_statusbar_filter_title"
+ android:summary="@string/tinted_statusbar_filter_summary" />
+
+ <org.omnirom.omnigears.chameleonos.SeekBarPreference
+ android:key="tinted_statusbar_transparent"
+ android:persistent="false"
+ android:title="@string/tinted_statusbar_transparent_title"
+ android:max="100"
+ settings:min="0"
+ settings:interval="10"
+ settings:unitsLeft=""
+ settings:unitsRight="%" />
+
+ <org.omnirom.omnigears.chameleonos.SeekBarPreference
+ android:key="tinted_navbar_transparent"
+ android:persistent="false"
+ android:title="@string/tinted_navbar_transparent_title"
+ android:max="100"
+ settings:min="0"
+ settings:interval="10"
+ settings:unitsLeft=""
+ settings:unitsRight="%" />
+
+ </PreferenceCategory>
+
<!-- Status bar -->
<PreferenceCategory
android:key="category_status_bar"
diff --git a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
index c1ffc63..ba7effd 100644
--- a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
@@ -34,9 +34,12 @@
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
+import android.preference.PreferenceCategory;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
+import org.omnirom.omnigears.preference.SystemCheckBoxPreference;
+import org.omnirom.omnigears.chameleonos.SeekBarPreference;
import com.android.internal.util.omni.DeviceUtils;
import com.android.settings.Utils;
@@ -55,11 +58,19 @@
private static final String NETWORK_TRAFFIC_PERIOD = "network_traffic_period";
private static final String STATUS_BAR_NETWORK_ACTIVITY = "status_bar_network_activity";
private static final String SOFT_BACK_KILL_APP = "soft_back_kill_app";
+ private static final String TINTED_STATUSBAR = "tinted_statusbar";
+ private static final String TINTED_STATUSBAR_OPTION = "tinted_statusbar_option";
+ private static final String TINTED_STATUSBAR_FILTER = "status_bar_tinted_filter";
+ private static final String TINTED_STATUSBAR_TRANSPARENT = "tinted_statusbar_transparent";
+ private static final String TINTED_NAVBAR_TRANSPARENT = "tinted_navbar_transparent";
private static final String EMULATE_MENU_KEY = "emulate_menu_key";
+ private static final String CATEGORY_TINTED = "category_tinted_statusbar";
private CheckBoxPreference mStatusBarBrightnessControl;
private CheckBoxPreference mStatusBarNotifCount;
private CheckBoxPreference mQuickSettingsDynamic;
+ private ListPreference mTintedStatusbar;
+ private ListPreference mTintedStatusbarOption;
private ListPreference mQuickPulldown;
private ListPreference mSmartPulldown;
private ListPreference mNetTrafficState;
@@ -68,6 +79,9 @@
private CheckBoxPreference mStatusBarNetworkActivity;
private CheckBoxPreference mSoftBackKillApp;
private CheckBoxPreference mEmulateMenuKey;
+ private SystemCheckBoxPreference mTintedStatusbarFilter;
+ private SeekBarPreference mTintedStatusbarTransparency;
+ private SeekBarPreference mTintedNavbarTransparency;
private int mNetTrafficVal;
private int MASK_UP;
@@ -105,6 +119,28 @@
Settings.System.STATUS_BAR_NOTIF_COUNT, 0) == 1);
mStatusBarNotifCount.setOnPreferenceChangeListener(this);
+ final PreferenceCategory tintedCategory =
+ (PreferenceCategory) prefSet.findPreference(CATEGORY_TINTED);
+
+ mTintedStatusbar = (ListPreference) findPreference(TINTED_STATUSBAR);
+ int tintedStatusbar = Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_TINTED_COLOR, 0);
+ mTintedStatusbar.setValue(String.valueOf(tintedStatusbar));
+ mTintedStatusbar.setSummary(mTintedStatusbar.getEntry());
+ mTintedStatusbar.setOnPreferenceChangeListener(this);
+
+ mTintedStatusbarFilter = (SystemCheckBoxPreference) findPreference(TINTED_STATUSBAR_FILTER);
+ mTintedStatusbarFilter.setEnabled(tintedStatusbar != 0);
+
+ mTintedStatusbarTransparency = (SeekBarPreference) findPreference(TINTED_STATUSBAR_TRANSPARENT);
+ mTintedStatusbarTransparency.setValue(Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_TINTED_STATBAR_TRANSPARENT, 100));
+ mTintedStatusbarTransparency.setEnabled(tintedStatusbar != 0);
+ mTintedStatusbarTransparency.setOnPreferenceChangeListener(this);
+
+ mTintedStatusbarOption = (ListPreference) findPreference(TINTED_STATUSBAR_OPTION);
+ mTintedNavbarTransparency = (SeekBarPreference) findPreference(TINTED_NAVBAR_TRANSPARENT);
+
mQuickPulldown = (ListPreference) findPreference(QUICK_PULLDOWN);
mSmartPulldown = (ListPreference) findPreference(SMART_PULLDOWN);
@@ -173,8 +209,22 @@
// Hide navigation bar category on devices without navigation bar
if (!hasNavBar) {
+ tintedCategory.removePreference(mTintedStatusbarOption);
+ tintedCategory.removePreference(mTintedNavbarTransparency);
prefSet.removePreference(findPreference(CATEGORY_NAVBAR));
} else {
+ int tintedStatusbarOption = Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_TINTED_OPTION, 0);
+ mTintedStatusbarOption.setValue(String.valueOf(tintedStatusbarOption));
+ mTintedStatusbarOption.setSummary(mTintedStatusbarOption.getEntry());
+ mTintedStatusbarOption.setEnabled(tintedStatusbar != 0);
+ mTintedStatusbarOption.setOnPreferenceChangeListener(this);
+
+ mTintedNavbarTransparency.setValue(Settings.System.getInt(resolver,
+ Settings.System.STATUS_BAR_TINTED_NAVBAR_TRANSPARENT, 100));
+ mTintedNavbarTransparency.setEnabled(tintedStatusbar != 0);
+ mTintedNavbarTransparency.setOnPreferenceChangeListener(this);
+
mSoftBackKillApp = (CheckBoxPreference) prefSet.findPreference(SOFT_BACK_KILL_APP);
mSoftBackKillApp.setChecked(Settings.System.getInt(resolver,
Settings.System.SOFT_BACK_KILL_APP_ENABLE, 0) == 1);
@@ -207,6 +257,36 @@
boolean value = (Boolean) objValue;
Settings.System.putInt(resolver,
Settings.System.QUICK_SETTINGS_TILES_ROW, value ? 1 : 0);
+ } else if (preference == mTintedStatusbar) {
+ int val = Integer.parseInt((String) objValue);
+ int index = mTintedStatusbar.findIndexOfValue((String) objValue);
+ Settings.System.putInt(resolver,
+ Settings.System.STATUS_BAR_TINTED_COLOR, val);
+ mTintedStatusbar.setSummary(mTintedStatusbar.getEntries()[index]);
+ if (mTintedStatusbarOption != null) {
+ mTintedStatusbarOption.setEnabled(val != 0);
+ }
+ mTintedStatusbarFilter.setEnabled(val != 0);
+ mTintedStatusbarTransparency.setEnabled(val != 0);
+ if (mTintedNavbarTransparency != null) {
+ mTintedNavbarTransparency.setEnabled(val != 0);
+ }
+ } else if (preference == mTintedStatusbarOption) {
+ int val = Integer.parseInt((String) objValue);
+ int index = mTintedStatusbarOption.findIndexOfValue((String) objValue);
+ Settings.System.putInt(resolver,
+ Settings.System.STATUS_BAR_TINTED_OPTION, val);
+ mTintedStatusbarOption.setSummary(mTintedStatusbarOption.getEntries()[index]);
+ } else if (preference == mTintedStatusbarTransparency) {
+ int val = ((Integer)objValue).intValue();
+ Settings.System.putInt(resolver,
+ Settings.System.STATUS_BAR_TINTED_STATBAR_TRANSPARENT, val);
+ return true;
+ } else if (preference == mTintedNavbarTransparency) {
+ int val = ((Integer)objValue).intValue();
+ Settings.System.putInt(resolver,
+ Settings.System.STATUS_BAR_TINTED_NAVBAR_TRANSPARENT, val);
+ return true;
} else if (preference == mQuickPulldown) {
int val = Integer.parseInt((String) objValue);
int index = mQuickPulldown.findIndexOfValue((String) objValue);