AntennaPod/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java

151 lines
7.9 KiB
Java
Raw Normal View History

2019-06-13 23:09:59 +02:00
package de.danoeh.antennapod.fragment.preferences;
import android.content.Intent;
import android.os.Build;
2019-06-13 23:09:59 +02:00
import android.os.Bundle;
import android.provider.Settings;
2019-10-04 11:22:39 +02:00
import androidx.appcompat.app.AppCompatActivity;
import androidx.preference.Preference;
2019-10-04 11:22:39 +02:00
import androidx.preference.PreferenceFragmentCompat;
2019-06-13 23:09:59 +02:00
import com.bytehamster.lib.preferencesearch.SearchConfiguration;
import com.bytehamster.lib.preferencesearch.SearchPreference;
import de.danoeh.antennapod.R;
2019-09-20 23:21:27 +02:00
import de.danoeh.antennapod.activity.BugReportActivity;
2019-06-13 23:09:59 +02:00
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.gui.NotificationUtils;
2020-08-30 09:17:24 +02:00
import de.danoeh.antennapod.fragment.preferences.about.AboutFragment;
2019-06-13 23:09:59 +02:00
public class MainPreferencesFragment extends PreferenceFragmentCompat {
private static final String TAG = "MainPreferencesFragment";
private static final String PREF_SCREEN_USER_INTERFACE = "prefScreenInterface";
private static final String PREF_SCREEN_PLAYBACK = "prefScreenPlayback";
private static final String PREF_SCREEN_NETWORK = "prefScreenNetwork";
private static final String PREF_SCREEN_GPODDER = "prefScreenGpodder";
2019-06-13 23:09:59 +02:00
private static final String PREF_SCREEN_STORAGE = "prefScreenStorage";
private static final String PREF_FAQ = "prefFaq";
2020-06-06 13:01:45 +02:00
private static final String PREF_VIEW_FORUM = "prefViewForum";
2019-09-20 23:21:27 +02:00
private static final String PREF_SEND_BUG_REPORT = "prefSendBugReport";
private static final String PREF_CATEGORY_PROJECT = "project";
2019-06-13 23:09:59 +02:00
private static final String STATISTICS = "statistics";
private static final String PREF_ABOUT = "prefAbout";
private static final String PREF_NOTIFICATION = "notifications";
2019-06-13 23:09:59 +02:00
@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.
String packageName = getContext().getPackageName();
if (!"de.danoeh.antennapod".equals(packageName) && !"de.danoeh.antennapod.debug".equals(packageName)) {
findPreference(PREF_CATEGORY_PROJECT).setVisible(false);
Preference copyrightNotice = new Preference(getContext());
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);
}
2019-06-13 23:09:59 +02:00
}
@Override
public void onStart() {
super.onStart();
((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.settings_label);
}
2019-06-13 23:09:59 +02:00
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_NETWORK).setOnPreferenceClickListener(preference -> {
((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_network);
return true;
});
findPreference(PREF_SCREEN_GPODDER).setOnPreferenceClickListener(preference -> {
((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_gpodder);
2019-06-13 23:09:59 +02:00
return true;
});
findPreference(PREF_SCREEN_STORAGE).setOnPreferenceClickListener(preference -> {
((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_storage);
return true;
});
findPreference(PREF_NOTIFICATION).setOnPreferenceClickListener(preference -> {
if (Build.VERSION.SDK_INT >= 26) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getActivity().getPackageName());
startActivity(intent);
} else {
((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_notifications);
}
return true;
});
2019-06-13 23:09:59 +02:00
findPreference(PREF_ABOUT).setOnPreferenceClickListener(
preference -> {
2020-07-13 06:49:35 +02:00
getParentFragmentManager().beginTransaction().replace(R.id.content, new AboutFragment())
2019-11-08 23:29:00 +01:00
.addToBackStack(getString(R.string.about_pref)).commit();
2019-06-13 23:09:59 +02:00
return true;
}
);
findPreference(STATISTICS).setOnPreferenceClickListener(
preference -> {
2020-07-13 06:49:35 +02:00
getParentFragmentManager().beginTransaction().replace(R.id.content, new StatisticsFragment())
.addToBackStack(getString(R.string.statistics_label)).commit();
2019-06-13 23:09:59 +02:00
return true;
}
);
findPreference(PREF_FAQ).setOnPreferenceClickListener(preference -> {
IntentUtils.openInBrowser(getContext(), "https://antennapod.org/faq.html");
2019-06-13 23:09:59 +02:00
return true;
});
2020-06-06 13:01:45 +02:00
findPreference(PREF_VIEW_FORUM).setOnPreferenceClickListener(preference -> {
IntentUtils.openInBrowser(getContext(), "https://forum.antennapod.org/");
2019-09-20 23:38:13 +02:00
return true;
});
2019-09-20 23:21:27 +02:00
findPreference(PREF_SEND_BUG_REPORT).setOnPreferenceClickListener(preference -> {
startActivity(new Intent(getActivity(), BugReportActivity.class));
2019-06-13 23:09:59 +02:00
return true;
});
}
private void setupSearch() {
SearchPreference searchPreference = findPreference("searchPreference");
2019-06-13 23:09:59 +02:00
SearchConfiguration config = searchPreference.getSearchConfiguration();
config.setActivity((AppCompatActivity) getActivity());
config.setFragmentContainerViewId(R.id.content);
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_network)
.addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_network));
config.index(R.xml.preferences_storage)
.addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_storage));
2020-01-27 09:39:23 +01:00
config.index(R.xml.preferences_import_export)
.addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_storage))
.addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_import_export));
2019-06-13 23:09:59 +02:00
config.index(R.xml.preferences_autodownload)
.addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_network))
.addBreadcrumb(R.string.automation)
.addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_autodownload));
config.index(R.xml.preferences_gpodder)
.addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_gpodder));
config.index(R.xml.preferences_notifications)
.addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_notifications));
2019-06-13 23:09:59 +02:00
}
}