Commit graph

2011 commits

Author SHA1 Message Date
William Wilgus
9c477e84ff [Bugix] %ft has access to the root of the drive using /
path_append treats a path starting with / as absolute
allowing escape by themes

Change-Id: I8e5fb55f01cacd5ec0fc5538d92dfcfbdceb6892
2024-12-20 22:59:03 -05:00
William Wilgus
774357e722 [Bugfix] Volume, track starting and track ending no default timeout
if no params are given these three supply a default
it wasn't being applied since it was guarded by the else{}

Change-Id: I2966fd7d8daa695d8b214461749c93b3e7883e51
2024-12-20 22:41:07 -05:00
William Wilgus
b77c973d1a [Bugfix] line_alternators reset scroll state without new data
this is fallout from allowing a scroll item redisplay timeouts

prior to eb3e5eb  '[Feature] skinengine subline timeout hide line for n seconds'
the behavior could be seen sparingly
after we now have an alternator front and center with the next track scroll

unfortunately this results in strings never scrolling to completion

fix:
if the current line hasn't changed and we are not doing a
full screen refresh, don't invalidate the scroll viewport
(the scroll engine will still handle the user data changing
 if that actually occurred)

Change-Id: I10d4b8a05caa28de617dc6454520ce5426d69532
2024-12-19 11:32:26 -05:00
William Wilgus
12ea82d9e4 Allow scroll_all lists to resume scrolling lines
rather than reset the scrolling lines in list_draw()
when scroll_all = true
allow the scroller to take care of stopping lines
after the offset is known

this pretty much entirely the debug menus

Change-Id: I7069e0634d32b5ad8f92c294c5caf85373a7d480
2024-12-17 23:51:21 -05:00
William Wilgus
33c0c9efae [Bugfix] Simulator doesn't scroll lists in plugins
unless lcd_update() is called the sim doesn't update scrolling
you CANNOT call it from the scroll thread its simply ignored

I suspect this has something to do with where the call to render
originates as thi is the only thing I can think of besides
a call to disable the render

see demos/rb_info > paths -- observe the lack of scrolling
see any menu in a plugin that exceeds screen width

Change-Id: Ic14dee4a34de29479d739e6a280d6cf1cc283719
2024-12-16 11:37:56 -05:00
Christian Soffke
8f5128da16 Show Track Info: Support fs tags in Playlist Viewer, Properties, and PictureFlow
Playlist Viewer falls back to splashf if there is not
enough plugin buffer space left for running the
view_text plugin .

Change-Id: I418731018b03f396270b68e5e2d2e69635df1af0
2024-12-16 00:20:10 +01:00
William Wilgus
1a6f0d8b0f [FixRed] checkwps has no concept of playback
Change-Id: I1ed30de3716e225e38444bb4569eda9f958a02d8
2024-12-11 01:23:54 -05:00
William Wilgus
f79374e1e8 WPS don't display next track till ID3 data is ready
this causes a bunch of flashing on track change for me and I never get to read enough
of the filename before it picks up the id3 data anyway

Change-Id: I36e9b5dd03510b796b652e3116800992bea73869
2024-12-11 00:44:59 -05:00
William Wilgus
05336c9efb wps.c cleanup
No functional changes code clean-up
consolidate pause_action, unpause_action_ do_wps_playpause

Change-Id: Id5de9616c0ecd6d2b48d611667ef0589a50dcae6
2024-12-11 00:43:15 -05:00
William Wilgus
33cbefb310 skin_parser Reduce ram usage for conditionals on %ft() file text tags
the skin engine calls the tags for each conditional to check them since %ft
erases it's var if the file doesn't exist %?ft is likely only being called
to check existance of a file or line of a file

this patch allocates 2 bytes to satisify the conditional if the line exists

Change-Id: Ic74bf5fec9a5d9b6724692c49a0997bfa4cff48d
2024-12-08 03:52:38 -05:00
William Wilgus
ebd1021fe4 [Bugfix] Pt doesn't return length of the next track
fix yellow in mp3_encoder

Change-Id: I1658250141d3ea00b56da0258e111ca76aa56b53
2024-12-08 00:28:16 -05:00
William Wilgus
9eb9e4ab22 [Bugfix/Red] fix red in checkwps , fix mp3_encoder plugin div by 0, warnings
checkwps doesn't have current_tick

mp3_encoder had a divide by zero if the file wasn't encoded correctly or wrong file was passed

fix gcc warning in huffman encoder

move text for small screens

Change-Id: I9d09353e184e760ae31d1a1cd434d2790eacb7ca
2024-12-07 23:56:52 -05:00
William Wilgus
44bfffd7c5 [Feature] skinengine subline timeout hide line for n seconds
builds on top of the file text patch to add hide timeouts to
subline text tags

this allows you to specify both a show time and hide time
for these elements

%t(show, hide)

also removes the 327 second limit for timeouts whne this form is used

Change-Id: If4598dcc24d0c7be4380e7595b7d91c7eba3a728
2024-12-07 23:02:22 -05:00
William Wilgus
eb3e5eb2bf [Feature] Skin engine Themes grab text from a file %ft(file, line)
allow the skin engine to read text files and return a particular line

you then can use ss on that string to allow display of strings from the file
(Playername comes to mind)

able to be used as conditional
%?ft(filename)<Found|Not Found>

if (selected) line of file is empty the tag is treated as #COMMENT

bugfix:
%t(n)%?x<text|text>
would ignore the specified timeout defaulting to 2 seconds

bugfix: cabbiev2.128x160x16.wps was missing %Sx()
for translation on 'Next Track:'

playername.txt generated at boot if it doesn't exist contents: 'Rockbox!'

Change-Id: I04ea4fd411f74c7c6e672657949aa520c2f86f95
2024-12-07 23:02:22 -05:00
Solomon Peachy
e6851a55ed Revert "[Feature] Skin engine Themes grab text from a file %ft(file, line) WIP"
This reverts commit 62b5dfd81d.

This was accidentally merged, and wasn't up-to-date anyway.

Change-Id: I4fcceb8dc4f86762701daab72498202cabd8295a
2024-12-07 13:48:05 -05:00
William Wilgus
62b5dfd81d [Feature] Skin engine Themes grab text from a file %ft(file, line) WIP
allow the skin engine to read text files and return a particular line

you then can use ss on that string to allow display of strings from the file
(Playername comes to mind)

able to be used as conditional
%?ft(filename)<Found|Not Found>

if (selected) line of file is empty the tag is treated as #COMMENT

scroll timeouts now persist thru trackchange

bugfix:
%t(n)%?x<text|text>
would ignore the specified timeout defaulting to 2 seconds

playername.txt generated at boot if it doesn't exist contents: 'RockBox!'

Change-Id: I961910e01be052ef902f77e6d92fc3e367ffe9d0
2024-12-07 13:21:21 -05:00
Solomon Peachy
93ecb97693 skin_engine: Splash an error when a font fails to load
...Otherwise we fail silently with the theme only partially applied.

Change-Id: I1010efaee965db86bb8d2859b04364f63bfbcc0f
2024-12-07 09:22:51 -05:00
William Wilgus
793c797447 [Fix Yellow] remove DEBUGF from skin_parser.c cleanup spaces
move const to the proper side

Change-Id: Ide7c1878281eaee28d06426eee43041ad61acbc4
2024-12-03 01:48:50 -05:00
William Wilgus
68d4fd0e5b skin_engine minor refactoring struct alignment No Functional Changes
Move some elements around to save 720 bytes in the skin engine with cabbie

saves some code manipulating the skin_helpers arrays in skin_engine
eliminate conditionals checking for pre/post process functions
using a dummy fn(), consolidate pre/post process into a single function
adding a bool preprocess to indicate stage

Change-Id: Id2df4706b73e9025c7300be135dc02e135e587fe
2024-12-03 01:21:28 -05:00
William Wilgus
80a0bf590f radio.c presets.c small clean-up
remove some extern vars in favor of get/set functions

Change-Id: Ic4effae2acdd480beeab76c9f0319b1783a3bab3
2024-11-30 16:42:43 -05:00
Christian Soffke
b1e70db6e7 Fix FS#13523 splashf crash on devices with remote LCD
regression introduced in ff2f912

Change-Id: Ifc9f37710e379605ad3325679325aab229003a21
2024-11-28 22:26:52 +01:00
William Wilgus
da9d67a0fe Button queue handling is split from main button driver
First half of
https://gerrit.rockbox.org/r/c/rockbox/+/570

Change-Id: Icc64dfd8194c18f69564ed5f8bf7dd70a4330eb9
2024-11-27 20:16:53 -05:00
William Wilgus
00906647b4 Simplelist remove simplelist_set_line_count(n)
replace with simplelist_reset_lines(void)
there was one user saving one short string
remove the feature to simplify list code

fix scrolling in dircache debug item

Change-Id: I71f933f224c2de5f7a68feab904a2fe0b81e1362
2024-11-21 12:14:17 -05:00
William Wilgus
d6e3514c0d [BugFix] gui/list.c simplelist_set_line_count > 1 list buffer corruption
when line was > 0 static item might not be in buffer after 35a913473e

Change-Id: I6fefb16d05d132f8f0e4bbbbfcf471342a434072
2024-11-21 10:46:27 -05:00
William Wilgus
35a913473e list.c small cleanup, add simplelist_setline()
add simplelist_setline() to allow literal strings or owner buffer
to be shown in the simplelist

this makes simplelist more versatile by allowing static strings
to be added directly instead of copying into the simplelist buffer
(ie not consuming the simplelist text buffer)

add bounds checking to simplelist_setline/addline
No one has more than SIMPLELIST_MAX_LINES..  right?
-- there are actually a few places this isn't checked..

use new setline function in debug menu

share the simplelist buffer with the list_draw fn for gui_synclist
since they shouldn't be in-use simultaneously we can save some stack

Change-Id: I4a1e64d3a621d326ff094241da55452c0ff746ba
2024-11-21 08:49:18 -05:00
Christian Soffke
953fcef05e gui: Fix unsuccesful attempt at loading default viewer iconset
The default viewer icons file seems to have
been removed in the rewrite of buildzip.pl
(see commit 66b6fdb).

So, this only worked accidentally, once some
theme put a viewers.bmp file in the icons folder,
potentially leading to confusing behavior.

Deactivating viewer icons (instead of reverting
to some default file) when they are set to "-"
is probably expected behavior at this point.

Change-Id: I5010764676c67592bf20abfb3d0780edb1d555d4
2024-11-16 12:14:00 -05:00
Christian Soffke
ff2f9123f6 gui: splash(-progress): use theme colors, +1px spacing
Change-Id: I5867b1fd3086bda2973f75a3ad1c1223e22dc0ae
2024-11-16 18:10:37 +01:00
Christian Soffke
cb7b6fd572 skin parser: Fix crash that can occur when same bmp is loaded multiple times
img may have already been loaded, in which case
bm.data will intentionally have been set to NULL
(see NOTE in load_skin_bmp)

Also see commit 01cbb79 and previous fix 35f9a5b

Change-Id: I581ed63836f30a6b669b3d1fd5886fc1b3664386
2024-11-12 13:39:19 +01:00
Christian Soffke
c67294913f Fix get_token_value from 7288d9e
Change-Id: I3d1b2fc37c0baa1cb178215889bf91808ba4287f
2024-11-11 08:21:12 +01:00
William Wilgus
9baadd4a95 [Fix Red] 7288d9e Move cfg_vals from settings_list, expand settings_dumper
Change-Id: Ic1dc9eb46b5eed8adc1888e8b7e58d45f4f1c57a
2024-11-10 22:30:30 -05:00
William Wilgus
7288d9e5d2 Move cfg_vals from settings_list, expand settings_dumper
cfg_vals aren't needed for most settings

F_TABLE_SETTING, F_CHOICE_SETTING, F_BOOL_SETTING

can use cfg_vals but only a few custom settings use it otherwise
for these settings we define F_HAS_CFGVALS and use the setting union instead (as these all use UNUSED)

noticed that settings_dumper missed most cfg values so didn't show text setting values

saves ~300 bytes

Change-Id: Ie504c8cfe2a6cf471117c3afe5cf9a770a7f1784
2024-11-10 21:53:22 -05:00
Solomon Peachy
ac46684d7f janitorial: Use ATTRIBUTE_PRINTF(X,Y) instead of __attribute__((format(printf,X,Y)))
Change-Id: Ia66e7647bdd9e8e1c28b9d8636cae8db82825841
2024-10-17 21:39:41 -04:00
Solomon Peachy
9b1a92fe36 Fix up a pile of bad format strings passed into simplelist_addline()
Change-Id: Ic45ea8633a1752b2e01cba2aace55309bcb7480d
2024-10-15 19:13:17 -04:00
Solomon Peachy
a2efbf0589 list: Flag simplelist_addline() as accepting format specifiers
And fix up all the problems I've found so far.

...This will undoubtedly introduce a pile of new warnings.

Change-Id: I868de507a0e9790f289676c198e2977c26755f22
2024-10-15 18:50:35 -04:00
William Wilgus
79bed1f422 RFC skin_tokens remove a static buffer
it was hard to hit this branch, I had to comment out:
ln 555    else if (offset == 1)
ln 556        pid3 = state->nid3;

as far as I can tell the reason for the separate filename buffer
was due to the failure mode of audio_peek_track() wiping
the id3->path, stands to reason for me that we can just fill it
again

-Already found a gotcha playlist_peek() mutates the buffer
 makes me like this solution less, might rework tagcache_fill_tags()
instead

--Fixed

Change-Id: I4a2ee71a8e2d0739c9e141948b71c2ed36296e3b
2024-09-12 19:16:02 -04:00
Paul Sauro
c16dbbfd1f Reworks to the shuffle system to improve performance and allow fast shuffling from a big library (but this work for all database views)
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
2024-08-31 10:44:20 -04:00
Christian Soffke
a7f9557c9c list: Fix interrupted playback when scrolling l/r
Change-Id: I2d054a8cec4e680d5ff5ce62e7ea94c00b13ebf1
2024-08-01 16:53:57 +02:00
Roman Artiukhin
b918ec531b QuickScreen: stop for first/last entry on repeated actions
Stops on first/last setting value when you switch quick setting using long button press. Useful for long settings list (like Skip Length).

Change-Id: Id7ddae4f70554e7f523661e5f0e09f5e4d5d32fd
2024-07-29 18:20:39 +03:00
Christian Soffke
6d19214eeb list: remove redundant setting of icon callback to NULL
gui_synclist_init already does this for us

Change-Id: I1288d389c6191416cbc3da37a333b1cad84ee779
2024-07-28 15:33:11 +02:00
William Wilgus
7720b0c4e4 [Bugfix] crashes on usb unplug, extra text on USB screen, viewportmgr ovfl on sim
make _lists_uiviewport_update_callback a oneshot
and reset it each call of list_do_action_timeout()

block multiple runs of gui_usb_screen_run() in the sim

Change-Id: I0c0429c42622c82bcf481ad13efdc47e9055a1bb
2024-07-22 10:27:24 -04:00
William Wilgus
188f025f51 [Bug Fix] Data Abort on Usb Unplug, database browser ran on USB dc
current_lists holds a pointer to whatver the current list is only problem
is when in one of the function type menus like the plugin viewer, playlist viewer, shortcut menu
probably a few others on usb unplug current_lists holds stale data and updates the list however
the data has already been freed when the function returned

the issue with db browser was a return of true from dirbrowse() which was the value 1 which is the
enum for GO_TO_DBBROWSER

Change-Id: I7349dfab2752e11f8e746925501740e959851cd5
2024-07-21 01:45:25 -04:00
William Wilgus
7e90760a48 [Feature] Playlis to cue plugin
generate valid cue files from a playlist

uses remarks to store extra id3 info and display and playlist index

Change-Id: I00c9f6389445bb601dde6eb8f36157044024f8cb
2024-07-20 07:27:01 -04:00
Evan Kenny
96f42a5646 skin engine: Add tags to display Quickscreen Items
A set of new tags for themes that allow them to display a quickscreen item's name or value like what is displayed on the default quickscreen.

There are 8 tags in total, 2 for each direction or "item".
One type of tag displays the setting name, while the other displays the setting's value.

All tags output an "ERR" string if no valid setting is found for that item.

Quickscreen Item name tags: %QT, %QR, %QB and %QL.
Quickscreen Item value tags: %Qt, %Qr, %Qb and %Ql.

Change-Id: Ia08ba5940e38065e051a0aefa2cff142c9e58684
2024-07-13 19:07:06 -04:00
William Wilgus
4d0d41a0f4 [Cleanup] abrepeat.c
ab_repeat_init() doesn't do anything and some of the checks are redundant

Change-Id: Icc861c57b119f541c0cbdb9e0074b78f1f4f10bb
2024-06-20 11:14:27 -04:00
William Wilgus
204551444e [Cleanup] viewport.c
hopefully the order of the events enable / disable don't matter
as far as I can tell it doesn't

Change-Id: Ia6bbe83ede788712e67aae6599585d6f79bfbcdc
2024-06-19 14:28:28 -04:00
William Wilgus
70c5d6239e [Feature] splash.h split too long strings to multiple lines
If no split tokens are found the string just goes off into space

instead shoten the string till it fits and continue on with the
remaining string

Change-Id: I7fa3619fe8c75ec6c849996d4c3518409938152b
2024-06-18 09:52:41 -04:00
William Wilgus
f9b15d951c [coverity] folder_select.c find_from_filename() guard against NULL
its pretty doubtful you wouldn't find a slash in a folder path

Change-Id: Ibf2069f37c235716d4d90aec6d68410a93c2bdc6
2024-06-05 23:38:25 -04:00
William Wilgus
2e60316500 [coverity] skin_parser.c load_skin_bitmaps check buffer length for bm_data
Change-Id: Ia4496916bf32de332e054b62f1708b3e2ec8e7d8
2024-06-02 11:13:03 -04:00
Solomon Peachy
8b8c0c7c2a checkwps: Validate translated strings (%Sx)
In verbose mode it will log valid the strings found, otherwise it will
only complain when we encounter a missing string.

Unfortunately a missing string is not inherently a problem, due to
conditional expressions.  So all we can do is complain in checkwps
or if wps debugging is turned on.

Meanwhile, this is the first step in actually enumerating the translated
strings used by themes.

Change-Id: Ia93b333085e825d5b085c4d372ad8e13aa3e3ba1
2024-05-24 21:37:54 -04:00
William Wilgus
9d3b012ac0 [BugFix, Asan] skin_tokens.c get_dir path name underrun
preventing multiple slashes reads prior to the buffer by 1 byte
when only a single slash exists

Change-Id: I1ce1dc8d754bf1c8798dc49f396c9142e4a6e49c
2024-05-13 17:19:45 -04:00