diff options
author | Tom Hennen <TomHennen@users.noreply.github.com> | 2016-04-04 19:20:14 -0400 |
---|---|---|
committer | Tom Hennen <TomHennen@users.noreply.github.com> | 2016-04-04 19:20:14 -0400 |
commit | ab88df91bac8e58343933aba50fcad545a60d096 (patch) | |
tree | ab9117992294ef0da01fe805a1a078c1664c12e4 /core/src/main | |
parent | e75ab9c1fa18817761491660819c7515cf8cbc36 (diff) | |
parent | e3408565dcc15cd97548b664773bc684dca4edeb (diff) | |
download | AntennaPod-ab88df91bac8e58343933aba50fcad545a60d096.zip |
Merge pull request #1843 from saqura/develop
Optionally show rewind/forward buttons on the lockscreen
Diffstat (limited to 'core/src/main')
4 files changed, 68 insertions, 4 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index aee70f7d4..569dfd2c4 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -52,6 +52,7 @@ public class UserPreferences { public static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator"; public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify"; public static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify"; + public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons"; public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground"; public static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport"; @@ -115,6 +116,9 @@ public class UserPreferences { public static final int EPISODE_CLEANUP_DEFAULT = 0; // Constants + private static final int NOTIFICATION_BUTTON_REWIND = 0; + private static final int NOTIFICATION_BUTTON_FAST_FORWARD = 1; + private static final int NOTIFICATION_BUTTON_SKIP = 2; private static int EPISODE_CACHE_SIZE_UNLIMITED = -1; public static int FEED_ORDER_COUNTER = 0; public static int FEED_ORDER_ALPHABETICAL = 1; @@ -165,6 +169,42 @@ public class UserPreferences { return new ArrayList<>(Arrays.asList(TextUtils.split(hiddenItems, ","))); } + public static List<Integer> getCompactNotificationButtons() { + String[] buttons = TextUtils.split( + prefs.getString(PREF_COMPACT_NOTIFICATION_BUTTONS, + String.valueOf(NOTIFICATION_BUTTON_SKIP)), + ","); + List<Integer> notificationButtons = new ArrayList<>(); + for (int i=0; i<buttons.length; i++) { + notificationButtons.add(Integer.parseInt(buttons[i])); + } + return notificationButtons; + } + + /** + * Helper function to return whether the specified button should be shown on compact + * notifications. + * + * @param buttonId Either NOTIFICATION_BUTTON_REWIND, NOTIFICATION_BUTTON_FAST_FORWARD or + * NOTIFICATION_BUTTON_SKIP. + * @return {@code true} if button should be shown, {@code false} otherwise + */ + private static boolean showButtonOnCompactNotification(int buttonId) { + return getCompactNotificationButtons().contains(buttonId); + } + + public static boolean showRewindOnCompactNotification() { + return showButtonOnCompactNotification(NOTIFICATION_BUTTON_REWIND); + } + + public static boolean showFastForwardOnCompactNotification() { + return showButtonOnCompactNotification(NOTIFICATION_BUTTON_FAST_FORWARD); + } + + public static boolean showSkipOnCompactNotification() { + return showButtonOnCompactNotification(NOTIFICATION_BUTTON_SKIP); + } + public static int getFeedOrder() { String value = prefs.getString(PREF_DRAWER_FEED_ORDER, "0"); return Integer.parseInt(value); @@ -198,9 +238,9 @@ public class UserPreferences { } /** - * Returns true if notifications are persistent + * Returns true if the lockscreen background should be set to the current episode's image * - * @return {@code true} if notifications are persistent, {@code false} otherwise + * @return {@code true} if the lockscreen background should be set, {@code false} otherwise */ public static boolean setLockscreenBackground() { return prefs.getBoolean(PREF_LOCKSCREEN_BACKGROUND, true); @@ -512,6 +552,13 @@ public class UserPreferences { .apply(); } + public static void setCompactNotificationButtons(List<Integer> items) { + String str = TextUtils.join(",", items); + prefs.edit() + .putString(PREF_COMPACT_NOTIFICATION_BUTTONS, str) + .apply(); + } + public static void setQueueLocked(boolean locked) { prefs.edit() .putBoolean(PREF_QUEUE_LOCKED, locked) diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index 729ea9e7a..edea3962f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -858,7 +858,6 @@ public class PlaybackService extends Service { .setPriority(UserPreferences.getNotifyPriority()); // set notification priority IntList compactActionList = new IntList(); - int numActions = 0; // we start and 0 and then increment by 1 for each call to addAction // always let them rewind @@ -867,6 +866,9 @@ public class PlaybackService extends Service { notificationBuilder.addAction(android.R.drawable.ic_media_rew, getString(R.string.rewind_label), rewindButtonPendingIntent); + if(UserPreferences.showRewindOnCompactNotification()) { + compactActionList.add(numActions); + } numActions++; if (playerStatus == PlayerStatus.PLAYING) { @@ -891,6 +893,9 @@ public class PlaybackService extends Service { notificationBuilder.addAction(android.R.drawable.ic_media_ff, getString(R.string.fast_forward_label), ffButtonPendingIntent); + if(UserPreferences.showFastForwardOnCompactNotification()) { + compactActionList.add(numActions); + } numActions++; if (UserPreferences.isFollowQueue()) { @@ -899,7 +904,10 @@ public class PlaybackService extends Service { notificationBuilder.addAction(android.R.drawable.ic_media_next, getString(R.string.skip_episode_label), skipButtonPendingIntent); - compactActionList.add(numActions++); + if(UserPreferences.showSkipOnCompactNotification()) { + compactActionList.add(numActions); + } + numActions++; } PendingIntent stopButtonPendingIntent = getPendingIntentForMediaAction( diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml index ffb4eadad..fba22b985 100644 --- a/core/src/main/res/values/arrays.xml +++ b/core/src/main/res/values/arrays.xml @@ -213,4 +213,9 @@ <item>500</item> </string-array> + <string-array name="compact_notification_buttons_options"> + <item>@string/rewind_label</item> + <item>@string/fast_forward_label</item> + <item>@string/skip_episode_label</item> + </string-array> </resources> diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 29d4eabbb..4575f665e 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -374,6 +374,10 @@ <string name="pref_expandNotify_sum">Always expand the notification to show playback buttons.</string> <string name="pref_persistNotify_title">Persistent Playback Controls</string> <string name="pref_persistNotify_sum">Keep notification and lockscreen controls when playback is paused.</string> + <string name="pref_compact_notification_buttons_title">Set Lockscreen Buttons</string> + <string name="pref_compact_notification_buttons_sum">Change the playback buttons on the lockscreen. The play/pause button is always included.</string> + <string name="pref_compact_notification_buttons_dialog_title">Select a maximum of %1$d items</string> + <string name="pref_compact_notification_buttons_dialog_error">You can only select a maximum of %1$d items.</string> <string name="pref_show_subscriptions_in_drawer_title">Show Subscriptions</string> <string name="pref_show_subscriptions_in_drawer_sum">Show subscription list directly in navigation drawer</string> <string name="pref_lockscreen_background_title">Set Lockscreen Background</string> |