diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/preferences')
8 files changed, 59 insertions, 103 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderAuthenticationFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderAuthenticationFragment.java index 6eb19aff2..c0bf3e0ea 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderAuthenticationFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderAuthenticationFragment.java @@ -25,8 +25,8 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.preferences.GpodnetPreferences; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.core.sync.SyncService; -import de.danoeh.antennapod.core.sync.gpoddernet.GpodnetService; -import de.danoeh.antennapod.core.sync.gpoddernet.model.GpodnetDevice; +import de.danoeh.antennapod.net.sync.gpoddernet.GpodnetService; +import de.danoeh.antennapod.net.sync.gpoddernet.model.GpodnetDevice; import de.danoeh.antennapod.core.util.FileNameGenerator; import de.danoeh.antennapod.core.util.IntentUtils; import io.reactivex.Completable; @@ -96,7 +96,9 @@ public class GpodderAuthenticationFragment extends DialogFragment { } else { GpodnetPreferences.setHosturl(GpodnetService.DEFAULT_BASE_HOST); } - service = new GpodnetService(AntennapodHttpClient.getHttpClient(), GpodnetPreferences.getHosturl()); + service = new GpodnetService(AntennapodHttpClient.getHttpClient(), + GpodnetPreferences.getHosturl(), GpodnetPreferences.getDeviceID(), + GpodnetPreferences.getUsername(), GpodnetPreferences.getPassword()); getDialog().setTitle(GpodnetPreferences.getHosturl()); advance(); }); @@ -138,7 +140,8 @@ public class GpodderAuthenticationFragment extends DialogFragment { inputManager.hideSoftInputFromWindow(login.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); Completable.fromAction(() -> { - service.authenticate(usernameStr, passwordStr); + service.setCredentials(usernameStr, passwordStr); + service.login(); devices = service.getDevices(); GpodderAuthenticationFragment.this.username = usernameStr; GpodderAuthenticationFragment.this.password = passwordStr; 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 index 7bf602e35..baf4c7c57 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java @@ -1,14 +1,15 @@ package de.danoeh.antennapod.fragment.preferences; import android.content.Intent; -import android.os.Build; import android.os.Bundle; -import android.provider.Settings; + 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; @@ -30,6 +31,7 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { private static final String STATISTICS = "statistics"; 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) { @@ -81,26 +83,21 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { 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); - } + ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_notifications); return true; }); findPreference(PREF_ABOUT).setOnPreferenceClickListener( preference -> { - getParentFragmentManager().beginTransaction().replace(R.id.content, new AboutFragment()) + getParentFragmentManager().beginTransaction() + .replace(R.id.settingsContainer, new AboutFragment()) .addToBackStack(getString(R.string.about_pref)).commit(); return true; } ); findPreference(STATISTICS).setOnPreferenceClickListener( preference -> { - getParentFragmentManager().beginTransaction().replace(R.id.content, new StatisticsFragment()) + getParentFragmentManager().beginTransaction() + .replace(R.id.settingsContainer, new StatisticsFragment()) .addToBackStack(getString(R.string.statistics_label)).commit(); return true; } @@ -113,6 +110,10 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { IntentUtils.openInBrowser(getContext(), "https://forum.antennapod.org/"); return true; }); + findPreference(PREF_CONTRIBUTE).setOnPreferenceClickListener(preference -> { + IntentUtils.openInBrowser(getContext(), "https://antennapod.org/contribute/"); + return true; + }); findPreference(PREF_SEND_BUG_REPORT).setOnPreferenceClickListener(preference -> { startActivity(new Intent(getActivity(), BugReportActivity.class)); return true; @@ -123,7 +124,7 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { SearchPreference searchPreference = findPreference("searchPreference"); SearchConfiguration config = searchPreference.getSearchConfiguration(); config.setActivity((AppCompatActivity) getActivity()); - config.setFragmentContainerViewId(R.id.content); + config.setFragmentContainerViewId(R.id.settingsContainer); config.setBreadcrumbsEnabled(true); config.index(R.xml.preferences_user_interface) @@ -145,5 +146,7 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_gpodder)); 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)); } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NetworkPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NetworkPreferencesFragment.java index 3889034fa..305e495e8 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NetworkPreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NetworkPreferencesFragment.java @@ -1,23 +1,25 @@ package de.danoeh.antennapod.fragment.preferences; -import android.app.TimePickerDialog; import android.content.Context; +import android.content.SharedPreferences; import android.content.res.Resources; import android.os.Bundle; -import androidx.appcompat.app.AlertDialog; -import androidx.preference.PreferenceFragmentCompat; import android.text.format.DateFormat; +import androidx.preference.PreferenceFragmentCompat; +import androidx.preference.PreferenceManager; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.PreferenceActivity; import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.dialog.FeedRefreshIntervalDialog; import de.danoeh.antennapod.dialog.ProxyDialog; -import org.apache.commons.lang3.ArrayUtils; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.concurrent.TimeUnit; -public class NetworkPreferencesFragment extends PreferenceFragmentCompat { + +public class NetworkPreferencesFragment extends PreferenceFragmentCompat + implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String PREF_SCREEN_AUTODL = "prefAutoDownloadSettings"; private static final String PREF_PROXY = "prefProxy"; @@ -31,6 +33,13 @@ public class NetworkPreferencesFragment extends PreferenceFragmentCompat { public void onStart() { super.onStart(); ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.network_pref); + PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this); + } + + @Override + public void onStop() { + super.onStop(); + PreferenceManager.getDefaultSharedPreferences(getContext()).unregisterOnSharedPreferenceChangeListener(this); } @Override @@ -47,9 +56,10 @@ public class NetworkPreferencesFragment extends PreferenceFragmentCompat { }); findPreference(UserPreferences.PREF_UPDATE_INTERVAL) .setOnPreferenceClickListener(preference -> { - showUpdateIntervalTimePreferencesDialog(); + new FeedRefreshIntervalDialog(getContext()).show(); return true; }); + findPreference(UserPreferences.PREF_PARALLEL_DOWNLOADS) .setOnPreferenceChangeListener( (preference, o) -> { @@ -67,6 +77,9 @@ public class NetworkPreferencesFragment extends PreferenceFragmentCompat { }); } + /** + * Used to init and handle changes to view + */ private void setUpdateIntervalText() { Context context = getActivity().getApplicationContext(); String val; @@ -74,7 +87,7 @@ public class NetworkPreferencesFragment extends PreferenceFragmentCompat { if (interval > 0) { int hours = (int) TimeUnit.MILLISECONDS.toHours(interval); val = context.getResources().getQuantityString( - R.plurals.pref_autoUpdateIntervallOrTime_every_hours, hours, hours); + R.plurals.feed_refresh_every_x_hours, hours, hours); } else { int[] timeOfDay = UserPreferences.getUpdateTimeOfDay(); if (timeOfDay.length == 2) { @@ -82,94 +95,29 @@ public class NetworkPreferencesFragment extends PreferenceFragmentCompat { cal.set(Calendar.HOUR_OF_DAY, timeOfDay[0]); cal.set(Calendar.MINUTE, timeOfDay[1]); String timeOfDayStr = DateFormat.getTimeFormat(context).format(cal.getTime()); - val = String.format(context.getString(R.string.pref_autoUpdateIntervallOrTime_at), + val = String.format(context.getString(R.string.feed_refresh_interval_at), timeOfDayStr); } else { - val = context.getString(R.string.pref_smart_mark_as_played_disabled); // TODO: Is this a bug? Otherwise document why is this related to smart mark??? + val = context.getString(R.string.feed_refresh_never); } } - String summary = context.getString(R.string.pref_autoUpdateIntervallOrTime_sum) + "\n" + String summary = context.getString(R.string.feed_refresh_sum) + "\n" + String.format(context.getString(R.string.pref_current_value), val); findPreference(UserPreferences.PREF_UPDATE_INTERVAL).setSummary(summary); } private void setParallelDownloadsText(int downloads) { final Resources res = getActivity().getResources(); - String s = res.getString(R.string.parallel_downloads, downloads); findPreference(UserPreferences.PREF_PARALLEL_DOWNLOADS).setSummary(s); } - private void showUpdateIntervalTimePreferencesDialog() { - final Context context = getActivity(); - - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(R.string.pref_autoUpdateIntervallOrTime_title); - builder.setMessage(R.string.pref_autoUpdateIntervallOrTime_message); - builder.setPositiveButton(R.string.pref_autoUpdateIntervallOrTime_Interval, (dialog, which) -> { - AlertDialog.Builder builder1 = new AlertDialog.Builder(context); - builder1.setTitle(context.getString(R.string.pref_autoUpdateIntervallOrTime_Interval)); - final String[] values = context.getResources().getStringArray(R.array.update_intervall_values); - final String[] entries = getUpdateIntervalEntries(values); - long currInterval = UserPreferences.getUpdateInterval(); - int checkedItem = -1; - if(currInterval > 0) { - String currIntervalStr = String.valueOf(TimeUnit.MILLISECONDS.toHours(currInterval)); - checkedItem = ArrayUtils.indexOf(values, currIntervalStr); - } - builder1.setSingleChoiceItems(entries, checkedItem, (dialog1, which1) -> { - int hours = Integer.parseInt(values[which1]); - UserPreferences.setUpdateInterval(hours); - dialog1.dismiss(); - setUpdateIntervalText(); - }); - builder1.setNegativeButton(context.getString(R.string.cancel_label), null); - builder1.show(); - }); - builder.setNegativeButton(R.string.pref_autoUpdateIntervallOrTime_TimeOfDay, (dialog, which) -> { - int hourOfDay = 7; - int minute = 0; - int[] updateTime = UserPreferences.getUpdateTimeOfDay(); - if (updateTime.length == 2) { - hourOfDay = updateTime[0]; - minute = updateTime[1]; - } - TimePickerDialog timePickerDialog = new TimePickerDialog(context, - (view, selectedHourOfDay, selectedMinute) -> { - if (view.getTag() == null) { // onTimeSet() may get called twice! - view.setTag("TAGGED"); - UserPreferences.setUpdateTimeOfDay(selectedHourOfDay, selectedMinute); - setUpdateIntervalText(); - } - }, hourOfDay, minute, DateFormat.is24HourFormat(context)); - timePickerDialog.setTitle(context.getString(R.string.pref_autoUpdateIntervallOrTime_TimeOfDay)); - timePickerDialog.show(); - }); - builder.setNeutralButton(R.string.pref_autoUpdateIntervallOrTime_Disable, (dialog, which) -> { - UserPreferences.disableAutoUpdate(context); + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (UserPreferences.PREF_UPDATE_INTERVAL.equals(key)) { setUpdateIntervalText(); - }); - builder.show(); - } - - private String[] getUpdateIntervalEntries(final String[] values) { - final Resources res = getActivity().getResources(); - String[] entries = new String[values.length]; - for (int x = 0; x < values.length; x++) { - Integer v = Integer.parseInt(values[x]); - switch (v) { - case 0: - entries[x] = res.getString(R.string.pref_update_interval_hours_manual); - break; - case 1: - entries[x] = v + " " + res.getString(R.string.pref_update_interval_hours_singular); - break; - default: - entries[x] = v + " " + res.getString(R.string.pref_update_interval_hours_plural); - break; - - } } - return entries; } } + + diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/AboutFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/AboutFragment.java index 0a64bbe71..e85f60027 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/AboutFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/AboutFragment.java @@ -28,7 +28,8 @@ public class AboutFragment extends PreferenceFragmentCompat { return true; }); findPreference("about_contributors").setOnPreferenceClickListener((preference) -> { - getParentFragmentManager().beginTransaction().replace(R.id.content, new ContributorsPagerFragment()) + getParentFragmentManager().beginTransaction() + .replace(R.id.settingsContainer, new ContributorsPagerFragment()) .addToBackStack(getString(R.string.contributors)).commit(); return true; }); @@ -37,7 +38,8 @@ public class AboutFragment extends PreferenceFragmentCompat { return true; }); findPreference("about_licenses").setOnPreferenceClickListener((preference) -> { - getParentFragmentManager().beginTransaction().replace(R.id.content, new LicensesFragment()) + getParentFragmentManager().beginTransaction() + .replace(R.id.settingsContainer, new LicensesFragment()) .addToBackStack(getString(R.string.translators)).commit(); return true; }); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/DevelopersFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/DevelopersFragment.java index b844234b7..dcd720dc2 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/DevelopersFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/DevelopersFragment.java @@ -29,7 +29,7 @@ public class DevelopersFragment extends ListFragment { developersLoader = Single.create((SingleOnSubscribe<ArrayList<SimpleIconListAdapter.ListItem>>) emitter -> { ArrayList<SimpleIconListAdapter.ListItem> developers = new ArrayList<>(); BufferedReader reader = new BufferedReader(new InputStreamReader( - getContext().getAssets().open("developers.csv"))); + getContext().getAssets().open("developers.csv"), "UTF-8")); String line; while ((line = reader.readLine()) != null) { String[] info = line.split(";"); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/LicensesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/LicensesFragment.java index 97565a613..38e532aed 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/LicensesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/LicensesFragment.java @@ -95,7 +95,7 @@ public class LicensesFragment extends ListFragment { private void showLicenseText(String licenseTextFile) { try { BufferedReader reader = new BufferedReader(new InputStreamReader( - getContext().getAssets().open(licenseTextFile))); + getContext().getAssets().open(licenseTextFile), "UTF-8")); StringBuilder licenseText = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/SpecialThanksFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/SpecialThanksFragment.java index d759a5ff2..1b4beeea0 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/SpecialThanksFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/SpecialThanksFragment.java @@ -29,7 +29,7 @@ public class SpecialThanksFragment extends ListFragment { translatorsLoader = Single.create((SingleOnSubscribe<ArrayList<SimpleIconListAdapter.ListItem>>) emitter -> { ArrayList<SimpleIconListAdapter.ListItem> translators = new ArrayList<>(); BufferedReader reader = new BufferedReader(new InputStreamReader( - getContext().getAssets().open("special_thanks.csv"))); + getContext().getAssets().open("special_thanks.csv"), "UTF-8")); String line; while ((line = reader.readLine()) != null) { String[] info = line.split(";"); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/TranslatorsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/TranslatorsFragment.java index b77c74de6..ed0d53145 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/TranslatorsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/about/TranslatorsFragment.java @@ -29,7 +29,7 @@ public class TranslatorsFragment extends ListFragment { translatorsLoader = Single.create((SingleOnSubscribe<ArrayList<SimpleIconListAdapter.ListItem>>) emitter -> { ArrayList<SimpleIconListAdapter.ListItem> translators = new ArrayList<>(); BufferedReader reader = new BufferedReader(new InputStreamReader( - getContext().getAssets().open("translators.csv"))); + getContext().getAssets().open("translators.csv"), "UTF-8")); String line; while ((line = reader.readLine()) != null) { String[] info = line.split(";"); |