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.

Allow viewport labels to be mostly free text instead of only one character. If this is useful the same will be done for images

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

+35 -28
+1 -1
apps/gui/skin_engine/skin_display.c
··· 98 98 const struct screen *display = skin->display; 99 99 const int screen = display->screen_type; 100 100 101 - struct viewport *vp = &find_viewport(VP_DEFAULT_LABEL, data)->vp; 101 + struct viewport *vp = &find_viewport(VP_DEFAULT_LABEL, false, data)->vp; 102 102 viewport_set_defaults(vp, screen); 103 103 104 104 if (data->wps_sb_tag)
+10 -7
apps/gui/skin_engine/skin_parser.c
··· 132 132 #endif 133 133 134 134 /* traverse the viewport linked list for a viewport */ 135 - struct skin_viewport* find_viewport(char label, struct wps_data *data) 135 + struct skin_viewport* find_viewport(char *label, bool uivp, struct wps_data *data) 136 136 { 137 137 struct skin_element *list = data->tree; 138 138 while (list) 139 139 { 140 140 struct skin_viewport *vp = (struct skin_viewport *)list->data; 141 - if (vp->label == label) 141 + if (vp->label && (vp->is_infovp == uivp) && 142 + !strcmp(vp->label, label)) 142 143 return vp; 143 144 list = list->next; 144 145 } ··· 1086 1087 return CALLBACK_ERROR; 1087 1088 1088 1089 skin_vp->hidden_flags = 0; 1089 - skin_vp->label = VP_NO_LABEL; 1090 + skin_vp->label = NULL; 1091 + skin_vp->is_infovp = false; 1090 1092 element->data = skin_vp; 1091 1093 curr_vp = skin_vp; 1092 1094 curr_viewport_element = element; ··· 1118 1120 { 1119 1121 if (element->tag->type == SKIN_TOKEN_UIVIEWPORT_LOAD) 1120 1122 { 1123 + skin_vp->is_infovp = true; 1121 1124 if (isdefault(param)) 1122 1125 { 1123 1126 skin_vp->hidden_flags = VP_NEVER_VISIBLE; 1124 - skin_vp->label = VP_INFO_LABEL|VP_DEFAULT_LABEL; 1127 + skin_vp->label = VP_DEFAULT_LABEL; 1125 1128 } 1126 1129 else 1127 1130 { 1128 1131 skin_vp->hidden_flags = VP_NEVER_VISIBLE; 1129 - skin_vp->label = VP_INFO_LABEL|param->data.text[0]; 1132 + skin_vp->label = param->data.text; 1130 1133 } 1131 1134 } 1132 1135 else 1133 1136 { 1134 1137 skin_vp->hidden_flags = VP_DRAW_HIDEABLE|VP_DRAW_HIDDEN; 1135 - skin_vp->label = param->data.text[0]; 1138 + skin_vp->label = param->data.text; 1136 1139 } 1137 1140 param++; 1138 1141 } ··· 1269 1272 break; 1270 1273 case SKIN_TOKEN_VIEWPORT_ENABLE: 1271 1274 case SKIN_TOKEN_UIVIEWPORT_ENABLE: 1272 - token->value.i = element->params[0].data.text[0]; 1275 + token->value.data = element->params[0].data.text; 1273 1276 break; 1274 1277 case SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY: 1275 1278 function = parse_image_display;
+8 -6
apps/gui/skin_engine/skin_render.c
··· 92 92 #endif 93 93 case SKIN_TOKEN_VIEWPORT_ENABLE: 94 94 { 95 - char label = token->value.i; 95 + char *label = token->value.data; 96 96 char temp = VP_DRAW_HIDEABLE; 97 97 struct skin_element *viewport = gwps->data->tree; 98 98 while (viewport) 99 99 { 100 100 struct skin_viewport *skinvp = (struct skin_viewport*)viewport->data; 101 - if (skinvp->label == label) 101 + if (skinvp->label && !skinvp->is_infovp && 102 + !strcmp(skinvp->label, label)) 102 103 { 103 104 if (skinvp->hidden_flags&VP_DRAW_HIDDEN) 104 105 { ··· 113 114 #ifdef HAVE_LCD_BITMAP 114 115 case SKIN_TOKEN_UIVIEWPORT_ENABLE: 115 116 sb_set_info_vp(gwps->display->screen_type, 116 - token->value.i|VP_INFO_LABEL); 117 + token->value.data); 117 118 break; 118 119 case SKIN_TOKEN_PEAKMETER: 119 120 data->peak_meter_enabled = true; ··· 238 239 } 239 240 else if (token->type == SKIN_TOKEN_VIEWPORT_ENABLE) 240 241 { 241 - char label = token->value.i&0x7f; 242 + char *label = token->value.data; 242 243 struct skin_element *viewport; 243 244 for (viewport = data->tree; 244 245 viewport; 245 246 viewport = viewport->next) 246 247 { 247 248 struct skin_viewport *skin_viewport = (struct skin_viewport*)viewport->data; 248 - if ((skin_viewport->label&0x7f) != label) 249 + if (skin_viewport->label && strcmp(skin_viewport->label, label)) 249 250 continue; 250 251 if (skin_viewport->hidden_flags&VP_NEVER_VISIBLE) 251 252 { ··· 564 565 #endif 565 566 viewport = data->tree; 566 567 skin_viewport = (struct skin_viewport *)viewport->data; 567 - if (skin_viewport->label == VP_DEFAULT_LABEL && viewport->next) 568 + if (skin_viewport->label && viewport->next && 569 + !strcmp(skin_viewport->label,VP_DEFAULT_LABEL)) 568 570 refresh_mode = 0; 569 571 570 572 for (viewport = data->tree;
+4 -5
apps/gui/skin_engine/wps_internals.h
··· 151 151 #define VP_DRAW_WASHIDDEN 0x4 152 152 /* these are never drawn, nor cleared, i.e. just ignored */ 153 153 #define VP_NEVER_VISIBLE 0x8 154 - #define VP_DEFAULT_LABEL '|' 155 - #define VP_NO_LABEL '-' 156 - #define VP_INFO_LABEL 0x80 154 + #define VP_DEFAULT_LABEL "|" 157 155 struct skin_viewport { 158 156 struct viewport vp; /* The LCD viewport struct */ 159 157 char hidden_flags; 160 - char label; 158 + bool is_infovp; 159 + char* label; 161 160 unsigned start_fgcolour; 162 161 unsigned start_bgcolour; 163 162 }; ··· 340 339 #endif 341 340 342 341 struct gui_img* find_image(char label, struct wps_data *data); 343 - struct skin_viewport* find_viewport(char label, struct wps_data *data); 342 + struct skin_viewport* find_viewport(char *label, bool uivp, struct wps_data *data); 344 343 345 344 346 345 #ifdef SIMULATOR
+9 -7
apps/gui/statusbar-skinned.c
··· 109 109 /* hide the sb's default viewport because it has nasty effect with stuff 110 110 * not part of the statusbar, 111 111 * hence .sbs's without any other vps are unsupported*/ 112 - struct skin_viewport *vp = find_viewport(VP_DEFAULT_LABEL, data); 112 + struct skin_viewport *vp = find_viewport(VP_DEFAULT_LABEL, false, data); 113 113 struct skin_element *next_vp = data->tree->next; 114 114 115 115 if (vp) ··· 121 121 /* hide this viewport, forever */ 122 122 vp->hidden_flags = VP_NEVER_VISIBLE; 123 123 } 124 - sb_set_info_vp(screen, VP_INFO_LABEL|VP_DEFAULT_LABEL); 124 + sb_set_info_vp(screen, VP_DEFAULT_LABEL); 125 125 } 126 126 127 127 if (!success && isfile) 128 128 sb_create_from_settings(screen); 129 129 } 130 - static char infovp_label[NB_SCREENS]; 131 - static char oldinfovp_label[NB_SCREENS]; 132 - void sb_set_info_vp(enum screen_type screen, char label) 130 + static char *infovp_label[NB_SCREENS]; 131 + static char *oldinfovp_label[NB_SCREENS]; 132 + void sb_set_info_vp(enum screen_type screen, char *label) 133 133 { 134 134 infovp_label[screen] = label; 135 135 } 136 136 137 137 struct viewport *sb_skin_get_info_vp(enum screen_type screen) 138 138 { 139 - if (oldinfovp_label[screen] != infovp_label[screen]) 139 + if (oldinfovp_label[screen] && 140 + strcmp(oldinfovp_label[screen], infovp_label[screen])) 140 141 { 141 142 /* UI viewport changed, so force a redraw */ 142 143 oldinfovp_label[screen] = infovp_label[screen]; 143 144 viewportmanager_theme_enable(screen, false, NULL); 144 145 viewportmanager_theme_undo(screen, true); 145 146 } 146 - return &find_viewport(infovp_label[screen], sb_skin[screen].data)->vp; 147 + return &find_viewport(infovp_label[screen], true, sb_skin[screen].data)->vp; 147 148 } 148 149 149 150 #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1) ··· 301 302 int i; 302 303 FOR_NB_SCREENS(i) 303 304 { 305 + oldinfovp_label[i] = NULL; 304 306 #ifdef HAVE_ALBUMART 305 307 sb_skin_data[i].albumart = NULL; 306 308 sb_skin_data[i].playback_aa_slot = -1;
+1 -1
apps/gui/statusbar-skinned.h
··· 36 36 37 37 void sb_create_from_settings(enum screen_type screen); 38 38 void sb_skin_init(void) INIT_ATTR; 39 - void sb_set_info_vp(enum screen_type screen, char label); 39 + void sb_set_info_vp(enum screen_type screen, char *label); 40 40 struct viewport *sb_skin_get_info_vp(enum screen_type screen); 41 41 void sb_skin_update(enum screen_type screen, bool force); 42 42
+2 -1
apps/gui/wps.c
··· 652 652 #if LCD_DEPTH > 1 653 653 if (display->depth > 1) 654 654 { 655 - struct viewport *vp = &find_viewport(VP_DEFAULT_LABEL, gwps->data)->vp; 655 + struct viewport *vp = &find_viewport(VP_DEFAULT_LABEL, 656 + false, gwps->data)->vp; 656 657 vp->fg_pattern = display->get_foreground(); 657 658 vp->bg_pattern = display->get_background(); 658 659 }