Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge a bunch of code which is 99% identical so it makes it easier to add more of these later

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29535 a1c6a512-1295-4272-9138-f99709370657

+92 -64
+2 -1
apps/gui/skin_engine/skin_display.c
··· 100 100 struct wps_data *data = skin->data; 101 101 const struct screen *display = skin->display; 102 102 const int screen = display->screen_type; 103 + struct skin_viewport *svp = skin_find_item(VP_DEFAULT_LABEL, SKIN_FIND_VP, data); 103 104 104 - struct viewport *vp = &find_viewport(VP_DEFAULT_LABEL, false, data)->vp; 105 + struct viewport *vp = &svp->vp; 105 106 viewport_set_defaults(vp, screen); 106 107 107 108 if (data->wps_sb_tag)
+62
apps/gui/skin_engine/skin_engine.c
··· 259 259 FOR_NB_SCREENS(i) 260 260 skins[skin][i].needs_full_update = true; 261 261 } 262 + 263 + 264 + void *skin_find_item(const char *label, enum skin_find_what what, 265 + struct wps_data *data) 266 + { 267 + const char *itemlabel = NULL; 268 + union { 269 + struct skin_token_list *linkedlist; 270 + struct skin_element *vplist; 271 + } list; 272 + bool isvplist = false; 273 + void *ret = NULL; 274 + switch (what) 275 + { 276 + case SKIN_FIND_UIVP: 277 + case SKIN_FIND_VP: 278 + list.vplist = data->tree; 279 + isvplist = true; 280 + break; 281 + case SKIN_FIND_IMAGE: 282 + list.linkedlist = data->images; 283 + break; 284 + #ifdef HAVE_TOUCHSCREEN 285 + case SKIN_FIND_TOUCHREGION: 286 + list.linkedlist = data->touchregions; 287 + break; 288 + #endif 289 + } 290 + 291 + while (list.linkedlist) 292 + { 293 + bool skip = false; 294 + switch (what) 295 + { 296 + case SKIN_FIND_UIVP: 297 + case SKIN_FIND_VP: 298 + ret = list.vplist->data; 299 + itemlabel = ((struct skin_viewport *)ret)->label; 300 + skip = !(((struct skin_viewport *)ret)->is_infovp == 301 + (what==SKIN_FIND_UIVP)); 302 + break; 303 + case SKIN_FIND_IMAGE: 304 + ret = list.linkedlist->token->value.data; 305 + itemlabel = ((struct gui_img *)ret)->label; 306 + break; 307 + #ifdef HAVE_TOUCHSCREEN 308 + case SKIN_FIND_TOUCHREGION: 309 + ret = list.linkedlist->token->value.data; 310 + itemlabel = ((struct touchregion *)ret)->label; 311 + break; 312 + #endif 313 + } 314 + if (!skip && itemlabel && !strcmp(itemlabel, label)) 315 + return ret; 316 + 317 + if (isvplist) 318 + list.vplist = list.vplist->next; 319 + else 320 + list.linkedlist = list.linkedlist->next; 321 + } 322 + return NULL; 323 + }
+9 -51
apps/gui/skin_engine/skin_parser.c
··· 115 115 } 116 116 } 117 117 118 - /* traverse the image linked-list for an image */ 119 - struct gui_img* find_image(const char *label, struct wps_data *data) 120 - { 121 - struct skin_token_list *list = data->images; 122 - while (list) 123 - { 124 - struct gui_img *img = (struct gui_img *)list->token->value.data; 125 - if (!strcmp(img->label,label)) 126 - return img; 127 - list = list->next; 128 - } 129 - return NULL; 130 - } 131 - 132 118 #endif 133 - 134 - /* traverse the viewport linked list for a viewport */ 135 - struct skin_viewport* find_viewport(const char *label, bool uivp, struct wps_data *data) 136 - { 137 - struct skin_element *list = data->tree; 138 - while (list) 139 - { 140 - struct skin_viewport *vp = (struct skin_viewport *)list->data; 141 - if (vp->label && (vp->is_infovp == uivp) && 142 - !strcmp(vp->label, label)) 143 - return vp; 144 - list = list->next; 145 - } 146 - return NULL; 147 - } 148 119 149 120 #ifdef HAVE_LCD_BITMAP 150 121 ··· 240 211 label[1] = '\0'; 241 212 } 242 213 /* sanity check */ 243 - img = find_image(label, wps_data); 214 + img = skin_find_item(label, SKIN_FIND_IMAGE, wps_data); 244 215 if (!img || !id) 245 216 { 246 217 return WPS_ERROR_INVALID_PARAM; ··· 298 269 y = element->params[3].data.number; 299 270 300 271 /* check the image number and load state */ 301 - if(find_image(id, wps_data)) 272 + if(skin_find_item(id, SKIN_FIND_IMAGE, wps_data)) 302 273 { 303 274 /* Invalid image ID */ 304 275 return WPS_ERROR_INVALID_PARAM; ··· 680 651 { 681 652 curr_param++; 682 653 param++; 683 - pb->slider = find_image(param->data.text, wps_data); 654 + pb->slider = skin_find_item(param->data.text, 655 + SKIN_FIND_IMAGE, wps_data); 684 656 } 685 657 else /* option needs the next param */ 686 658 return -1; ··· 703 675 { 704 676 curr_param++; 705 677 param++; 706 - pb->backdrop = find_image(param->data.text, wps_data); 678 + pb->backdrop = skin_find_item(param->data.text, 679 + SKIN_FIND_IMAGE, wps_data); 707 680 708 681 } 709 682 else /* option needs the next param */ ··· 725 698 726 699 if (image_filename) 727 700 { 728 - pb->image = find_image(image_filename, wps_data); 701 + pb->image = skin_find_item(image_filename, SKIN_FIND_IMAGE, wps_data); 729 702 if (!pb->image) /* load later */ 730 703 { 731 704 struct gui_img* img = (struct gui_img*)skin_buffer_alloc(sizeof(struct gui_img)); ··· 878 851 #endif /* HAVE_ALBUMART */ 879 852 880 853 #ifdef HAVE_TOUCHSCREEN 881 - struct touchregion* find_touchregion(const char *label, 882 - struct wps_data *data) 883 - { 884 - struct skin_token_list *list = data->touchregions; 885 - while (list) 886 - { 887 - struct touchregion *tr = 888 - (struct touchregion *)list->token->value.data; 889 - if (tr->label && !strcmp(tr->label, label)) 890 - return tr; 891 - list = list->next; 892 - } 893 - return NULL; 894 - } 895 - 896 854 static int parse_lasttouch(struct skin_element *element, 897 855 struct wps_token *token, 898 856 struct wps_data *wps_data) ··· 909 867 for (i=0; i<element->params_count; i++) 910 868 { 911 869 if (element->params[i].type == STRING) 912 - data->region = find_touchregion( 913 - element->params[i].data.text, wps_data); 870 + data->region = skin_find_item(element->params[i].data.text, 871 + SKIN_FIND_TOUCHREGION, wps_data); 914 872 else if (element->params[i].type == INTEGER) 915 873 data->timeout = element->params[i].data.number; 916 874 }
+3 -2
apps/gui/skin_engine/skin_render.c
··· 163 163 { 164 164 struct image_display *id = token->value.data; 165 165 const char* label = id->label; 166 - struct gui_img *img = find_image(label, data); 166 + struct gui_img *img = skin_find_item(label,SKIN_FIND_IMAGE, data); 167 167 if (img && img->loaded) 168 168 { 169 169 if (id->token == NULL) ··· 281 281 if (token->type == SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY) 282 282 { 283 283 struct image_display *id = token->value.data; 284 - struct gui_img *img = find_image(id->label, data); 284 + struct gui_img *img = skin_find_item(id->label, 285 + SKIN_FIND_IMAGE, data); 285 286 clear_image_pos(gwps, img); 286 287 } 287 288 else if (token->type == SKIN_TOKEN_PEAKMETER)
+1 -1
apps/gui/skin_engine/wps_debug.c
··· 156 156 { 157 157 char subimage = '\0'; 158 158 char label = token->value.i&0xFF; 159 - struct gui_img *img = find_image(label, data); 159 + struct gui_img *img = skin_find_item(label, SKIN_FIND_IMAGE, data); 160 160 if (img && img->num_subimages > 1) 161 161 { 162 162 int item = token->value.i>>8;
+8 -4
apps/gui/skin_engine/wps_internals.h
··· 364 364 char *buf, int buf_size, int limit, int *intval); 365 365 #endif 366 366 367 - struct gui_img* find_image(const char *label, struct wps_data *data); 368 - struct skin_viewport* find_viewport(const char *label, bool uivp, struct wps_data *data); 369 - 370 - 367 + enum skin_find_what { 368 + SKIN_FIND_VP = 0, 369 + SKIN_FIND_UIVP, 370 + SKIN_FIND_IMAGE, 371 + SKIN_FIND_TOUCHREGION 372 + }; 373 + void *skin_find_item(const char *label, enum skin_find_what what, 374 + struct wps_data *data); 371 375 #ifdef SIMULATOR 372 376 #define DEBUG_SKIN_ENGINE 373 377 extern bool debug_wps;
+5 -3
apps/gui/statusbar-skinned.c
··· 87 87 /* hide the sb's default viewport because it has nasty effect with stuff 88 88 * not part of the statusbar, 89 89 * hence .sbs's without any other vps are unsupported*/ 90 - struct skin_viewport *vp = find_viewport(VP_DEFAULT_LABEL, false, data); 90 + struct skin_viewport *vp = skin_find_item(VP_DEFAULT_LABEL, SKIN_FIND_VP, data); 91 91 struct skin_element *next_vp = data->tree->next; 92 92 93 93 if (vp) ··· 115 115 struct viewport *sb_skin_get_info_vp(enum screen_type screen) 116 116 { 117 117 struct wps_data *data = skin_get_gwps(CUSTOM_STATUSBAR, screen)->data; 118 + struct skin_viewport *vp = NULL; 118 119 if (oldinfovp_label[screen] && 119 120 strcmp(oldinfovp_label[screen], infovp_label[screen])) 120 121 { ··· 122 123 oldinfovp_label[screen] = infovp_label[screen]; 123 124 viewportmanager_theme_enable(screen, false, NULL); 124 125 viewportmanager_theme_undo(screen, true); 125 - } 126 - return &find_viewport(infovp_label[screen], true, data)->vp; 126 + } 127 + vp = skin_find_item(infovp_label[screen], SKIN_FIND_UIVP, data); 128 + return &vp->vp; 127 129 } 128 130 129 131 #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1)
+2 -2
apps/gui/wps.c
··· 628 628 #if LCD_DEPTH > 1 629 629 if (display->depth > 1) 630 630 { 631 - struct skin_viewport *svp = find_viewport(VP_DEFAULT_LABEL, 632 - false, gwps->data); 631 + struct skin_viewport *svp = skin_find_item(VP_DEFAULT_LABEL, 632 + SKIN_FIND_VP, gwps->data); 633 633 if (svp) 634 634 { 635 635 struct viewport *vp = &svp->vp;