Index: apps/settings.c =================================================================== --- apps/settings.c (Revision 18104) +++ apps/settings.c (Arbeitskopie) @@ -719,6 +719,16 @@ int i; #endif + /* force the custom list vp to be reparsed upon settings load, otherwise it + * must be reparsed at every list redraw, I hope this is the proper place + * FIXME: With this solution the list updates too late, after one selected + * another item then auto-selected (e.g. the when one toggles the statusbar + * off and returns to the display menu, the vp is still shifted down until + * another item is selected*/ +#ifdef HAVE_LCD_BITMAP + list_info_reinit = 0; +#endif + sound_settings_apply(); #ifndef HAVE_FLASH_STORAGE Index: apps/gui/bitmap/list.c =================================================================== --- apps/gui/bitmap/list.c (Revision 18104) +++ apps/gui/bitmap/list.c (Arbeitskopie) @@ -41,6 +41,13 @@ #include "misc.h" #include "talk.h" #include "viewport.h" +// define for some debugging info +/* +#define USE_DEBUG +*/ +#ifdef USE_DEBUG +#include "debug.h" +#endif #define SCROLLBAR_WIDTH 6 #define ICON_PADDING 1 @@ -59,6 +66,7 @@ struct viewport *vp); bool list_display_title(struct gui_synclist *list, struct viewport *vp); + /* Draw the list... internal screen layout: ----------------- @@ -73,12 +81,34 @@ static bool draw_title(struct screen *display, struct viewport *parent, struct gui_synclist *list) { + struct viewport *list_infos = &list_info[display->screen_type]; + +#ifdef USE_DEBUG + DEBUGF("list_infos->x:\t%d\n\n",list_infos->x); +#endif struct viewport *vp_icons = &title_icons[display->screen_type]; struct viewport *vp_text = &title_text[display->screen_type]; if (!list_display_title(list, parent)) return false; *vp_text = *parent; - vp_text->height = list_title_height(list, parent); + + vp_text->x = list_infos->x; + vp_text->y = list_infos->y; + vp_text->font = list_infos->font; +#if (LCD_DEPTH >= 2) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH >= 2) + vp_text->fg_pattern = list_infos->fg_pattern; + vp_text->bg_pattern = list_infos->bg_pattern; +#endif + +#ifdef USE_DEBUG +DEBUGF("List infos:\nx\t%d\ny\t%d\nwidth\t%d\nheight\t%d\n\n", + list_infos->x,list_infos->y, + list_infos->width,list_infos->height); +#endif + if (global_settings.statusbar && (vp_text->y < STATUSBAR_HEIGHT)) + vp_text->y = STATUSBAR_HEIGHT; + vp_text->height = font_get(vp_text->font)->height; + vp_text->width = list_infos->width; if (list->title_icon != Icon_NOICON && global_settings.show_icons) { *vp_icons = *vp_text; @@ -86,12 +116,21 @@ + ICON_PADDING*2; vp_icons->x += ICON_PADDING; - vp_text->width -= vp_icons->width + vp_icons->x; - vp_text->x += vp_icons->width + vp_icons->x; - + vp_text->width -= vp_icons->width; + vp_text->x += vp_icons->width; + display->set_viewport(vp_icons); screen_put_icon(display, 0, 0, list->title_icon); } +#ifdef USE_DEBUG + if (display->screen_type == SCREEN_MAIN) + DEBUGF("Global settings: %s\n", global_settings.list_vp_config); + else if (display->screen_type == SCREEN_REMOTE) + DEBUGF("Global settings(remote): %s\n", global_settings.remote_list_vp_config); + DEBUGF("Titel viewport:\nx\t%d\ny\t%d\nwidth\t%d\nheight\t%d\n\n", + vp_text->x,vp_text->y,vp_text->width,vp_text->height); +#endif + display->set_viewport(vp_text); vp_text->drawmode = STYLE_DEFAULT; #ifdef HAVE_LCD_COLOR @@ -107,6 +146,8 @@ void list_draw(struct screen *display, struct viewport *parent, struct gui_synclist *list) { + struct viewport *list_infos = &list_info[display->screen_type]; + init_list_info(display); int start, end, line_height, i; int icon_width = get_icon_width(display->screen_type) + ICON_PADDING; bool show_cursor = !global_settings.cursor_style && @@ -121,28 +162,68 @@ display->clear_viewport(); display->stop_scroll(); list_text[display->screen_type] = *parent; + + list_text[display->screen_type].font = list_infos->font; +#if (LCD_DEPTH >= 2) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH >= 2) + list_text[display->screen_type].fg_pattern = list_infos->fg_pattern; + list_text[display->screen_type].bg_pattern = list_infos->bg_pattern; +#endif + line_height = font_get((list_text[display->screen_type]).font)->height; + list_text[display->screen_type].width = list_infos->width; + list_text[display->screen_type].x = list_infos->x; + list_text[display->screen_type].height = list_infos->height; + list_text[display->screen_type].y = list_infos->y; + + /* move list a bit down if needed */ + if (global_settings.statusbar && (list_infos->y < STATUSBAR_HEIGHT)) + { + list_text[display->screen_type].y += STATUSBAR_HEIGHT; + list_text[display->screen_type].height -= STATUSBAR_HEIGHT; + } + if ((show_title = draw_title(display, parent, list))) { - list_text[display->screen_type].y += list_title_height(list, parent); - list_text[display->screen_type].height -= list_title_height(list, parent); + list_text[display->screen_type].y += + (font_get(list_infos->font)->height); + list_text[display->screen_type].height -= + (font_get(list_infos->font)->height); } - +#ifdef USE_DEBUG + DEBUGF("List info:\nx\t%d\ny\t%d\nwidth\t%d\nheight\t%d\n\n", + list_info[display->screen_type].x,list_info[display->screen_type].y, + list_info[display->screen_type].width,list_info[display->screen_type].height); + DEBUGF("List Text:\nx\t%d\ny\t%d\nwidth\t%d\nheight\t%d\n\n", + list_text[display->screen_type].x,list_text[display->screen_type].y, + list_text[display->screen_type].width,list_text[display->screen_type].height); +#endif start = list->start_item[display->screen_type]; end = start + viewport_get_nb_lines(&list_text[display->screen_type]); - + /* draw the scrollbar if its needed */ - if (global_settings.scrollbar && - viewport_get_nb_lines(&list_text[display->screen_type]) < list->nb_items) + bool draw_scrollbar = (global_settings.scrollbar && + viewport_get_nb_lines(&list_text[display->screen_type]) + < list->nb_items); +#ifdef USE_DEBUG + DEBUGF("nb_items:\t%d\n",list->nb_items); +#endif + if (draw_scrollbar) { struct viewport vp; vp = list_text[display->screen_type]; + vp.x = list_infos->x; vp.width = SCROLLBAR_WIDTH; - list_text[display->screen_type].width -= SCROLLBAR_WIDTH; - list_text[display->screen_type].x += SCROLLBAR_WIDTH; - vp.height = line_height * - viewport_get_nb_lines(&list_text[display->screen_type]); - vp.x = parent->x; + list_text[display->screen_type].width -= vp.width; + list_text[display->screen_type].x += vp.width; + + /* shorten scrollbar to fit the lines */ + vp.height = line_height * + viewport_get_nb_lines(&list_text[display->screen_type]); +#ifdef USE_DEBUG + DEBUGF("vp_get_nb_lines:\t%d\n",viewport_get_nb_lines(&list_text[display->screen_type])); + DEBUGF("Scrollbar:\nx\t%d\ny\t%d\nwidth\t%d\nheight\t%d\n\n",vp.x,vp.y,vp.width,vp.height); +#endif display->set_viewport(&vp); + gui_scrollbar_draw(display, 0, 0, SCROLLBAR_WIDTH-1, vp.height, list->nb_items, list->start_item[display->screen_type], @@ -155,7 +236,7 @@ list_text[display->screen_type].width -= SCROLLBAR_WIDTH; list_text[display->screen_type].x += SCROLLBAR_WIDTH; } - + /* setup icon placement */ list_icons[display->screen_type] = list_text[display->screen_type]; int icon_count = global_settings.show_icons && Index: apps/gui/list.c =================================================================== --- apps/gui/list.c (Revision 18104) +++ apps/gui/list.c (Arbeitskopie) @@ -40,6 +40,13 @@ #include "talk.h" #include "viewport.h" #include "list.h" +// define for some debugging info +/* +#define USE_DEBUG +*/ +#ifdef USE_DEBUG +#include "debug.h" +#endif #ifdef HAVE_LCD_CHARCELLS #define SCROLL_LIMIT 1 @@ -58,12 +65,52 @@ static bool offset_out_of_view = false; #endif static int force_list_reinit = false; - static void gui_list_select_at_offset(struct gui_synclist * gui_list, int offset); void list_draw(struct screen *display, struct viewport *parent, struct gui_synclist *list); #ifdef HAVE_LCD_BITMAP +/* initialize the custom list vp once, call this fuction whenever the list_info + * viewport should be parsed again (e.g. when a setting changes), but don't + * to set list_info_reinit to 0 */ + +/* initialize it with 0, so that the list_info gets initialized properly at + * the very first list draw */ +int list_info_reinit = 0; +void init_list_info(struct screen *display) +{ +#ifndef HAVE_REMOTE_LCD + if (list_info_reinit > SCREEN_MAIN) +#else + if (list_info_reinit > SCREEN_REMOTE) +#endif + { + /* no need to reparse */ + return; + } +#ifdef HAVE_REMOTE_LCD + if (display->screen_type == SCREEN_REMOTE) + { + if(!(viewport_parse_viewport(&(list_info[display->screen_type]), + global_settings.remote_list_vp_config, NULL, ',', display->screen_type))) + { + viewport_set_defaults(&(list_info[display->screen_type]),display->screen_type); + } + list_info_reinit = 1; + } + else +#endif + { + if (!(viewport_parse_viewport(&(list_info[display->screen_type]), + global_settings.list_vp_config, NULL, ',', display->screen_type))) + { + viewport_set_defaults(&(list_info[display->screen_type]),display->screen_type); + } + list_info_reinit = 0; + } + list_info_reinit++; +} + static struct viewport parent[NB_SCREENS]; void list_init_viewports(struct gui_synclist *list) { @@ -250,13 +297,26 @@ { int nb_lines; int difference = gui_list->selected_item - gui_list->start_item[screen]; +#ifndef HAVE_LCD_BITMAP struct viewport vp = *gui_list->parent[screen]; -#ifdef HAVE_LCD_BITMAP + nb_lines = viewport_get_nb_lines(&vp); +#else + struct viewport list_infos = list_info[screen]; + + /* shorten height depending on statusbar and list title */ + if (global_settings.statusbar) + { + list_infos.height -= STATUSBAR_HEIGHT; + } if (list_display_title(gui_list, gui_list->parent[screen])) - vp.height -= list_title_height(gui_list,gui_list->parent[screen]); + { + list_infos.height -= font_get(list_infos.font)->height; + } + nb_lines = viewport_get_nb_lines(&(list_infos)); #endif - nb_lines = viewport_get_nb_lines(&vp); - +#ifdef USE_DEBUG +DEBUGF("nb_lines:\t%d\n\n", nb_lines); +#endif /* edge case,, selected last item */ if (gui_list->selected_item == gui_list->nb_items -1) { @@ -351,12 +411,24 @@ int i, nb_lines, screen_top; FOR_NB_SCREENS(i) { +#ifndef HAVE_LCD_BITMAP struct viewport vp = *gui_list->parent[i]; -#ifdef HAVE_LCD_BITMAP + nb_lines = viewport_get_nb_lines(&vp); +#else + struct viewport list_infos = list_info[i]; + if (global_settings.statusbar) + { + list_infos.height -= STATUSBAR_HEIGHT; + } +/* if (list_display_title(gui_list, gui_list->parent[i])) - vp.height -= list_title_height(gui_list,gui_list->parent[i]); + { + list_infos->height -= font_get(list_infos->font)->height; + } +*/ + nb_lines = viewport_get_nb_lines(&list_infos); + #endif - nb_lines = viewport_get_nb_lines(&vp); if (offset > 0) { screen_top = gui_list->nb_items-nb_lines; Index: apps/gui/quickscreen.c =================================================================== --- apps/gui/quickscreen.c (Revision 18104) +++ apps/gui/quickscreen.c (Arbeitskopie) @@ -37,6 +37,7 @@ #include "audio.h" #include "quickscreen.h" #include "talk.h" +#include "list.h" static struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT]; static struct viewport vp_icons[NB_SCREENS]; @@ -280,7 +281,6 @@ bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter) { int button, i; - struct viewport vp[NB_SCREENS]; bool changed = false; /* To quit we need either : * - a second press on the button that made us enter @@ -292,9 +292,9 @@ { screens[i].set_viewport(NULL); screens[i].stop_scroll(); - viewport_set_defaults(&vp[i], i); - quickscreen_fix_viewports(qs, &screens[i], &vp[i]); - gui_quickscreen_draw(qs, &screens[i], &vp[i]); + + quickscreen_fix_viewports(qs, &screens[i], &list_info[i]); + gui_quickscreen_draw(qs, &screens[i], &list_info[i]); } /* Announce current selection on entering this screen. This is all queued up, but can be interrupted as soon as a setting is @@ -312,7 +312,7 @@ changed = true; can_quit=true; FOR_NB_SCREENS(i) - gui_quickscreen_draw(qs, &screens[i], &vp[i]); + gui_quickscreen_draw(qs, &screens[i], &list_info[i]); if (qs->callback) qs->callback(qs); } Index: apps/gui/viewport.c =================================================================== --- apps/gui/viewport.c (Revision 18104) +++ apps/gui/viewport.c (Arbeitskopie) @@ -33,6 +33,8 @@ #include "viewport.h" #include "statusbar.h" #include "screen_access.h" +#include "debug.h" +#define VP_STRUCTURE_PARAM_ERROR 0 int viewport_get_nb_lines(struct viewport *vp) { @@ -44,7 +46,6 @@ #endif } - void viewport_set_defaults(struct viewport *vp, enum screen_type screen) { vp->x = 0; @@ -82,3 +83,65 @@ } #endif } + +#ifdef HAVE_LCD_BITMAP + +/* Generic viewport parsing function to parse viewports structures like + * the %V tag; basically just a wrapper for parse_list, so improvements + * should aim parse_list */ +const char* viewport_parse_viewport(struct viewport *vp, + const char *bufptr, uint32_t* set_vals, const char seperator, + enum screen_type screen) +{ + /* parse the list to the viewport struct */ + const char *ptr = bufptr; + int depth; + + /* Work out the depth of this display */ + depth = screens[screen].depth; +#ifdef HAVE_LCD_COLOR + if (depth == 16) + { + if (!(ptr = parse_list("dddddcc", set_vals, seperator, ptr, &vp->x, &vp->y, &vp->width, + &vp->height, &vp->font, &vp->fg_pattern,&vp->bg_pattern))) + return VP_STRUCTURE_PARAM_ERROR; + } + else +#endif +#if (LCD_DEPTH == 2) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH == 2) + if (depth == 2) { + if (!(ptr = parse_list("dddddgg", set_vals, seperator, ptr, &vp->x, &vp->y, &vp->width, + &vp->height, &vp->font, &vp->fg_pattern, &vp->bg_pattern))) + return VP_STRUCTURE_PARAM_ERROR; + } + else +#endif +#if (LCD_DEPTH == 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH == 1) + if (depth == 1) + { + if (!(ptr = parse_list("ddddd", set_vals, seperator, ptr, &vp->x, &vp->y, &vp->width, + &vp->height, &vp->font))) + return VP_STRUCTURE_PARAM_ERROR; + } + else +#endif + {} + /* Validate the viewport dimensions - we know that the numbers are + non-negative integers */ + if ((vp->x >= screens[screen].lcdwidth) || + ((vp->x + vp->width) > screens[screen].lcdwidth) || + (vp->y >= screens[screen].lcdheight) || + ((vp->y + vp->height) > screens[screen].lcdheight)) + { + return VP_STRUCTURE_PARAM_ERROR; + } + + /* Default to using the user font if the font was an invalid number */ + + if ((vp->font != FONT_SYSFIXED) && (vp->font != FONT_UI)) + vp->font = FONT_UI; + + return ptr; +} + +#endif Index: apps/gui/list.h =================================================================== --- apps/gui/list.h (Revision 18104) +++ apps/gui/list.h (Arbeitskopie) @@ -25,6 +25,7 @@ #include "config.h" #include "icon.h" #include "screen_access.h" +#include "viewport.h" #define SCROLLBAR_WIDTH 6 @@ -35,6 +36,16 @@ }; /* + * this is used for the customizable list dimensions + */ + +#ifdef HAVE_LCD_BITMAP +struct viewport list_info[NB_SCREENS]; +int list_info_reinit; + +void init_list_info(struct screen *display); +#endif +/* * The gui_list is based on callback functions, if you want the list * to display something you have to provide it a function that * tells it what to display. Index: apps/gui/viewport.h =================================================================== --- apps/gui/viewport.h (Revision 18104) +++ apps/gui/viewport.h (Arbeitskopie) @@ -40,3 +40,6 @@ int viewport_load_config(const char *config, struct viewport *vp); void viewport_set_defaults(struct viewport *vp, enum screen_type screen); + +const char* viewport_parse_viewport(struct viewport *vp, + const char *ptr, uint32_t* set_vals, char seperator, enum screen_type screen); Index: apps/gui/wps_parser.c =================================================================== --- apps/gui/wps_parser.c (Revision 18104) +++ apps/gui/wps_parser.c (Arbeitskopie) @@ -26,6 +26,7 @@ #include "file.h" #include "misc.h" #include "plugin.h" +#include "viewport.h" #ifdef __PCTOOL__ #define DEBUGF printf @@ -566,8 +567,6 @@ { (void)token; /* Kill warnings */ const char *ptr = wps_bufptr; - struct viewport* vp; - int depth; uint32_t set = 0; enum { PL_X = 0, @@ -614,7 +613,7 @@ return WPS_ERROR_INVALID_PARAM; ptr++; - vp = &wps_data->viewports[wps_data->num_viewports].vp; + struct viewport *vp = &wps_data->viewports[wps_data->num_viewports].vp; /* format: %V|x|y|width|height|font|fg_pattern|bg_pattern| */ /* Set the defaults for fields not user-specified */ @@ -622,41 +621,21 @@ /* Work out the depth of this display */ #ifdef HAVE_REMOTE_LCD - depth = (wps_data->remote_wps ? LCD_REMOTE_DEPTH : LCD_DEPTH); -#else - depth = LCD_DEPTH; -#endif - -#ifdef HAVE_LCD_COLOR - if (depth == 16) + if (!(wps_data->remote_wps)) { - if (!(ptr = parse_list("dddddcc", &set, '|', ptr, &vp->x, &vp->y, &vp->width, - &vp->height, &vp->font, &vp->fg_pattern,&vp->bg_pattern))) - return WPS_ERROR_INVALID_PARAM; - } - else #endif -#if (LCD_DEPTH == 2) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH == 2) - if (depth == 2) { - /* Default to black on white */ - vp->fg_pattern = 0; - vp->bg_pattern = 3; - if (!(ptr = parse_list("dddddgg", &set, '|', ptr, &vp->x, &vp->y, &vp->width, - &vp->height, &vp->font, &vp->fg_pattern, &vp->bg_pattern))) + if (!(ptr = viewport_parse_viewport(vp, ptr, &set, '|', SCREEN_MAIN))) return WPS_ERROR_INVALID_PARAM; +#ifdef HAVE_REMOTE_LCD } - else -#endif -#if (LCD_DEPTH == 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH == 1) - if (depth == 1) + else { - if (!(ptr = parse_list("ddddd", &set, '|', ptr, &vp->x, &vp->y, - &vp->width, &vp->height, &vp->font))) + if (!(ptr = viewport_parse_viewport(vp, ptr, &set, '|', SCREEN_REMOTE))) return WPS_ERROR_INVALID_PARAM; } - else + #endif - {} + /* Check for trailing | */ if (*ptr != '|') @@ -670,24 +649,9 @@ vp->width = lcd_width - vp->x; if (!LIST_VALUE_PARSED(set, PL_HEIGHT)) vp->height = lcd_height - vp->y; - - /* Default to using the user font if the font was an invalid number */ - if (!LIST_VALUE_PARSED(set, PL_FONT) || - ((vp->font != FONT_SYSFIXED) && (vp->font != FONT_UI))) - vp->font = FONT_UI; - /* Validate the viewport dimensions - we know that the numbers are - non-negative integers */ - if ((vp->x >= lcd_width) || - ((vp->x + vp->width) > lcd_width) || - (vp->y >= lcd_height) || - ((vp->y + vp->height) > lcd_height)) - { - return WPS_ERROR_INVALID_PARAM; - } - #ifdef HAVE_LCD_COLOR - if (depth == 16) + if (LCD_DEPTH == 16) { if (!LIST_VALUE_PARSED(set, PL_FG)) vp->fg_pattern = global_settings.fg_color; Index: apps/settings.h =================================================================== --- apps/settings.h (Revision 18104) +++ apps/settings.h (Arbeitskopie) @@ -432,7 +432,12 @@ #endif unsigned char wps_file[MAX_FILENAME+1]; /* last wps */ unsigned char lang_file[MAX_FILENAME+1]; /* last language */ - +#ifdef HAVE_LCD_BITMAP + unsigned char list_vp_config[34]; /* viewport file for the lists */ +#endif +#ifdef HAVE_REMOTE_LCD + unsigned char remote_list_vp_config[34]; /* viewport file for the lists */ +#endif /* misc options */ int repeat_mode; /* 0=off 1=repeat all 2=repeat one 3=shuffle 4=ab */ Index: apps/settings_list.c =================================================================== --- apps/settings_list.c (Revision 18104) +++ apps/settings_list.c (Arbeitskopie) @@ -108,7 +108,6 @@ CHARPTR(default),name,NULL, \ {.filename_setting= \ (struct filename_setting[]){{prefix,suffix,len}}} } - /* Used for settings which use the set_option() setting screen. The ... arg is a list of pointers to strings to display in the setting screen. These can either be literal strings, or ID2P(LANG_*) */ @@ -160,6 +159,9 @@ {cb, formatter, get_talk_id, unit, count, \ (const int[]){__VA_ARGS__}}}}} +#define VIEWPORT_SETTING(var,name,default, max_length) \ + FILENAME_SETTING(0,var,name,default, NULL, NULL, max_length) + /* some sets of values which are used more than once, to save memory */ static const char off_on[] = "off,on"; static const char off_on_ask[] = "off,on,ask"; @@ -1349,6 +1351,13 @@ "touchpad sensitivity", "normal,high", touchpad_set_sensitivity, 2, ID2P(LANG_NORMAL), ID2P(LANG_HIGH)), #endif + /* Customizable list */ +#ifdef HAVE_LCD_BITMAP + VIEWPORT_SETTING(list_vp_config, "list viewport", "",34), +#endif +#ifdef HAVE_REMOTE_LCD + VIEWPORT_SETTING(remote_list_vp_config, "remote list viewport", "",34), +#endif }; const int nb_settings = sizeof(settings)/sizeof(*settings); Index: wps/WPSLIST =================================================================== --- wps/WPSLIST (Revision 18104) +++ wps/WPSLIST (Arbeitskopie) @@ -68,6 +68,8 @@ iconset: viewers iconset: selector type: bar (inverse) +list viewport: +remote list viewport: @@ -80,6 +82,8 @@ iconset: viewers iconset: selector type: bar (inverse) +list viewport: +remote list viewport: @@ -92,6 +96,8 @@ viewers iconset: selector type: bar (inverse) Statusbar: on +list viewport: +remote list viewport: @@ -104,6 +110,8 @@ iconset: viewers iconset: selector type: bar (inverse) +list viewport: +remote list viewport: @@ -151,6 +159,8 @@ iconset: viewers iconset: selector type: bar (inverse) +list viewport: +remote list viewport: @@ -158,6 +168,8 @@ Author: Mike Sobel Font: nimbus-13.fnt Statusbar: on +list viewport: +remote list viewport: @@ -172,6 +184,8 @@ iconset: viewers iconset: selector type: bar (inverse) +list viewport: +remote list viewport: @@ -203,6 +217,8 @@ iconset: viewers iconset: selector type: bar (inverse) +list viewport: +remote list viewport: @@ -225,6 +241,8 @@ iconset: viewers iconset: selector type: bar (inverse) +list viewport: +remote list viewport: @@ -256,6 +274,8 @@ iconset: viewers iconset: selector type: bar (inverse) +list viewport: +remote list viewport: @@ -341,6 +361,10 @@ # Whether the WPS is designed to have the statusbar on or off Statusbar: on + +# list & remote list viewports +list viewport: +remote list viewport: Index: wps/wpsbuild.pl =================================================================== --- wps/wpsbuild.pl (Revision 18104) +++ wps/wpsbuild.pl (Arbeitskopie) @@ -258,6 +258,16 @@ if($rwps && $has_remote ) { push @out, "rwps: /.rockbox/wps/$rwps\n"; } + if(defined($listviewport)) { + if($listviewport eq '') { + push @out, "list viewport:\n"; + } + } + if((defined($remotelistviewport)) && $has_remote) { + if($remotelistviewport eq '') { + push @out, "remote list viewport:\n"; + } + } if(-f ".rockbox/wps/$cfg") { print STDERR "wpsbuild warning: wps/$cfg already exists!\n"; } @@ -308,6 +318,8 @@ undef $viewericon; undef $lineselecttextcolor; undef $filetylecolor; + undef $listviewport; + undef $remotelistviewport; next; } @@ -463,6 +475,12 @@ elsif($l =~ /^filetype colours: *(.*)/i) { $filetylecolor = $1; } + elsif($l =~ /^list viewport: *(.*)/i) { + $listviewport = $1; + } + elsif($l =~ /^remote list viewport: *(.*)/i) { + $remotelistviewport = $1; + } else{ #print "Unknown line: $l!\n"; }