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";
}