From ef1e7d88963aa411f06448f10b3b63886c157c9c Mon Sep 17 00:00:00 2001 From: Christian Soffke Date: Sun, 26 May 2024 19:13:55 +0200 Subject: [PATCH] bookmarks: show 'Create Bookmark' for unsaved playlists Instead of hiding this option when the current playlist is unsaved, we can offer to save the playlist, if necessary, before attempting to create a bookmark. This simplifies the workflow by getting rid of steps 1 and 2 that a user currently needs to perform: 1) Open context menu, check if "Create Bookmark" option is available 2) If not: Re-open context menu. Select Current Playlist -> Save Current Playlist 3) Re-open context menu. Select Bookmarks -> Create Bookmark Change-Id: Ia9fb5f9db95e2fcbde03470a3c3745824424a339 --- apps/bookmark.c | 4 ++++ apps/onplay.c | 11 +---------- manual/configure_rockbox/bookmarking.tex | 8 +++----- manual/main_menu/main.tex | 6 +++--- manual/rockbox_interface/wps.tex | 4 ++-- 5 files changed, 13 insertions(+), 20 deletions(-) diff --git a/apps/bookmark.c b/apps/bookmark.c index 3087b7302b..08f63469aa 100644 --- a/apps/bookmark.c +++ b/apps/bookmark.c @@ -42,6 +42,7 @@ #include "plugin.h" #include "file.h" #include "pathfuncs.h" +#include "playlist_menu.h" /*#define LOGF_ENABLE*/ #include "logf.h" @@ -1096,6 +1097,9 @@ static bool play_bookmark(const char* bookmark) /* ----------------------------------------------------------------------- */ bool bookmark_create_menu(void) { + if (!bookmark_is_bookmarkable_state()) + save_playlist_screen(NULL); + return write_bookmark(true); } /* ----------------------------------------------------------------------- */ diff --git a/apps/onplay.c b/apps/onplay.c index 71f902900d..2a2ac16b04 100644 --- a/apps/onplay.c +++ b/apps/onplay.c @@ -177,21 +177,12 @@ static int bookmark_menu_callback(int action, switch (action) { case ACTION_REQUEST_MENUITEM: - /* hide create bookmark option if bookmarking isn't currently possible (no track playing, queued tracks...) */ - if (this_item == &bookmark_create_menu_item) - { - if (!bookmark_is_bookmarkable_state()) - return ACTION_EXIT_MENUITEM; - } /* hide loading bookmarks menu if no bookmarks exist */ - else if (this_item == &bookmark_load_menu_item) + if (this_item == &bookmark_load_menu_item) { if (!bookmark_exists()) return ACTION_EXIT_MENUITEM; } - /* hide the bookmark menu if bookmarks can't be loaded or created */ - else if (!bookmark_is_bookmarkable_state() && !bookmark_exists()) - return ACTION_EXIT_MENUITEM; break; case ACTION_EXIT_MENUITEM: settings_save(); diff --git a/manual/configure_rockbox/bookmarking.tex b/manual/configure_rockbox/bookmarking.tex index d87b5ad8a7..a0a047e190 100644 --- a/manual/configure_rockbox/bookmarking.tex +++ b/manual/configure_rockbox/bookmarking.tex @@ -14,11 +14,9 @@ the bookmark to load. There are other ways to load a bookmarks mentioned below. - \note{Bookmarking does not work with dynamic (i.e. modified but not saved) - playlists, such as when playing tracks from the \setting{Database} instead of - the \setting{File Browser}. - If you do not see the option to create a bookmark in the \setting{WPS Context Menu}, - try saving the current playlist first. + \note{If the current playlist has been modified or is unsaved, such as when + playing tracks from the \setting{Database}, Rockbox will automatically + offer to save the playlist to a file when you attempt to create a bookmark. Queued tracks (see \reference{ref:queuing}) do not get saved to the playlist file. You're asked to confirm their removal when saving, so that the current playlist can be bookmarked. } diff --git a/manual/main_menu/main.tex b/manual/main_menu/main.tex index f09606a20b..f09cc448cb 100644 --- a/manual/main_menu/main.tex +++ b/manual/main_menu/main.tex @@ -53,9 +53,9 @@ If the \setting{Save a list of recently created bookmarks} option is enabled then you can view a list of several recent bookmarks here and select one to jump straight to that track.\\* - \note{A track launched from the file browser can be bookmarked as is. If - tracks are launched via the database, or the current playlist has been modified, - creating a bookmark requires that you save the playlist first.\\*} + \note{A track launched from the file browser can be bookmarked as-is. For + tracks launched via the database, or for modified playlists, you're + asked to save the playlist to a file when creating a bookmark.\\*} \begin{btnmap} \ActionStdNext diff --git a/manual/rockbox_interface/wps.tex b/manual/rockbox_interface/wps.tex index 839392b054..b00d066525 100644 --- a/manual/rockbox_interface/wps.tex +++ b/manual/rockbox_interface/wps.tex @@ -226,8 +226,8 @@ browser. The value wraps at 10. \subsubsection{\label{ref:createbookmark}Bookmarks} Create a bookmark in the currently playing track, or display existing entries. Bookmarks can only be used with directories, or playlists stored on -disk. If you don't see the option to create a bookmark, try saving the -current playlist first. +disk. You'll be asked to provide the name for a file to save the playlist to, +if necessary. \note{If you've enabled options for queuing tracks (see \reference{ref:queuing}), keep in mind that those are not saved to a playlist file.