Commit graph

1760 commits

Author SHA1 Message Date
Christian Soffke
cde5ae755f iPods: Allow using scroll wheel to change volume on QuickScreen
As suggested by forum user yuuiko

Change-Id: Ifb989f9513a9e3c59e4ab0f38c0a8e2675c68dd8
2021-03-03 22:37:14 +00:00
William Wilgus
5317953f4a Battery Icon, Remove Hardcoded Overall Width
Icon no longer showed 100% with some fonts

Change-Id: I6bb9d47007fa42f91daa5c336f5e9e960140db0f
2021-03-03 03:11:02 +00:00
Georg Gadinger
278e7457ea skin_engine: Fix %if() when comparing against a negative number.
If the tag being checked returns a negative number (e.g. %LI does that
when the current list item does not have an icon) the tag's value would
always end up being 1.

Change-Id: I69ab175b6c46dd7567386e649732dbb8327972fc
2021-01-27 18:21:31 +01:00
Solomon Peachy
da1fbb6d1a skinengine: Make sure logical IF operator doesn't compare a garbage value
Change-Id: I125bea3c2659326b92eec027cddf0d041f10ebda
2020-12-13 19:21:13 -05:00
Georg Gadinger
512be370c6 list: reset viewport to avoid corrupting the text in the first line
While using Rockbox for a while on my 1st-gen iPod mini I noticed that
the first entry of a list sometimes displays a wrong character at the
18th column.  For example, the ':' character would display as 'z', the
'-' character as 'm', 0x00 would display '@' and so on.  Oddly enough
this only occurred when the scrollbar was enabled.

I figured that the call to `display->set_viewport(list_text_vp);` in the
for loop inside `list_draw(...)` causes this.  Digging deeper I noticed
that in the `lcd-bitmap-common.c` driver the `current_viewport` was
pointing to the start of the line's text.  From what I can tell the
cause of this was that the viewport was set to a struct with a shorter
scope than the entire function.

The actual fix for this is quite straightforward -- once the scrollbar
has been drawn the viewport is now changed back to the default one.

Change-Id: Id6a7bd8f74864641ea1670fedea9d12d764e78c0
2020-12-12 05:36:42 +00:00
William Wilgus
43f90746d5 synclist add method for setting selection color
Change-Id: I8c8761d92f4fc99f65d45098ee6e97800d3fe002
2020-11-14 00:01:39 +00:00
William Wilgus
6c3cc1cbb9 Skin_engine optimize element switches
it takes a lot of code to check validity and dereference a pointer for every numeric tag branch in get_token_value

apparently about 900 bytes actually

Change-Id: If463e755e9bbc73cbd4a02441572d22df9206121
2020-11-13 19:14:56 +00:00
Moshe Piekarski
362f7a3220 Quickscreen: don't apply glabal settings
Change-Id: I4de0e35b4c3227513f9c384bc0e01bc468999317
2020-11-12 21:23:57 +00:00
Solomon Peachy
869a8bfbe7 YesNo: Clear the button queue so a latent keypress doesn't skip the prompt
Change-Id: I055db211f3cceb38b2df00177451c08a3da33426
2020-11-11 15:39:06 +00:00
William Wilgus
0c99a3f9fb Skin engine Onda Vx747
Fixing issues that existed before framebuf rewrite

Fix swap issue

Change-Id: I43e03b7aaf4591c1b6f88e3ba0730e279934c0df
2020-11-01 17:43:42 +00:00
Johannes Rauh
44023eb430 Volume adjustment in LISTS ignored AUDIOHW_SETTING values
AUDIOHW_SETTING() defines number of decimals and step size.
This is taken into account in sound menu but ignored in lists
(had been recently fixed in WPS).
This was not a problem so far since all drivers used 0 decimal
places and step size equal 1.

Change-Id: I8807d5b6f2f3d412a2bc5769905bd776553ece0b
2020-10-29 20:08:50 -04:00
William Wilgus
c5c17fa799 Fix display regression from c85d8e2
Basically setting a null buffer is valid but it must be selected
into a screen to initialize to the default buffer

I wrongly assumed screen type wouldn't matter but since I decided to
reference backdrops directly to the default buffer
(since they are saved as an offset from what it later assumes to be the
default framebuffer)
SCREEN_MAIN/SCREEN_REMOTE are not longer optional

Change-Id: I8a8afbbe1e3ed0bfe6abd40ce287638e9fc6da60
2020-10-28 22:55:27 -04:00
Solomon Peachy
c7fb319151 fix checkwps build (introduced in a5a8e00)
Change-Id: Ibc8bced6721b3711e465320a537e15244b2b11b2
2020-10-28 19:38:27 -04:00
Solomon Peachy
a5a8e00b6d Fix a crash introduced in a605cdf70
Pretty subtle problem; looks like the skin core was relying on a
destructor to actually help initialize things.

Change-Id: Ieb4b9e4f11377dec7be61d13759590fc5f4bc921
2020-10-28 18:51:57 -04:00
Solomon Peachy
8c8284bbe6 Fix statusbar display regression from a605cdf700
Change-Id: I4d02ac28e05080458eea6e3f52498321199ecbd3
2020-10-28 17:53:03 -04:00
William Wilgus
c85d8e2865 Framebuffer_viewport Rewrite -- BUG FIX
stride was not initialized for the skin_viewport

fixed a few other questionable areas

Change-Id: I9cc7830a4406857bf3aba26a328c288e3702cddd
2020-10-28 13:25:12 -04:00
Solomon Peachy
a605cdf700 Fix multiple potential null pointer dereferencess
GCC's optimizer thinks all of these _will_ fail at some point

Change-Id: I287eeb574162a5d3b3347654d25aa1f53e9f5563
2020-10-28 08:42:49 -04:00
Solomon Peachy
804a49886a statusbar: Make statusbar height equal SYSFONT_HEIGHT
And size elements horizaontally based on SYSFONT_WIDTH

Unfortunately we need 16px icons to make 16px statusbar look right
but at least it _works_ properly now.

Also: all targets currently use 8-px SYSFONT, except some hosted bootloaders

Change-Id: I0cdf97e6ef47ec49693ef79667b200595b4fe075
2020-10-26 19:52:40 +00:00
William Wilgus
40e98a2e49 Whitespace cleanup on fb_viewport Rewrite
Change-Id: I24aac41c8abecf7b78a44d7f59e842b791be4563
2020-10-26 12:38:22 -04:00
William Wilgus
3237ae4a4f LCD core move buf ptr and address look up function viewport struct
I'm currently running up against the limitations of the lcd_draw functions
I want these functions to be able to be used on any size buffer not
just buffers with a stride matching the underlying device

[DONE] allow the framebuffer to be decoupled from the device framebuffer
[DONE need examples] allow for some simple blit like transformations
[DONE] remove the device framebuffer from the plugin api
[DONE}ditto remote framebuffer
[DONE] remove _viewport_get_framebuffer you can call struct *vp = lcd_set_viewport(NULL) and vp->buffer->fb_ptr

while remote lcds may compile (and work in the sim) its not been tested on targets

[FIXED] backdrops need work to be screen agnostic

[FIXED] screen statusbar is not being combined into the main viewport correctly yet

[FIXED] screen elements are displayed incorrectly  after switch to void*

[FIXED] core didn't restore proper viewport on splash etc.

[NEEDS TESTING] remote lcd garbled data

[FIXED] osd lib garbled screen on bmp_part

[FIXED] grey_set_vp needs to return old viewport like lcd_set_viewport

[FIXED] Viewport update now handles viewports with differing buffers/strides by copying to the main buffer

[FIXED] splash on top of WPS leaves old framebuffer data (doesn't redraw)
[UPDATE] refined this a bit more to have clear_viewport set the clean bit and have skin_render do its own screen clear
scrolling viewports no longer trigger wps refresh
also fixed a bug where guisyncyesno was displaying and then disappearing

[ADDED!] New LCD macros that allow you to create properly size frame buffers in you desired size without wasting bytes
(LCD_ and LCD_REMOTE_)
LCD_STRIDE(w, h) same as STRIDE_MAIN
LCD_FBSTRIDE(w, h) returns target specific stride for a buffer W x H
LCD_NBELEMS(w, h) returns the number of fb_data sized elemenst needed for a buffer W x H
LCD_NATIVE_STRIDE(s) conversion between rockbox native vertical and lcd native stride (2bitH)
test_viewports.c has an example of usage

[FIXED!!] 2bit targets don't respect non-native strides
[FIXED] Few define snags

Change-Id: I0d04c3834e464eca84a5a715743a297a0cefd0af
2020-10-26 12:28:48 -04:00
Solomon Peachy
5d5f8169b5 statusbar: Respect 'numdecimals' when displaying the volume setting
eg with numdecimals=1, a value of "-300" actually means "-30.0" So
divide it down appropriately, and only display the whole integer
portion.

Change-Id: I62927d2e64b224f3c11640b9bb9e84d60dbde34b
2020-10-26 08:28:34 -04:00
Solomon Peachy
f68463c53e quickscreen: Get rid of a vestigal remnant of the Archos code.
Change-Id: I1dd7e82edfdbcc3a79aa5deaa604ac1623aa16d4
2020-10-12 19:26:26 -04:00
Solomon Peachy
ff6e175c20 get rid of ACTION_F3 (leftover from Archos days)
Change-Id: I8f602299bbc8caf6c8189361dbd41af31f19c1b3
2020-10-08 19:20:47 -04:00
William Wilgus
3550283442 Add open_plugin to core
open_plugin allows arbitrary plugins to be called
in hotkey and start screen

replaces PictureFlow Integration
shortcuts menu plays plugins now too

rather than store paths and parameters in the settings
that reside in memory instead entries in a file are searched by hash.
after all, the plugin has to be loaded from disk anyways

----------------------------------------------------------------------------
shortcut_viewer.rock--  can now call plugins rather than taking you to them
in the browser
-----------------------------------------------------------------------------
Added a new option to menus:
 F_CB_ON_SELECT_ONLY
 instead of option callback every time a item is accessed
 F_CB_ON_SELECT_ONLY fires callback only when item is selected
-----------------------------------------------------------------------------
Added manual entries
-----------------------------------------------------------------------------

Change-Id: I078b57b1d2b4dd633c89212c1082fcbc1b516e6a
2020-08-17 10:15:14 -04:00
Solomon Peachy
658026e626 [4/4] Remove HAVE_LCD_BITMAP, as it's now the only choice.
Note:  I left behind lcd_bitmap in features.txt, because removing it
would require considerable work in the manual and the translations.

Change-Id: Ia8ca7761f610d9332a0d22a7d189775fb15ec88a
2020-07-24 21:20:13 +00:00
Solomon Peachy
8cb555460f [3/4] Completely remove HWCODEC support
'swcodec' is now always set (and recording_swcodec for recording-capable
units) in feature.txt so the manual and language strings don't need to
all be fixed up.

Change-Id: Ib2c9d5d157af8d33653e2d4b4a12881b9aa6ddb0
2020-07-24 21:20:13 +00:00
Solomon Peachy
0c4f89370d [2/4] get rid of HAVE_LCD_CHARCELLS
HAVE_LCD_BITMAP is now redundant.

lcd_bitmap is always-on in features.txt so manual and lang strings
don't have to change

Change-Id: I08eeb20de48099ffc2dc23782711af368c2ec794
2020-07-24 21:20:13 +00:00
Solomon Peachy
092c340a20 [1/4] Remove SH support and all archos targets
This removes all code specific to SH targets

Change-Id: I7980523785d2596e65c06430f4638eec74a06061
2020-07-24 21:20:13 +00:00
Solomon Peachy
805f531632 statusbar: explicitly #include <button.h>
This header relies on stuff that might get defined in button.h, and
was reliant upon being implicitly included.

The last thing we want is a struct to change layout underneath us!

Change-Id: If96451bc5e2219031a592ab82c56045188dbe645
2020-07-16 22:02:29 -04:00
William Wilgus
5afdcdd460 Bug fix icon.c crashes with negative icon index
The index for Icon_NOICON is -1 which is caught properly
as is icon > Icon_Last_Themeable

But if you pass an index lower than Icon_NOICON screen_put_iconxy()
tries to read memory prior to the iconset resulting in a crash

Change-Id: I415e650932d65214d883a1595e22261f22e776b6
2019-09-24 23:51:12 -05:00
Solomon Peachy
8143e4437b Speech Feedback improvements on the Quickscreen
Patch by Igor Poretsky

Change-Id: I1bb94965cb18efaa0787d7780f6cf22814231144
2019-08-05 05:01:29 +02:00
Solomon Peachy
4beafe16fa Show time, date, and recording directory in the info screen
Patch by Igor Poretsky

Change-Id: I5db0d018742c11dd9bf3ca4c9539cd91f94d4c2e
2019-07-28 14:57:14 +02:00
William Wilgus
3ec002e121 Fix truncation warning color_picker.c->draw_screen
Change-Id: I72f16163684aba6c9c3fcf4ade6f2906d80b3899
2019-07-10 06:31:22 +02:00
William Wilgus
a980c0b3e5 Fix possible truncation statusbar.c->gui_statusbar_icon_battery
limit percent range to 0 - 100%

Change-Id: I46477cdfe954fb1ea3e6158949c920769447762e
2019-07-10 06:09:46 +02:00
William Wilgus
075108e34a Fix skin_engine.c Album Art never dealloc'd on theme change
Patch from forum user Chris_s

http://forums.rockbox.org/index.php/topic,52708.0.html

Change-Id: I29f8702ced300d1dc90dfa0e8baa609b9051903e
2019-02-26 07:43:04 +01:00
Solomon Peachy
1d893a05c6 pitchscreen: Fix compile on HWCODEC players.
Change-Id: Iffb7018e935e017baf84ddc8e742270f82b996ab
2019-02-04 03:58:52 +01:00
Solomon Peachy
fd9d4a889b Add speech feedback in pitchscreen
Patch by Igor Poretsky

Change-Id: I8828cefdb3346a25071fba0afff2c9d3bca440a1
2019-02-03 20:09:59 -05:00
Solomon Peachy
39b64f7d4d FS#10311 -- Add beep when navigating to beginning or end of list.
Originally by Stephane Doyon.
Updated by Alex Wallis, Igor Poretsky, and myself.

Change-Id: I996f18043bd3377d5aeaf65f4290250ea2a6832b
2019-01-31 15:25:35 +01:00
William Wilgus
a06d9c85f7 Auto-Ranging Time Formatting For Menus (hh:mm:ss:mss)
Unifies time formatting in settings_list.c allows time format to
display as HH:MM:SS.MSS or any consecutive combination thereof
(hh:mm:ss, mm:ss, mm:ss.mss, ss.mss, hh, mm, ss ,mss)
works in INT and TABLE settings with the addition of flag 'F_TIME_SETTING'

Time is auto-ranged dependent on value

Adds talk_time_intervals to allow time values to be spoken similar to
display format:  x Hours, x Minutes, x Seconds, x Milliseconds

Table lookups merged or removed from recording, clip meter and lcd timeout
-String_Choice replaced with TABLE_SETTING or INT_SETTING for these
functions as well, cleaned-up cfg_vals that get saved to cfgfile

RTL Languages ARE supported

Negative values ARE supported

Backlight on/off are now Always and Never to share formatter with LCD
Timeout

Added flag to allow ranged units to be locked to a minimum index

Added flag to allow leading zero to be supressed from the largest unit

merged talk_time_unit() and talk_time_intervals()

optimized time_split()

optimized format_time_auto()

Backlight time-out list same as original

Change-Id: I59027c62d3f2956bd16fdcc1a48b2ac32c084abd
2018-12-22 12:27:21 -06:00
Marcin Bukat
706e31b415 Volume adjustment in WPS ignored AUDIOHW_SETTING values
AUDIOHW_SETTING() defines number of decimals and step size.
This is taken into account in sound menu but ignored in WPS.
This was not a problem so far since all drivers used 0 decimal
places and step size equal 1.

Change-Id: I3466d6651c46a24cb5114eae1e1747293a76a1a6
2018-06-20 12:19:33 +02:00
Michael Sevakis
abef236081 Do playback restarts the proper way
It isn't necessary to explicitly stop and restart playback to
force it to update something that must cause rebuffering.

Change-Id: I6ff5394fcafc7374af67ef9fbf9022bb4a79b773
2017-11-24 08:55:49 -05:00
Michael Sevakis
aced667f48 Undo hacks to meant to get around string formatting limitations
The new vuprintf makes unnecessary workarounds due to formatting
limitations. I checked grep output for whatever appeared to fit
but it's possible I missed some instances because they weren't
so obvious.

Also, this means sound settings can dynamically work with any
number of decimals rather than the current assumption of one or
two. Add an ipow() function to help and take advantage of dynamic
field width and precision. Consolidate string formatting of sound
settings.

Change-Id: I46caf534859dfd1916cd440cd25e5206b192fcd8
2017-11-21 05:01:14 -05:00
Frank Gevaerts
28591f2e92 Explicitly provide both cases in conditional (fixes warning)
Change-Id: Iedca64432103af5407a7c7bac83e92ca1ae8992b
2017-09-07 10:38:42 +02:00
Michael Sevakis
fc9695eb47 Improve radio RDS driver and framework
* Remove unused bits like the radio event and simplify basic
radio interface. It can be more self-contained with rds.h only
required by radio and tuner code.

* Add post-processing to text a-la Silicon Labs AN243. The chip's
error correction can only do so much; additional checks are highly
recommended. Simply testing for two identical messages in a row
is extremely effective and I've never seen corrupted text since
doing that, even with mediocre reception.

Groups segments must arrive in order, not randomly; logic change
only accepts them in order, starting at 0.

Time readout was made a bit better but really we'd need to use
verbose mode and ensure that no errors were seen during receiving
of time and more checks would be need to have a stable PI. The
text is the important bit anyway.

* Time out of stale text.

* Text is no longer updated until a complete group has been
received, as is specified in the standard. Perhaps go back to
scrolling text lines in the radio screen?

* Add proper character conversion to UTF-8. Only the default G0
table for the moment. The other two could be added in.

* Add variants "RDS_CFG_PROCESS" and "RDS_CFG_PUSH" to allow
the option for processed RDS data to be pushed to the driver and
still do proper post-processing (only text conversion for now for
the latter).

Change-Id: I4d83f8b2e89a209a5096d15ec266477318c66925
2017-02-11 22:19:32 -05:00
Amaury Pouly
d7871914ac Fix dangerous casts
On Windows 64-bit, the size of long is 32-bit, thus any pointer to long cast is
not valid. In any case, one should use intptr_t and ptrdiff_t when casting
to integers. This commit attempts to fix all instances reported by GCC.
When relevant, I replaced code by the macros PTR_ADD, ALIGN_UP from system.h

Change-Id: I2273b0e8465d3c4689824717ed5afa5ed238a2dc
2017-02-04 17:24:47 +01:00
William Wilgus
dc87e9e9f3 Selective Backlight/Advanced Softlock - Selective actions based on context
Selective backlight allows the user to choose actions that will not
enable the backlight when pressed.

Advanced softlock allows user to choose actions that  will not be
blocked by screenlock on devices without a hold button.

Both only occur in FM and WPS Contexts.

Update:
Back from the dead
-Cleaned up code, removed unnecessary calls, re-arranged last filter action
  timeout conditional to work in case last_filtered_action_tick was never set
-Added entries to the manual
-Fixed back button on some menus not activating backlight
-Made menus more intuitive, no actions selected now changes menu item to off.
-Added talk fuctionality.
-Added option to disable selective backlight while on external power.
-Rewrote backlight and softlock handling code to fix issue with scrollwheels
-Menu changed to have toggle(yes/no) and settings
-Optimized selective actions lookup
-Added option to disable notification of 'buttons locked' while softlocked
-Removed uneeded code, consolidated action lookup to single function
-Fixed incorrect name on selective softlock menu
-Added option to disable touch on touchscreen devices
-Fixed backlight on original screenlock without selective screenlock active
-Added text selection in mask_select for when show_icons is off
-Fixed voice in mask_select to speak if voice is defined instead of spelling
-Added more lang defines (play skip seek)
-Added option to disable unknown keys turning on backlight
-Fixed Conditional argument In wrong place causing players without
	backlight to fail to build
-Fixed Disable Unknown blocking detection of context change
-Fixed canceling menu didn't update new settings
-Added Autolock on backlight off
-Removed backlight_on_force from backlight.c, Now sets ignore next to false
	and uses backlight_on
-Cleaned up autolock code added strings to lang file
-Fixed issue where rapid presses would bypass softlock
-Removed old softlock code, Cleaned selective actions code
-Changed menu to match existing RB menus
-Fixed Backlight_on_Hold blocked by backlight_ignore_next
-Fixed ignore_next for ipod
-Fixed bug allowing context with softlock to bypass selective backlight
-Changed mask_select to no longer prompt for changes to be saved
-Changed menu names
-Added ignore timeout to allow ipod scroll wheel to work properly and other
 players to still work properly, removed some previous code including
 ignore_event
-Increased ignore timeout to prevent sd card accesses from interrupting action
 code and turning on backlight
-Changed Unknown action to unmapped action in menu, changed handling code
-Removed unneeded logic and variables for handling unfiltered actions
-Reverted unmapped action code to previous functionality
-Added manual entries (thanks JohnB)
-Removed elusive unhandled unicode character from manual, changed formatting slightly

Actions:
Volume,Play,Seek,Skip

Extras:
Disable unmapped actions
Disable selective backlight on external power
Disable touch during softlock on touchscreen devices
Disable softlock notifications (power button still notifies)
Autolock on backlight off

Method:
Adds a function to ignore backlight on next call
 If selected action occurs backlight is forced on,
 Filter_first_keypress stays intact.

Selective softlock allows selected actions through, bypasses the normal
 softlock routine.

ToDo:
DONE

previous commit (#1) has attribution for folder_select.c which mask_select
is based from.

Change-Id: I08132ddcfd64c81751ef23b720f3ec6d68695fe4
2017-01-17 23:06:17 +01:00
Frank Gevaerts
4f7f7f286d Fix misleading indentation as pointed out by the new gcc warning
Change-Id: Ia9c0b09ffb57dccbc7d13fce3b3a8a7d46b84857
2016-08-12 15:33:28 +02:00
Mihail Zenkov
6228c8da18 Fix reset runtime
Change-Id: Ic1ba0c7c7883aae43100c67235dbc2db83056fe7
2016-04-04 11:05:43 +02:00
Sebastian Leonhardt
a8758c953d Fix scrolling left button inadvertently cancels listtree
Depending on the actual keymap, canceling a listtree with the
"scroll left" button may not be intended, especially
if the list is entered from a completely different focus
(think of leaving a plugin with "long left")

Note:
initializing "scrolling_left" with true without anything actually
scrolling sounds odd to me... maybe this variable should be renamed?
"pgleft_allow_cancel" comes to my mind (with opposite boolean states)

Change-Id: I58a747fc90e91ae96e75932febb462f1f1a1b4ca
2015-11-10 20:40:36 +01:00
Sebastian Leonhardt
ce26212138 AB repeat: fix bug that prevents to jump to beginning of track
Change-Id: Ia323a2b16eaaf7d9afa888b71fd8b20fd9e2e62c
2015-10-25 20:58:36 +01:00