diff options
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.java | 96 |
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(); + } +} |