Commit graph

116 commits

Author SHA1 Message Date
Thomas Martitz
eec89a90ff lists: Adapt put_line().
This enables removing large portions of code, simplifiyng the drawing routine.
All of the removed code is functionaltiy now available through put_line().

Change-Id: Ib8e61772134189a8c3c6d22345c0b45e912bea76
2014-01-07 14:13:40 +01:00
Thomas Martitz
bc9a45b05f icons: Remove automatic left padding if x == 0.
Since x is viewport-relative the icon isn't necessarily placed at the physical
display boundaries so that the padding isn't always useful. In fact it does
more harm if one wants to place an icon exactly at 0 of a (non-default)
viewport.

Calling code looks still mostly fine. I've only modified list drawer to include
the padding in the call-site.

Change-Id: I6b16b3d4377c3553234667b79837adde10e0edf2
2014-01-07 11:36:00 +01:00
Thomas Martitz
1c5d0b41ee scroll_engine: Rename scroll_stop* functions to be more consistent with the lcd api.
Change-Id: I8ada10b96bfb628cca0331689e8b936ae47c7e1c
2013-12-14 23:11:30 +01:00
Jonathan Gordon
1cc0809ca2 list widget: undo part of aaf3065
It fixed a simulator warning in the skin debug screen but broke
the icons in the database folder chooser. Proper fix shortly.

Change-Id: If366daacc440f937c40960112477b8f6136b72b9
2013-02-13 09:22:24 +11:00
Jonathan Gordon
aaf30651df skin_engine: Add a debug screen to display skin ram usage
Change-Id: Ida9c33211d9360ac88e30a2cf8df9f191bee8b45
2013-02-12 21:01:13 +11:00
Jonathan Gordon
d06779d987 gui: Fix \t indenting for RTL langs in the lists (DB folder chooser)
Change-Id: If033547ad979a2ebdd463723a31eb15e718e6f8b
2013-02-06 19:57:21 +11:00
Thomas Martitz
48bc762db1 lists: Fix item indentation in RTL to match LTR behavior (which is no indentation when the scrollbar isn't shown, apparently).
Change-Id: I5c36d34638fa7a9cba9468b7ee07a07a836fadec
2013-01-18 18:02:47 +01:00
Thomas Martitz
2ffde90c69 touchscreen: Fix kinetic and swipe scrolling outside of the list viewport.
There were some bugs, especially when the user scrolled above the
list viewport. One bug made Rockbox completely unusable once triggered.

Change-Id: I9bb4722ff4381db189058e9a19ea30b2c69e87d9
2013-01-17 23:29:35 +01:00
Jonathan Gordon
08238178d3 lists: Support '\t' in list item text to indent the line containing it.
Change-Id: I1583371228ed477b504c135f81cb59a0c3c931e6
Reviewed-on: http://gerrit.rockbox.org/296
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
Tested-by: Jonathan Gordon <rockbox@jdgordon.info>
2012-07-19 01:21:10 +02:00
Frank Gevaerts
7151111228 Make touchscreen handling work with skinned lists.
Change-Id: I7df93319c8f16f05e840d74b022aab4803bb8f80
2012-06-19 22:02:59 +02:00
Thomas Martitz
2760d578ca touchscreen: Don't hide selection by default. Fixes FS#12675.
Change-Id: Ic7e22ce6280d4105c38f7588717f4cf34c1bb5a3
2012-06-15 13:00:20 +02:00
Frank Gevaerts
053722a573 Don't trigger a skin refresh from skinlist_draw()
Thiskin refresh trigger apparently causes the skin and list to continuously
refresh, with the side effect that buttons no longer work.

Change-Id: I4439406176890ac46a3f217bfff43c6935a03a7c
Reviewed-on: http://gerrit.rockbox.org/240
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
2012-05-18 09:48:31 +02:00
Thomas Martitz
8689bcc186 Touchscreen: Check if click is outside of list. Fixes FS#12669
Change-Id: Ic036f4c399b89c65bdc43bfdf7111bf4a13be484
2012-05-13 19:15:19 +02:00
Michael Sevakis
c9bcbe202d Fundamentally rewrite much of the audio DSP.
Creates a standard buffer passing, local data passing and messaging
system for processing stages. Stages can be moved to their own source
files to reduce clutter and ease assimilation of new ones. dsp.c
becomes dsp_core.c which supports an engine and framework for effects.

Formats and change notifications are passed along with the buffer so
that they arrive at the correct time at each stage in the chain
regardless of the internal delays of a particular one.

Removes restrictions on the number of samples that can be processed at
a time and it pays attention to destination buffer size restrictions
without having to limit input count, which also allows pcmbuf to
remain fuller and safely set its own buffer limits as it sees fit.
There is no longer a need to query input/output counts given a certain
number of input samples; just give it the sizes of the source and
destination buffers.

Works in harmony with stages that are not deterministic in terms of
sample input/output ratio (like both resamplers but most notably
the timestretch). As a result it fixes quirks with timestretch hanging
up with certain settings and it now operates properly throughout its
full settings range.
Change-Id: Ib206ec78f6f6c79259c5af9009fe021d68be9734
Reviewed-on: http://gerrit.rockbox.org/200
Reviewed-by: Michael Sevakis <jethead71@rockbox.org>
Tested-by: Michael Sevakis <jethead71@rockbox.org>
2012-04-29 10:00:56 +02:00
Thomas Martitz
4269934588 touchscreen/lists: fix two regressions
* fix potential stack overflow through recursion
* fix using using the scrollbar during active kinetic scrolling animation

Change-Id: Iaf124970a60d3f0c2ee7919ac278f2d6ac329e47
2012-04-17 17:19:31 +02:00
Thomas Martitz
d3ead233a8 touchscreen: fix some issues/crashes with clicking the list title.
Change-Id: I31adb012ac39f9b27f6b91f5077ed4195ba1dc02
2012-04-10 10:09:39 +02:00
Thomas Martitz
48c248d02b touchscreen: fix swipe scrolling (jumped back to previous item).
Change-Id: I055a5b19dec1db3ad31212dadc11b0f5056be832
2012-04-08 13:28:21 +02:00
Thomas Martitz
688302a3b3 touchscreen: Rewrite kinetic scrolling using a state machine.
The old code was very confusing. The scrolling modes need to be handled
differently, thus a state machine makes sense. Should fix numerious
glitches and be easier to maintain.

NOTE: Behavior is still a bit glitchy with an SBS in use, because the skin
engine sees the touch events earlier than the list code.

Change-Id: I4ccead359c81de0d0fc3dea636fe2cb3a28d1bc6
2012-04-08 13:16:54 +02:00
Thomas Martitz
bb0e4cc543 touchscreen: Fix kinetic scrolling when the statusbar is off.
The scrolling code cannot differentiate between the BUTTON_TOUCHSCREEN post
from normal touches and the one posted in the timeout callback.

To fix introduce a global special button (BUTTON_REDRAW) that results
in the desired redraw. This existed already as a local kludge for android
and is now generalized.

Change-Id: I6bfa6c66431c48f5042fcd8fce2ea72cd3457f58
2012-04-05 15:01:59 +02:00
Frank Gevaerts
4fbbbf1360 Make %LC and %LR always have predictable and usable values.
%LC is now 1 for non-tiled list items (instead of undefined)
%LC and %LR are now -1 in non-list contexts.

Change-Id: Ib7090429fa95528bd141d3d7ca95fd917b25b96e
2012-03-01 18:40:59 +01:00
Frank Gevaerts
077e8b61a0 Clean up some variables.
Renames origional_* variables to original_*
Removes original_(width,height) variables that weren't actually used

Change-Id: I604c2ef9ce9d806551e8c52080a5c895415e088c
2012-02-25 22:04:20 +01:00
Frank Gevaerts
b5cd5ce8a1 Add %LR and %LC to get at the current row and columm in skinned lists.
This allows list items to be rendered differently depending on their
on-screen position, allowing things like gradients or nonlinear alignment

Change-Id: I1d9c080f97e83707f0e80f57abc762cb2b94f6ed
2012-02-25 16:43:27 +01:00
Frank Gevaerts
680c6fcde1 Store listitem_viewport_cfg->label as skinoffset instead of raw pointer
This fixes the case where some blocks got relocated and the skin render
code couldn't find the matching viewports any more.

Change-Id: I4394444fb139ee5bc986f374dba82a104013e354
Reviewed-on: http://gerrit.rockbox.org/112
Reviewed-by: Frank Gevaerts <frank@gevaerts.be>
2012-02-22 01:15:42 +01:00
Frank Gevaerts
1a4da5961e Make skinned lists handle the "0 items" case without crashing
Change-Id: Iaf69c93727e0f0e2a48b44c330883f7a620c4d99
2012-02-21 01:29:12 +01:00
Frank Gevaerts
9c3ce33d4e Fix another skinned list buflib issue
Change-Id: Ib0eebf56b1bf4f4119ebfd21679f6cd9c8986ea4
2012-02-19 21:06:03 +01:00
Frank Gevaerts
46285e7c2f Fix a nullpointer dereference in skinned lists.
Unfortunately this doesn't seem to be the only problem with skinned
lists. Fixing this still doesn't make them work right.

Change-Id: Ibf80eb2a4fa4eb392e2f3ea9744aec68c6181961
2012-02-19 20:52:06 +01:00
Bertrik Sikken
f81100efd2 make local variable current_list static
Change-Id: Ibe3536a4865c12160e933d3696af4b5507713ffe
2012-02-19 12:12:40 +01:00
Jonathan Gordon
9e07ef2b0a Use buflib for all skin engine allocations.
Massive thanks to Michael Chicoine and other testers for finding the early bugs.

This removes all skin memory limitations

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30991 a1c6a512-1295-4272-9138-f99709370657
2011-11-15 14:11:08 +00:00
Thomas Martitz
3b12634e6b Commit FS#12321 - Touchscreen: List line padding, to more easily select lines
This adds line padding to lists on touchscreens,
in order to make lists reasonably useful without huge fonts.

It's configurable:
* Automatic (default, line height calculated using a lcd dpi aware function)
* Off (status quo, line height = font height)
* X pixels (from 2 to 50 in even steps)

The automatic setting should/aims to Just Work Out Of The Box on all targets

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30773 a1c6a512-1295-4272-9138-f99709370657
2011-10-17 17:38:10 +00:00
Björn Stenberg
0942e2a0f7 Changed the FOR_NB_SCREENS macro to always be a for loop that declares its own loop variable. This removes the need to declare this variable in the outer scope.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30756 a1c6a512-1295-4272-9138-f99709370657
2011-10-15 19:35:02 +00:00
Thomas Martitz
2a04202ffa Fix touchscreen behavior in time&date screen.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30725 a1c6a512-1295-4272-9138-f99709370657
2011-10-07 22:30:09 +00:00
Frank Gevaerts
28d5f2aa57 Add "%LN" tag to retrieve the list item number of the current item. This allows e.g. putting item numbers in skinned lists.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30568 a1c6a512-1295-4272-9138-f99709370657
2011-09-18 12:35:32 +00:00
Jonathan Gordon
3d0317a273 Rework how the skin gets the list item text to save some ram. Also allow the %LI and %LT tags to take 2 optional parameters to get a different items text/icon:
%LT(offset, nowrap) - get the text for the "being drawn"+offset item (offset being + or -). if the second param is "nowrap" (Without quotes) the text will be blank if the item would need to wrap. Same for the icon
e.g:
%LT(-1)
%LT <<
%LT(1, nowrap)

will display:
Four
Five <<
Six (or nothing if Five is the last item)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30502 a1c6a512-1295-4272-9138-f99709370657
2011-09-11 10:44:17 +00:00
Jonathan Gordon
63a379c64c Add the new file and fix the compile error
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30462 a1c6a512-1295-4272-9138-f99709370657
2011-09-06 13:53:46 +00:00
Thomas Martitz
b22b0dc101 Touchscreen: Fix minor redraw after entering the context menu.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29193 a1c6a512-1295-4272-9138-f99709370657
2011-02-02 18:39:04 +00:00
Thomas Martitz
430ada0864 Redo r29168. Use similar but existing mechanism in the action system which seems to work better.
Don't eat buttons on context change if it was waiting for button release (you did need another release).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29192 a1c6a512-1295-4272-9138-f99709370657
2011-02-02 18:30:10 +00:00
Thomas Martitz
7436e7ab41 Touchscreen/lists: Hopefully fix glitchy behavior that happened after opening the context menu.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29168 a1c6a512-1295-4272-9138-f99709370657
2011-01-29 16:33:25 +00:00
Thomas Martitz
33af0dec28 Touchscreen: Improved scroll threshold
Remove the hardcoded (and way too small) scroll threshold (the distance moved in pixels before we think the users wants to scroll) and replace it with something based on the actual DPI of the screen.
On Android we call the API for that, on other touchscreens we reimplemented Android's formula (as of 2.2) and calculate it.

Flyspray: 11727

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28548 a1c6a512-1295-4272-9138-f99709370657
2010-11-10 15:25:15 +00:00
Thomas Martitz
12f5a1e60e Make the context menu pop up instantly after the long press timeout when holding a list item instead of just after the thumb/styles left the screen.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28499 a1c6a512-1295-4272-9138-f99709370657
2010-11-05 19:23:34 +00:00
Thomas Martitz
b673ae2c46 FS#11686 - Kinetic list scrolling for touchscreen
This adds kinetic scrolling to to lists on touchscreen targets and RaaA, like all other OSes on touchscreens have.
It's only enabled in the absolute point mode, so for non-touchscreen and in grid mode nothing changes.

Kinetic scrolling means that the list keeps scrolling (but is decelerating) after you leave the touchscreen with the finger.
Redraw interval and deceleration is hardcoded for now but could be made configurable if desired.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28408 a1c6a512-1295-4272-9138-f99709370657
2010-10-31 11:11:46 +00:00
Teruaki Kawashima
a900a29091 fix that disktidy plugin and shopper plugin is not usable when Show Icons setting is turned off.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28362 a1c6a512-1295-4272-9138-f99709370657
2010-10-26 12:19:39 +00:00
Thomas Martitz
b39a4933cb Fix several inaccuracies in list handling on touchscreen.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28221 a1c6a512-1295-4272-9138-f99709370657
2010-10-09 11:22:52 +00:00
Thomas Martitz
d9d0b4dd20 Pixel-accurate (vertical) list scrolling for touchscreen targets.
Looks much smoother now as you don't scroll by whole lines anymore.
Add some functions lcd driver to enable the line based scrolling engine to draw the lines with a pixel-based y-offset.
This should also allow for a sensible kinetic scrolling mechanism (still a todo).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28214 a1c6a512-1295-4272-9138-f99709370657
2010-10-06 12:46:42 +00:00
Jonathan Gordon
0dd8ba4725 Fix FS#11552 - touches outside of the UI viewport can do unexpected list movements.
Also remove naughty // comments from r28145

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28168 a1c6a512-1295-4272-9138-f99709370657
2010-09-26 07:32:16 +00:00
Thomas Martitz
f060cd5428 Don't actually reimplement an existing feature for hiding the selection marker
during scrolling.

However, the existing one is part of the list api, so it shouldn't be overridden
blindly internally, so do the decision in a different but equivalent way.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28147 a1c6a512-1295-4272-9138-f99709370657
2010-09-23 00:37:33 +00:00
Thomas Martitz
ac08e6942a Touchscreen: Improve scrolling in absolute point mode.
* Scrolling is now done by wiping over the screen. There's no acceleration or
  kinetic scrolling yet though. But it works rather well (previously
  you held the edges of the list to scroll).
* Improve scrollbar scrolling so that it keeps scrolling even if you leave the
  scrollbar area.
* Hide selection during scrolling
* Prevent accidental hitting of the list title (which means go back) during
  scrolling
* Don't go into context menu after scrolling when leaving the screen on an item

In general, it's very much like scrolling in native lists in Android,
except there's no kinetic scrolling and everything is still line based, but with
the feature that the scrollbar enables jumping around in the list and very fast
scrolling.

Thanks to Dustin Skoracki for his ideas and half of the code for this.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28145 a1c6a512-1295-4272-9138-f99709370657
2010-09-23 00:02:32 +00:00
Maurus Cuelenaere
5da84ec4da I somehow messed up the previous commit, undo the unrelated changes.
Also, r26922 wasn't the culprit but r27004.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27108 a1c6a512-1295-4272-9138-f99709370657
2010-06-24 14:32:25 +00:00
Maurus Cuelenaere
3f4838585f Fix touchscreen scrollbar behaviour when it's on the right.
This was broken since r26922.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27107 a1c6a512-1295-4272-9138-f99709370657
2010-06-24 14:22:36 +00:00
Jonathan Gordon
49dac9ae04 Make the title area go up one level in the lists again. This Doesnt work if you have the title in a seperate viewport in the sbs, but that isnt really a problem because if you are doing that there is a good chance you will setup a region for that press anyway
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27015 a1c6a512-1295-4272-9138-f99709370657
2010-06-21 14:57:44 +00:00
Jonathan Gordon
a398c2846a Touchregion support for the Base Skin and FM Skins. display obviously needs to be in stylus mode for this to work. Just about all screens should be mostly useable if your sbs has the next/prev/select/cancel/menu regions defined.
Plenty of room to add new action abilities if they are wanted.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27004 a1c6a512-1295-4272-9138-f99709370657
2010-06-21 06:04:19 +00:00