Moves currently playing track to the front of
the playlist when shuffling.
Also fixes issues with an incorrect resume index
after repeatedly applying shuffle.
Change-Id: Ieff76e47318a07ee5004b063ded439f2af4bae2f
For any selected track that is part of a playlist,
additional info about the list is now provided in
the [Playlist] field of the Track Info screen.
1) Asterisk indicates if playlist has been modified.
2) Playlist filename is visible, unless the current
playlist is *not* associated with a file on disk, in
which case the following will be shown instead:
- (Folder) for unmodified folder playlists.
- (Dynamic) for playlists that are neither associated
with a playlist file, nor with a folder.
Change-Id: I9dcf7cbba4ac2e37b23413180a2b2bf4bbe5ee2a
A playlist's explicit 'modified' flag is now used
for keeping track of whether it's been modified
in the Playlist Viewer, not just in case of the
currently playing list, but for other playlists
as well.
When you start playback of a track from the
Playlist Viewer, a playlist's 'modified'
status is now carried over to the current
playlist, so as to produce a warning when
there is an attempt to replace the list at
a later point. This also prevents (auto)
bookmarking of the playlist if it had been
modified in the Playlist Viewer prior to
becoming the current playlist. (Bugfix)
Change-Id: Ibc391fd69285f8a67d6ffb6d8c274df3d223974c
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
Playlist Viewer, when quitting, should not ask
you to save a playlist that hasn't been modified
since it was last saved.
Change-Id: Ia401239392ba5f2d66562a991ba49b01c6c2d452
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
Any modifications to the playlist (insert, delete, shuffle, etc)
will cause the modified flag to be set. The flag is cleared when
the playlist is saved. Code that generates playlists can manually
clear the modified flag if appropriate; there is now a proper API
for this so the tagcache and pictureflow don't need to resort to
hacks.
Change-Id: I8d3c723265a41db07a13de3f1d2abb0444528d57
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
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
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
Eliminate flashing when plugins are launched
from WPS, by not enabling the SBS, and by
deferring other lcd updates.
Also prevents flashing root menu activity when
returning from plugins.
Change-Id: I7d761867027f2275c4ab8e16ada3107c7ba0be6e
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
1) Tree_lists was only initialized when booting the player.
In cases where a skin used custom UI viewports of
different sizes, when switching between screens, such as
between root menu, QuickScreen, and tree browser, this
caused list titles to appear with a significant delay,
unless a GUI_EVENT_ACTIONUPDATE was sent.
Tree_lists is now initialized when entering dirbrowse
or when restoring/reloading the list.
This eliminates multiple redundant UI refreshes when
entering the tree browser, due to gui_synclist_draw not
being called twice anymore and by being able to omit
GUI_EVENT_ACTIONUPDATE.
Separate calls to gui_synclist_init_display_settings
have become unnecessary since it is already called
by gui_synclist_init.
2) The synclist is also re-initialized when returning
from the QuickScreen in the Playlist Viewer or
regular menus, or when returning from Settings
menus
Change-Id: I2884249eda55f782e97abad9dc19b3d9d1267fc9
Saves and restores the selected item in your
most-recently accessed playlist, similar to Database
and File Browser.
Change-Id: I00afca41e33470cb458c4b87baccd6fd4016887a
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
Not sure if this is worth the added bin size yet but I will
see where I can use it to try and make it worth it
Change-Id: Icc299d3986172ff224a14be48da3bf065d728a66
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
'File Browser' hotkeys can now be used while
browsing a playlist.
The manual has been updated to reflect this and
to say that the File Browser hotkey works in
the context of the database as well (existing
behavior)
Change-Id: I51b23e82e0fb00772efdb8784db966d454fb2560
(The playlist viewer has to be re-initialized
after returning from PictureFlow, since they
both use the plugin buffer)
Change-Id: Ib3ef0acec65c88363830c59c8c73e9cdf8b528f0
Frequency, file size, and the codec are not stored
in the database and thus can’t be displayed in the
Playlist Viewer's Track Info screen when metadata
is only retrieved from the database.
Change-Id: I9e1d11c13ad8bf7b90b654ed78e4e7f763c30f8a
Elements were not being drawn correctly or
title text appeared delayed in several places
when using themes with a custom viewport
for list titles.
E.g.:
- after deleting a shortcut
- when returning from a warning screen in
Playlist Viewer
- returning to some Settings screens
- in "Playing time" screen
Change-Id: I8ab07a31d4b6f290e089ecd7857f43ec195a06e0
When appending tracks, they were always inserted last.
You can now choose from the usual options offered by
the "Current Playlst" context menu to queue or to insert
tracks at the requested position.
The splash after appending that forced you to wait for
2s has been eliminated.
Also fixes crashes on targets that use the grey_core lib
if a splash showed up when playback was started,
e.g. LANG_PLAYLIST_CONTROL_ACCESS_ERROR, or
when PictureFlow quit.
Change-Id: I661c59057b5315ba793ee1674f7a2ea1ffd7968d
Adds a command for showing track info to
the Playlist Viewer's context menu, which
brings up the same screen used by the WPS
for currently playing tracks.
Change-Id: I17d99671935934dad565d290a0d6fb3b0dfd8b01
This reverts commit 67716c6b46.
Reason for revert: Only partially working on bare-metal ports, so revert this for now.
Change-Id: I5cea7d2b6466a43aaff4c3eb90ab5d7aee736a5b
Will allow the QuickScreen to be accessed in the playlist catalogue
and when editing a playlist using the playlist viewer.
Change-Id: I4b7108db6384eb2077ffdccb2992f2e51a39f42f
LANG_SAVE_DYNAMIC_PLAYLIST refers to dynamic playlists.
A playlist being edited is only the "current playlist" in case of a
dynamic playlist. When other playlists are edited, the current
playlist is different from the edited/selected playlist.
(A possible motivation for differentiating between the two here
is because "Current Playlist" is already the title of a submenu in that
same context menu where the name refers to the dynamic playlist
and not to the selected playlist. "Save Current Playlist" is also used
in the Playlist Catalogue's context menu for example, referring to
the dynamic playlist.)
Change-Id: If320b3c804bb98fccb2e945ae1a30ffc92673c7e
rb core allows you to load custom keyboard layouts
this patch adds the ability to load a keyboard layout in a buffer
the custom layout is temporary and does not overwrite the current layout
use like so:
unsigned short kbd[64];
unsigned short *kbd_p = kbd;
if (!kbd_create_layout("ABCD1234\n", kbd, sizeof(kbd)))
kbd_p = NULL;
rb->kbd_input(buf,sizeof(buf), kbd_p);
Change-Id: I7be2bd4a1b4797a147fa70228a9749dc56ac052a
While playing a track the playlist viewer may not
have a big enough temporary buffer to load and display
'max_files_in_playlist' entries
This patch attempts to load as many entries as possible
If tracks were already playing (dynamic playlist or otherwise)
The original code only gave half the plugin buffer to a playlist
loaded from file
On some targets half the plugin buffer is not enough to load all entries…
Now we attempt to get as many entries possible while at least leaving a
small buffer (MAX_PATH) for the name buffer
Change-Id: Ic06eaabc4e2550f076d625957d6d073790852743
Modified from original ticket, Taken from Igor Poretsky's tree, and
further modified by myself to incorporate feedback.
Change-Id: Ibc2180e52af76890b1448d23f79386fd0f88f709
This complements offset-based resume and playback start funcionality.
The implementation is global on both HWCODEC and SWCODEC.
Basically, if either the specified elapsed or offset are non-zero,
it indicates a mid-track resume.
To resume by time only, set elapsed to nonzero and offset to zero.
To resume by offset only, set offset to nonzero and elapsed to zero.
Which one the codec uses and which has priority is up to the codec;
however, using an elapsed time covers more cases:
* Codecs not able to use an offset such as VGM or other atomic
formats
* Starting playback at a nonzero elapsed time from a source that
contains no offset, such as a cuesheet
The change re-versions pretty much everything from tagcache to nvram.
Change-Id: Ic7aebb24e99a03ae99585c5e236eba960d163f38
Reviewed-on: http://gerrit.rockbox.org/516
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested: Michael Sevakis <jethead71@rockbox.org>
This fixes that the playlist viewer still shows the icons after changing
the playlist viewer specific show_icons value until re-opened.
Change-Id: I42f287bcf02b27f0255dc157560c2e6575307eb6