From a4969338df5ea8d0b2c5e726dc0a8ab69d32dc12 Mon Sep 17 00:00:00 2001 From: dkanada Date: Fri, 19 Jun 2020 06:40:09 +0900 Subject: [PATCH] add setting to save the queue on exit --- .../java/com/dkanada/gramophone/provider/QueueStore.java | 7 +++++++ .../service/notification/PlayingNotificationImpl.java | 1 + .../service/notification/PlayingNotificationImpl24.java | 1 + .../java/com/dkanada/gramophone/util/PreferenceUtil.java | 5 +++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_audio.xml | 7 +++++++ 6 files changed, 23 insertions(+) diff --git a/app/src/main/java/com/dkanada/gramophone/provider/QueueStore.java b/app/src/main/java/com/dkanada/gramophone/provider/QueueStore.java index c928cd0f..0a7af241 100644 --- a/app/src/main/java/com/dkanada/gramophone/provider/QueueStore.java +++ b/app/src/main/java/com/dkanada/gramophone/provider/QueueStore.java @@ -26,9 +26,12 @@ import android.provider.MediaStore.Audio.AudioColumns; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.dkanada.gramophone.App; import com.dkanada.gramophone.loader.SongLoader; import com.dkanada.gramophone.model.Song; +import com.dkanada.gramophone.util.PreferenceUtil; +import java.util.ArrayList; import java.util.List; public class QueueStore extends SQLiteOpenHelper { @@ -175,6 +178,10 @@ public class QueueStore extends SQLiteOpenHelper { @NonNull private List getQueue(@NonNull final String tableName) { + if (!PreferenceUtil.getInstance(App.getInstance()).getRememberQueue()) { + return new ArrayList<>(); + } + Cursor cursor = getReadableDatabase().query(tableName, null, null, null, null, null, null); return SongLoader.getSongs(cursor); diff --git a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java index 6f3bb295..b653a733 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java +++ b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java @@ -178,6 +178,7 @@ public class PlayingNotificationImpl extends PlayingNotification { private PendingIntent buildPendingIntent(Context context, final String action, final ComponentName serviceName) { Intent intent = new Intent(action); intent.setComponent(serviceName); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); return PendingIntent.getService(context, 0, intent, 0); } } diff --git a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java index ff335298..4201769e 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java +++ b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java @@ -110,6 +110,7 @@ public class PlayingNotificationImpl24 extends PlayingNotification { final ComponentName serviceName = new ComponentName(service, MusicService.class); Intent intent = new Intent(action); intent.setComponent(serviceName); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); return PendingIntent.getService(service, 0, intent, 0); } } diff --git a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java index 643391fc..b8086331 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java @@ -57,6 +57,7 @@ public final class PreferenceUtil { public static final String MAXIMUM_BITRATE = "maximum_bitrate"; public static final String AUDIO_DUCKING = "audio_ducking"; public static final String REMEMBER_SHUFFLE = "remember_shuffle"; + public static final String REMEMBER_QUEUE = "remember_queue"; public static final String SHOW_ALBUM_COVER = "show_album_cover"; public static final String BLUR_ALBUM_COVER = "blur_album_cover"; @@ -183,6 +184,10 @@ public final class PreferenceUtil { return mPreferences.getBoolean(REMEMBER_SHUFFLE, true); } + public final boolean getRememberQueue() { + return mPreferences.getBoolean(REMEMBER_QUEUE, true); + } + public final boolean getShowAlbumCover() { return mPreferences.getBoolean(SHOW_ALBUM_COVER, true); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b849ce4a..412a0cc3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -114,6 +114,7 @@ Audio Ducking Remember Tab Remember Shuffle + Remember Queue The primary theme color for control elements. An alternate color used to accent elements. Uses the current song\'s album cover as the lockscreen wallpaper. @@ -124,6 +125,7 @@ "This can cause playback issues on some devices." Shuffle mode will stay on when selecting a new list of songs for the queue. Colors the navigation bar in the primary color. + Save the queue when closing the app so it can persist across sessions. Colors the app shortcuts in the primary color. Go to the last opened tab on launch. Configure visibility and order of library categories. diff --git a/app/src/main/res/xml/pref_audio.xml b/app/src/main/res/xml/pref_audio.xml index 58e1055d..f49071f1 100644 --- a/app/src/main/res/xml/pref_audio.xml +++ b/app/src/main/res/xml/pref_audio.xml @@ -38,6 +38,13 @@ android:summary="@string/pref_summary_remember_shuffle" android:title="@string/pref_title_remember_shuffle" /> + + \ No newline at end of file