OmniGears: add support for chronus weather icon packs
Change-Id: I61a77942fd645869c7b401e456a194d36ac4e4cd
diff --git a/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java b/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
index 406abb2..f0b4ff1 100644
--- a/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
@@ -68,6 +68,7 @@
private static final String STATUS_BAR_HEADER_WEATHER = "status_bar_header_weather";
private static final String DEFAULT_WEATHER_ICON_PACKAGE = "org.omnirom.omnijaws";
private static final String WEATHER_SERVICE_PACKAGE = "org.omnirom.omnijaws";
+ private static final String CHRONUS_ICON_PACK_INTENT = "com.dvtonder.chronus.ICON_PACK";
private static final String LOCK_CLOCK_PACKAGE="com.cyanogenmod.lockclock";
private static final String DASHBOARD_COLUMNS = "dashboard_columns";
@@ -98,8 +99,12 @@
settingHeaderPackage = DEFAULT_WEATHER_ICON_PACKAGE;
}
mWeatherIconPack = (ListPreference) findPreference(WEATHER_ICON_PACK);
- mWeatherIconPack.setEntries(getAvailableWeatherIconPacksEntries());
- mWeatherIconPack.setEntryValues(getAvailableWeatherIconPacksValues());
+
+ List<String> entries = new ArrayList<String>();
+ List<String> values = new ArrayList<String>();
+ getAvailableWeatherIconPacks(entries, values);
+ mWeatherIconPack.setEntries(entries.toArray(new String[entries.size()]));
+ mWeatherIconPack.setEntryValues(values.toArray(new String[values.size()]));
int valueIndex = mWeatherIconPack.findIndexOfValue(settingHeaderPackage);
if (valueIndex == -1) {
@@ -174,50 +179,47 @@
return PackageUtils.isAvailableApp(LOCK_CLOCK_PACKAGE, getActivity());
}
- private String[] getAvailableWeatherIconPacksValues() {
- List<String> headerPacks = new ArrayList<String>();
+ private void getAvailableWeatherIconPacks(List<String> entries, List<String> values) {
Intent i = new Intent();
PackageManager packageManager = getPackageManager();
i.setAction("org.omnirom.WeatherIconPack");
for (ResolveInfo r : packageManager.queryIntentActivities(i, 0)) {
String packageName = r.activityInfo.packageName;
if (packageName.equals(DEFAULT_WEATHER_ICON_PACKAGE)) {
- headerPacks.add(0, r.activityInfo.name);
+ values.add(0, r.activityInfo.name);
} else {
- headerPacks.add(r.activityInfo.name);
+ values.add(r.activityInfo.name);
}
- }
- if (isLockClockInstalled()) {
- headerPacks.add(LOCK_CLOCK_PACKAGE + ".weather");
- headerPacks.add(LOCK_CLOCK_PACKAGE + ".weather_color");
- headerPacks.add(LOCK_CLOCK_PACKAGE + ".weather_vclouds");
- }
- return headerPacks.toArray(new String[headerPacks.size()]);
- }
-
- private String[] getAvailableWeatherIconPacksEntries() {
- List<String> headerPacks = new ArrayList<String>();
- Intent i = new Intent();
- PackageManager packageManager = getPackageManager();
- i.setAction("org.omnirom.WeatherIconPack");
- 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_WEATHER_ICON_PACKAGE)) {
- headerPacks.add(0, label);
+ entries.add(0, label);
} else {
- headerPacks.add(label);
+ entries.add(label);
}
}
- if (isLockClockInstalled()) {
- headerPacks.add("LockClock (white)");
- headerPacks.add("LockClock (color)");
- headerPacks.add("LockClock (vclouds)");
+ i = new Intent(Intent.ACTION_MAIN);
+ i.addCategory(CHRONUS_ICON_PACK_INTENT);
+ for (ResolveInfo r : packageManager.queryIntentActivities(i, 0)) {
+ String packageName = r.activityInfo.packageName;
+ values.add(packageName + ".weather");
+ String label = r.activityInfo.loadLabel(getPackageManager()).toString();
+ if (label == null) {
+ label = r.activityInfo.packageName;
+ }
+ entries.add(label);
}
- return headerPacks.toArray(new String[headerPacks.size()]);
+ if (isLockClockInstalled()) {
+ values.add(LOCK_CLOCK_PACKAGE + ".weather");
+ values.add(LOCK_CLOCK_PACKAGE + ".weather_color");
+ values.add(LOCK_CLOCK_PACKAGE + ".weather_vclouds");
+
+ entries.add("LockClock (white)");
+ entries.add("LockClock (color)");
+ entries.add("LockClock (vclouds)");
+ }
}
private void updateWeatherSettings() {