Index: apps/gui/skin_engine/skin_parser.c =================================================================== --- apps/gui/skin_engine/skin_parser.c (revision 25508) +++ apps/gui/skin_engine/skin_parser.c (working copy) @@ -322,7 +322,8 @@ { WPS_TOKEN_PROGRESSBAR, "pb", WPS_REFRESH_PLAYER_PROGRESS, parse_progressbar }, - { WPS_TOKEN_VOLUME, "pv", WPS_REFRESH_DYNAMIC, NULL }, + { WPS_TOKEN_VOLUME, "pv", WPS_REFRESH_DYNAMIC, + parse_progressbar }, { WPS_TOKEN_TRACK_ELAPSED_PERCENT, "px", WPS_REFRESH_DYNAMIC, NULL }, { WPS_TOKEN_TRACK_TIME_ELAPSED, "pc", WPS_REFRESH_DYNAMIC, NULL }, @@ -1118,7 +1119,7 @@ return skip; } - + static int parse_progressbar(const char *wps_bufptr, struct wps_token *token, struct wps_data *wps_data) @@ -1166,6 +1167,7 @@ curr_vp->pb = pb; add_to_ll_chain(&wps_data->progressbars, item); + pb->type = token->type; return 0; } ptr = wps_bufptr + 1; @@ -1222,7 +1224,9 @@ curr_vp->pb = pb; add_to_ll_chain(&wps_data->progressbars, item); - + if (token->type == WPS_TOKEN_VOLUME) + token->type = WPS_TOKEN_VOLUMEBAR; + pb->type = token->type; /* Skip the rest of the line */ return skip_end_of_line(wps_bufptr)-1; #else Index: apps/gui/skin_engine/skin_display.c =================================================================== --- apps/gui/skin_engine/skin_display.c (revision 25508) +++ apps/gui/skin_engine/skin_display.c (working copy) @@ -26,6 +26,7 @@ #include "font.h" #include "system.h" #include "rbunicode.h" +#include "sound.h" #ifdef DEBUG #include "debug.h" #endif @@ -146,6 +147,12 @@ length = 1; elapsed = 0; } + if (pb->type == WPS_TOKEN_VOLUMEBAR) + { + int minvol = sound_min(SOUND_VOLUME); + length = -minvol; + elapsed = global_settings.volume > 0 ? length : global_settings.volume-minvol; + } if (pb->have_bitmap_pb) gui_bitmap_scrollbar_draw(display, pb->bm, Index: apps/gui/skin_engine/skin_tokens.h =================================================================== --- apps/gui/skin_engine/skin_tokens.h (revision 25508) +++ apps/gui/skin_engine/skin_tokens.h (working copy) @@ -202,6 +202,7 @@ #endif /* Volume level */ WPS_TOKEN_VOLUME, + WPS_TOKEN_VOLUMEBAR, /* hold */ WPS_TOKEN_MAIN_HOLD, #ifdef HAS_REMOTE_BUTTON_HOLD Index: apps/gui/skin_engine/wps_internals.h =================================================================== --- apps/gui/skin_engine/wps_internals.h (revision 25508) +++ apps/gui/skin_engine/wps_internals.h (working copy) @@ -91,6 +91,7 @@ struct progressbar { + enum wps_token_type type; /* regular pb */ short x; /* >=0: explicitly set in the tag -> y-coord within the viewport