[1/2] OmniGears: fix the device parts check

Change-Id: Ife326e698ceb6e519ec657bf4efe21b903837f5a
diff --git a/res/xml/omni_dashboard_fragment.xml b/res/xml/omni_dashboard_fragment.xml
index 0802e18..4694ff7 100644
--- a/res/xml/omni_dashboard_fragment.xml
+++ b/res/xml/omni_dashboard_fragment.xml
@@ -19,7 +19,7 @@
     android:title="@string/header_category_omni">
 
     <Preference
-        android:key="style_settings"
+        android:key="style_settings_new"
         android:title="@string/style_settings_title"
         android:summary="@string/style_settings_summary"
         android:icon="@drawable/ic_settings_style"
diff --git a/src/org/omnirom/omnigears/OmniDashboardFragment.java b/src/org/omnirom/omnigears/OmniDashboardFragment.java
index 3f105fc..318a600 100644
--- a/src/org/omnirom/omnigears/OmniDashboardFragment.java
+++ b/src/org/omnirom/omnigears/OmniDashboardFragment.java
@@ -18,6 +18,9 @@
 package org.omnirom.omnigears;
 
 import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.support.v7.preference.Preference;
 import android.provider.SearchIndexableResource;
 
 import com.android.internal.logging.nano.MetricsProto;
@@ -35,6 +38,18 @@
 
     private static final String TAG = "OmniDashboardFragment";
     public static final String CATEGORY_OMNI = "com.android.settings.category.ia.omni";
+    private static final String KEY_DEVICE_PARTS = "device_parts";
+
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        super.onCreatePreferences(savedInstanceState, rootKey);
+        if (!isDevicePartsSupported(getContext())) {
+            Preference pref = getPreferenceScreen().findPreference(KEY_DEVICE_PARTS);
+            if (pref != null) {
+                getPreferenceScreen().removePreference(pref);
+            }
+        }
+    }
 
     @Override
     public int getMetricsCategory() {
@@ -56,6 +71,16 @@
         return null;
     }
 
+    private static boolean isDevicePartsSupported(Context context) {
+        boolean devicePartsSupported = false;
+        try {
+            devicePartsSupported = context.getPackageManager().getPackageInfo(
+                    "org.omnirom.device", 0).versionCode > 0;
+        } catch (PackageManager.NameNotFoundException e) {
+        }
+        return devicePartsSupported;
+    }
+
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
 
@@ -65,5 +90,14 @@
                     sir.xmlResId = R.xml.omni_dashboard_fragment;
                     return Arrays.asList(sir);
                 }
+
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    ArrayList<String> result = new ArrayList<String>();
+                    if (!isDevicePartsSupported(context)) {
+                        result.add(KEY_DEVICE_PARTS);
+                    }
+                    return result;
+                }
             };
 }