summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/fragment/preferences
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2024-03-31 18:40:15 +0200
committerGitHub <noreply@github.com>2024-03-31 18:40:15 +0200
commitedb440a5a9a05e24c344a71b272b9238217e9c55 (patch)
tree13623ca7d0dac052ac35d693aac940d0727c87f9 /app/src/main/java/de/danoeh/antennapod/fragment/preferences
parent4e47691e70e85736c7eeb30ce02c73176e565a86 (diff)
downloadAntennaPod-edb440a5a9a05e24c344a71b272b9238217e9c55.zip
Restructure related UI classes together (#7044)
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/preferences')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/DownloadsPreferencesFragment.java108
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/ImportExportPreferencesFragment.java413
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java157
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackPreferencesFragment.java128
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/SwipePreferencesFragment.java59
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java171
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/dialog/PreferenceListDialog.java49
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/dialog/PreferenceSwitchDialog.java57
8 files changed, 0 insertions, 1142 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/DownloadsPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/DownloadsPreferencesFragment.java
deleted file mode 100644
index 58e968155..000000000
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/DownloadsPreferencesFragment.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package de.danoeh.antennapod.fragment.preferences;
-
-import android.content.SharedPreferences;
-import android.os.Bundle;
-
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.PreferenceManager;
-import androidx.preference.TwoStatePreference;
-
-import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.PreferenceActivity;
-import de.danoeh.antennapod.net.download.serviceinterface.FeedUpdateManager;
-import de.danoeh.antennapod.ui.preferences.screen.downloads.ChooseDataFolderDialog;
-import de.danoeh.antennapod.dialog.ProxyDialog;
-import de.danoeh.antennapod.storage.preferences.UserPreferences;
-
-import java.io.File;
-
-
-public class DownloadsPreferencesFragment extends PreferenceFragmentCompat
- implements SharedPreferences.OnSharedPreferenceChangeListener {
- private static final String PREF_SCREEN_AUTODL = "prefAutoDownloadSettings";
- private static final String PREF_AUTO_DELETE_LOCAL = "prefAutoDeleteLocal";
- private static final String PREF_PROXY = "prefProxy";
- private static final String PREF_CHOOSE_DATA_DIR = "prefChooseDataDir";
-
- private boolean blockAutoDeleteLocal = true;
-
- @Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- addPreferencesFromResource(R.xml.preferences_downloads);
- setupNetworkScreen();
- }
-
- @Override
- public void onStart() {
- super.onStart();
- ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.downloads_pref);
- PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this);
- }
-
- @Override
- public void onStop() {
- super.onStop();
- PreferenceManager.getDefaultSharedPreferences(getContext()).unregisterOnSharedPreferenceChangeListener(this);
- }
-
- @Override
- public void onResume() {
- super.onResume();
- setDataFolderText();
- }
-
- private void setupNetworkScreen() {
- findPreference(PREF_SCREEN_AUTODL).setOnPreferenceClickListener(preference -> {
- ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_autodownload);
- return true;
- });
- // validate and set correct value: number of downloads between 1 and 50 (inclusive)
- findPreference(PREF_PROXY).setOnPreferenceClickListener(preference -> {
- ProxyDialog dialog = new ProxyDialog(getActivity());
- dialog.show();
- return true;
- });
- findPreference(PREF_CHOOSE_DATA_DIR).setOnPreferenceClickListener(preference -> {
- ChooseDataFolderDialog.showDialog(getContext(), path -> {
- UserPreferences.setDataFolder(path);
- setDataFolderText();
- });
- return true;
- });
- findPreference(PREF_AUTO_DELETE_LOCAL).setOnPreferenceChangeListener((preference, newValue) -> {
- if (blockAutoDeleteLocal && newValue == Boolean.TRUE) {
- showAutoDeleteEnableDialog();
- return false;
- } else {
- return true;
- }
- });
- }
-
- private void setDataFolderText() {
- File f = UserPreferences.getDataFolder(null);
- if (f != null) {
- findPreference(PREF_CHOOSE_DATA_DIR).setSummary(f.getAbsolutePath());
- }
- }
-
- @Override
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
- if (UserPreferences.PREF_UPDATE_INTERVAL.equals(key)) {
- FeedUpdateManager.getInstance().restartUpdateAlarm(getContext(), true);
- }
- }
-
- private void showAutoDeleteEnableDialog() {
- new MaterialAlertDialogBuilder(requireContext())
- .setMessage(R.string.pref_auto_local_delete_dialog_body)
- .setPositiveButton(R.string.yes, (dialog, which) -> {
- blockAutoDeleteLocal = false;
- ((TwoStatePreference) findPreference(PREF_AUTO_DELETE_LOCAL)).setChecked(true);
- blockAutoDeleteLocal = true;
- })
- .setNegativeButton(R.string.cancel_label, null)
- .show();
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/ImportExportPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/ImportExportPreferencesFragment.java
deleted file mode 100644
index 7c607c242..000000000
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/ImportExportPreferencesFragment.java
+++ /dev/null
@@ -1,413 +0,0 @@
-package de.danoeh.antennapod.fragment.preferences;
-
-import android.app.Activity;
-import android.app.ProgressDialog;
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.util.Log;
-
-import androidx.activity.result.ActivityResult;
-import androidx.activity.result.ActivityResultLauncher;
-import androidx.activity.result.contract.ActivityResultContracts;
-import androidx.activity.result.contract.ActivityResultContracts.GetContent;
-import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.StringRes;
-import androidx.documentfile.provider.DocumentFile;
-import androidx.preference.SwitchPreferenceCompat;
-import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import androidx.core.app.ShareCompat;
-import androidx.core.content.FileProvider;
-import androidx.preference.PreferenceFragmentCompat;
-import com.google.android.material.snackbar.Snackbar;
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.OpmlImportActivity;
-import de.danoeh.antennapod.activity.PreferenceActivity;
-import de.danoeh.antennapod.storage.database.DBReader;
-import de.danoeh.antennapod.model.feed.FeedItem;
-import de.danoeh.antennapod.model.feed.FeedItemFilter;
-import de.danoeh.antennapod.model.feed.SortOrder;
-import de.danoeh.antennapod.storage.importexport.AutomaticDatabaseExportWorker;
-import de.danoeh.antennapod.storage.importexport.DatabaseExporter;
-import de.danoeh.antennapod.storage.importexport.FavoritesWriter;
-import de.danoeh.antennapod.storage.importexport.HtmlWriter;
-import de.danoeh.antennapod.storage.importexport.OpmlWriter;
-import de.danoeh.antennapod.storage.preferences.UserPreferences;
-import io.reactivex.Completable;
-import io.reactivex.Observable;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.nio.charset.Charset;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-public class ImportExportPreferencesFragment extends PreferenceFragmentCompat {
- private static final String TAG = "ImportExPrefFragment";
- private static final String PREF_OPML_EXPORT = "prefOpmlExport";
- private static final String PREF_OPML_IMPORT = "prefOpmlImport";
- private static final String PREF_HTML_EXPORT = "prefHtmlExport";
- private static final String PREF_DATABASE_IMPORT = "prefDatabaseImport";
- private static final String PREF_DATABASE_EXPORT = "prefDatabaseExport";
- private static final String PREF_AUTOMATIC_DATABASE_EXPORT = "prefAutomaticDatabaseExport";
- private static final String PREF_FAVORITE_EXPORT = "prefFavoritesExport";
- private static final String DEFAULT_OPML_OUTPUT_NAME = "antennapod-feeds-%s.opml";
- private static final String CONTENT_TYPE_OPML = "text/x-opml";
- private static final String DEFAULT_HTML_OUTPUT_NAME = "antennapod-feeds-%s.html";
- private static final String CONTENT_TYPE_HTML = "text/html";
- private static final String DEFAULT_FAVORITES_OUTPUT_NAME = "antennapod-favorites-%s.html";
- private static final String DATABASE_EXPORT_FILENAME = "AntennaPodBackup-%s.db";
-
- private final ActivityResultLauncher<Intent> chooseOpmlExportPathLauncher =
- registerForActivityResult(new StartActivityForResult(),
- result -> exportToDocument(result, Export.OPML));
- private final ActivityResultLauncher<Intent> chooseHtmlExportPathLauncher =
- registerForActivityResult(new StartActivityForResult(),
- result -> exportToDocument(result, Export.HTML));
- private final ActivityResultLauncher<Intent> chooseFavoritesExportPathLauncher =
- registerForActivityResult(new StartActivityForResult(),
- result -> exportToDocument(result, Export.FAVORITES));
- private final ActivityResultLauncher<Intent> restoreDatabaseLauncher =
- registerForActivityResult(new StartActivityForResult(), this::restoreDatabaseResult);
- private final ActivityResultLauncher<String> backupDatabaseLauncher =
- registerForActivityResult(new BackupDatabase(), this::backupDatabaseResult);
- private final ActivityResultLauncher<String> chooseOpmlImportPathLauncher =
- registerForActivityResult(new GetContent(), uri -> {
- if (uri != null) {
- final Intent intent = new Intent(getContext(), OpmlImportActivity.class);
- intent.setData(uri);
- startActivity(intent);
- }
- });
- private final ActivityResultLauncher<Uri> automaticBackupLauncher =
- registerForActivityResult(new PickWritableFolder(), this::setupAutomaticBackup);
-
- private Disposable disposable;
- private ProgressDialog progressDialog;
-
- @Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- addPreferencesFromResource(R.xml.preferences_import_export);
- setupStorageScreen();
- progressDialog = new ProgressDialog(getContext());
- progressDialog.setIndeterminate(true);
- progressDialog.setMessage(getContext().getString(R.string.please_wait));
- }
-
- @Override
- public void onStart() {
- super.onStart();
- ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.import_export_pref);
- }
-
- @Override
- public void onStop() {
- super.onStop();
- if (disposable != null) {
- disposable.dispose();
- }
- }
-
- private void setupStorageScreen() {
- findPreference(PREF_OPML_EXPORT).setOnPreferenceClickListener(
- preference -> {
- openExportPathPicker(Export.OPML, chooseOpmlExportPathLauncher);
- return true;
- }
- );
- findPreference(PREF_HTML_EXPORT).setOnPreferenceClickListener(
- preference -> {
- openExportPathPicker(Export.HTML, chooseHtmlExportPathLauncher);
- return true;
- });
- findPreference(PREF_OPML_IMPORT).setOnPreferenceClickListener(
- preference -> {
- try {
- chooseOpmlImportPathLauncher.launch("*/*");
- } catch (ActivityNotFoundException e) {
- Log.e(TAG, "No activity found. Should never happen...");
- }
- return true;
- });
- findPreference(PREF_DATABASE_IMPORT).setOnPreferenceClickListener(
- preference -> {
- importDatabase();
- return true;
- });
- findPreference(PREF_DATABASE_EXPORT).setOnPreferenceClickListener(
- preference -> {
- backupDatabaseLauncher.launch(dateStampFilename(DATABASE_EXPORT_FILENAME));
- return true;
- });
- ((SwitchPreferenceCompat) findPreference(PREF_AUTOMATIC_DATABASE_EXPORT))
- .setChecked(UserPreferences.getAutomaticExportFolder() != null);
- findPreference(PREF_AUTOMATIC_DATABASE_EXPORT).setOnPreferenceChangeListener(
- (preference, newValue) -> {
- if (Boolean.TRUE.equals(newValue)) {
- try {
- automaticBackupLauncher.launch(null);
- } catch (ActivityNotFoundException e) {
- e.printStackTrace();
- Snackbar.make(getView(), R.string.unable_to_start_system_file_manager, Snackbar.LENGTH_LONG)
- .show();
- }
- return false;
- } else {
- UserPreferences.setAutomaticExportFolder(null);
- AutomaticDatabaseExportWorker.enqueueIfNeeded(getContext(), false);
- }
- return true;
- });
- findPreference(PREF_FAVORITE_EXPORT).setOnPreferenceClickListener(
- preference -> {
- openExportPathPicker(Export.FAVORITES, chooseFavoritesExportPathLauncher);
- return true;
- });
- }
-
- private String dateStampFilename(String fname) {
- return String.format(fname, new SimpleDateFormat("yyyy-MM-dd", Locale.US).format(new Date()));
- }
-
- private void importDatabase() {
- // setup the alert builder
- MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
- builder.setTitle(R.string.database_import_label);
- builder.setMessage(R.string.database_import_warning);
-
- // add a button
- builder.setNegativeButton(R.string.no, null);
- builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
- Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
- intent.setType("*/*");
- restoreDatabaseLauncher.launch(intent);
- });
-
- // create and show the alert dialog
- builder.show();
- }
-
- private void showDatabaseImportSuccessDialog() {
- MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext());
- builder.setTitle(R.string.successful_import_label);
- builder.setMessage(R.string.import_ok);
- builder.setCancelable(false);
- builder.setPositiveButton(android.R.string.ok, (dialogInterface, i) -> forceRestart());
- builder.show();
- }
-
- void showExportSuccessSnackbar(Uri uri, String mimeType) {
- Snackbar.make(getView(), R.string.export_success_title, Snackbar.LENGTH_LONG)
- .setAction(R.string.share_label, v ->
- new ShareCompat.IntentBuilder(getContext())
- .setType(mimeType)
- .addStream(uri)
- .setChooserTitle(R.string.share_label)
- .startChooser())
- .show();
- }
-
- private void showExportErrorDialog(final Throwable error) {
- progressDialog.dismiss();
- final MaterialAlertDialogBuilder alert = new MaterialAlertDialogBuilder(getContext());
- alert.setPositiveButton(android.R.string.ok, (dialog, which) -> dialog.dismiss());
- alert.setTitle(R.string.export_error_label);
- alert.setMessage(error.getMessage());
- alert.show();
- }
-
- private void restoreDatabaseResult(final ActivityResult result) {
- if (result.getResultCode() != Activity.RESULT_OK || result.getData() == null) {
- return;
- }
- final Uri uri = result.getData().getData();
- progressDialog.show();
- disposable = Completable.fromAction(() -> DatabaseExporter.importBackup(uri, getContext()))
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(() -> {
- showDatabaseImportSuccessDialog();
- progressDialog.dismiss();
- }, this::showExportErrorDialog);
- }
-
- private void backupDatabaseResult(final Uri uri) {
- if (uri == null) {
- return;
- }
- progressDialog.show();
- disposable = Completable.fromAction(() -> DatabaseExporter.exportToDocument(uri, getContext()))
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(() -> {
- showExportSuccessSnackbar(uri, "application/x-sqlite3");
- progressDialog.dismiss();
- }, this::showExportErrorDialog);
- }
-
- private void openExportPathPicker(Export exportType, ActivityResultLauncher<Intent> result) {
- String title = dateStampFilename(exportType.outputNameTemplate);
-
- Intent intentPickAction = new Intent(Intent.ACTION_CREATE_DOCUMENT)
- .addCategory(Intent.CATEGORY_OPENABLE)
- .setType(exportType.contentType)
- .putExtra(Intent.EXTRA_TITLE, title);
-
- // Creates an implicit intent to launch a file manager which lets
- // the user choose a specific directory to export to.
- try {
- result.launch(intentPickAction);
- return;
- } catch (ActivityNotFoundException e) {
- Log.e(TAG, "No activity found. Should never happen...");
- }
-
- // If we are using a SDK lower than API 21 or the implicit intent failed
- // fallback to the legacy export process
- File output = new File(UserPreferences.getDataFolder("export/"), title);
- exportToFile(exportType, output);
- }
-
- private void exportToFile(Export exportType, File output) {
- progressDialog.show();
- disposable = Observable.create(
- subscriber -> {
- if (output.exists()) {
- boolean success = output.delete();
- Log.w(TAG, "Overwriting previously exported file: " + success);
- }
- try (FileOutputStream fileOutputStream = new FileOutputStream(output)) {
- writeToStream(fileOutputStream, exportType);
- subscriber.onNext(output);
- } catch (IOException e) {
- subscriber.onError(e);
- }
- })
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(outputFile -> {
- progressDialog.dismiss();
- Uri fileUri = FileProvider.getUriForFile(getActivity().getApplicationContext(),
- getString(R.string.provider_authority), output);
- showExportSuccessSnackbar(fileUri, exportType.contentType);
- }, this::showExportErrorDialog, progressDialog::dismiss);
- }
-
- private void exportToDocument(final ActivityResult result, Export exportType) {
- if (result.getResultCode() != Activity.RESULT_OK || result.getData() == null) {
- return;
- }
- progressDialog.show();
- DocumentFile output = DocumentFile.fromSingleUri(getContext(), result.getData().getData());
- disposable = Observable.create(
- subscriber -> {
- try (OutputStream outputStream = getContext().getContentResolver()
- .openOutputStream(output.getUri(), "wt")) {
- writeToStream(outputStream, exportType);
- subscriber.onNext(output);
- } catch (IOException e) {
- subscriber.onError(e);
- }
- })
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(ignore -> {
- progressDialog.dismiss();
- showExportSuccessSnackbar(output.getUri(), exportType.contentType);
- }, this::showExportErrorDialog, progressDialog::dismiss);
- }
-
- private void writeToStream(OutputStream outputStream, Export type) throws IOException {
- try (OutputStreamWriter writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"))) {
- switch (type) {
- case HTML:
- HtmlWriter.writeDocument(DBReader.getFeedList(), writer, getContext());
- break;
- case OPML:
- OpmlWriter.writeDocument(DBReader.getFeedList(), writer);
- break;
- case FAVORITES:
- List<FeedItem> allFavorites = DBReader.getEpisodes(0, Integer.MAX_VALUE,
- new FeedItemFilter(FeedItemFilter.IS_FAVORITE), SortOrder.DATE_NEW_OLD);
- FavoritesWriter.writeDocument(allFavorites, writer, getContext());
- break;
- default:
- showExportErrorDialog(new Exception("Invalid export type"));
- break;
- }
- }
- }
-
- private void setupAutomaticBackup(Uri uri) {
- if (uri == null) {
- return;
- }
- getActivity().getContentResolver().takePersistableUriPermission(uri,
- Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
- UserPreferences.setAutomaticExportFolder(uri.toString());
- AutomaticDatabaseExportWorker.enqueueIfNeeded(getContext(), true);
- ((SwitchPreferenceCompat) findPreference(PREF_AUTOMATIC_DATABASE_EXPORT)).setChecked(true);
- }
-
- private void forceRestart() {
- PackageManager pm = getContext().getPackageManager();
- Intent intent = pm.getLaunchIntentForPackage(getContext().getPackageName());
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- getContext().getApplicationContext().startActivity(intent);
- Runtime.getRuntime().exit(0);
- }
-
- private static class BackupDatabase extends ActivityResultContracts.CreateDocument {
-
- BackupDatabase() {
- super("application/x-sqlite3");
- }
-
- @NonNull
- @Override
- public Intent createIntent(@NonNull final Context context, @NonNull final String input) {
- return super.createIntent(context, input)
- .addCategory(Intent.CATEGORY_OPENABLE)
- .setType("application/x-sqlite3");
- }
- }
-
- private static class PickWritableFolder extends ActivityResultContracts.OpenDocumentTree {
- @NonNull
- @Override
- public Intent createIntent(@NonNull final Context context, @Nullable final Uri input) {
- return super.createIntent(context, input)
- .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
- }
- }
-
- private enum Export {
- OPML(CONTENT_TYPE_OPML, DEFAULT_OPML_OUTPUT_NAME, R.string.opml_export_label),
- HTML(CONTENT_TYPE_HTML, DEFAULT_HTML_OUTPUT_NAME, R.string.html_export_label),
- FAVORITES(CONTENT_TYPE_HTML, DEFAULT_FAVORITES_OUTPUT_NAME, R.string.favorites_export_label);
-
- final String contentType;
- final String outputNameTemplate;
- @StringRes
- final int labelResId;
-
- Export(String contentType, String outputNameTemplate, int labelResId) {
- this.contentType = contentType;
- this.outputNameTemplate = outputNameTemplate;
- this.labelResId = labelResId;
- }
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java
deleted file mode 100644
index 50d201f39..000000000
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package de.danoeh.antennapod.fragment.preferences;
-
-import android.content.Intent;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffColorFilter;
-import android.os.Bundle;
-
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
-
-import com.bytehamster.lib.preferencesearch.SearchConfiguration;
-import com.bytehamster.lib.preferencesearch.SearchPreference;
-
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.BugReportActivity;
-import de.danoeh.antennapod.activity.PreferenceActivity;
-import de.danoeh.antennapod.core.util.IntentUtils;
-import de.danoeh.antennapod.ui.preferences.screen.about.AboutFragment;
-
-public class MainPreferencesFragment extends PreferenceFragmentCompat {
-
- 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_IMPORT_EXPORT = "prefScreenImportExport";
- private static final String PREF_SCREEN_SYNCHRONIZATION = "prefScreenSynchronization";
- private static final String PREF_DOCUMENTATION = "prefDocumentation";
- private static final String PREF_VIEW_FORUM = "prefViewForum";
- private static final String PREF_SEND_BUG_REPORT = "prefSendBugReport";
- private static final String PREF_CATEGORY_PROJECT = "project";
- private static final String PREF_ABOUT = "prefAbout";
- private static final String PREF_NOTIFICATION = "notifications";
- private static final String PREF_CONTRIBUTE = "prefContribute";
-
- @Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- addPreferencesFromResource(R.xml.preferences);
- setupMainScreen();
- setupSearch();
-
- // If you are writing a spin-off, please update the details on screens like "About" and "Report bug"
- // and afterwards remove the following lines. Please keep in mind that AntennaPod is licensed under the GPL.
- // This means that your application needs to be open-source under the GPL, too.
- // It must also include a prominent copyright notice.
- int packageHash = getContext().getPackageName().hashCode();
- if (packageHash != 1790437538 && packageHash != -1190467065) {
- findPreference(PREF_CATEGORY_PROJECT).setVisible(false);
- Preference copyrightNotice = new Preference(getContext());
- copyrightNotice.setIcon(R.drawable.ic_info_white);
- copyrightNotice.getIcon().mutate()
- .setColorFilter(new PorterDuffColorFilter(0xffcc0000, PorterDuff.Mode.MULTIPLY));
- copyrightNotice.setSummary("This application is based on AntennaPod."
- + " The AntennaPod team does NOT provide support for this unofficial version."
- + " If you can read this message, the developers of this modification"
- + " violate the GNU General Public License (GPL).");
- findPreference(PREF_CATEGORY_PROJECT).getParent().addPreference(copyrightNotice);
- } else if (packageHash == -1190467065) {
- Preference debugNotice = new Preference(getContext());
- debugNotice.setIcon(R.drawable.ic_info_white);
- debugNotice.getIcon().mutate()
- .setColorFilter(new PorterDuffColorFilter(0xffcc0000, PorterDuff.Mode.MULTIPLY));
- debugNotice.setOrder(-1);
- debugNotice.setSummary("This is a development version of AntennaPod and not meant for daily use");
- findPreference(PREF_CATEGORY_PROJECT).getParent().addPreference(debugNotice);
- }
- }
-
- @Override
- public void onStart() {
- super.onStart();
- ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.settings_label);
- }
-
- private void setupMainScreen() {
- findPreference(PREF_SCREEN_USER_INTERFACE).setOnPreferenceClickListener(preference -> {
- ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_user_interface);
- return true;
- });
- findPreference(PREF_SCREEN_PLAYBACK).setOnPreferenceClickListener(preference -> {
- ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_playback);
- return true;
- });
- findPreference(PREF_SCREEN_DOWNLOADS).setOnPreferenceClickListener(preference -> {
- ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_downloads);
- return true;
- });
- findPreference(PREF_SCREEN_SYNCHRONIZATION).setOnPreferenceClickListener(preference -> {
- ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_synchronization);
- return true;
- });
- findPreference(PREF_SCREEN_IMPORT_EXPORT).setOnPreferenceClickListener(preference -> {
- ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_import_export);
- return true;
- });
- findPreference(PREF_NOTIFICATION).setOnPreferenceClickListener(preference -> {
- ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_notifications);
- return true;
- });
- findPreference(PREF_ABOUT).setOnPreferenceClickListener(
- preference -> {
- getParentFragmentManager().beginTransaction()
- .replace(R.id.settingsContainer, new AboutFragment())
- .addToBackStack(getString(R.string.about_pref)).commit();
- return true;
- }
- );
- findPreference(PREF_DOCUMENTATION).setOnPreferenceClickListener(preference -> {
- IntentUtils.openInBrowser(getContext(),
- IntentUtils.getLocalizedWebsiteLink(getContext()) + "/documentation/");
- return true;
- });
- findPreference(PREF_VIEW_FORUM).setOnPreferenceClickListener(preference -> {
- IntentUtils.openInBrowser(getContext(), "https://forum.antennapod.org/");
- return true;
- });
- findPreference(PREF_CONTRIBUTE).setOnPreferenceClickListener(preference -> {
- IntentUtils.openInBrowser(getContext(),
- IntentUtils.getLocalizedWebsiteLink(getContext()) + "/contribute/");
- return true;
- });
- findPreference(PREF_SEND_BUG_REPORT).setOnPreferenceClickListener(preference -> {
- startActivity(new Intent(getActivity(), BugReportActivity.class));
- return true;
- });
- }
-
- private void setupSearch() {
- SearchPreference searchPreference = findPreference("searchPreference");
- SearchConfiguration config = searchPreference.getSearchConfiguration();
- config.setActivity((AppCompatActivity) getActivity());
- config.setFragmentContainerViewId(R.id.settingsContainer);
- config.setBreadcrumbsEnabled(true);
-
- config.index(R.xml.preferences_user_interface)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_user_interface));
- config.index(R.xml.preferences_playback)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_playback));
- config.index(R.xml.preferences_downloads)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_downloads));
- config.index(R.xml.preferences_import_export)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_import_export));
- config.index(R.xml.preferences_autodownload)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_downloads))
- .addBreadcrumb(R.string.automation)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_autodownload));
- config.index(R.xml.preferences_synchronization)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_synchronization));
- config.index(R.xml.preferences_notifications)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_notifications));
- config.index(R.xml.feed_settings)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.feed_settings));
- config.index(R.xml.preferences_swipe)
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_user_interface))
- .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_swipe));
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackPreferencesFragment.java
deleted file mode 100644
index dcbd96d5b..000000000
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackPreferencesFragment.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package de.danoeh.antennapod.fragment.preferences;
-
-import android.app.Activity;
-import android.content.res.Resources;
-import android.os.Build;
-import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.collection.ArrayMap;
-import androidx.preference.ListPreference;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.PreferenceActivity;
-import de.danoeh.antennapod.event.UnreadItemsUpdateEvent;
-import de.danoeh.antennapod.storage.preferences.UsageStatistics;
-import de.danoeh.antennapod.storage.preferences.UserPreferences;
-import de.danoeh.antennapod.dialog.SkipPreferenceDialog;
-import de.danoeh.antennapod.dialog.VariableSpeedDialog;
-import java.util.Map;
-import org.greenrobot.eventbus.EventBus;
-
-public class PlaybackPreferencesFragment extends PreferenceFragmentCompat {
- private static final String PREF_PLAYBACK_SPEED_LAUNCHER = "prefPlaybackSpeedLauncher";
- private static final String PREF_PLAYBACK_REWIND_DELTA_LAUNCHER = "prefPlaybackRewindDeltaLauncher";
- private static final String PREF_PLAYBACK_FAST_FORWARD_DELTA_LAUNCHER = "prefPlaybackFastForwardDeltaLauncher";
- private static final String PREF_PLAYBACK_PREFER_STREAMING = "prefStreamOverDownload";
-
- @Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- addPreferencesFromResource(R.xml.preferences_playback);
-
- setupPlaybackScreen();
- buildSmartMarkAsPlayedPreference();
- }
-
- @Override
- public void onStart() {
- super.onStart();
- ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.playback_pref);
- }
-
- private void setupPlaybackScreen() {
- final Activity activity = getActivity();
-
- findPreference(PREF_PLAYBACK_SPEED_LAUNCHER).setOnPreferenceClickListener(preference -> {
- new VariableSpeedDialog().show(getChildFragmentManager(), null);
- return true;
- });
- findPreference(PREF_PLAYBACK_REWIND_DELTA_LAUNCHER).setOnPreferenceClickListener(preference -> {
- SkipPreferenceDialog.showSkipPreference(activity, SkipPreferenceDialog.SkipDirection.SKIP_REWIND, null);
- return true;
- });
- findPreference(PREF_PLAYBACK_FAST_FORWARD_DELTA_LAUNCHER).setOnPreferenceClickListener(preference -> {
- SkipPreferenceDialog.showSkipPreference(activity, SkipPreferenceDialog.SkipDirection.SKIP_FORWARD, null);
- return true;
- });
- findPreference(PREF_PLAYBACK_PREFER_STREAMING).setOnPreferenceChangeListener((preference, newValue) -> {
- // Update all visible lists to reflect new streaming action button
- EventBus.getDefault().post(new UnreadItemsUpdateEvent());
- // User consciously decided whether to prefer the streaming button, disable suggestion to change that
- UsageStatistics.doNotAskAgain(UsageStatistics.ACTION_STREAM);
- return true;
- });
- if (Build.VERSION.SDK_INT >= 31) {
- findPreference(UserPreferences.PREF_UNPAUSE_ON_HEADSET_RECONNECT).setVisible(false);
- findPreference(UserPreferences.PREF_UNPAUSE_ON_BLUETOOTH_RECONNECT).setVisible(false);
- }
-
- buildEnqueueLocationPreference();
- }
-
- private void buildEnqueueLocationPreference() {
- final Resources res = requireActivity().getResources();
- final Map<String, String> options = new ArrayMap<>();
- {
- String[] keys = res.getStringArray(R.array.enqueue_location_values);
- String[] values = res.getStringArray(R.array.enqueue_location_options);
- for (int i = 0; i < keys.length; i++) {
- options.put(keys[i], values[i]);
- }
- }
-
- ListPreference pref = requirePreference(UserPreferences.PREF_ENQUEUE_LOCATION);
- pref.setSummary(res.getString(R.string.pref_enqueue_location_sum, options.get(pref.getValue())));
-
- pref.setOnPreferenceChangeListener((preference, newValue) -> {
- if (!(newValue instanceof String)) {
- return false;
- }
- String newValStr = (String)newValue;
- pref.setSummary(res.getString(R.string.pref_enqueue_location_sum, options.get(newValStr)));
- return true;
- });
- }
-
- @NonNull
- private <T extends Preference> T requirePreference(@NonNull CharSequence key) {
- // Possibly put it to a common method in abstract base class
- T result = findPreference(key);
- if (result == null) {
- throw new IllegalArgumentException("Preference with key '" + key + "' is not found");
-
- }
- return result;
- }
-
- private void buildSmartMarkAsPlayedPreference() {
- final Resources res = getActivity().getResources();
-
- ListPreference pref = findPreference(UserPreferences.PREF_SMART_MARK_AS_PLAYED_SECS);
- String[] values = res.getStringArray(R.array.smart_mark_as_played_values);
- String[] entries = new String[values.length];
- for (int x = 0; x < values.length; x++) {
- if(x == 0) {
- entries[x] = res.getString(R.string.pref_smart_mark_as_played_disabled);
- } else {
- int v = Integer.parseInt(values[x]);
- if(v < 60) {
- entries[x] = res.getQuantityString(R.plurals.time_seconds_quantified, v, v);
- } else {
- v /= 60;
- entries[x] = res.getQuantityString(R.plurals.time_minutes_quantified, v, v);
- }
- }
- }
- pref.setEntries(entries);
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/SwipePreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/SwipePreferencesFragment.java
deleted file mode 100644
index 5b81ff7a5..000000000
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/SwipePreferencesFragment.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package de.danoeh.antennapod.fragment.preferences;
-
-import android.os.Bundle;
-import androidx.preference.PreferenceFragmentCompat;
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.PreferenceActivity;
-import de.danoeh.antennapod.dialog.SwipeActionsDialog;
-import de.danoeh.antennapod.fragment.AllEpisodesFragment;
-import de.danoeh.antennapod.fragment.CompletedDownloadsFragment;
-import de.danoeh.antennapod.fragment.FeedItemlistFragment;
-import de.danoeh.antennapod.fragment.InboxFragment;
-import de.danoeh.antennapod.fragment.PlaybackHistoryFragment;
-import de.danoeh.antennapod.fragment.QueueFragment;
-
-public class SwipePreferencesFragment extends PreferenceFragmentCompat {
- private static final String PREF_SWIPE_QUEUE = "prefSwipeQueue";
- private static final String PREF_SWIPE_INBOX = "prefSwipeInbox";
- private static final String PREF_SWIPE_EPISODES = "prefSwipeEpisodes";
- private static final String PREF_SWIPE_DOWNLOADS = "prefSwipeDownloads";
- private static final String PREF_SWIPE_FEED = "prefSwipeFeed";
- private static final String PREF_SWIPE_HISTORY = "prefSwipeHistory";
-
- @Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- addPreferencesFromResource(R.xml.preferences_swipe);
-
- findPreference(PREF_SWIPE_QUEUE).setOnPreferenceClickListener(preference -> {
- new SwipeActionsDialog(requireContext(), QueueFragment.TAG).show(() -> { });
- return true;
- });
- findPreference(PREF_SWIPE_INBOX).setOnPreferenceClickListener(preference -> {
- new SwipeActionsDialog(requireContext(), InboxFragment.TAG).show(() -> { });
- return true;
- });
- findPreference(PREF_SWIPE_EPISODES).setOnPreferenceClickListener(preference -> {
- new SwipeActionsDialog(requireContext(), AllEpisodesFragment.TAG).show(() -> { });
- return true;
- });
- findPreference(PREF_SWIPE_DOWNLOADS).setOnPreferenceClickListener(preference -> {
- new SwipeActionsDialog(requireContext(), CompletedDownloadsFragment.TAG).show(() -> { });
- return true;
- });
- findPreference(PREF_SWIPE_FEED).setOnPreferenceClickListener(preference -> {
- new SwipeActionsDialog(requireContext(), FeedItemlistFragment.TAG).show(() -> { });
- return true;
- });
- findPreference(PREF_SWIPE_HISTORY).setOnPreferenceClickListener(preference -> {
- new SwipeActionsDialog(requireContext(), PlaybackHistoryFragment.TAG).show(() -> { });
- return true;
- });
- }
-
- @Override
- public void onStart() {
- super.onStart();
- ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.swipeactions_label);
- }
-
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
deleted file mode 100644
index af48c705d..000000000
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package de.danoeh.antennapod.fragment.preferences;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.os.Build;
-import android.os.Bundle;
-import android.widget.Button;
-import android.widget.ListView;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.core.app.ActivityCompat;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
-
-import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import com.google.android.material.snackbar.Snackbar;
-
-import org.greenrobot.eventbus.EventBus;
-
-import java.util.List;
-
-import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.PreferenceActivity;
-import de.danoeh.antennapod.dialog.DrawerPreferencesDialog;
-import de.danoeh.antennapod.dialog.FeedSortDialog;
-import de.danoeh.antennapod.dialog.SubscriptionsFilterDialog;
-import de.danoeh.antennapod.event.PlayerStatusEvent;
-import de.danoeh.antennapod.event.UnreadItemsUpdateEvent;
-import de.danoeh.antennapod.storage.preferences.UserPreferences;
-
-public class UserInterfacePreferencesFragment extends PreferenceFragmentCompat {
- private static final String PREF_SWIPE = "prefSwipe";
-
- @Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- addPreferencesFromResource(R.xml.preferences_user_interface);
- setupInterfaceScreen();
- }
-
- @Override
- public void onStart() {
- super.onStart();
- ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.user_interface_label);
- }
-
- private void setupInterfaceScreen() {
- Preference.OnPreferenceChangeListener restartApp = (preference, newValue) -> {
- ActivityCompat.recreate(getActivity());
- return true;
- };
- findPreference(UserPreferences.PREF_THEME).setOnPreferenceChangeListener(restartApp);
- findPreference(UserPreferences.PREF_THEME_BLACK).setOnPreferenceChangeListener(restartApp);
- findPreference(UserPreferences.PREF_TINTED_COLORS).setOnPreferenceChangeListener(restartApp);
- if (Build.VERSION.SDK_INT < 31) {
- findPreference(UserPreferences.PREF_TINTED_COLORS).setVisible(false);
- }
-
- findPreference(UserPreferences.PREF_SHOW_TIME_LEFT)
- .setOnPreferenceChangeListener(
- (preference, newValue) -> {
- UserPreferences.setShowRemainTimeSetting((Boolean) newValue);
- EventBus.getDefault().post(new UnreadItemsUpdateEvent());
- EventBus.getDefault().post(new PlayerStatusEvent());
- return true;
- });
-
- findPreference(UserPreferences.PREF_HIDDEN_DRAWER_ITEMS)
- .setOnPreferenceClickListener(preference -> {
- DrawerPreferencesDialog.show(getContext(), null);
- return true;
- });
-
- findPreference(UserPreferences.PREF_FULL_NOTIFICATION_BUTTONS)
- .setOnPreferenceClickListener(preference -> {
- showFullNotificationButtonsDialog();
- return true;
- });
- findPreference(UserPreferences.PREF_FILTER_FEED)
- .setOnPreferenceClickListener((preference -> {
- new SubscriptionsFilterDialog().show(getChildFragmentManager(), "filter");
- return true;
- }));
-
- findPreference(UserPreferences.PREF_DRAWER_FEED_ORDER)
- .setOnPreferenceClickListener((preference -> {
- FeedSortDialog.showDialog(requireContext());
- return true;
- }));
- findPreference(PREF_SWIPE)
- .setOnPreferenceClickListener(preference -> {
- ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_swipe);
- return true;
- });
-
- if (Build.VERSION.SDK_INT >= 26) {
- findPreference(UserPreferences.PREF_EXPANDED_NOTIFICATION).setVisible(false);
- }
- }
-
- private void showFullNotificationButtonsDialog() {
- final Context context = getActivity();
-
- final List<Integer> preferredButtons = UserPreferences.getFullNotificationButtons();
- final String[] allButtonNames = context.getResources().getStringArray(
- R.array.full_notification_buttons_options);
- final int[] buttonIds = {
- UserPreferences.NOTIFICATION_BUTTON_SKIP,
- UserPreferences.NOTIFICATION_BUTTON_NEXT_CHAPTER,
- UserPreferences.NOTIFICATION_BUTTON_PLAYBACK_SPEED,
- UserPreferences.NOTIFICATION_BUTTON_SLEEP_TIMER,
- };
- final DialogInterface.OnClickListener completeListener = (dialog, which) ->
- UserPreferences.setFullNotificationButtons(preferredButtons);
- final String title = context.getResources().getString(R.string.pref_full_notification_buttons_title);
-
- boolean[] checked = new boolean[allButtonNames.length]; // booleans default to false in java
-
- // Clear buttons that are not part of the setting anymore
- for (int i = preferredButtons.size() - 1; i >= 0; i--) {
- boolean isValid = false;
- for (int j = 0; j < checked.length; j++) {
- if (buttonIds[j] == preferredButtons.get(i)) {
- isValid = true;
- break;
- }
- }
-
- if (!isValid) {
- preferredButtons.remove(i);
- }
- }
-
- for (int i = 0; i < checked.length; i++) {
- if (preferredButtons.contains(buttonIds[i])) {
- checked[i] = true;
- }
- }
-
- MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context);
- builder.setTitle(title);
- builder.setMultiChoiceItems(allButtonNames, checked, (dialog, which, isChecked) -> {
- checked[which] = isChecked;
- if (isChecked) {
- preferredButtons.add(buttonIds[which]);
- } else {
- preferredButtons.remove((Integer) buttonIds[which]);
- }
- });
- builder.setPositiveButton(R.string.confirm_label, null);
- builder.setNegativeButton(R.string.cancel_label, null);
- final AlertDialog dialog = builder.create();
-
- dialog.show();
-
- Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
-
- positiveButton.setOnClickListener(v -> {
- if (preferredButtons.size() != 2) {
- ListView selectionView = dialog.getListView();
- Snackbar.make(
- selectionView,
- context.getResources().getString(R.string.pref_compact_notification_buttons_dialog_error_exact),
- Snackbar.LENGTH_SHORT).show();
-
- } else {
- completeListener.onClick(dialog, AlertDialog.BUTTON_POSITIVE);
- dialog.cancel();
- }
- });
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/dialog/PreferenceListDialog.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/dialog/PreferenceListDialog.java
deleted file mode 100644
index b6a11c001..000000000
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/dialog/PreferenceListDialog.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package de.danoeh.antennapod.fragment.preferences.dialog;
-
-import android.content.Context;
-
-import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-
-import de.danoeh.antennapod.R;
-
-public class PreferenceListDialog {
- protected Context context;
- private String title;
- private OnPreferenceChangedListener onPreferenceChangedListener;
- private int selectedPos = 0;
-
- public PreferenceListDialog(Context context, String title) {
- this.context = context;
- this.title = title;
- }
-
- public interface OnPreferenceChangedListener {
- /**
- * Notified when user confirms preference
- *
- * @param pos The index of the item that was selected
- */
-
- void preferenceChanged(int pos);
- }
-
- public void openDialog(String[] items) {
-
- MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context);
- builder.setTitle(title);
- builder.setSingleChoiceItems(items, selectedPos, (dialog, which) -> {
- selectedPos = which;
- });
- builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
- if (onPreferenceChangedListener != null && selectedPos >= 0) {
- onPreferenceChangedListener.preferenceChanged(selectedPos);
- }
- });
- builder.setNegativeButton(R.string.cancel_label, null);
- builder.create().show();
- }
-
- public void setOnPreferenceChangedListener(OnPreferenceChangedListener onPreferenceChangedListener) {
- this.onPreferenceChangedListener = onPreferenceChangedListener;
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/dialog/PreferenceSwitchDialog.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/dialog/PreferenceSwitchDialog.java
deleted file mode 100644
index 10fbe6137..000000000
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/dialog/PreferenceSwitchDialog.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package de.danoeh.antennapod.fragment.preferences.dialog;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-
-import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import com.google.android.material.materialswitch.MaterialSwitch;
-
-import de.danoeh.antennapod.R;
-
-public class PreferenceSwitchDialog {
- protected Context context;
- private String title;
- private String text;
- private OnPreferenceChangedListener onPreferenceChangedListener;
-
- public PreferenceSwitchDialog(Context context, String title, String text) {
- this.context = context;
- this.title = title;
- this.text = text;
- }
-
- public interface OnPreferenceChangedListener {
- /**
- * Notified when user confirms preference
- *
- * @param enabled The preference
- */
-
- void preferenceChanged(boolean enabled);
- }
-
- public void openDialog() {
-
- MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context);
- builder.setTitle(title);
-
- LayoutInflater inflater = LayoutInflater.from(this.context);
- View layout = inflater.inflate(R.layout.dialog_switch_preference, null, false);
- MaterialSwitch switchButton = layout.findViewById(R.id.dialogSwitch);
- switchButton.setText(text);
- builder.setView(layout);
-
- builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
- if (onPreferenceChangedListener != null) {
- onPreferenceChangedListener.preferenceChanged(switchButton.isChecked());
- }
- });
- builder.setNegativeButton(R.string.cancel_label, null);
- builder.create().show();
- }
-
- public void setOnPreferenceChangedListener(OnPreferenceChangedListener onPreferenceChangedListener) {
- this.onPreferenceChangedListener = onPreferenceChangedListener;
- }
-}