1
0
Fork 0
forked from len0rd/rockbox
foxbox/apps
Paul Sauro f7db73097a Playlist viewer: Add new options to allow formatting using tags
Offer new options to show elegantly your entries in any playlist/dynamic playlist viewer. This is especially important if you dual boot an iPod with Stock OS and want to sync with iTunes; with this very popular setup, file names are obfuscated which results in any Rockbox playlist viewer difficult to enjoy, and it was a long standing issue reported by several Rockbox users over the years. The only way to show the title was to open a contextual menu on each song to get infos about the selected song, which is a very long and anti-ergonomic process to understand what is on your current playlist/randomized playlist. The idea of this patch is to provide new alternatives that the user can select. I personally selected the Title & Album view which provides excellent readability.

This patch was built with performance in mind using lazy loading to load one by one the tags then cache a string and use the little cache as much as possible to make scrolling in the same area as smooth as possible. Performance remains very acceptable even on an iPod 4G with its original hard drive. Using a real compact flash with my iPod Mini 2G reduces the latency even more.

Those new options are disabled by default because they impact noticeably the scrolling performance and are less relevant if your files are decently properly named.

Unfortunately, the search feature in a playlist will need to continue to use the raw filename because reading the tags for a whole playlist is a performance disaster. This works decently while viewing just because I made a code that load those one by one as much as possible.

I focused also on testing that the opening of the playlist viewer UI remained fast, and loading one by one with lazy loading allows to get very little overhead in this regard.

Change-Id: I00d9c802e29f8372447813b035bbae207a016467
2024-09-09 18:21:38 -04:00
..
bitmaps Rename symbols of FiiO M3K Linux-based port 2021-02-27 23:53:28 +00:00
gui Reworks to the shuffle system to improve performance and allow fast shuffling from a big library (but this work for all database views) 2024-08-31 10:44:20 -04:00
hosted/android [FixRed] android yesno dialog 2023-10-01 12:21:54 -04:00
iap [Feature] playlist_viewer id3 title display 2024-07-09 01:40:02 -04:00
keymaps agptekrocker: Fix manual build due to missing Quickscreen enter/exit 2024-07-12 08:52:24 -04:00
lang Playlist viewer: Add new options to allow formatting using tags 2024-09-09 18:21:38 -04:00
menus Settings: Add a new option to prevent text scrollings in the home screen 2024-08-28 20:24:44 -04:00
plugins lua: button_helper needs $(EXTRA_DEFINES) on the host build side 2024-09-08 12:57:22 -04:00
radio list: remove redundant setting of icon callback to NULL 2024-07-28 15:33:11 +02:00
recorder Morse code cheat sheet, better use [of] pixels available on screen 2024-08-29 07:59:04 -04:00
abrepeat.c [Cleanup] abrepeat.c 2024-06-20 11:14:27 -04:00
abrepeat.h [Cleanup] abrepeat.c 2024-06-20 11:14:27 -04:00
action.c apps: Move action_cur_t and action_last_t to action.c 2024-04-21 20:37:26 -04:00
action.h apps: Move action_cur_t and action_last_t to action.c 2024-04-21 20:37:26 -04:00
alarm_menu.c voice: Revert one of the changes made in b6053c4d54 2024-05-19 21:05:43 -04:00
alarm_menu.h Fix menu warnings 2018-10-18 00:06:31 +02:00
appevents.h Get voice event out of playback.c 2017-12-12 20:28:56 -05:00
applimits.h
apps.make makefiles: Suppress stray backslash warnings with grep 3.8 2023-03-21 04:48:31 -04:00
audio_path.c nwza860: fix simulator build 2020-10-19 03:39:33 +00:00
audio_thread.c Get voice event out of playback.c 2017-12-12 20:28:56 -05:00
audio_thread.h Update software recording engine to latest codec interface. 2013-06-30 00:40:27 +02:00
beep.c Enable setting of global output samplerate on certain targets. 2013-07-06 04:22:04 +02:00
bookmark.c [coverity] bookmark.c fix add_bookmark & false positive in remove_bookmark 2024-06-02 12:42:45 -04:00
bookmark.h Fix return to root after selecting items from playlist viewer 2022-11-19 10:01:23 +01:00
buffering.c [Feature] playlist_viewer id3 title display 2024-07-09 01:40:02 -04:00
buffering.h buffering: remove bufgettail/bufcuttail 2022-04-20 16:51:49 -04:00
codec_thread.c codec_thread.c don't overrun audio_formats[] array 2021-08-11 10:56:14 -04:00
codec_thread.h Update software recording engine to latest codec interface. 2013-06-30 00:40:27 +02:00
codecs.c plugins: Simplify plugin/codec API versioning 2023-03-21 16:23:54 -04:00
core_asmdefs.c
core_keymap.c Add core_get_data_pinned(), use it where possible 2023-01-15 08:57:45 -05:00
core_keymap.h key remap: simplify and use movable allocations 2022-09-25 11:05:59 +01:00
cuesheet.c [coverity] cuesheet.c search_for_cursheet() if no dot strcpy to NULL 2024-06-02 21:48:00 -04:00
cuesheet.h [4/4] Remove HAVE_LCD_BITMAP, as it's now the only choice. 2020-07-24 21:20:13 +00:00
debug_menu.c Add DeviceData to bootloaders 2024-09-02 13:29:43 -04:00
debug_menu.h Fix menu warnings 2018-10-18 00:06:31 +02:00
enc_config.c Settings: Rename INT/BOOL setting type enum to RB_INT/RB_BOOL 2023-09-22 10:00:46 -04:00
enc_config.h Fix menu warnings 2018-10-18 00:06:31 +02:00
features.txt ErosQ Native ES9018K2M: Add digital filters capability 2024-01-02 08:19:23 -05:00
fileop.c fileop: Prevent poweroff during move 2024-08-11 19:33:05 +02:00
fileop.h [Cleanup] onplay.c fileop.c 2024-07-04 12:44:04 -04:00
filetree.c [Bugfix] Plugin Viewer Don't display SYSTEM folders or Volumes 2024-07-20 08:19:14 -04:00
filetree.h Replace "Reload After Saving" with option to remove queued tracks 2024-04-21 18:28:16 +02:00
filetypes.c [Bugfix/Feature] OpenPlugin and default plugins 2024-05-09 16:13:24 -04:00
filetypes.h [Bugfix/Feature] OpenPlugin and default plugins 2024-05-09 16:13:24 -04:00
fracmul.h
keyboard.h [4/4] Remove HAVE_LCD_BITMAP, as it's now the only choice. 2020-07-24 21:20:13 +00:00
language.c [coverity] language.c lang_load() check bytes read for headers 2024-06-02 22:07:02 -04:00
language.h lang: Support languages that speak the units before a numerical value 2023-05-22 10:30:13 -04:00
logfdisp.c misc.c open_pathfmt caller supplied buffer 2022-11-23 22:09:46 -05:00
logfdisp.h
main.c Add DeviceData to bootloaders 2024-09-02 13:29:43 -04:00
menu.c touchscreen: Fix menu callbacks in touchscreen pointing mode 2024-04-21 20:37:47 -04:00
menu.h menus remove reserved 'param' parameter 2022-12-17 04:24:37 -05:00
misc.c storage: 64-bit sector offsets 2024-08-12 14:23:44 -04:00
misc.h storage: 64-bit sector offsets 2024-08-12 14:23:44 -04:00
onplay.c codestyle changes on g5911 2024-09-04 10:58:24 -04:00
onplay.h Reworks to the shuffle system to improve performance and allow fast shuffling from a big library (but this work for all database views) 2024-08-31 10:44:20 -04:00
open_plugin.c [Bugfix/Feature] OpenPlugin and default plugins 2024-05-09 16:13:24 -04:00
open_plugin.h open_plugin.c access open_plugin_entry through a function 2022-12-16 09:05:06 -05:00
pcmbuf.c Improve Crossfade handling in Single Mode 2024-07-21 11:51:02 -04:00
pcmbuf.h Fix a problem with audio not starting on a list of short files 2017-04-06 19:32:35 -04:00
playback.c Improve Crossfade handling in Single Mode 2024-07-21 11:51:02 -04:00
playback.h setting_list.c playback frequency cleanup 2023-09-01 19:32:27 -04:00
playlist.c [feature] playlist. show search progressbar when iterating playlist entries 2024-07-20 00:08:39 -04:00
playlist.h Playlist viewer: Add new options to allow formatting using tags 2024-09-09 18:21:38 -04:00
playlist_catalog.c voice: Correct all uses of spashf() with an ID2P() argument 2024-05-19 21:05:43 -04:00
playlist_catalog.h Suggest numbered filename when saving untitled playlist 2023-10-28 18:24:00 -04:00
playlist_menu.h
playlist_viewer.c Playlist viewer: Add new options to allow formatting using tags 2024-09-09 18:21:38 -04:00
playlist_viewer.h Playlist Catalogue: Restore selection in playlist 2022-11-26 17:20:06 +01:00
plugin.c plugins: properties: keep theme enabled 2024-07-30 22:08:18 +02:00
plugin.h storage: 64-bit sector offsets 2024-08-12 14:23:44 -04:00
rbcodec_helpers.c Remove buflib allocation names, part two 2023-01-13 10:32:54 +00:00
rbcodecconfig.h kernel: Break out kernel primitives into separate files and move to separate dir. 2014-03-03 18:11:57 +01:00
rbcodecplatform.h
README
root_menu.c Offer choice of default browsers 2024-04-24 05:05:42 +02:00
root_menu.h Add open_plugin to core 2020-08-17 10:15:14 -04:00
screen_access.c make splash split on control characters 2022-11-12 06:22:16 -05:00
screen_access.h make splash split on control characters 2022-11-12 06:22:16 -05:00
screens.c list: remove redundant setting of icon callback to NULL 2024-07-28 15:33:11 +02:00
screens.h Fix warble error 4cfd7cc 2023-10-19 21:16:12 +02:00
settings.c [coverity] settings.c int_to_string() string_to_int() guard NULL deref 2024-06-07 00:25:48 -04:00
settings.h Playlist viewer: Add new options to allow formatting using tags 2024-09-09 18:21:38 -04:00
settings_list.c Playlist viewer: Add new options to allow formatting using tags 2024-09-09 18:21:38 -04:00
settings_list.h [BugFix] F_CB_ONLY_IF_CHANGED Overlapped NVRAM 2023-09-13 23:25:05 -04:00
shortcuts.c shortcuts: allow empty name for sleep shortcuts with default duration 2024-05-13 21:26:30 +02:00
shortcuts.h shortcuts: add 'reboot' type 2024-05-13 18:06:55 +02:00
sound_menu.h Fix menu warnings 2018-10-18 00:06:31 +02:00
SOURCES [Feature] onplay.c show file progress 2024-06-30 02:09:40 -04:00
status.c [2/4] get rid of HAVE_LCD_CHARCELLS 2020-07-24 21:20:13 +00:00
status.h Add a comment about the ordering of 'enum playmode' 2022-11-23 10:08:49 -05:00
tagcache.c [Feature] playlist_viewer id3 title display 2024-07-09 01:40:02 -04:00
tagcache.h [Feature] db_commit plugin allows a more verbose commit 2023-10-05 21:24:37 -04:00
tagnavi.config Reworks to the shuffle system to improve performance and allow fast shuffling from a big library (but this work for all database views) 2024-08-31 10:44:20 -04:00
tagtree.c Tagtree selective random playlist -- rewrite 2024-09-08 12:09:04 -04:00
tagtree.h Reworks to the shuffle system to improve performance and allow fast shuffling from a big library (but this work for all database views) 2024-08-31 10:44:20 -04:00
talk.c talk: Make talk_fullpath() do the right thing when voicing a directory 2024-07-28 17:02:43 -04:00
talk.h talk: Voice the volume name when browsing and when voicing full paths 2024-07-28 16:54:33 -04:00
tree.c codestyle changes on g5911 2024-09-04 10:58:24 -04:00
tree.h Reworks to the shuffle system to improve performance and allow fast shuffling from a big library (but this work for all database views) 2024-08-31 10:44:20 -04:00
usb_keymaps.c Document intentional fallthroughs + fix harmless unintended ones 2021-08-04 18:59:46 +00:00
usb_keymaps.h
voice_thread.c Remove buflib allocation names, part two 2023-01-13 10:32:54 +00:00
voice_thread.h voice: Allow voice prompt volume to be configurable 2021-03-07 12:51:36 +00:00

For general information see: docs/README
For API information see: docs/API