This improvement brings a huge performance improvement to start a random mix of your library. Previously, the only way to do this was to increase the size of a playlist with absurd sizes number. Now it will respect the limitation but will insert random songs from the current view.
Database: Add true random songs in playlist if it is gonna exceed its maximum capacity
More context is available here : https://www.reddit.com/r/rockbox/comments/1ez0mq4/i_developped_true_full_library_shuffle_for/
Also :
- Improved layout in the DB browser
- New default max playlists capacity is now 2000 on old PortalPlayer targets to give a better user experience and not having to wait dozens of seconds while creating a playlist
- "Show insert shuffled" option is now true by default
- Add a new shortcut to play all songs shuffled in the DB browser
- Now the feature is fully optional and enabled only on targets that have more than 2MB of RAM
- Add entries about this feature in the manual to explain it to the users
Change-Id: I1aebaf7ebcff2bf907080f1861027d530619097c
Change-Id: I3354923b148eeef1975171990e814a1a505d1df0
Prevent switching to a fullscreen view when scanning
a directory, which could be a bit jarring, depending
on your theme of choice.
Also pop context menu activity immediately, without
refreshing, so it isn't redrawn when returning from
plugin.
Change-Id: I021e5880505e7f121163851ae732eb47509cc5d8
clean-up a bit more
add/correct some comments
fix some error passing
guard delete path on PATH_TOO_LONG
add some cpu_boost
Change-Id: Icf179dd727271bdc61ab78400e10847222b9f858
first some clean-up of onplay.c
extend/move fileobject copy, move, delete routines in prep for other users
add error checking, better error codes
pre scan to make sure the operation doesn't exceed system resources
show progress for file and directory copies
Change-Id: Ife2e62df554892dab651bab40433bf70b27e73ff
"Create Directory" option not applicable
in browse filter modes, since directories
do not get displayed
Change-Id: I68944264b03115f7f94254d9df766e5584d30e5a
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
Allow the database path to be set from the file browser's
"Set As" context menu, so it can be changed without editing
the .cfg file by hand.
Change-Id: Ie1a84bcb2084ee3b1a0a18cc51f564238515f164
sprintf, strcpy, memccpy can all just go thru path_append
with the added benefit of some path sanitizing too
Change-Id: I33510b56a364b8b3a0b06f2ff14b76491f6e3870
Prevents incorrect bookmarking of permanently
(not just temporarily) shuffled playlists, which
need to be resaved, before they can be correctly
bookmarked.
Change-Id: I157d3be9d05117f7566ca72f3e736f96b42a165d
The modified state is now an explicit flag that has to be
set whenever a user-triggered modification occurs. This is
recorded in the control file to ensure it doesn't get lost
after resume. There may be some places I missed where the
modified flag should be set/cleared, but it seems to work
well enough right now.
Change-Id: I3bdba358fc495b4ca84e389ac6e7bcbef820c219
Since this function already requires hitting the
disk, it may make sense to turn it into a plugin.
A minor advantage (apart from cleaning up onplay.c
and saving RAM) is that you can now access the menu
not just from the WPS context menu, but also from
the Shortcuts Menu or using the WPS plugin shortcut.
On the other hand, TSR plugins would have to be
terminated when Playing Time is launched, as is
already the case for other plugins such as PictureFlow.
Change-Id: Iea85229486887463ffc52f05e33e2340437f69a4
The file name for a track in the database has been
retrieved already, before its context menu is displayed,
or a hotkey is executed, see:
8a22d2678a/apps/tree.c (L811)
So, skip over tagtree_current_playlist_insert and instead
use playlist_insert_track() directly, when user selects
something from the "Playing Next" menu or uses a hotkey.
Change-Id: Ie0789d8314949e9872bf261634d81b96432ccda3
When saving a playlist to an existing file on disk,
warn user, unless the playlist's file name remains
unchanged.
Change-Id: I10d82667de5fadb5323be4f981bea9263849f07a
If "Show Queue Options" was set to "in Submenu",
the queue options would incorrectly appear at
the top level after you had queued a track, at
least until you entered and exited the submenu
again without selecting an option.
Change-Id: I59abd73de7e3634bc8701aa2288b56bde7552513
When displaying Track Info for multiple tracks,
the value for combined file sizes or length was
capped at 2 GiB / ~596h.
Limit has been raised by a factor of 1000.
Change-Id: I942c64e81864cba3f719c83a24912883fafeb70e
Enables the use of PictureFlow and the Properties plugin
with parent tables of ALLSUBENTRIES, such as an album
or album artist, instead of individual tracks.
Change-Id: I18c4779ed116a48c732ae32b9629e7e0d93ce7c8
You could only add single files to playlists
from the database browser before. This
enables adding any database selection to
a new or existing playlist.
Change-Id: I811c7167641c589944bb2afc18dcc1d299a7b979
move seconds and sizes to arrays indiexed by enums
use a loop for the display and talk of each
stop exiting on SYS_EVENTs
Change-Id: I49d5b9827df4e711b38326e5fef3c54292000370
bad tracks now get skipped with a message at the end of scanning
rather than an error killing the count
Change-Id: I6d8c14ce00e78416b772bc5e9093a889351bc3de
"Play Next" instead of "Insert Next"
"Add" instead of "Insert"
"Play Last" instead of "Insert Last"
"Add Shuffled" instead of "Insert Shuffled"
"Play Last Shuffled" instead of "Insert Last Shuffled"
-"Queue" items hidden by default
- Shuffled options hidden by default
(Both can be enabled in options)
Resulting default menu:
Playing Next...
Play Next
Add
Play Last
Play
Change-Id: Ib0c07a8077ab4b10c2dbc7af33516adcd0d4b83a
Use action-oriented and more descriptive titles
"Add to Playlist..." instead of "Playlist Catalogue"
- "Add to Existing Playlist" instead of "Add to Playlist"
- "Add to New Playlist" (unchanged)
- "Playing Next..." instead of "Current Playlist"
In WPS context menu:
- "Current Playlist" instead of "Playlist"
Change-Id: I5cce9e317676537988682f46ac6b920598af3b9e
Moves options for configuring:
- Playlist Directory
- Recording Directory
- Start Directory
into a single menu.
Necessary prerequisite for giving the
"Playlist Catalogue" context menu item a title that's a
little more action-oriented ("Add to Playlist…”).
Change-Id: I4ee08fc67d5350c38ae1a57cb345c4ed1082d0b5
In commit f3358eb, the Properties plugin started using the
Track Info screen for audio files, which didn't show when
the file was last modified. This adds it back.
Change-Id: I3ce519da234a4bcadab1d64b67de0298cada8f6e
left the union with function(void) and function_w_param(param)
as a few areas might still need to use both (onplay.c)
there might be a few I missed yet..
Change-Id: I593a6875301923e19ba04ad1b0f3173dc9ebdf1f
idea here as discussed with chris_s is to allow flags
in the hotkey_assignment struct to change how items are displayed
Change-Id: Id4cf1d79fbe3ff8f5590b9a863fccf00ddd457f9
1) Adds way to pop activity without refreshing the skin at
the same time.
Activities are sometimes popped in immediate succession,
or one activity is popped before another one is pushed right
away. This can lead to the UI appearing glitchy, due to an
activity only appearing for a split-second, which is especially
noticeable with complex skins that change the dimensions
of the UI viewport depending on the current activity
To fix this, prevent superfluous skin updates
* when switching between:
- WPS and browser
- WPS and Playlist Catalogue
- WPS and playlist
- WPS and Settings/System/Plugins
* when accessing Track Info or when displaying
bookmarks using the context menu on the WPS
* when switching from QuickScreen to Shortcuts Menu
2) The playlist viewer activity was pushed & popped
redundantly by playlist_view.
----
NB:
Behavior has remained unchanged in all instances of the
code where pop_current_activity() has been replaced by
pop_current_activity(ACTIVITY_REFRESH_NOW).
Change-Id: I56b517b8c9dba823a9fed3a3f558d7469dcea9fd
Saves and restores the selected item in your
most-recently accessed playlist, similar to Database
and File Browser.
Change-Id: I00afca41e33470cb458c4b87baccd6fd4016887a
Seems a bit clearer to me than redefining the meaning
of ONPLAY_OK in this context, which was easy to miss.
Fixes the return value for the bookmark_create_menu
hotkey, too. It was previously mapped to ONPLAY_OK
in case the function failed, and to ONPLAY_RELOAD_DIR
if it succeeded. This had no ill effect - or any effect –
since either of the values were disregarded by the WPS
when executing a hotkey.
Return values of playlist_insert_shuffled also had no
effect (by design, apparently, see commit 482b45b).
Use ONPLAY_FUNC_RETURN in hotkey_assignment.
Behavior hasn't changed, it's only been made more
explicit.
Change-Id: Iefc60c9f42c1063af78d368dc382916848064d38
HOTKEY_PLUGIN action resulted in return value
of void function being assigned and then returned
by execute_hotkey.
Change-Id: I8b141e878fc2c0b09070186fc3520314c18a83b0
After calling up PictureFlow from the database or from the
Playlist Viewer, you would not be returned to the WPS as
would be expected when picking a new song, selecting
"Go to WPS" or pressing the WPS action button.
Change-Id: I902ac9185ebe092d0c4c08804db0a813a32cc39c
When selecting an item, Rockbox only checked that
playback was stopped before entering the viewer and
went to the WPS if music had started playing afterwards,
but returned to the root menu otherwise
The WPS will now be displayed whenever a new item has been
selected, even if audio was paused or playing before.
boomark_autoload required slight adjustments to its return values,
so that the WPS would not be opened after a user cancels out of
the bookmark selection screen for a playlist, since it previously
returned true in that case, too.
Change-Id: I231ea788e2f80fdda5fe4ad4d2420450931f686f
replace applicable calls to strlcpy with calls to strmemccpy
which null terminates on truncation
in theory the strmemccpy calls should be slightly faster since they
don't traverse the rest of the source string on truncation
but I seriously doubt there is too much of that going on in the code base
Change-Id: Ia0251514e36a6242bbf3f03c5e0df123aba60ed2
the loading track splash flashes and is ugly
add a function to display a progressbar along with the splash message
spruce up database commit message as well
Change-Id: I2749b958c1ee5dad2631a5f999a4b00ddca7f225
Removing the "list_wrap" argument is actually pretty easy.
In practice, almost all lists are using LIST_WRAP_UNLESS_HELD
behavior so we can make that the default. A couple of lists
disable wraparound with LIST_WRAP_OFF; this is now achieved
by setting the list "wraparound" flag to false when setting
up the list. LIST_WRAP_ON was unused and is of questionable
value, so it has been removed entirely.
This makes list wraparound behavior a property of the list,
controlled solely by the "wraparound" flag. The result is a
simpler list API and implementation, without changing the
behavior of any lists.
Change-Id: Ib55d17519e6d92fc95ae17b84ab0aaf4233bcb5a
When replacing a dynamic playlist with Play Shuffled, the current
track could incorrectly be left at the end of the new playlist.
Fix this - the current track should always be at the beginning,
so it can be skipped past regardless of the repeat/shuffle mode.
Change-Id: Ia86539bc23ad8ebd714b8dc50b5720671b4ad0a9
Add a setting that makes Play and Play Shuffled in the playlist
context menu leave the current song (if any) playing when they
replace the playlist. Default to on, since this was the behavior
of the old "Clear List & Play Next" option.
Change-Id: I1340aed5c28bb3244e36d0953b3308ae59681c97
Rename the "Clear List & Play" options to simply Play and Play
Shuffled, and change their behavior slightly. Previously they
would leave the current song playing, but now they will start
playing the first song of the new playlist immediately.
Shuffle options are now consistently hidden whenever a single
file is selected.
Fixes FS#13336 -- Play Shuffled is now always displayed where
applicable, regardless of playback state.
Change-Id: Idd454b4f9ab2c98cda3ce0389add747a3273fb42
When opening an audio file from the file
browser or database using the Properties
plugin, it will now use existing code from
the Show Track Info screen for displaying
metadata. The menu option has been
renamed accordingly.
Change-Id: I5a824865b9f980151b91aff3c3c18ec45830a12c