Fix the way we select and apply Themes

- do not override the DialogWhenLarge ones (they have their purpose)
- apply the correct Theme to SubSettings and then as a consequence
to the SwitchBar

Change-Id: I83adabf72da03051f03fbd2121e1e71217fc0c6a
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index a0f43fb..bb13fc3 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -482,11 +482,16 @@
         mIsShowingDashboard = className.equals(Settings.class.getName());
         final boolean isSubSettings = className.equals(SubSettings.class.getName());
 
-        // If this is a sub settings or not the main Dashboard and not a Shortcut and not initial
-        // Fragment then apply the correct theme for the ActionBar content inset
+        // If this is a sub settings or not the main Dashboard and not a Shortcut and an initial
+        // Fragment then apply the SubSettings theme for the ActionBar content insets
         if (isSubSettings ||
-                (!mIsShowingDashboard && !mIsShortcut && (initialFragmentName == null))) {
-            setTheme(R.style.Theme_SubSettings);
+                (!mIsShowingDashboard && !mIsShortcut && (initialFragmentName != null))) {
+            // Check also that we are not a Theme Dialog as we don't want to override them
+            final int themeResId = getThemeResId();
+            if (themeResId != R.style.Theme_DialogWhenLarge &&
+                    themeResId != R.style.Theme_SubSettingsDialogWhenLarge) {
+                setTheme(R.style.Theme_SubSettings);
+            }
         }
 
         setContentView(mIsShowingDashboard ?