diff options
author | Frank Gevaerts <frank@gevaerts.be> | 2011-09-18 12:35:32 +0000 |
---|---|---|
committer | Frank Gevaerts <frank@gevaerts.be> | 2011-09-18 12:35:32 +0000 |
commit | 28d5f2aa57e8963a82849b2009274e8272094c86 (patch) | |
tree | edbff857b85cc952f745e18a650cdb0a42a10c59 | |
parent | e12a8327584e8ddbff7341d612bac732096764fa (diff) | |
download | rockbox-28d5f2aa57e8963a82849b2009274e8272094c86.tar.gz rockbox-28d5f2aa57e8963a82849b2009274e8272094c86.zip |
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
-rw-r--r-- | apps/gui/bitmap/list-skinned.c | 6 | ||||
-rw-r--r-- | apps/gui/list.h | 1 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 5 | ||||
-rw-r--r-- | lib/skin_parser/tag_table.c | 1 | ||||
-rw-r--r-- | lib/skin_parser/tag_table.h | 1 |
5 files changed, 14 insertions, 0 deletions
diff --git a/apps/gui/bitmap/list-skinned.c b/apps/gui/bitmap/list-skinned.c index 5f53784ccc..208b2df681 100644 --- a/apps/gui/bitmap/list-skinned.c +++ b/apps/gui/bitmap/list-skinned.c | |||
@@ -82,6 +82,12 @@ static int offset_to_item(int offset, bool wrap) | |||
82 | item = item % current_list->nb_items; | 82 | item = item % current_list->nb_items; |
83 | return item; | 83 | return item; |
84 | } | 84 | } |
85 | |||
86 | int skinlist_get_item_number() | ||
87 | { | ||
88 | return current_drawing_line; | ||
89 | } | ||
90 | |||
85 | const char* skinlist_get_item_text(int offset, bool wrap, char* buf, size_t buf_size) | 91 | const char* skinlist_get_item_text(int offset, bool wrap, char* buf, size_t buf_size) |
86 | { | 92 | { |
87 | int item = offset_to_item(offset, wrap); | 93 | int item = offset_to_item(offset, wrap); |
diff --git a/apps/gui/list.h b/apps/gui/list.h index 7c64987abb..d40cfe9966 100644 --- a/apps/gui/list.h +++ b/apps/gui/list.h | |||
@@ -190,6 +190,7 @@ bool skinlist_is_selected_item(void); | |||
190 | void skinlist_set_cfg(enum screen_type screen, | 190 | void skinlist_set_cfg(enum screen_type screen, |
191 | struct listitem_viewport_cfg *cfg); | 191 | struct listitem_viewport_cfg *cfg); |
192 | const char* skinlist_get_item_text(int offset, bool wrap, char* buf, size_t buf_size); | 192 | const char* skinlist_get_item_text(int offset, bool wrap, char* buf, size_t buf_size); |
193 | int skinlist_get_item_number(void); | ||
193 | enum themable_icons skinlist_get_item_icon(int offset, bool wrap); | 194 | enum themable_icons skinlist_get_item_icon(int offset, bool wrap); |
194 | bool skinlist_needs_scrollbar(enum screen_type screen); | 195 | bool skinlist_needs_scrollbar(enum screen_type screen); |
195 | void skinlist_get_scrollbar(int* nb_item, int* first_shown, int* last_shown); | 196 | void skinlist_get_scrollbar(int* nb_item, int* first_shown, int* last_shown); |
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index fa697b18e9..7bf588080d 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c | |||
@@ -932,6 +932,11 @@ const char *get_token_value(struct gui_wps *gwps, | |||
932 | struct listitem *li = (struct listitem *)token->value.data; | 932 | struct listitem *li = (struct listitem *)token->value.data; |
933 | return skinlist_get_item_text(li->offset, li->wrap, buf, buf_size); | 933 | return skinlist_get_item_text(li->offset, li->wrap, buf, buf_size); |
934 | } | 934 | } |
935 | case SKIN_TOKEN_LIST_ITEM_NUMBER: | ||
936 | if (intval) | ||
937 | *intval = skinlist_get_item_number(); | ||
938 | snprintf(buf, buf_size, "%d",skinlist_get_item_number()); | ||
939 | return buf; | ||
935 | case SKIN_TOKEN_LIST_ITEM_IS_SELECTED: | 940 | case SKIN_TOKEN_LIST_ITEM_IS_SELECTED: |
936 | return skinlist_is_selected_item()?"s":""; | 941 | return skinlist_is_selected_item()?"s":""; |
937 | case SKIN_TOKEN_LIST_ITEM_ICON: | 942 | case SKIN_TOKEN_LIST_ITEM_ICON: |
diff --git a/lib/skin_parser/tag_table.c b/lib/skin_parser/tag_table.c index aa18dd4cca..dda5074d9a 100644 --- a/lib/skin_parser/tag_table.c +++ b/lib/skin_parser/tag_table.c | |||
@@ -189,6 +189,7 @@ static const struct tag_info legal_tags[] = | |||
189 | { SKIN_TOKEN_VIEWPORT_CUSTOMLIST, "Vp" , "IC", SKIN_REFRESH_DYNAMIC|NOBREAK }, | 189 | { SKIN_TOKEN_VIEWPORT_CUSTOMLIST, "Vp" , "IC", SKIN_REFRESH_DYNAMIC|NOBREAK }, |
190 | { SKIN_TOKEN_LIST_TITLE_TEXT, "Lt" , "", SKIN_REFRESH_DYNAMIC }, | 190 | { SKIN_TOKEN_LIST_TITLE_TEXT, "Lt" , "", SKIN_REFRESH_DYNAMIC }, |
191 | { SKIN_TOKEN_LIST_ITEM_TEXT, "LT", "|IS", SKIN_REFRESH_DYNAMIC }, | 191 | { SKIN_TOKEN_LIST_ITEM_TEXT, "LT", "|IS", SKIN_REFRESH_DYNAMIC }, |
192 | { SKIN_TOKEN_LIST_ITEM_NUMBER, "LN", "", SKIN_REFRESH_DYNAMIC }, | ||
192 | { SKIN_TOKEN_LIST_TITLE_ICON, "Li" , "", SKIN_REFRESH_DYNAMIC }, | 193 | { SKIN_TOKEN_LIST_TITLE_ICON, "Li" , "", SKIN_REFRESH_DYNAMIC }, |
193 | { SKIN_TOKEN_LIST_ITEM_ICON, "LI", "|IS", SKIN_REFRESH_DYNAMIC }, | 194 | { SKIN_TOKEN_LIST_ITEM_ICON, "LI", "|IS", SKIN_REFRESH_DYNAMIC }, |
194 | { SKIN_TOKEN_LIST_ITEM_CFG, "Lb" , "Sii|S", SKIN_REFRESH_STATIC }, | 195 | { SKIN_TOKEN_LIST_ITEM_CFG, "Lb" , "Sii|S", SKIN_REFRESH_STATIC }, |
diff --git a/lib/skin_parser/tag_table.h b/lib/skin_parser/tag_table.h index 82ee4757be..58c3869ea6 100644 --- a/lib/skin_parser/tag_table.h +++ b/lib/skin_parser/tag_table.h | |||
@@ -216,6 +216,7 @@ enum skin_token_type { | |||
216 | SKIN_TOKEN_LIST_SELECTED_ITEM_CFG, | 216 | SKIN_TOKEN_LIST_SELECTED_ITEM_CFG, |
217 | SKIN_TOKEN_LIST_ITEM_IS_SELECTED, | 217 | SKIN_TOKEN_LIST_ITEM_IS_SELECTED, |
218 | SKIN_TOKEN_LIST_ITEM_TEXT, | 218 | SKIN_TOKEN_LIST_ITEM_TEXT, |
219 | SKIN_TOKEN_LIST_ITEM_NUMBER, | ||
219 | SKIN_TOKEN_LIST_ITEM_ICON, | 220 | SKIN_TOKEN_LIST_ITEM_ICON, |
220 | SKIN_TOKEN_LIST_NEEDS_SCROLLBAR, | 221 | SKIN_TOKEN_LIST_NEEDS_SCROLLBAR, |
221 | SKIN_TOKEN_LIST_SCROLLBAR, | 222 | SKIN_TOKEN_LIST_SCROLLBAR, |