summaryrefslogtreecommitdiff
path: root/apps/playlist_catalog.c
diff options
context:
space:
mode:
authorChristian Soffke <christian.soffke@gmail.com>2022-11-22 20:37:47 +0100
committerChristian Soffke <christian.soffke@gmail.com>2022-11-26 17:20:06 +0100
commit098a8fd334df342b7e0af94e465997177e74b78b (patch)
treeee4c40fda54be0b782b277433762d0fa7d907d2f /apps/playlist_catalog.c
parent88ecaf2b8cbee654d66ef3f559679d8d1c390949 (diff)
downloadrockbox-098a8fd334df342b7e0af94e465997177e74b78b.tar.gz
rockbox-098a8fd334df342b7e0af94e465997177e74b78b.zip
Playlist Catalogue: Restore selection in playlist
Saves and restores the selected item in your most-recently accessed playlist, similar to Database and File Browser. Change-Id: I00afca41e33470cb458c4b87baccd6fd4016887a
Diffstat (limited to 'apps/playlist_catalog.c')
-rw-r--r--apps/playlist_catalog.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/apps/playlist_catalog.c b/apps/playlist_catalog.c
index 01cbc31600..a20600b268 100644
--- a/apps/playlist_catalog.c
+++ b/apps/playlist_catalog.c
@@ -147,6 +147,7 @@ const char* catalog_get_directory(void)
147 If "view" mode is set then we're not adding anything into playlist. */ 147 If "view" mode is set then we're not adding anything into playlist. */
148static int display_playlists(char* playlist, bool view) 148static int display_playlists(char* playlist, bool view)
149{ 149{
150 static int most_recent_selection = 0;
150 struct browse_context browse; 151 struct browse_context browse;
151 char selected_playlist[MAX_PATH]; 152 char selected_playlist[MAX_PATH];
152 int result = -1; 153 int result = -1;
@@ -154,7 +155,7 @@ static int display_playlists(char* playlist, bool view)
154 browse_context_init(&browse, SHOW_M3U, 155 browse_context_init(&browse, SHOW_M3U,
155 BROWSE_SELECTONLY|(view? 0: BROWSE_NO_CONTEXT_MENU), 156 BROWSE_SELECTONLY|(view? 0: BROWSE_NO_CONTEXT_MENU),
156 str(LANG_CATALOG), NOICON, 157 str(LANG_CATALOG), NOICON,
157 playlist_dir, most_recent_playlist); 158 playlist_dir, playlist_dir_length + 1 + most_recent_playlist);
158 159
159 browse.buf = selected_playlist; 160 browse.buf = selected_playlist;
160 browse.bufsize = sizeof(selected_playlist); 161 browse.bufsize = sizeof(selected_playlist);
@@ -168,8 +169,12 @@ restart:
168 169
169 if (browse.flags & BROWSE_SELECTED) 170 if (browse.flags & BROWSE_SELECTED)
170 { 171 {
171 strmemccpy(most_recent_playlist, selected_playlist+playlist_dir_length+1, 172 if (strcmp(most_recent_playlist, selected_playlist)) /* isn't most recent one */
172 sizeof(most_recent_playlist)); 173 {
174 strmemccpy(most_recent_playlist, selected_playlist,
175 sizeof(most_recent_playlist));
176 most_recent_selection = 0;
177 }
173 178
174 if (view) 179 if (view)
175 { 180 {
@@ -179,7 +184,7 @@ restart:
179 result = 0; 184 result = 0;
180 else 185 else
181 { 186 {
182 switch (playlist_viewer_ex(selected_playlist)) { 187 switch (playlist_viewer_ex(selected_playlist, &most_recent_selection)) {
183 case PLAYLIST_VIEWER_OK: 188 case PLAYLIST_VIEWER_OK:
184 result = 0; 189 result = 0;
185 break; 190 break;