summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2018-04-22 20:48:00 +0200
committerByteHamster <info@bytehamster.com>2018-04-22 20:48:00 +0200
commit8b72f3514740ff2f5a5b085355081a2751850756 (patch)
tree5f09964015f94622ef74cb78d2c8614b36eaec1a /app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
parent8c6f40b0a272851110c9c073c75b9e6521e880d0 (diff)
parent94bf3cd7346343317b439641236264273e418365 (diff)
downloadAntennaPod-8b72f3514740ff2f5a5b085355081a2751850756.zip
Merge branch 'develop' into exo-player
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java63
1 files changed, 54 insertions, 9 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 12d918a76..83578ff5c 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
@@ -5,6 +5,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
+import android.preference.PreferenceScreen;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
@@ -24,13 +25,25 @@ import de.danoeh.antennapod.preferences.PreferenceController;
*/
public class PreferenceActivity extends AppCompatActivity {
+ public static final String PARAM_RESOURCE = "resource";
private static WeakReference<PreferenceActivity> instance;
private PreferenceController preferenceController;
- private MainFragment prefFragment;
private final PreferenceController.PreferenceUI preferenceUI = new PreferenceController.PreferenceUI() {
+ private PreferenceFragment fragment;
+
+ @Override
+ public void setFragment(PreferenceFragment fragment) {
+ this.fragment = fragment;
+ }
+
@Override
public Preference findPreference(CharSequence key) {
- return prefFragment.findPreference(key);
+ return fragment.findPreference(key);
+ }
+
+ @Override
+ public PreferenceScreen getPreferenceScreen() {
+ return fragment.getPreferenceScreen();
}
@Override
@@ -64,7 +77,11 @@ public class PreferenceActivity extends AppCompatActivity {
// since the MainFragment depends on the preferenceController already being created
preferenceController = new PreferenceController(preferenceUI);
- prefFragment = new MainFragment();
+ PreferenceFragment prefFragment = new MainFragment();
+ preferenceUI.setFragment(prefFragment);
+ Bundle args = new Bundle();
+ args.putInt(PARAM_RESOURCE, R.xml.preferences);
+ prefFragment.setArguments(args);
getFragmentManager().beginTransaction().replace(R.id.content, prefFragment).commit();
}
@@ -84,7 +101,11 @@ public class PreferenceActivity extends AppCompatActivity {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
- finish();
+ if (getFragmentManager().getBackStackEntryCount() == 0) {
+ finish();
+ } else {
+ getFragmentManager().popBackStack();
+ }
return true;
default:
return false;
@@ -97,10 +118,11 @@ public class PreferenceActivity extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
- addPreferencesFromResource(R.xml.preferences);
+ addPreferencesFromResource(getArguments().getInt(PARAM_RESOURCE));
PreferenceActivity activity = instance.get();
- if(activity != null && activity.preferenceController != null) {
- activity.preferenceController.onCreate();
+ if (activity != null && activity.preferenceController != null) {
+ activity.preferenceUI.setFragment(this);
+ activity.preferenceController.onCreate(getArguments().getInt(PARAM_RESOURCE));
}
}
@@ -109,7 +131,28 @@ public class PreferenceActivity extends AppCompatActivity {
super.onResume();
PreferenceActivity activity = instance.get();
if(activity != null && activity.preferenceController != null) {
- activity.preferenceController.onResume();
+ activity.setTitle(getTitle(getArguments().getInt(PARAM_RESOURCE)));
+ activity.preferenceUI.setFragment(this);
+ activity.preferenceController.onResume(getArguments().getInt(PARAM_RESOURCE));
+ }
+ }
+
+ private int getTitle(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;
+ default:
+ return R.string.settings_label;
}
}
@@ -117,7 +160,8 @@ public class PreferenceActivity extends AppCompatActivity {
public void onPause() {
PreferenceActivity activity = instance.get();
if(activity != null && activity.preferenceController != null) {
- activity.preferenceController.onPause();
+ activity.preferenceUI.setFragment(this);
+ activity.preferenceController.onPause(getArguments().getInt(PARAM_RESOURCE));
}
super.onPause();
}
@@ -126,6 +170,7 @@ public class PreferenceActivity extends AppCompatActivity {
public void onStop() {
PreferenceActivity activity = instance.get();
if(activity != null && activity.preferenceController != null) {
+ activity.preferenceUI.setFragment(this);
activity.preferenceController.onStop();
}
super.onStop();