summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/activity
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2019-06-13 23:09:59 +0200
committerByteHamster <info@bytehamster.com>2019-06-13 23:12:41 +0200
commit99acff3b8feee5f69acb138a328aa323da8109dc (patch)
treeeea59f7684b22b8e00e8ae538b383f3f2c82963e /app/src/main/java/de/danoeh/antennapod/activity
parent3331b663e144204ae21fe7cbba637baa907036b6 (diff)
downloadAntennaPod-99acff3b8feee5f69acb138a328aa323da8109dc.zip
Restructured preferences code
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java193
1 files changed, 68 insertions, 125 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
index 452e91bd3..c13f713e0 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
@@ -1,12 +1,9 @@
package de.danoeh.antennapod.activity;
-import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
-import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
-import android.support.v7.preference.PreferenceScreen;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
@@ -15,56 +12,25 @@ import android.widget.FrameLayout;
import com.bytehamster.lib.preferencesearch.SearchPreferenceResult;
import com.bytehamster.lib.preferencesearch.SearchPreferenceResultListener;
-import java.lang.ref.WeakReference;
-
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.preferences.PreferenceController;
+import de.danoeh.antennapod.fragment.preferences.AutoDownloadPreferencesFragment;
+import de.danoeh.antennapod.fragment.preferences.FlattrPreferencesFragment;
+import de.danoeh.antennapod.fragment.preferences.GpodderPreferencesFragment;
+import de.danoeh.antennapod.fragment.preferences.IntegrationsPreferencesFragment;
+import de.danoeh.antennapod.fragment.preferences.MainPreferencesFragment;
+import de.danoeh.antennapod.fragment.preferences.NetworkPreferencesFragment;
+import de.danoeh.antennapod.fragment.preferences.PlaybackPreferencesFragment;
+import de.danoeh.antennapod.fragment.preferences.StoragePreferencesFragment;
+import de.danoeh.antennapod.fragment.preferences.UserInterfacePreferencesFragment;
/**
* PreferenceActivity for API 11+. In order to change the behavior of the preference UI, see
* PreferenceController.
*/
public class PreferenceActivity extends AppCompatActivity implements SearchPreferenceResultListener {
-
- public static final String PARAM_RESOURCE = "resource";
- private static WeakReference<PreferenceActivity> instance;
- private PreferenceController preferenceController;
- private final PreferenceController.PreferenceUI preferenceUI = new PreferenceController.PreferenceUI() {
- private PreferenceFragmentCompat fragment;
-
- @Override
- public void setFragment(PreferenceFragmentCompat fragment) {
- this.fragment = fragment;
- }
-
- @Override
- public PreferenceFragmentCompat getFragment() {
- return fragment;
- }
-
- @Override
- public Preference findPreference(CharSequence key) {
- return fragment.findPreference(key);
- }
-
- @Override
- public PreferenceScreen getPreferenceScreen() {
- return fragment.getPreferenceScreen();
- }
-
- @Override
- public AppCompatActivity getActivity() {
- return PreferenceActivity.this;
- }
- };
-
@Override
protected void onCreate(Bundle savedInstanceState) {
- // This must be the FIRST thing we do, otherwise other code may not have the
- // reference it needs
- instance = new WeakReference<>(this);
-
setTheme(UserPreferences.getTheme());
super.onCreate(savedInstanceState);
@@ -73,38 +39,67 @@ public class PreferenceActivity extends AppCompatActivity implements SearchPrefe
ab.setDisplayHomeAsUpEnabled(true);
}
- // set up layout
FrameLayout root = new FrameLayout(this);
root.setId(R.id.content);
root.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
setContentView(root);
- // we need to create the PreferenceController before the MainFragment
- // since the MainFragment depends on the preferenceController already being created
- preferenceController = new PreferenceController(preferenceUI);
+ getSupportFragmentManager().beginTransaction().replace(R.id.content, new MainPreferencesFragment()).commit();
- showPreferenceScreen(R.xml.preferences, false);
}
- private void showPreferenceScreen(int screen, boolean addHistory) {
- PreferenceFragmentCompat prefFragment = new MainFragment();
- preferenceUI.setFragment(prefFragment);
- Bundle args = new Bundle();
- args.putInt(PARAM_RESOURCE, screen);
- prefFragment.setArguments(args);
- if (addHistory) {
- getSupportFragmentManager().beginTransaction().replace(R.id.content, prefFragment)
- .addToBackStack(getString(PreferenceController.getTitleOfPage(screen))).commit();
- } else {
- getSupportFragmentManager().beginTransaction().replace(R.id.content, prefFragment).commit();
+ private PreferenceFragmentCompat getPreferenceScreen(int screen) {
+ PreferenceFragmentCompat prefFragment = null;
+
+ if (screen == R.xml.preferences_user_interface) {
+ prefFragment = new UserInterfacePreferencesFragment();
+ } else if (screen == R.xml.preferences_integrations) {
+ prefFragment = new IntegrationsPreferencesFragment();
+ } else if (screen == R.xml.preferences_network) {
+ prefFragment = new NetworkPreferencesFragment();
+ } else if (screen == R.xml.preferences_storage) {
+ prefFragment = new StoragePreferencesFragment();
+ } else if (screen == R.xml.preferences_autodownload) {
+ prefFragment = new AutoDownloadPreferencesFragment();
+ } else if (screen == R.xml.preferences_gpodder) {
+ prefFragment = new GpodderPreferencesFragment();
+ } else if (screen == R.xml.preferences_flattr) {
+ prefFragment = new FlattrPreferencesFragment();
+ } else if (screen == R.xml.preferences_playback) {
+ prefFragment = new PlaybackPreferencesFragment();
}
+ return prefFragment;
}
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- preferenceController.onActivityResult(requestCode, resultCode, data);
+ public static int getTitleOfPage(int preferences) {
+ switch (preferences) {
+ case R.xml.preferences_network:
+ return R.string.network_pref;
+ case R.xml.preferences_autodownload:
+ return R.string.pref_automatic_download_title;
+ case R.xml.preferences_playback:
+ return R.string.playback_pref;
+ case R.xml.preferences_storage:
+ return R.string.storage_pref;
+ case R.xml.preferences_user_interface:
+ return R.string.user_interface_label;
+ case R.xml.preferences_integrations:
+ return R.string.integrations_label;
+ case R.xml.preferences_flattr:
+ return R.string.flattr_label;
+ case R.xml.preferences_gpodder:
+ return R.string.gpodnet_main_label;
+ default:
+ return R.string.settings_label;
+ }
+ }
+
+ public PreferenceFragmentCompat openScreen(int screen) {
+ PreferenceFragmentCompat fragment = getPreferenceScreen(screen);
+ getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment)
+ .addToBackStack(getString(getTitleOfPage(screen))).commit();
+ return fragment;
}
@Override
@@ -115,72 +110,20 @@ public class PreferenceActivity extends AppCompatActivity implements SearchPrefe
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case android.R.id.home:
- if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
- finish();
- } else {
- getSupportFragmentManager().popBackStack();
- }
- return true;
- default:
- return false;
+ if (item.getItemId() == android.R.id.home) {
+ if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
+ finish();
+ } else {
+ getSupportFragmentManager().popBackStack();
+ }
+ return true;
}
+ return false;
}
@Override
public void onSearchResultClicked(SearchPreferenceResult result) {
- showPreferenceScreen(result.getResourceFile(), true);
- result.highlight(preferenceUI.getFragment());
- }
-
- public static class MainFragment extends PreferenceFragmentCompat {
- private int screen;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setRetainInstance(true);
- }
-
- @Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- screen = getArguments().getInt(PARAM_RESOURCE);
- addPreferencesFromResource(screen);
- PreferenceActivity activity = instance.get();
- if (activity != null && activity.preferenceController != null) {
- activity.preferenceUI.setFragment(this);
- activity.preferenceController.onCreate(screen);
- }
- }
-
- @Override
- public void onResume() {
- super.onResume();
- PreferenceActivity activity = instance.get();
- if(activity != null && activity.preferenceController != null) {
- activity.setTitle(PreferenceController.getTitleOfPage(screen));
- activity.preferenceUI.setFragment(this);
- activity.preferenceController.onResume(screen);
- }
- }
-
- @Override
- public void onPause() {
- PreferenceActivity activity = instance.get();
- if (screen == R.xml.preferences_gpodder) {
- activity.preferenceController.unregisterGpodnet();
- }
- super.onPause();
- }
-
- @Override
- public void onStop() {
- PreferenceActivity activity = instance.get();
- if (screen == R.xml.preferences_storage) {
- activity.preferenceController.unsubscribeExportSubscription();
- }
- super.onStop();
- }
+ PreferenceFragmentCompat fragment = openScreen(result.getResourceFile());
+ result.highlight(fragment);
}
}