OmniGears: Style : New preference category for OMS application

Launch application if installed or propose to install it else

Change-Id: Iafff34d4ace189f2f16b88ef7eb39e34a65e8830
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 8e3e910..7d56eab 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -416,6 +416,11 @@
     <!-- Hostname setting -->
     <string name="device_hostname">Device hostname</string>
 
+    <!-- OMS -->
+    <string name="theming_title">Theming</string>
+    <string name="oms_app_title">Substratum theme engine</string>
+    <string name="oms_app_summary">Start Substratum experience</string>
+
     <string name="status_bar_ime_notification_title">Show IME notification</string>
     <string name="status_bar_ime_notification_summary">If navigation bar is not available</string>
     <string name="navigation_bar_ime_button_title">Show IME navigation bar button</string>
@@ -435,7 +440,7 @@
     <string name="omni_notification_light_settings_summary">Customization of notification led lights for applications</string>
     <string name="omni_battery_light_settings_summary">Customization of notification led lights for battery</string>
 
-    <string name="night_mode_title">Theme</string>
+    <string name="night_mode_title">Light/Dark theme</string>
     <string name="night_mode_summary">%s</string>
     <string name="night_mode_no">Light</string>
     <string name="night_mode_yes">Dark</string>
diff --git a/res/xml/style_settings.xml b/res/xml/style_settings.xml
index 3f55725..f3474e5 100644
--- a/res/xml/style_settings.xml
+++ b/res/xml/style_settings.xml
@@ -17,23 +17,33 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
 
-        <ListPreference
-            android:key="night_mode"
-            android:title="@string/night_mode_title"
-            settings:keywords="@string/keywords_display_night_mode"
-            android:summary="@string/night_mode_summary"
-            android:entries="@array/night_mode_entries"
-            android:entryValues="@array/night_mode_values" />
+        <PreferenceCategory
+            android:key="category_theming"
+            android:title="@string/theming_title">
 
-        <PreferenceScreen
-            android:key="custom_wall_browse"
-            android:title="@string/custom_wall_browse_title"
-            android:summary="@string/custom_wall_browse_summary"
-            android:persistent="false" >
-            <intent android:action="android.intent.action.MAIN"
-                    android:targetPackage="org.omnirom.omnistyle"
-                    android:targetClass="org.omnirom.omnistyle.BrowseWallsActivity" />
+            <Preference
+                android:key="oms_app"
+                android:title="@string/oms_app_title"
+                android:summary="@string/oms_app_summary"/>
+
+            <ListPreference
+                android:key="night_mode"
+                android:title="@string/night_mode_title"
+                settings:keywords="@string/keywords_display_night_mode"
+                android:summary="@string/night_mode_summary"
+                android:entries="@array/night_mode_entries"
+                android:entryValues="@array/night_mode_values" />
+
+            <PreferenceScreen
+                android:key="custom_wall_browse"
+                android:title="@string/custom_wall_browse_title"
+                android:summary="@string/custom_wall_browse_summary"
+                android:persistent="false" >
+                <intent android:action="android.intent.action.MAIN"
+                        android:targetPackage="org.omnirom.omnistyle"
+                        android:targetClass="org.omnirom.omnistyle.BrowseWallsActivity" />
             </PreferenceScreen>
+        </PreferenceCategory>
 
         <PreferenceCategory
             android:key="category_statusbar"
@@ -92,6 +102,5 @@
                 settings:unitsRight="@string/unit_percent"
                 android:persistent="false"
                 android:dependency="status_bar_custom_header" />
-
         </PreferenceCategory>
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
index af98834..061e269 100644
--- a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
@@ -28,6 +28,7 @@
 import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
 import android.net.TrafficStats;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.support.v7.preference.CheckBoxPreference;
@@ -74,6 +75,8 @@
     private static final String CUSTOM_HEADER_BROWSE = "custom_header_browse";
     private static final String STATUS_BAR_CUSTOM_HEADER = "status_bar_custom_header";
     private static final String KEY_NIGHT_MODE = "night_mode";
+    private static final String KEY_OMS_APP = "oms_app";
+
 
     private ListPreference mDaylightHeaderPack;
     private SeekBarPreference mHeaderShadow;
@@ -81,6 +84,7 @@
     private String mDaylightHeaderProvider;
     private PreferenceScreen mHeaderBrowse;
     private ListPreference mNightModePreference;
+    private Preference mOmsApp;
 
     @Override
     protected int getMetricsCategory() {
@@ -149,6 +153,20 @@
             mNightModePreference.setValue(String.valueOf(currentNightMode));
             mNightModePreference.setOnPreferenceChangeListener(this);
         }
+        mOmsApp = (Preference) findPreference(KEY_OMS_APP);
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(Preference preference) {
+        if (preference == mOmsApp) {
+            Intent omsIntent = getPackageManager().getLaunchIntentForPackage("projekt.substratum");
+            if (omsIntent != null) {
+                startActivity(omsIntent);
+            } else {
+                downloadOmsApp();
+            }
+        }
+        return super.onPreferenceTreeClick(preference);
     }
 
     @Override
@@ -287,4 +305,10 @@
                     return result;
                 }
             };
+
+    private void downloadOmsApp(){
+        Intent omsDownloadIntent = new Intent(Intent.ACTION_VIEW);
+        omsDownloadIntent.setData(Uri.parse("https://play.google.com/store/apps/details?id=projekt.substratum"));
+        startActivity(omsDownloadIntent);
+    }
 }