summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java96
1 files changed, 96 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java
new file mode 100644
index 000000000..c58593f77
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java
@@ -0,0 +1,96 @@
+package de.danoeh.antennapod.activity;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.res.Resources.Theme;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceScreen;
+
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.preferences.PreferenceController;
+
+/**
+ * PreferenceActivity for API 10. In order to change the behavior of the preference UI, see
+ * PreferenceController.
+ */
+public class PreferenceActivityGingerbread extends android.preference.PreferenceActivity {
+ private static final String TAG = "PreferenceActivity";
+
+ private PreferenceController preferenceController;
+
+ private final PreferenceController.PreferenceUI preferenceUI = new PreferenceController.PreferenceUI() {
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public Preference findPreference(CharSequence key) {
+ return PreferenceActivityGingerbread.this.findPreference(key);
+ }
+
+ @Override
+ public Activity getActivity() {
+ return PreferenceActivityGingerbread.this;
+ }
+ };
+
+ @SuppressLint("NewApi")
+ @SuppressWarnings("deprecation")
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ setTheme(UserPreferences.getTheme());
+ super.onCreate(savedInstanceState);
+
+ addPreferencesFromResource(R.xml.preferences);
+ preferenceController = new PreferenceController(preferenceUI);
+ preferenceController.onCreate();
+ }
+
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ preferenceController.onResume();
+ }
+
+ @Override
+ protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
+ theme.applyStyle(UserPreferences.getTheme(), true);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ preferenceController.onActivityResult(requestCode, resultCode, data);
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
+ Preference preference) {
+ super.onPreferenceTreeClick(preferenceScreen, preference);
+ if (preference != null)
+ if (preference instanceof PreferenceScreen)
+ if (((PreferenceScreen) preference).getDialog() != null)
+ ((PreferenceScreen) preference)
+ .getDialog()
+ .getWindow()
+ .getDecorView()
+ .setBackgroundDrawable(
+ this.getWindow().getDecorView()
+ .getBackground().getConstantState()
+ .newDrawable()
+ );
+ return false;
+ }
+
+ @Override
+ public void onBackPressed() {
+ // The default back button behavior has to be overwritten because changing the theme clears the back stack
+ Intent destIntent = new Intent(this, MainActivity.class);
+ destIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(destIntent);
+ finish();
+ }
+}