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() {