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 4f6010b75..6e526911b 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java @@ -19,6 +19,7 @@ import de.danoeh.antennapod.fragment.preferences.GpodderPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.ImportExportPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.MainPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.NetworkPreferencesFragment; +import de.danoeh.antennapod.fragment.preferences.NotificationPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.PlaybackPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.StoragePreferencesFragment; import de.danoeh.antennapod.fragment.preferences.UserInterfacePreferencesFragment; @@ -70,6 +71,8 @@ public class PreferenceActivity extends AppCompatActivity implements SearchPrefe prefFragment = new GpodderPreferencesFragment(); } else if (screen == R.xml.preferences_playback) { prefFragment = new PlaybackPreferencesFragment(); + } else if (screen == R.xml.preferences_notifications) { + prefFragment = new NotificationPreferencesFragment(); } return prefFragment; } @@ -90,6 +93,8 @@ public class PreferenceActivity extends AppCompatActivity implements SearchPrefe return R.string.user_interface_label; case R.xml.preferences_gpodder: return R.string.gpodnet_main_label; + case R.xml.preferences_notifications: + return R.string.notification_pref_fragment; default: return R.string.settings_label; } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java index 546e12e65..bec73894c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java @@ -30,7 +30,6 @@ public class GpodderPreferencesFragment extends PreferenceFragmentCompat { private static final String PREF_GPODNET_FORCE_FULL_SYNC = "pref_gpodnet_force_full_sync"; private static final String PREF_GPODNET_LOGOUT = "pref_gpodnet_logout"; private static final String PREF_GPODNET_HOSTNAME = "pref_gpodnet_hostname"; - private static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications"; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -112,7 +111,6 @@ public class GpodderPreferencesFragment extends PreferenceFragmentCompat { findPreference(PREF_GPODNET_SYNC).setEnabled(loggedIn); findPreference(PREF_GPODNET_FORCE_FULL_SYNC).setEnabled(loggedIn); findPreference(PREF_GPODNET_LOGOUT).setEnabled(loggedIn); - findPreference(PREF_GPODNET_NOTIFICATIONS).setEnabled(loggedIn); if (loggedIn) { String format = getActivity().getString(R.string.pref_gpodnet_login_status); String summary = String.format(format, GpodnetPreferences.getUsername(), 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 2d640458e..99fd12021 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 @@ -26,6 +26,7 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { private static final String PREF_CATEGORY_PROJECT = "project"; private static final String STATISTICS = "statistics"; private static final String PREF_ABOUT = "prefAbout"; + private static final String PREF_NOTIFICATION = "notifications"; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -68,6 +69,10 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_storage); return true; }); + findPreference(PREF_NOTIFICATION).setOnPreferenceClickListener(preference -> { + ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_notifications); + return true; + }); findPreference(PREF_ABOUT).setOnPreferenceClickListener( preference -> { @@ -121,5 +126,7 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { .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)); } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NotificationPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NotificationPreferencesFragment.java new file mode 100644 index 000000000..94e151f7a --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NotificationPreferencesFragment.java @@ -0,0 +1,30 @@ +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.core.preferences.GpodnetPreferences; + +public class NotificationPreferencesFragment extends PreferenceFragmentCompat { + + private static final String TAG = "NotificationPrefFragment"; + private static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications"; + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + addPreferencesFromResource(R.xml.preferences_notifications); + setUpScreen(); + } + + @Override + public void onStart() { + super.onStart(); + ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.notification_pref_fragment); + } + + private void setUpScreen() { + final boolean loggedIn = GpodnetPreferences.loggedIn(); + findPreference(PREF_GPODNET_NOTIFICATIONS).setEnabled(loggedIn); + } +} diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 0a19a36b1..1630dc2f9 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -39,6 +39,11 @@ android:summary="@string/storage_sum" android:icon="?attr/storage" /> + + - diff --git a/app/src/main/res/xml/preferences_network.xml b/app/src/main/res/xml/preferences_network.xml index f51b9561e..0dbd1acee 100644 --- a/app/src/main/res/xml/preferences_network.xml +++ b/app/src/main/res/xml/preferences_network.xml @@ -29,18 +29,6 @@ numberpicker:maxValue="50" android:key="prefParallelDownloads" android:title="@string/pref_parallel_downloads_title"/> - - + + + + + + \ No newline at end of file diff --git a/core/src/main/res/drawable/ic_notifications_black.xml b/core/src/main/res/drawable/ic_notifications_black.xml new file mode 100644 index 000000000..7009a6763 --- /dev/null +++ b/core/src/main/res/drawable/ic_notifications_black.xml @@ -0,0 +1,9 @@ + + + diff --git a/core/src/main/res/drawable/ic_notifications_white.xml b/core/src/main/res/drawable/ic_notifications_white.xml new file mode 100644 index 000000000..10239aadd --- /dev/null +++ b/core/src/main/res/drawable/ic_notifications_white.xml @@ -0,0 +1,5 @@ + + + diff --git a/core/src/main/res/values/attrs.xml b/core/src/main/res/values/attrs.xml index 4a18f6ae6..a78f837bf 100644 --- a/core/src/main/res/values/attrs.xml +++ b/core/src/main/res/values/attrs.xml @@ -60,6 +60,7 @@ + diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index f3b59ecd5..078793672 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -30,6 +30,7 @@ The episode cache limit has been reached. You can increase the cache size in the Settings. Playback Downloads + Notifications Total time of podcasts played: @@ -443,7 +444,7 @@ Force full synchronization Sync all subscriptions and episode states with gpodder.net. %1$s with device %2$s]]> - Show sync error notifications + Synchronization failed This setting does not apply to authentication errors. Customize the speeds available for variable speed playback The speed to use when starting audio playback for episodes in this podcast @@ -471,9 +472,9 @@ You can only select a maximum of %1$d items. Set Lockscreen Background Set the lockscreen background to the current episode\'s image. As a side effect, this will also show the image in third party apps. - Show Download Report + Download failed If downloads fail, generate a report that shows the details of the failure. - Show Auto Download Report + Automatic download completed Show a notification for automatically downloaded episodes. Android versions before 4.1 do not support expanded notifications. Enqueue Location diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml index 92faa927a..9ec82215a 100644 --- a/core/src/main/res/values/styles.xml +++ b/core/src/main/res/values/styles.xml @@ -75,6 +75,7 @@ @drawable/scrollbar_thumb_light @color/filter_dialog_clear_light @drawable/filter_dialog_background_light + @drawable/ic_notifications_black