[2/2] OmniGears: header image packs
Change-Id: I7281fb35fe57fd65cba19e5e242647fa54ebfd63
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 49fcb44..4aae610 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -198,6 +198,7 @@
<string name="notification_title">Notification panel</string>
<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>
<!-- 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 663ea0e..9d1c4b0 100644
--- a/res/xml/bars_settings.xml
+++ b/res/xml/bars_settings.xml
@@ -52,12 +52,17 @@
android:key="notification_category"
android:title="@string/notification_title" >
- <com.android.settings.preference.SystemCheckBoxPreference
+ <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"/>
+ <ListPreference
+ android:key="daylight_header_pack"
+ android:title="@string/daylight_header_pack_title"
+ android:persistent="false" />
+
<PreferenceScreen
android:title="@string/quick_settings_title"
android:summary="@string/quick_settings_summary" >
diff --git a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
index fffa58a..c94238e 100644
--- a/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/BarsSettings.java
@@ -22,10 +22,14 @@
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.net.TrafficStats;
import android.os.Bundle;
import android.os.RemoteException;
+import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
@@ -53,6 +57,12 @@
private static final String TAG = "BarsSettings";
private static final String NETWORK_TRAFFIC_ROOT = "category_network_traffic";
+ private static final String CUSTOM_HEADER_IMAGE = "status_bar_custom_header";
+ private static final String DAYLIGHT_HEADER_PACK = "daylight_header_pack";
+ private static final String DEFAULT_HEADER_PACKAGE = "com.android.systemui";
+
+ private ListPreference mDaylightHeaderPack;
+ private CheckBoxPreference mCustomHeaderImage;
@Override
protected int getMetricsCategory() {
@@ -71,19 +81,96 @@
TrafficStats.getTotalRxBytes() == TrafficStats.UNSUPPORTED) {
prefScreen.removePreference(findPreference(NETWORK_TRAFFIC_ROOT));
}
+
+ final boolean customHeaderImage = Settings.System.getInt(getContentResolver(),
+ Settings.System.STATUS_BAR_CUSTOM_HEADER, 0) == 1;
+ mCustomHeaderImage = (CheckBoxPreference) findPreference(CUSTOM_HEADER_IMAGE);
+ mCustomHeaderImage.setChecked(customHeaderImage);
+
+ String settingHeaderPackage = Settings.System.getString(getContentResolver(),
+ Settings.System.STATUS_BAR_DAYLIGHT_HEADER_PACK);
+ if (settingHeaderPackage == null) {
+ settingHeaderPackage = DEFAULT_HEADER_PACKAGE;
+ }
+ mDaylightHeaderPack = (ListPreference) findPreference(DAYLIGHT_HEADER_PACK);
+ mDaylightHeaderPack.setEntries(getAvailableHeaderPacksEntries());
+ mDaylightHeaderPack.setEntryValues(getAvailableHeaderPacksValues());
+
+ int valueIndex = mDaylightHeaderPack.findIndexOfValue(settingHeaderPackage);
+ if (valueIndex == -1) {
+ // no longer found
+ settingHeaderPackage = DEFAULT_HEADER_PACKAGE;
+ Settings.System.putString(getContentResolver(),
+ Settings.System.STATUS_BAR_DAYLIGHT_HEADER_PACK, settingHeaderPackage);
+ valueIndex = mDaylightHeaderPack.findIndexOfValue(settingHeaderPackage);
+ }
+ mDaylightHeaderPack.setValueIndex(valueIndex >= 0 ? valueIndex : 0);
+ mDaylightHeaderPack.setSummary(mDaylightHeaderPack.getEntry());
+ mDaylightHeaderPack.setOnPreferenceChangeListener(this);
+ mDaylightHeaderPack.setEnabled(customHeaderImage);
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+ if (preference == mCustomHeaderImage) {
+ 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.
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
+ if (preference == mDaylightHeaderPack) {
+ String value = (String) newValue;
+ Settings.System.putString(getContentResolver(),
+ Settings.System.STATUS_BAR_DAYLIGHT_HEADER_PACK, value);
+ int valueIndex = mDaylightHeaderPack.findIndexOfValue(value);
+ mDaylightHeaderPack.setSummary(mDaylightHeaderPack.getEntries()[valueIndex]);
+ }
return true;
}
+ private String[] getAvailableHeaderPacksValues() {
+ List<String> headerPacks = new ArrayList<String>();
+ Intent i = new Intent();
+ PackageManager packageManager = getPackageManager();
+ i.setAction("org.omnirom.DaylightHeaderPack");
+ for (ResolveInfo r : packageManager.queryIntentActivities(i, 0)) {
+ String packageName = r.activityInfo.packageName;
+ if (packageName.equals(DEFAULT_HEADER_PACKAGE)) {
+ headerPacks.add(0, packageName);
+ } else {
+ headerPacks.add(packageName);
+ }
+ }
+ return headerPacks.toArray(new String[headerPacks.size()]);
+ }
+
+ private String[] getAvailableHeaderPacksEntries() {
+ List<String> headerPacks = new ArrayList<String>();
+ Intent i = new Intent();
+ PackageManager packageManager = getPackageManager();
+ i.setAction("org.omnirom.DaylightHeaderPack");
+ for (ResolveInfo r : packageManager.queryIntentActivities(i, 0)) {
+ String packageName = r.activityInfo.packageName;
+ String label = r.activityInfo.loadLabel(getPackageManager()).toString();
+ if (label == null) {
+ label = r.activityInfo.packageName;
+ }
+ if (packageName.equals(DEFAULT_HEADER_PACKAGE)) {
+ headerPacks.add(0, label);
+ } else {
+ headerPacks.add(label);
+ }
+ }
+ return headerPacks.toArray(new String[headerPacks.size()]);
+ }
+
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override