summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2018-05-26 23:45:18 +0200
committerGitHub <noreply@github.com>2018-05-26 23:45:18 +0200
commit532d822b3c1c1dfe66fb3bc3f3687f24dd47c691 (patch)
tree769e3589345db775b27c06e521f28af678838093 /app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
parent902068723c6b36f96c8ae63e7fc5bf512f3d44f9 (diff)
parentcd0d23d2606c35d783457f2a945f539382018285 (diff)
downloadAntennaPod-532d822b3c1c1dfe66fb3bc3f3687f24dd47c691.zip
Merge branch 'develop' into exo-player
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java240
1 files changed, 158 insertions, 82 deletions
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 a6db1986f..c1aea28c8 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
@@ -3,7 +3,6 @@ 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;
@@ -18,31 +17,29 @@ 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.support.v7.app.AppCompatActivity;
+import android.support.v7.preference.CheckBoxPreference;
+import android.support.v7.preference.ListPreference;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceFragmentCompat;
+import android.support.v7.preference.PreferenceManager;
+import android.support.v7.preference.PreferenceScreen;
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 com.bytehamster.lib.preferencesearch.SearchConfiguration;
+import com.bytehamster.lib.preferencesearch.SearchPreference;
import de.danoeh.antennapod.activity.AboutActivity;
-import com.afollestad.materialdialogs.prefs.MaterialListPreference;
import de.danoeh.antennapod.activity.ImportExportActivity;
import de.danoeh.antennapod.activity.MediaplayerActivity;
import de.danoeh.antennapod.activity.OpmlImportFromPathActivity;
@@ -99,8 +96,9 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
private static final String PREF_SCREEN_INTEGRATIONS = "prefScreenIntegrations";
private static final String PREF_SCREEN_STORAGE = "prefScreenStorage";
private static final String PREF_SCREEN_AUTODL = "prefAutoDownloadSettings";
+ private static final String PREF_SCREEN_FLATTR = "prefFlattrSettings";
+ private static final String PREF_SCREEN_GPODDER = "prefGpodderSettings";
- 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";
private static final String PREF_AUTO_FLATTR_PREFS = "prefAutoFlattrPrefs";
@@ -176,6 +174,12 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
case R.xml.preferences_integrations:
setupIntegrationsScreen();
break;
+ case R.xml.preferences_flattr:
+ setupFlattrScreen();
+ break;
+ case R.xml.preferences_gpodder:
+ setupGpodderScreen();
+ break;
case R.xml.preferences_storage:
setupStorageScreen();
break;
@@ -295,7 +299,20 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
private void setupIntegrationsScreen() {
- final Activity activity = ui.getActivity();
+ final AppCompatActivity activity = ui.getActivity();
+
+ ui.findPreference(PREF_SCREEN_FLATTR).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_flattr, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_GPODDER).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_gpodder, activity);
+ return true;
+ });
+ }
+
+ private void setupFlattrScreen() {
+ final AppCompatActivity activity = ui.getActivity();
ui.findPreference(PreferenceController.PREF_FLATTR_REVOKE).setOnPreferenceClickListener(
preference -> {
@@ -304,6 +321,29 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
return true;
}
);
+
+ ui.findPreference(PreferenceController.PREF_AUTO_FLATTR_PREFS)
+ .setOnPreferenceClickListener(preference -> {
+ AutoFlattrPreferenceDialog.newAutoFlattrPreferenceDialog(activity,
+ new AutoFlattrPreferenceDialog.AutoFlattrPreferenceDialogInterface() {
+ @Override
+ public void onCancelled() {
+
+ }
+
+ @Override
+ public void onConfirmed(boolean autoFlattrEnabled, float autoFlattrValue) {
+ UserPreferences.setAutoFlattrSettings(autoFlattrEnabled, autoFlattrValue);
+ checkFlattrItemVisibility();
+ }
+ });
+ return true;
+ });
+ }
+
+ private void setupGpodderScreen() {
+ final AppCompatActivity activity = ui.getActivity();
+
ui.findPreference(PreferenceController.PREF_GPODNET_SETLOGIN_INFORMATION)
.setOnPreferenceClickListener(preference -> {
AuthenticationDialog dialog = new AuthenticationDialog(activity,
@@ -351,24 +391,6 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
GpodnetSetHostnameDialog.createDialog(activity).setOnDismissListener(dialog -> updateGpodnetPreferenceScreen());
return true;
});
-
- ui.findPreference(PreferenceController.PREF_AUTO_FLATTR_PREFS)
- .setOnPreferenceClickListener(preference -> {
- AutoFlattrPreferenceDialog.newAutoFlattrPreferenceDialog(activity,
- new AutoFlattrPreferenceDialog.AutoFlattrPreferenceDialogInterface() {
- @Override
- public void onCancelled() {
-
- }
-
- @Override
- public void onConfirmed(boolean autoFlattrEnabled, float autoFlattrValue) {
- UserPreferences.setAutoFlattrSettings(autoFlattrEnabled, autoFlattrValue);
- checkFlattrItemVisibility();
- }
- });
- return true;
- });
}
private void setupPlaybackScreen() {
@@ -390,7 +412,7 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
return true;
});
if (!PictureInPictureUtil.supportsPictureInPicture(activity)) {
- MaterialListPreference behaviour = (MaterialListPreference) ui.findPreference(UserPreferences.PREF_VIDEO_BEHAVIOR);
+ ListPreference behaviour = (ListPreference) ui.findPreference(UserPreferences.PREF_VIDEO_BEHAVIOR);
behaviour.setEntries(R.array.video_background_behavior_options_without_pip);
behaviour.setEntryValues(R.array.video_background_behavior_values_without_pip);
}
@@ -427,9 +449,11 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
private void setupNetworkScreen() {
- final Activity activity = ui.getActivity();
- ui.findPreference(PREF_SCREEN_AUTODL).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_autodownload, activity));
+ final AppCompatActivity activity = ui.getActivity();
+ ui.findPreference(PREF_SCREEN_AUTODL).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_autodownload, activity);
+ return true;
+ });
ui.findPreference(UserPreferences.PREF_UPDATE_INTERVAL)
.setOnPreferenceClickListener(preference -> {
showUpdateIntervalTimePreferencesDialog();
@@ -453,33 +477,6 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
);
// validate and set correct value: number of downloads between 1 and 50 (inclusive)
- final EditText ev = ((EditTextPreference) ui.findPreference(UserPreferences.PREF_PARALLEL_DOWNLOADS)).getEditText();
- ev.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- if (s.length() > 0) {
- try {
- int value = Integer.parseInt(s.toString());
- if (value <= 0) {
- ev.setText("1");
- } else if (value > 50) {
- ev.setText("50");
- }
- } catch (NumberFormatException e) {
- ev.setText("6");
- }
- ev.setSelection(ev.getText().length());
- }
- }
- });
ui.findPreference(PREF_PROXY).setOnPreferenceClickListener(preference -> {
ProxyDialog dialog = new ProxyDialog(ui.getActivity());
dialog.createDialog().show();
@@ -488,17 +485,28 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
private void setupMainScreen() {
- final Activity activity = ui.getActivity();
- 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_NETWORK).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_network, activity));
- ui.findPreference(PREF_SCREEN_INTEGRATIONS).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_integrations, activity));
- ui.findPreference(PREF_SCREEN_STORAGE).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_storage, activity));
+ final AppCompatActivity activity = ui.getActivity();
+ setupSearch();
+ ui.findPreference(PREF_SCREEN_USER_INTERFACE).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_user_interface, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_PLAYBACK).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_playback, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_NETWORK).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_network, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_INTEGRATIONS).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_integrations, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_STORAGE).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_storage, activity);
+ return true;
+ });
ui.findPreference(PreferenceController.PREF_ABOUT).setOnPreferenceClickListener(
preference -> {
@@ -545,15 +553,74 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
});
}
- private boolean openScreen(int preferences, Activity activity) {
- Fragment prefFragment = new PreferenceActivity.MainFragment();
+ private void setupSearch() {
+ final AppCompatActivity activity = ui.getActivity();
+
+ SearchPreference searchPreference = (SearchPreference) ui.findPreference("searchPreference");
+ SearchConfiguration config = searchPreference.getSearchConfiguration();
+ config.setActivity(activity);
+ config.setFragmentContainerViewId(R.id.content);
+ config.setBreadcrumbsEnabled(true);
+
+ config.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_user_interface))
+ .addFile(R.xml.preferences_user_interface);
+ config.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_playback))
+ .addFile(R.xml.preferences_playback);
+ config.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_network))
+ .addFile(R.xml.preferences_network);
+ config.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_storage))
+ .addFile(R.xml.preferences_storage);
+ config.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_network))
+ .addBreadcrumb(R.string.automation)
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_autodownload))
+ .addFile(R.xml.preferences_autodownload);
+ config.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_integrations))
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_gpodder))
+ .addFile(R.xml.preferences_gpodder);
+ config.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_integrations))
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_flattr))
+ .addFile(R.xml.preferences_flattr);
+ }
+
+ public PreferenceFragmentCompat openScreen(int preferences, AppCompatActivity activity) {
+ PreferenceFragmentCompat prefFragment = new PreferenceActivity.MainFragment();
Bundle args = new Bundle();
args.putInt(PARAM_RESOURCE, preferences);
prefFragment.setArguments(args);
- activity.getFragmentManager().beginTransaction()
+ activity.getSupportFragmentManager().beginTransaction()
.replace(R.id.content, prefFragment)
.addToBackStack(TAG).commit();
- return true;
+ return prefFragment;
+ }
+
+ 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;
+ }
}
private boolean export(ExportWriter exportWriter) {
@@ -623,9 +690,14 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
setDataFolderText();
break;
case R.xml.preferences_integrations:
+ setIntegrationsItemVisibility();
+ return;
+ case R.xml.preferences_flattr:
+ checkFlattrItemVisibility();
+ break;
+ case R.xml.preferences_gpodder:
GpodnetPreferences.registerOnSharedPreferenceChangeListener(gpoddernetListener);
updateGpodnetPreferenceScreen();
- checkFlattrItemVisibility();
break;
case R.xml.preferences_playback:
checkSonicItemVisibility();
@@ -792,10 +864,13 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
}
+ private void setIntegrationsItemVisibility() {
+ ui.findPreference(PreferenceController.PREF_SCREEN_FLATTR).setEnabled(FlattrUtils.hasAPICredentials());
+ }
+
@SuppressWarnings("deprecation")
private void checkFlattrItemVisibility() {
boolean hasFlattrToken = FlattrUtils.hasToken();
- ui.findPreference(PreferenceController.PREF_FLATTR_SETTINGS).setEnabled(FlattrUtils.hasAPICredentials());
ui.findPreference(PreferenceController.PREF_FLATTR_AUTH).setEnabled(!hasFlattrToken);
ui.findPreference(PreferenceController.PREF_FLATTR_REVOKE).setEnabled(hasFlattrToken);
ui.findPreference(PreferenceController.PREF_AUTO_FLATTR_PREFS).setEnabled(hasFlattrToken);
@@ -1109,7 +1184,8 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
public interface PreferenceUI {
- void setFragment(PreferenceFragment fragment);
+ void setFragment(PreferenceFragmentCompat fragment);
+ PreferenceFragmentCompat getFragment();
/**
* Finds a preference based on its key.
@@ -1118,6 +1194,6 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
PreferenceScreen getPreferenceScreen();
- Activity getActivity();
+ AppCompatActivity getActivity();
}
}