Commit graph

472 commits

Author SHA1 Message Date
Solomon Peachy
7c30b318e4 Hopefully fix all of the red and yellow.
Change-Id: I356b664067a6eecbb01f8a71cf9fa2cfcfd75128
2025-09-27 11:39:19 -04:00
Solomon Peachy
d7d7627baf checkwps: Validate %?St() tags
This will bail if referenced setting name does not exist.

Change-Id: I7abd54ec1260d3da6024ebec809f8e270b0a84e5
2025-09-27 10:19:20 -04:00
Christian Soffke
5f593fb000 album art setting: use settings callback
Since even Shuffle and Repeat are now immediately applied
from the Quickscreen, I suppose it makes sense to do the
same for the album art setting as the remaining holdout.

Change-Id: Ib1b56c31f28d8197e001901296d9897a23134564
2025-06-15 11:30:59 -04:00
Christian Soffke
4346a1e8e7 playlist catalog: sort independently from file browser
Allow independent sorting of playlists in the
playlist catalog, using the context menu.

You may want to usually sort playlists by their date
(modified), but sort audio tracks alphabetically.
This is now possible without having to constantly
adjust a setting.

The fact that 'Sort Files' applied to both the file
browser and playlist catalog seems more like a side
effect of the implementation, rather than behavior
that is wanted. Additionally, the 'By Type' sorting
makes no sense when only a single type is displayed.

Since many of the other File View settings don't
apply to the playlist catalog, hide the menu there.

Change-Id: Ic35038015d0860998ae117f472ce23ce3bc80cfa
2025-05-30 08:30:47 -04:00
Solomon Peachy
9d4632b0c3 misc: Clean up a pile of -Wunused-const-variable warnings
And re-enable the warning (applies to GCC 6+)

Change-Id: I7aa679ec65707db12de83c0433966b3821d07087
2025-04-21 21:13:59 -04:00
Christian Soffke
96615af033 Shortcuts & QS: Fix tree sort settings not immediately applied
Change-Id: I51158f786ad7dae46ce6201826cb35958e8014ec
2025-04-18 20:00:42 -04:00
William Wilgus
4f3bbeaffc Remove BATTERY_TYPES
Change-Id: I4fa03a10d0032fd6f92722bbe1d4b7eec0b95cb4
2025-03-11 02:26:38 -04:00
Christian Soffke
87344d180b Rename 'Playlist Catalogue' to 'Playlists'
When the Playlist Catalogue first appeared in the main menu
in 2011 (FS#11808), the 'Playlists' menu item was renamed
to 'Playlist Catalogue' which seems more verbose than is
necessary these days.

Since we don't have a 'Playlist Catalogue' menu item in the
onplay menu anymore, either, LANG_CATALOG can be eliminated.

Change-Id: I7f38b0847e9b982506371f4a4b473d1fb2551ad0
2025-03-09 17:46:52 +01:00
William Wilgus
914fcab06a shortcuts.c don't call settings_apply_skins() unless needed
Add F_NEEDAPPLY if F_THEMESETTING requires a call to settings_apply_skins()

Change-Id: Ied1bf7b2c4fb2e07bf1f54076e647bdc0844037a
2025-03-02 23:50:54 -05:00
William Wilgus
50da856992 [BugFix] itoa conflicts with mingw rename to itoa_buf
Change-Id: Ife361f2fd8c8946db5bb2e0e58c0981b2ed3c5f3
2025-02-18 10:41:18 -05:00
William Wilgus
f55fe21f66 add itoa(), replace snprintf("%d") calls
we can save some space and still end up with a 20% faster function

Change-Id: Ia58900122944b8527ef01a673afe18ea794acb41
2025-02-03 01:23:49 -05:00
William Wilgus
7100090f99 Remove NVRAM infavor of a separate cfg file
remove nvram and use the existing settings framework for it

add a crc check to the user_settings data to see if we need to save
the user setting file or if we can just save the status file (resume.cfg)

move volume to the system_status struct so we don't write the whole settings file
over volume changes

allow user to still export volume with save sound settings

allow the user to also export pitch and speed

name the file .resume.cfg

Rename all the SYSTEM_STATUS save file variables to TLAs to save space and
discourage tinkering

Cleanup DEBUG_AVAIL_SETTINGS output

when saving user_settings it calls status_save as well this cause the resume
file to be written twice. instead remove the callback for status_save
when setting_save is called

remove header text when saving .resume.cfg

convert status_save() to status_save(bool force)
add SYSTEM_STATUS_UPDATE_TICKS

for ATA device set this to 5 minutes
since we arlready wait for the disk to be up before saving
we don't want to miss our window

for all other every 15 minutes

that way if the battery is too low by the time shutdown comes around you
don't lose much progress

Change-Id: I27214ffd6e5d5494ee5ca83b14f04a41ba426ad7
2025-01-21 00:04:32 -05:00
William Wilgus
4e271642df [Feature] Persist pitch settings through reboots part deux
Revisit this after discussion with chris_s on IRC and forum

Pitch menu now changes icon when pitch has been changed

uses NVRAM to save the pitch settings unconditionally

Manual updated

Change-Id: Idcb4c2b7fe42f7a203dc4bfc46285657f370d0fd
2025-01-19 00:29:47 -05:00
Christian Soffke
fb26398622 playlist: Fix warning when erasing playlist after reboot
Unless you had manually resumed the playlist, you
didn't get any warning after Rockbox rebooted, when
replacing a modified current playlist.

Change-Id: Ibc83e3db4e6ee51e94204ac7732760894d2fb602
2025-01-15 13:10:07 -05:00
William Wilgus
c3fd32bdf2 [Feature] playback logging from core
people don't like having to remember to run the TSR plugin so
lets meet them halfway

all tracks are added with timestamp, elapsed, length, trackname

added buffering for ATA devices

still needed:
-Done -- a plugin that parses for duplicates and reads the track info
to create the actual scrobbler log
(log can be truncated once dumped)
this should allow you to run the plugin at leisure

later I'd like to expand this logging to allow
track culling based on skipped songs..

remove the TSR plugin as hard disk no longer need to use it

Change-Id: Ib0b74b4c868fecb3e4941a8f4b9de7bd8728fe3e
2025-01-13 00:45:09 -05:00
Dana Conrad
e334a1f95e Settings: Make Default Codepage default to UTF-8
Associated with FS#13534

Change-Id: I41f64ff59b32aac90158cf72bc535e7fc6949b3b
2024-12-15 15:44:15 -05:00
William Wilgus
bcc8c608e5 Revert "FS#13429: Add a freeform "player name" configuration setting"
This reverts commit 2bb9323de8.

Reason for revert:superseded g#6154

Change-Id: I59250be7ecc6a08698be3429dc02a85272fcb9da
2024-12-07 23:02:22 -05:00
Solomon Peachy
97456ae338 lang: collapse the two "line out" strings into one.
Change-Id: I7928f693a1cfbdbadd66102812027b989796be19
2024-12-07 13:38:38 -05:00
Dana Conrad
5ed0db6e90 erosqnative: Repurpose stereosw_select setting for output select
Turns out they did not swap the stereo switch lines on us,
so this setting isn't really useful. Repurpose it to allow
the user to force the device into headphone or line output mode.

Note that settings other than "Automatic" will cause jack detection
to not work.

Default Automatic.

Change-Id: If94499fbb8f0d92111811fe51f6107ce213b66ad
2024-12-07 09:20:40 -05:00
William Wilgus
27c5db15e3 [Fix Red] #3 cfg_vals missing brace
Change-Id: I76ce21f5109d7ce3ca0d04dcf8f226a3f468ee8c
2024-11-10 23:59:40 -05:00
William Wilgus
4c34e150f7 [Fix Red] #2 7288d9e Move cfg_vals from settings_list
agc settings..

Change-Id: I695c9c8300fb5d4a544b12e3185dfec39cf7fbbc
2024-11-10 22:59:31 -05: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
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
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
Paul Sauro
f69d9c8a95 Settings: Add a new option to prevent text scrollings in the home screen
This option is especially useful for theme creators that want to create themes with lockscreens. When text is scrolling, it is breaking the lockscreen so setting this option to true prevent this. Text will continue to scroll normally in all other contexts.

Change-Id: I194f6837217881d50f567a775b81d0b422caf35c
2024-08-28 20:24:44 -04:00
Solomon Peachy
2bb9323de8 FS#13429: Add a freeform "player name" configuration setting
The idea is that a theme or whatever could use this to provide visual
differentiation (eg "George's iPod") between multiple
otherwise-identical players..

Defaults to an empty string.

Added to the manual but there is not a way to set this through the
menus yet.

Change-Id: I1cff6b19d621dd6207b4b82eed67741ce2da0ef1
2024-07-22 09:42:05 -04:00
William Wilgus
3891bcf3b9 [Revert] id3 title display playlist_viewer.c
reading the disk works fine for on disk playlist but
trying to read from the disk with the current playlist
becomes unbearably slow

removes the static playlist_track_info prefering the unused one
already on the stack from search_playlist()

Change-Id: I01b836b4fe46bb51ef6a28d5db6b3f9cdc7d1e51
2024-07-13 01:39:50 -04:00
William Wilgus
fdbaf7df59 [Feature] playlist_viewer id3 title display
Not sure this is a great idea from disk and battery standpoint
but there is no reason you can't..

using the name buffer to fill title data
prevent hitting the disk for each screen scroll

add get_metadata_ex to allow flags
 METADATA_EXCLUDE_ID3_PATH
  prevent copying the filename to the ID3 struct
 METADATA_CLOSE_FD_ON_EXIT
  instead of seeking to the beginning the file is closed before
  get_metadata returns

add logic to allow a invalid fd to signal that get_metadata
should open and close the file within its call

bugfix per Chris_s don't use the tagcache for the trackinfo

Change-Id: Ic7a595b39a8d7a57f975312bc9c8bb4111f22a88
2024-07-09 01:40:02 -04:00
Aidan MacDonald
cc45e4d88d Really fix yellow this time
Change-Id: I73a39f823ca5d20f8a562ddb36ba4f8c7137b2db
2024-05-12 15:21:56 +01:00
Aidan MacDonald
2061448341 Fix yellow in 5f377c2613
Change-Id: Ib593e7afea52bc768242aa93d304f38fa1aea054
2024-05-12 15:05:21 +01:00
Dana Conrad
5f377c2613 Eros Q Native: Add Stereo SW behavior setting
Hopefully this should cover our bases so we can change
the behavior of the stereo switch to keep line out working
when they change the hardware on us!

Change-Id: Ic36bcb3778d5681a5f3f158c689df9c1420c1d7e
2024-05-12 09:42:02 -04:00
Christian Soffke
e8816552f6 Offer choice of default browsers
The database or playlist catalogue can now be set
as the browser that is launched when pressing
ACTION_WPS_BROWSE on the WPS, unless another browser
has more recently been opened.

Previously you'd always have to exit the File Browser
first, after the player had been restarted, which is
annoying for users who prefer the database.

The playlist catalogue has become part of the MRU
browser list, so pressing ACTION_WPS_BROWSE after
selecting a track from a playlist in the playlist
catalogue will now take you back there.

Settings menus have been slightly restructured.

- Eliminated "Set WPS Context Plugin" and "Hotkey" menus
  from the General menu

- Added "What's Playing Screen" menu in Settings-General
  with option for setting default browser. The "WPS Hotkey"
  and "WPS Context Plugin" menu options have been moved to
  this menu.

- "File Browser Hotkey" is now part of the File View menu,
  which means it is accessible from the browser's context
  menu as well.

Overview of resulting menu structure in Settings->General:

What's Playing Screen
    Default Browser
    WPS Hotkey
    Set WPS Context Plugin

File View
    (...)
    File Browser Hotkey

Change-Id: Iaa3619a791c20ce3562a1efd2cf90c72933b729a
2024-04-24 05:05:42 +02:00
Christian Soffke
3ce3b102dd Provide "quick" option for loading database into RAM
The directory cache and the database's Load to RAM feature
each result in a much better user experience.

But, when both features are enabled at the same time, it
can take a very long time on older players - easily several
minutes for larger libraries - until all of the database's
dircache references have been updated.

Include a 'Quick' option that causes the database to ignore
dircache references which can *significantly* reduce disk
activity after booting.

Change-Id: I25ae779c97d03885b06d5a28d8be55c0d05692a5
2024-04-23 23:02:47 -04:00
Christian Soffke
ea5ce8034b Replace "Reload After Saving" with option to remove queued tracks
The "Reload After Saving" setting was added in
g3347 (4f83e66) to solve FS#13287, by allowing
you to bookmark a modified playlist after saving,
without having to manually reload it first.

Since the rewrite of playlist_save in g5192
(90e3571), a modified playlist doesn't have to be
reloaded anymore in order to be bookmarked after
it's been saved, unless it contains queued tracks.

To cover the remaining use cases of the previously
available option, Rockbox will now offer to remove
any queued tracks from a playlist when saving it.

Change-Id: I2d6f12bcce14d8ff41a4d921ce84d628774103ac
2024-04-21 18:28:16 +02:00
Aidan MacDonald
f026cc4e17 tagcache: Add menu entry for customizing the DB path
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
2024-04-01 17:23:06 +01:00
neofright
ebb7f33a9f Fix backlight undefined preprocessor typo
Change-Id: I8df1000def19688df57fab0c4c49e0c099e8060b
2023-10-16 20:36:48 -04:00
roman.artiukhin
7bbaf74c5c Ability to control backlight for soft lock action
See Settings -> General Settings -> Display -> LCD Settings -> Backlight on Lock

Change-Id: I201cb1c2907bb6842bf5d0b7a657e9db27aa905a
2023-09-09 22:00:14 -04:00
William Wilgus
79b64a3fc7 setting_list.c playback frequency cleanup
moves the callback to settings_list

audio_set_playback_frequency now accepts an actual frequency
44100 192000 etc rather than an index

Change-Id: Ieb3fc79a7fe3f1ff050465c8cd8061027e4572ff
2023-09-01 19:32:27 -04:00
William Wilgus
873f49b1f0 settings_list add F_CB_ONLY_IF_CHANGED for settings
Recently I added F_CB_ON_SELECT_ONLY_IF_CHANGED in conjunction
with the shuffle and repeat settings

instead it makes more sense to make F_CB_ONLY_IF_CHANGED
and apply to all callbacks (F_CB_ON_SELECT_ONLY or on_exit)

Change-Id: I4376557d479aceb419f7b4b4e0998afc249c87ec
2023-08-29 09:26:41 -04:00
William Wilgus
1c80f53581 [Bugfix] shuffle shenanigans from g5288 Fix #13369 shuffle & repeat callbacks
shuffle and sort were called on startup before playlist_init
and also on setting switch even without select

repeat is also now handled in settings_list as well

after moving the callbacks to settings_list.c
there was then a problem of unintended callbacks on exit of the menus
fixed that with F_CB_ON_SELECT_ONLY

since the callback was called regardless of the setting being changed
on F_CB_ON_SELECT_ONLY which is preferable in some circumstances
I co-opted F_TEMPVAR to allow the callback only when the setting was changed
with the flag F_CB_ON_SELECT_ONLY_IF_CHANGED

Change-Id: I5265233bbb556dc06c45273e742be5d78510a806
2023-08-29 01:29:38 -04:00
JJ Style
8a22660770 Fix #13369: shuffle setting not working from shortcut.
Setting in shortcut was not being handled as it had no callback.
In the settings menu it looks like the event is handled separately.
Added a shuffle callback to the setting so it is called when changed
from the shortcut.

Edit: move callback to within settings_list so playlist interface is
unchanged.

Change-Id: I3691acac1c73a80bf67c0b8b334009ef1655fdb0
2023-08-27 00:39:52 -04:00
roman.artiukhin
1e678977f2 Hotkey: Add List Bookmarks action
Change-Id: I8cc775d2403b682d6d91069e26947fc08d379258
2023-04-05 09:06:28 -04:00
Aidan MacDonald
5b27e2255a Add perceptual volume adjustment
The perceived loudness change of a change in volume depends
on the listening volume: at high volumes a 1 dB increment is
noticeable, but at low volumes a larger increment is needed
to get a comparable change in loudness.

Perceptual volume adjustment accounts for this fact, and
divides the hardware volume range into a number of steps.
Each step changes the dB volume by a variable amount, with
most of the steps concentrated at higher volumes. This
makes it possible to sweep over the entire hardware volume
range quickly, without losing the ability to finely adjust
the volume at normal listening levels.

Use "Volume Adjustment Mode" in the system settings menu
to select perceptual volume mode. The number of steps used
is controlled by "Number of Volume Steps". (Number of steps
has no effect in direct adjustment mode.)

It's still possible to set a specific dB volume level from
the sound settings menu when perceptual volume is enabled,
and perceptual volume does not affect the volume displayed
by themes.

Change-Id: I6f91fd3f7c5e2d323a914e47b5653033e92b4b3b
2023-01-22 21:19:57 +00:00
Christian Soffke
7d13c0c4eb Rename "Playing Next..." menu items & hide Queue/Shuffle
"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
2023-01-07 16:32:22 +01:00
Aidan MacDonald
a23ae63a31 Increase maximum files in directory limit
Increase the default limit to 5000 files for targets with at
least 8 MiB of RAM (the vast majority). The upper limit of the
setting is now 40,000 or 100,000 if you have at least 8 MiB or
16 MiB of RAM, respectively.

Update the manual to mention that this setting can also impact
the database browser. "Using the Database" already mentions it,
but it's useful to say so in the setting's description.

Change-Id: I6f204eec6cf2ccaea2af81d2fa287f92476eed4a
2023-01-02 20:55:48 +00:00
Aidan MacDonald
701e262d3d settings: Remove setting ID return from find_setting()
Now that all users have replaced setting IDs with direct pointers,
find_setting() and friends don't need to return an ID value.

Change-Id: I8c5c31bb68d3bca5350d43538335265a55fd5517
2022-12-17 13:36:38 +00:00
Aidan MacDonald
767ddef550 quickscreen: Settings ID to pointer conversion
Saves a good deal of code...

Change-Id: Ibaf4138ddffd5d8f7cca560cc52645dbce44149c
2022-12-17 13:36:38 +00:00
William Wilgus
5903cd4bc8 [Bug Fix] setting.c fail to check F_TABLE_SETTING w/o arbitrary values
table settings have a list of valid values when
they do not have F_ALLOW_ARBITRARY_VALS flag

they were not being treated as such

Change-Id: Ib02643a65ee4fc2abb1be8563a1849076de2f708
2022-12-16 08:30:54 -05:00
William Wilgus
28f768cb84 onplay hotkey add flags
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
2022-12-16 01:44:05 -05:00