summaryrefslogtreecommitdiff
path: root/app/src/main/java/de
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2018-04-10 20:18:23 +0200
committerByteHamster <info@bytehamster.com>2018-04-10 20:18:23 +0200
commit12ac9c9fc2b89e11d1b4a27a625216ec04c20e04 (patch)
tree09e9f85060c7e8ae825064df9202c9b0d75ab2ba /app/src/main/java/de
parent4e63bfb11c3c1e44fdb15660a264625162fa899c (diff)
downloadAntennaPod-12ac9c9fc2b89e11d1b4a27a625216ec04c20e04.zip
Added preference screens
Diffstat (limited to 'app/src/main/java/de')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java57
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java76
2 files changed, 98 insertions, 35 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..99d39fbd9 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
@@ -24,13 +24,20 @@ 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
@@ -64,7 +71,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 +95,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 +112,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 +125,26 @@ 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_downloads:
+ return R.string.downloads_label;
+ 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_services:
+ return R.string.services_label;
+ default:
+ return R.string.settings_label;
}
}
@@ -117,7 +152,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,7 +162,8 @@ public class PreferenceActivity extends AppCompatActivity {
public void onStop() {
PreferenceActivity activity = instance.get();
if(activity != null && activity.preferenceController != null) {
- activity.preferenceController.onStop();
+ activity.preferenceUI.setFragment(this);
+ activity.preferenceController.onStop(getArguments().getInt(PARAM_RESOURCE));
}
super.onStop();
}
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
index 2c7d738dd..5bba09dbe 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
@@ -3,6 +3,7 @@ package de.danoeh.antennapod.preferences;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
+import android.app.Fragment;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.content.ActivityNotFoundException;
@@ -16,30 +17,27 @@ import android.net.Uri;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Build;
+import android.os.Bundle;
import android.preference.CheckBoxPreference;
-import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
+import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.FileProvider;
import android.support.v7.app.AlertDialog;
-import android.text.Editable;
import android.text.Html;
-import android.text.TextWatcher;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import android.util.Log;
-import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
-import de.danoeh.antennapod.activity.ImportExportActivity;
-import de.danoeh.antennapod.activity.OpmlImportFromPathActivity;
+import de.danoeh.antennapod.activity.PreferenceActivity;
import org.apache.commons.lang3.ArrayUtils;
import java.io.File;
@@ -53,30 +51,21 @@ import java.util.concurrent.TimeUnit;
import de.danoeh.antennapod.CrashReportWriter;
import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.AboutActivity;
import de.danoeh.antennapod.activity.DirectoryChooserActivity;
import de.danoeh.antennapod.activity.MainActivity;
-import de.danoeh.antennapod.activity.MediaplayerActivity;
-import de.danoeh.antennapod.activity.StatisticsActivity;
import de.danoeh.antennapod.asynctask.ExportWorker;
import de.danoeh.antennapod.core.export.ExportWriter;
-import de.danoeh.antennapod.core.export.html.HtmlWriter;
-import de.danoeh.antennapod.core.export.opml.OpmlWriter;
import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.GpodnetSyncService;
import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
-import de.danoeh.antennapod.dialog.AuthenticationDialog;
-import de.danoeh.antennapod.dialog.AutoFlattrPreferenceDialog;
import de.danoeh.antennapod.dialog.ChooseDataFolderDialog;
-import de.danoeh.antennapod.dialog.GpodnetSetHostnameDialog;
-import de.danoeh.antennapod.dialog.ProxyDialog;
-import de.danoeh.antennapod.dialog.VariableSpeedDialog;
import rx.Observable;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
+import static de.danoeh.antennapod.activity.PreferenceActivity.PARAM_RESOURCE;
+
/**
* Sets up a preference UI that lets the user change user preferences.
*/
@@ -85,6 +74,13 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
private static final String TAG = "PreferenceController";
+ private static final String PREF_SCREEN_USER_INTERFACE = "prefScreenInterface";
+ private static final String PREF_SCREEN_PLAYBACK = "prefScreenPlayback";
+ private static final String PREF_SCREEN_DOWNLOADS = "prefScreenDownloads";
+ private static final String PREF_SCREEN_SERVICES = "prefScreenServices";
+ private static final String PREF_SCREEN_STORAGE = "prefScreenStorage";
+ private static final String PREF_SCREEN_VARIOUS = "prefScreenVarious";
+
private static final String PREF_FLATTR_SETTINGS = "prefFlattrSettings";
private static final String PREF_FLATTR_AUTH = "pref_flattr_authenticate";
private static final String PREF_FLATTR_REVOKE = "prefRevokeAccess";
@@ -143,9 +139,26 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
}
- public void onCreate() {
+
+
+ public void onCreate(int screen) {
final Activity activity = ui.getActivity();
+ if (screen == R.xml.preferences) {
+ ui.findPreference(PREF_SCREEN_USER_INTERFACE).setOnPreferenceClickListener(preference ->
+ openScreen(R.xml.preferences_user_interface, activity));
+ ui.findPreference(PREF_SCREEN_PLAYBACK).setOnPreferenceClickListener(preference ->
+ openScreen(R.xml.preferences_playback, activity));
+ ui.findPreference(PREF_SCREEN_DOWNLOADS).setOnPreferenceClickListener(preference ->
+ openScreen(R.xml.preferences_downloads, activity));
+ ui.findPreference(PREF_SCREEN_SERVICES).setOnPreferenceClickListener(preference ->
+ openScreen(R.xml.preferences_services, activity));
+ ui.findPreference(PREF_SCREEN_STORAGE).setOnPreferenceClickListener(preference ->
+ openScreen(R.xml.preferences_storage, activity));
+ ui.findPreference(PREF_SCREEN_VARIOUS).setOnPreferenceClickListener(preference ->
+ openScreen(R.xml.preferences_various, activity));
+ }
+/*
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
// disable expanded notification option on unsupported android versions
ui.findPreference(PreferenceController.PREF_EXPANDED_NOTIFICATION).setEnabled(false);
@@ -466,7 +479,18 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
buildEpisodeCleanupPreference();
buildSmartMarkAsPlayedPreference();
buildAutodownloadSelectedNetworsPreference();
- setSelectedNetworksEnabled(UserPreferences.isEnableAutodownloadWifiFilter());
+ setSelectedNetworksEnabled(UserPreferences.isEnableAutodownloadWifiFilter());*/
+ }
+
+ private boolean openScreen(int preferences, Activity activity) {
+ Fragment prefFragment = new PreferenceActivity.MainFragment();
+ Bundle args = new Bundle();
+ args.putInt(PARAM_RESOURCE, preferences);
+ prefFragment.setArguments(args);
+ activity.getFragmentManager().beginTransaction()
+ .replace(R.id.content, prefFragment)
+ .addToBackStack(TAG).commit();
+ return true;
}
private boolean export(ExportWriter exportWriter) {
@@ -522,21 +546,21 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
}
- public void onResume() {
- checkItemVisibility();
+ public void onResume(int screen) {
+ /*checkItemVisibility();
setUpdateIntervalText();
setParallelDownloadsText(UserPreferences.getParallelDownloads());
setEpisodeCacheSizeText(UserPreferences.getEpisodeCacheSize());
setDataFolderText();
GpodnetPreferences.registerOnSharedPreferenceChangeListener(gpoddernetListener);
- updateGpodnetPreferenceScreen();
+ updateGpodnetPreferenceScreen();*/
}
- public void onPause() {
- GpodnetPreferences.unregisterOnSharedPreferenceChangeListener(gpoddernetListener);
+ public void onPause(int screen) {
+ /*GpodnetPreferences.unregisterOnSharedPreferenceChangeListener(gpoddernetListener);*/
}
- public void onStop() {
+ public void onStop(int screen) {
if(subscription != null) {
subscription.unsubscribe();
}
@@ -1006,6 +1030,8 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
public interface PreferenceUI {
+ void setFragment(PreferenceFragment fragment);
+
/**
* Finds a preference based on its key.
*/