Add some hardcoded flick gestures in the list UI:
Top -> open quickscreen
Left -> go back
Right -> go to the WPS
The WPS also gets a set of hardcoded flick shortcuts:
Top -> open quickscreen
Left -> go to file / database browser
Right -> view playlist
Bottom -> context menu
These are enabled by default in pointing mode but can
be disabled using the "Touchscreen Flick Shortcuts"
option.
Change-Id: Ib30a338ebb9662cd136985da6d34ed5b041e4077
Fixes possible crash in case of pathological
UI vp dimensions, when attempting to clear a
QS item's vp.
E.g. https://github.com/federicoplg/musicOS
(commit c5e8570) configures a 1x1 UI viewport
at x=319 y=239, resulting in left/right item
viewports that have negative width or height.
Minor additional simplifications with no
effect on behavior:
- Combine actions requiring cleanup in a setup function.
Put it below the existing cleanup function
- Rename quick_screen_quick to quickscreen_show, and
quickscreen_run to quickscreen_main
- Iterate over items using FOR_QS_ITEMS macro
- Remove quickscreen_draw_item's int_value
- quickscreen_update: immediately continue if qs skinned
- Remove some obsolete #includes
Change-Id: I49aea3be837b861bdcd5132e84fef858df72327b
Introduce the generic, target-agnostic pieces for a gadget-driven USB
Audio Class DAC, gated by the HAVE_HOST_USB_AUDIO target flag so they stay
inert unless a target opts in.
Rather than adding a new USB mode, reuse the existing usb_audio setting
(never / always / while charge-only / while mass-storage) with its
LANG_USB_DAC string, usb_set_audio() callback and the
PCM_MIXER_CHAN_USBAUDIO mixer channel. HAVE_HOST_USB_AUDIO becomes the
umbrella capability flag for this common code; USB_ENABLE_AUDIO stays the
native usbstack class-driver contract (which needs HAVE_USBSTACK and so
cannot be used by hosted ports whose kernel owns the USB controller).
usb_set_audio() is declared here and implemented by the target (natively
by the usbstack driver, or in the hosted port for gadget targets, as with
usb_audio_get_active()), and applied at settings load. The playback
interlock in wps.c/playback.c keeps local playback from mixing with host
audio while the DAC is active. Simulator stubs for usb_set_audio() and
usb_audio_get_active() keep sim builds linking.
Co-Authored-By: Claude Opus 4.8
Change-Id: I5b7738508c24721d91d4c32379102a1ac7c6228b
Allow setting context menu items
reuses WPS hotkey items
Runs the item
displays the item
Open plugin shows the item name
Pitch shows the pitch speed amount
add 'Show In Files' hotkey item
devices without a hotkey get an extra item
added Manual entries
Change-Id: I427e70e1cad15364ac5d2a7114032e97cc9eee1a
Eliminate the somewhat circuitous skin_defer_rendering
and skin_render_deferred functions introduced in commit
c145d19e85.
skin_render (and thus skin_update and sb_skin_update),
along with skinlist_draw, list_draw (and thus
gui_synclist_draw), and quickscreen_draw, will never
update the screen anymore. Instead, the skin is only
marked as dirty now.
GUI_EVENT_ACTIONUPDATE redraws the skin as necessary,
and updates the screen afterwards, if the skin is dirty.
This event is sent from get_action, just like before.
A new event, GUI_EVENT_ACTIONREDRAW allows you to redraw
the skin without causing an immediate update at the same
time.
Change-Id: Ib20644853ead901e32f639000f044d6935135bae
Based on commits ce33902 and 8990d52 (without PictureFlow)
from "Rockpod" fork by Nux Li (https://github.com/nuxcodes/rockpod),
with some adjustments.
Addresses flickering when:
- plugin is opened/closed
- activity changes
- theme is toggled
- QuickScreen is opened
In these cases, skin_render will not immediately update the display
anymore, but instead will wait until the UI viewport is ready to be
drawn as well, so we don't produce unnecessary visual glitches.
Change-Id: I8bed8f06221d3e767a32450f199e69d742bc61cd
Limit these (less commonly used) "file handling" operations
to the File Browser while making it quicker to reveal the
file that is currently playing from the WPS.
"Open With" and "Delete" remain available as WPS shortcuts.
Change-Id: I91e582a45998160f07a3f7e16d475d770e8c5212
The WPS, or certain screens accessed directly from it,
may have displayed a title when they shouldn't have.
Change-Id: I655f58aa7c4ff3ff996d9798fdbe06c14f09c27b
If you try to rewind music at lrcplayer it
1. returns back to old time
2. play for some time (1-2 seconds)
3. only after that returns for new time
According to wps code audio_pre_ff_rewind function should be called
before any rewinding. It stops playback and automatically resumes it
after audio_ff_rewind call
Change-Id: Id3755bfe4deeb7cd5d889ad7d8e1dec45061fa5c
Move the volume bar input handling to skin_touchsupport.c so
volume bars can be used in the .sbs as well as the .wps skin.
Change-Id: I018fa1c84f93b64d676b68e3bea63ddb9141e492
Seeking to the very end of the track with the touchscreen caused
rapid skipping through the playlist because each touch event
generates a separate seek operation, kind of like rapidly pressing
a physical button. Fix this bug by executing the seek operation
only for the release event.
Change-Id: Ic1080065a68e7cc2ba98e2f27293c954f2ec8fb2
This reverts commit 18c8e554fd.
Unfortunately, this approach doesn't play super-well
with *all* themes, specifically in cases where the user-
set background color, used for drawing on the backdrop,
doesn't really blend in with the skin's actual background
color. Plus, it may leave some patches of color behind,
if a theme author didn't take care to cover all parts of
the screen with foreground viewports.
Change-Id: I0159b2e5de6c0753dea54bc6bafe5bc6268a0c6a
Elements from the SBS would disappear after
softlock, for a WPS that displayed an SBS,
if lock notifications were enabled.
If SBS isn't used, the request doesn't
result in any immediate action.
Change-Id: I7f5e8874f4eade6f504b6b3748c9644529587bb2
Prevents flashing an outdated backdrop when moving
from WPS to SBS, if both were using the extra
frame buffer (i.e. both used background viewports),
without having to update the SBS first. I think,
this is actually what we want, rather than commit
c1222d65e2, which attempted the same thing.
Change-Id: Iffc7fe2d351ebdf21a4e7629aba93641c0d30b50
The backdrop layer for the WPS was redrawn
before returning to the SBS, resulting in
unsightly visual effects such as album art
(drawn on the backdrop) losing a frame that
was drawn in the foreground.
Change-Id: If5bb1ba83d79d6d1f637e06f9cc5eab3b97d5906
Discovered this in the sim with car adapter mode: on
when charger gets disconnected the device is paused
if you have a different screen up the scrolling elems
get redrawn incorrectly over the current screen
to fix check the activity is the WPS, FM, or RECORDING before allowing redraw
Change-Id: Ie3618347fde446fe0b78b9d3c67261ca63ffee1c
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
Playlist Viewer falls back to splashf if there is not
enough plugin buffer space left for running the
view_text plugin .
Change-Id: I418731018b03f396270b68e5e2d2e69635df1af0
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
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
fixes some of the places where SYS EVENTS cause issues with action switches
that don't have handling for system events
more exist..
Change-Id: Ie6f4b05ed7ef1119d43e65ee49be8f754af83f52
Allows to use Prev button to skip length from the end of previous track.
Can be enabled with:
Settings -> Playback Settings -> Skip Length set to some time interval
and
Settings -> Playback Settings -> Rewind Across Tracks set to Yes
Change-Id: I99f234035a8a5acc9cbfe05ea83971ec5ddc59ea
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
Display volume bars using a perceptual scale instead of the
linear dB scale. This makes adjusting volume with the bar a
lot more usable on touchscreen targets.
Change-Id: I2db010486e6ba17f9d08202ee74a0b509f2cb434
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
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
A bunch of public API calls take a wps_data struct argument,
but that's an internal type that doesn't have a direct getter.
Instead the skin engine provides a gui_wps struct as a way
to refer to a particular skin instance. Use that instead of
wps_data in the public API.
Change-Id: I13e1aa8df7f08ccfb789bb728d493ac8d7de1a9b
Useful feature for audiobooks. To rewind from the end of the previous track - press rewind at the very beginning of the current track. So if you are in the middle of the track - first rewind till beginning then release and press rewind button again (Playback Settings -> Rewind Across Tracks option should be enabled)
Fixes FS#13290
Change-Id: I5d7f06f64ad76d1e8f7827fe594ccca5f621769d
Offers a quick way of switching to the Shortcuts Menu
by pressing the 'context menu' button while QuickScreen
is active (e.g. long press Select on iPods and some other
players)
Change-Id: I38292c7070cf093a81e1db688809b1f0d6a8764a