summaryrefslogtreecommitdiff
path: root/apps/menu.c
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2007-04-16 09:14:36 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2007-04-16 09:14:36 +0000
commit6a5cc0bd25bd468c79e453fa49f353edd824141a (patch)
tree8b406e8390550ff8b87eae3214309867574657f0 /apps/menu.c
parent7afe2e86931313653d4dedb6d5167c79c2822aba (diff)
downloadrockbox-6a5cc0bd25bd468c79e453fa49f353edd824141a.tar.gz
rockbox-6a5cc0bd25bd468c79e453fa49f353edd824141a.zip
Customizable icons for all bitmap targets. (FS#7013)
http://www.rockbox.org/twiki/bin/view/Main/CustomIcons for info on format and how to load them git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13177 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/menu.c')
-rw-r--r--apps/menu.c53
1 files changed, 24 insertions, 29 deletions
diff --git a/apps/menu.c b/apps/menu.c
index 71a066f428..e840432f42 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -136,7 +136,7 @@ static char * get_menu_item_name(int selected_item,void * data, char *buffer)
136 return P2STR(menu->callback_and_desc->desc); 136 return P2STR(menu->callback_and_desc->desc);
137} 137}
138#ifdef HAVE_LCD_BITMAP 138#ifdef HAVE_LCD_BITMAP
139static void menu_get_icon(int selected_item, void * data, ICON * icon) 139static int menu_get_icon(int selected_item, void * data)
140{ 140{
141 const struct menu_item_ex *menu = (const struct menu_item_ex *)data; 141 const struct menu_item_ex *menu = (const struct menu_item_ex *)data;
142 int menu_icon = Icon_NOICON; 142 int menu_icon = Icon_NOICON;
@@ -144,8 +144,7 @@ static void menu_get_icon(int selected_item, void * data, ICON * icon)
144 144
145 if ((menu->flags&MENU_TYPE_MASK) == MT_RETURN_ID) 145 if ((menu->flags&MENU_TYPE_MASK) == MT_RETURN_ID)
146 { 146 {
147 *icon = bitmap_icons_6x8[Icon_Menu_functioncall]; 147 return Icon_Menu_functioncall;
148 return;
149 } 148 }
150 menu = menu->submenus[selected_item]; 149 menu = menu->submenus[selected_item];
151 if (menu->flags&MENU_HAS_DESC) 150 if (menu->flags&MENU_HAS_DESC)
@@ -153,28 +152,24 @@ static void menu_get_icon(int selected_item, void * data, ICON * icon)
153 else if (menu->flags&MENU_DYNAMIC_DESC) 152 else if (menu->flags&MENU_DYNAMIC_DESC)
154 menu_icon = menu->menu_get_name_and_icon->icon_id; 153 menu_icon = menu->menu_get_name_and_icon->icon_id;
155 154
156 switch (menu->flags&MENU_TYPE_MASK) 155 if (menu_icon == Icon_NOICON)
157 { 156 {
158 case MT_SETTING: 157 switch (menu->flags&MENU_TYPE_MASK)
159 case MT_SETTING_W_TEXT: 158 {
160 *icon = bitmap_icons_6x8[Icon_Menu_setting]; 159 case MT_SETTING:
161 break; 160 case MT_SETTING_W_TEXT:
162 case MT_MENU: 161 menu_icon = Icon_Menu_setting;
163 if (menu_icon == Icon_NOICON) 162 break;
164 *icon = bitmap_icons_6x8[Icon_Submenu]; 163 case MT_MENU:
165 else 164 menu_icon = Icon_Submenu;
166 *icon = bitmap_icons_6x8[menu_icon]; 165 break;
167 break; 166 case MT_FUNCTION_CALL:
168 case MT_FUNCTION_CALL: 167 case MT_RETURN_VALUE:
169 case MT_RETURN_VALUE: 168 menu_icon = Icon_Menu_functioncall;
170 if (menu_icon == Icon_NOICON) 169 break;
171 *icon = bitmap_icons_6x8[Icon_Menu_functioncall]; 170 }
172 else
173 *icon = bitmap_icons_6x8[menu_icon];
174 break;
175 default:
176 *icon = NOICON;
177 } 171 }
172 return menu_icon;
178} 173}
179#endif 174#endif
180 175
@@ -184,7 +179,7 @@ static void init_menu_lists(const struct menu_item_ex *menu,
184 int i, count = MENU_GET_COUNT(menu->flags); 179 int i, count = MENU_GET_COUNT(menu->flags);
185 int type = (menu->flags&MENU_TYPE_MASK); 180 int type = (menu->flags&MENU_TYPE_MASK);
186 menu_callback_type menu_callback = NULL; 181 menu_callback_type menu_callback = NULL;
187 ICON icon = NOICON; 182 int icon;
188 current_subitems_count = 0; 183 current_subitems_count = 0;
189 184
190 if (type == MT_OLD_MENU) 185 if (type == MT_OLD_MENU)
@@ -220,9 +215,9 @@ static void init_menu_lists(const struct menu_item_ex *menu,
220 gui_synclist_init(lists,get_menu_item_name,(void*)menu,false,1); 215 gui_synclist_init(lists,get_menu_item_name,(void*)menu,false,1);
221#ifdef HAVE_LCD_BITMAP 216#ifdef HAVE_LCD_BITMAP
222 if (menu->callback_and_desc->icon_id == Icon_NOICON) 217 if (menu->callback_and_desc->icon_id == Icon_NOICON)
223 icon = bitmap_icons_6x8[Icon_Submenu_Entered]; 218 icon = Icon_Submenu_Entered;
224 else 219 else
225 icon = bitmap_icons_6x8[menu->callback_and_desc->icon_id]; 220 icon = menu->callback_and_desc->icon_id;
226 gui_synclist_set_title(lists, P2STR(menu->callback_and_desc->desc), icon); 221 gui_synclist_set_title(lists, P2STR(menu->callback_and_desc->desc), icon);
227 gui_synclist_set_icon_callback(lists, menu_get_icon); 222 gui_synclist_set_icon_callback(lists, menu_get_icon);
228#else 223#else
@@ -704,10 +699,10 @@ static char* oldmenuwrapper_getname(int selected_item,
704} 699}
705 700
706#ifdef HAVE_LCD_BITMAP 701#ifdef HAVE_LCD_BITMAP
707static void oldmenu_get_icon(int selected_item, void * data, ICON * icon) 702static int oldmenu_get_icon(int selected_item, void * data)
708{ 703{
709 (void)data; (void)selected_item; 704 (void)data; (void)selected_item;
710 *icon = bitmap_icons_6x8[Icon_Menu_functioncall]; 705 return Icon_Menu_functioncall;
711} 706}
712#endif 707#endif
713 708
@@ -721,7 +716,7 @@ static void init_oldmenu(const struct menu_item_ex *menu,
721 gui_synclist_limit_scroll(lists, true); 716 gui_synclist_limit_scroll(lists, true);
722#ifdef HAVE_LCD_BITMAP 717#ifdef HAVE_LCD_BITMAP
723 gui_synclist_set_title(lists, menus[menu->value].title, 718 gui_synclist_set_title(lists, menus[menu->value].title,
724 bitmap_icons_6x8[Icon_Submenu_Entered]); 719 Icon_Submenu_Entered);
725 gui_synclist_set_icon_callback(lists, oldmenu_get_icon); 720 gui_synclist_set_icon_callback(lists, oldmenu_get_icon);
726#endif 721#endif
727 gui_synclist_select_item(lists, selected); 722 gui_synclist_select_item(lists, selected);