summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2008-05-29 11:13:46 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2008-05-29 11:13:46 +0000
commit0501fb016c4d88d3430a34ecc55a003e062b5f63 (patch)
tree272d3d3c33190c499d2ee4507f23cf532c85e46e
parent43f0770943a3315561dbdcdb2bbb85b7026248b1 (diff)
downloadrockbox-0501fb016c4d88d3430a34ecc55a003e062b5f63.tar.gz
rockbox-0501fb016c4d88d3430a34ecc55a003e062b5f63.tar.bz2
rockbox-0501fb016c4d88d3430a34ecc55a003e062b5f63.zip
total removal of gui_textarea. The only thing using the text_message struct is the yesno screen so move its definition to yesno.h
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17653 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/SOURCES1
-rw-r--r--apps/bookmark.c1
-rw-r--r--apps/gui/textarea.c81
-rw-r--r--apps/gui/textarea.h84
-rw-r--r--apps/gui/yesno.c22
-rw-r--r--apps/gui/yesno.h7
-rw-r--r--apps/misc.c1
-rw-r--r--apps/playlist_catalog.c1
-rw-r--r--apps/recorder/radio.c85
-rw-r--r--apps/screen_access.c20
10 files changed, 99 insertions, 204 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index e0fdbbcd07..c384982843 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -71,7 +71,6 @@ gui/quickscreen.c
gui/scrollbar.c
gui/splash.c
gui/statusbar.c
-gui/textarea.c
gui/yesno.c
gui/wps_debug.c
gui/wps_parser.c
diff --git a/apps/bookmark.c b/apps/bookmark.c
index 2ce03a2d3d..c9a285975d 100644
--- a/apps/bookmark.c
+++ b/apps/bookmark.c
@@ -41,7 +41,6 @@
#include "backdrop.h"
#include "file.h"
#include "statusbar.h"
-#include "textarea.h"
#define MAX_BOOKMARKS 10
#define MAX_BOOKMARK_SIZE 350
diff --git a/apps/gui/textarea.c b/apps/gui/textarea.c
deleted file mode 100644
index 21028da375..0000000000
--- a/apps/gui/textarea.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2005 by Kevin Ferrare
- *
- * All files in this archive are subject to the GNU General Public License.
- * See the file COPYING in the source tree root for full license agreement.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#include "textarea.h"
-#include "font.h"
-#include "lang.h"
-#include "talk.h"
-
-void gui_textarea_clear(struct screen * display)
-{
-#ifdef HAVE_LCD_BITMAP
- int y_start = gui_textarea_get_ystart(display);
- int y_end = gui_textarea_get_yend(display);
- screen_clear_area(display, 0, y_start, display->width, y_end - y_start);
- display->stop_scroll();
- screen_set_ymargin(display, y_start);
-#else
- display->clear_display();
-#endif
-}
-
-void gui_textarea_update(struct screen * display)
-{
-#ifdef HAVE_LCD_BITMAP
- int y_start = gui_textarea_get_ystart(display);
- int y_end = gui_textarea_get_yend(display);
- display->update_rect(0, y_start, display->width, y_end - y_start);
-#else
- display->update();
-#endif
-}
-
-void gui_textarea_update_nblines(struct screen * display)
-{
- int height=display->height;
-#ifdef HAVE_LCD_BITMAP
- if(global_settings.statusbar)
- height -= STATUSBAR_HEIGHT;
-#ifdef HAS_BUTTONBAR
- if(global_settings.buttonbar && display->has_buttonbar)
- height -= BUTTONBAR_HEIGHT;
-#endif
- display->getstringsize((unsigned char *)"A", &display->char_width,
- &display->char_height);
-#else
- display->char_width = 1;
- display->char_height = 1;
-#endif
- display->nb_lines = height / display->char_height;
-}
-
-void talk_text_message(const struct text_message * message, bool enqueue)
-{
- int line;
- if(message)
- for(line=0; line<message->nb_lines; line++)
- {
- long id = P2ID((unsigned char *)message->message_lines[line]);
- if(id>=0)
- {
- talk_id(id, enqueue);
- enqueue = true;
- }
- }
-}
diff --git a/apps/gui/textarea.h b/apps/gui/textarea.h
deleted file mode 100644
index 5e770eac38..0000000000
--- a/apps/gui/textarea.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2005 by Kevin Ferrare
- *
- * All files in this archive are subject to the GNU General Public License.
- * See the file COPYING in the source tree root for full license agreement.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#ifndef _GUI_TEXTAREA_H_
-#define _GUI_TEXTAREA_H_
-#include "screen_access.h"
-#include "settings.h"
-#include "statusbar.h"
-
-struct text_message
-{
- const char **message_lines;
- int nb_lines;
-};
-
-/*
- * Clears the area in the screen in which text can be displayed
- * and sets the y margin properly
- * - display : the screen structure
- */
-extern void gui_textarea_clear(struct screen * display);
-
-/*
- * Updates the area in the screen in which text can be displayed
- * - display : the screen structure
- */
-extern void gui_textarea_update(struct screen * display);
-
-/*
- * Compute the number of text lines the display can draw with the current font
- * Also updates the char height and width
- * - display : the screen structure
- */
-extern void gui_textarea_update_nblines(struct screen * display);
-
-/*
- * Speak a text_message. The message's lines may be virtual pointers
- * representing language / voicefont IDs (see settings.h).
- */
-extern void talk_text_message(const struct text_message * message, bool enqueue);
-
-#ifdef HAVE_LCD_BITMAP
-/*
- * Compute the number of pixels from which text can be displayed
- * - display : the screen structure
- * Returns the number of pixels
- */
-#define gui_textarea_get_ystart(display) \
- ( (global_settings.statusbar)? STATUSBAR_HEIGHT : 0)
-
-/*
- * Compute the number of pixels below which text can't be displayed
- * - display : the screen structure
- * Returns the number of pixels
- */
-#ifdef HAS_BUTTONBAR
-#define gui_textarea_get_yend(display) \
- ( (display)->height - ( (global_settings.buttonbar && \
- (display)->has_buttonbar)? \
- BUTTONBAR_HEIGHT : 0) )
-#else
-#define gui_textarea_get_yend(display) \
- ( (display)->height )
-#endif /* HAS_BUTTONBAR */
-
-#endif /* HAVE_LCD_BITMAP */
-
-#endif /* _GUI_TEXTAREA_H_ */
diff --git a/apps/gui/yesno.c b/apps/gui/yesno.c
index 9232015211..91358d8feb 100644
--- a/apps/gui/yesno.c
+++ b/apps/gui/yesno.c
@@ -16,7 +16,7 @@
* KIND, either express or implied.
*
****************************************************************************/
-
+#include "config.h"
#include "yesno.h"
#include "system.h"
#include "kernel.h"
@@ -24,7 +24,7 @@
#include "lang.h"
#include "action.h"
#include "talk.h"
-#include "textarea.h"
+#include "settings.h"
#include "viewport.h"
@@ -36,6 +36,24 @@ struct gui_yesno
struct viewport *vp;
struct screen * display;
};
+
+static void talk_text_message(const struct text_message * message, bool enqueue)
+{
+ int line;
+ if(message)
+ {
+ for(line=0; line<message->nb_lines; line++)
+ {
+ long id = P2ID((unsigned char *)message->message_lines[line]);
+ if(id>=0)
+ {
+ talk_id(id, enqueue);
+ enqueue = true;
+ }
+ }
+ }
+}
+
static int put_message(struct screen *display,
const struct text_message * message,
int start, int max_y)
diff --git a/apps/gui/yesno.h b/apps/gui/yesno.h
index 9af64a7aad..fbccb5d8cc 100644
--- a/apps/gui/yesno.h
+++ b/apps/gui/yesno.h
@@ -21,7 +21,6 @@
#define _GUI_YESNO_H_
#include "screen_access.h"
-#include "textarea.h"
enum yesno_res
{
@@ -30,6 +29,12 @@ enum yesno_res
YESNO_USB
};
+struct text_message
+{
+ const char **message_lines;
+ int nb_lines;
+};
+
/*
* Runs the yesno asker :
* it will display the 'main_message' question, and wait for user keypress
diff --git a/apps/misc.c b/apps/misc.c
index 23341a82e8..e9f1724b1b 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -73,7 +73,6 @@
#ifdef BOOTFILE
#if !defined(USB_NONE) && !defined(USB_IPODSTYLE)
-#include "textarea.h"
#include "rolo.h"
#include "yesno.h"
#endif
diff --git a/apps/playlist_catalog.c b/apps/playlist_catalog.c
index c7458f8351..dfcfd0c363 100644
--- a/apps/playlist_catalog.c
+++ b/apps/playlist_catalog.c
@@ -40,6 +40,7 @@
#include "filetypes.h"
#include "debug.h"
#include "playlist_catalog.h"
+#include "statusbar.h"
#define MAX_PLAYLISTS 400
#define PLAYLIST_DISPLAY_COUNT 10
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index 38319dca9e..efc6aa0a74 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -53,7 +53,6 @@
#include "sound.h"
#include "screen_access.h"
#include "statusbar.h"
-#include "textarea.h"
#include "splash.h"
#include "yesno.h"
#include "buttonbar.h"
@@ -64,6 +63,7 @@
#include "list.h"
#include "menus/exported_menus.h"
#include "root_menu.h"
+#include "viewport.h"
#if CONFIG_TUNER
@@ -131,7 +131,7 @@ static int save_preset_list(void);
static int load_preset_list(void);
static int clear_preset_list(void);
-static int scan_presets(void);
+static int scan_presets(void *viewports);
/* Function to manipulate all yesno dialogues.
This function needs the output text as an argument. */
@@ -142,7 +142,7 @@ static bool yesno_pop(const char* text)
const struct text_message message={lines, 1};
bool ret = (gui_syncyesno_run(&message,NULL,NULL)== YESNO_YES);
FOR_NB_SCREENS(i)
- gui_textarea_clear(&screens[i]);
+ screens[i].clear_viewport();
return ret;
}
@@ -451,6 +451,7 @@ int radio_screen(void)
#ifndef HAVE_NOISY_IDLE_MODE
int button_timeout = current_tick + (2*HZ);
#endif
+ struct viewport vp[NB_SCREENS];
#ifdef HAS_BUTTONBAR
struct gui_buttonbar buttonbar;
gui_buttonbar_init(&buttonbar);
@@ -463,14 +464,19 @@ int radio_screen(void)
/* always display status bar in radio screen for now */
global_status.statusbar_forced = statusbar?0:1;
global_settings.statusbar = true;
+ gui_syncstatusbar_draw(&statusbars,true);
FOR_NB_SCREENS(i)
{
- gui_textarea_clear(&screens[i]);
- screen_set_xmargin(&screens[i],0);
+ viewport_set_defaults(&vp[i], i);
+#ifdef HAS_BUTTONBAR
+ if (global_settings.buttonbar)
+ vp[i].height -= BUTTONBAR_HEIGHT;
+#endif
+ screens[i].set_viewport(&vp[i]);
+ screens[i].clear_viewport();
+ screens[i].update_viewport();
}
- gui_syncstatusbar_draw(&statusbars,true);
-
fh = font_get(FONT_UI)->height;
/* Adjust for font size, trying to center the information vertically */
@@ -520,7 +526,7 @@ int radio_screen(void)
#endif
if(num_presets < 1 && yesno_pop(ID2P(LANG_FM_FIRST_AUTOSCAN)))
- scan_presets();
+ scan_presets(vp);
curr_preset = find_preset(curr_freq);
if(curr_preset != -1)
@@ -715,10 +721,12 @@ int radio_screen(void)
case ACTION_FM_MENU:
radio_menu();
curr_preset = find_preset(curr_freq);
- FOR_NB_SCREENS(i){
- struct screen *sc = &screens[i];
- gui_textarea_clear(sc);
- screen_set_xmargin(sc, 0);
+ FOR_NB_SCREENS(i)
+ {
+ screens[i].set_viewport(&vp[i]);
+ screens[i].clear_viewport();
+ screens[i].update_viewport();
+ screens[i].set_viewport(NULL);
}
#ifdef HAS_BUTTONBAR
gui_buttonbar_set(&buttonbar, str(LANG_BUTTONBAR_MENU),
@@ -736,10 +744,10 @@ int radio_screen(void)
update_screen = true;
FOR_NB_SCREENS(i)
{
- struct screen *sc = &screens[i];
- gui_textarea_clear(sc);
- screen_set_xmargin(sc, 0);
- gui_textarea_update(sc);
+ screens[i].set_viewport(&vp[i]);
+ screens[i].clear_viewport();
+ screens[i].update_viewport();
+ screens[i].set_viewport(NULL);
}
break;
@@ -747,10 +755,10 @@ int radio_screen(void)
handle_radio_presets();
FOR_NB_SCREENS(i)
{
- struct screen *sc = &screens[i];
- gui_textarea_clear(sc);
- screen_set_xmargin(sc, 0);
- gui_textarea_update(sc);
+ screens[i].set_viewport(&vp[i]);
+ screens[i].clear_viewport();
+ screens[i].update_viewport();
+ screens[i].set_viewport(NULL);
}
#ifdef HAS_BUTTONBAR
gui_buttonbar_set(&buttonbar,
@@ -847,10 +855,12 @@ int radio_screen(void)
{
FOR_NB_SCREENS(i)
{
+ screens[i].set_viewport(&vp[i]);
peak_meter_screen(&screens[i],0,
STATUSBAR_HEIGHT + fh*(top_of_screen + 4), fh);
screens[i].update_rect(0, STATUSBAR_HEIGHT + fh*(top_of_screen + 4),
- screens[i].width, fh);
+ screens[i].width, fh);
+ screens[i].set_viewport(NULL);
}
}
@@ -887,7 +897,9 @@ int radio_screen(void)
int freq;
FOR_NB_SCREENS(i)
- screens[i].setfont(FONT_UI);
+ {
+ screens[i].set_viewport(&vp[i]);
+ }
snprintf(buf, 128, curr_preset >= 0 ? "%d. %s" : " ",
curr_preset + 1, presets[curr_preset].name);
@@ -934,11 +946,15 @@ int radio_screen(void)
}
#endif /* CONFIG_CODEC != SWCODEC */
+ FOR_NB_SCREENS(i)
+ {
+ screens[i].update_viewport();
+ screens[i].set_viewport(NULL);
+ }
+
#ifdef HAS_BUTTONBAR
gui_buttonbar_draw(&buttonbar);
#endif
- FOR_NB_SCREENS(i)
- gui_textarea_update(&screens[i]);
}
/* Only force the redraw if update_screen is true */
gui_syncstatusbar_draw(&statusbars,true);
@@ -983,7 +999,11 @@ int radio_screen(void)
gui_syncsplash(0, str(LANG_DISK_FULL));
gui_syncstatusbar_draw(&statusbars,true);
FOR_NB_SCREENS(i)
- gui_textarea_update(&screens[i]);
+ {
+ screens[i].set_viewport(&vp[i]);
+ screens[i].update_viewport();
+ screens[i].set_viewport(NULL);
+ }
audio_error_clear();
while(1)
@@ -1415,10 +1435,14 @@ MENUITEM_FUNCTION_DYNTEXT(radio_mode_item, 0,
get_mode_text, NULL, NULL, NULL, Icon_NOICON);
#endif
-static int scan_presets(void)
+static int scan_presets(void *viewports)
{
bool do_scan = true;
+ int i;
+ struct viewport *vp = (struct viewport *)viewports;
+ FOR_NB_SCREENS(i)
+ screens[i].set_viewport(vp?&vp[i]:NULL);
if(num_presets > 0) /* Do that to avoid 2 questions. */
do_scan = yesno_pop(ID2P(LANG_FM_CLEAR_PRESETS));
@@ -1428,7 +1452,6 @@ static int scan_presets(void)
&fm_region_data[global_settings.fm_region];
char buf[MAX_FMPRESET_LEN + 1];
- int i;
curr_freq = fmr->freq_min;
num_presets = 0;
@@ -1466,9 +1489,8 @@ static int scan_presets(void)
FOR_NB_SCREENS(i)
{
- gui_textarea_clear(&screens[i]);
- screen_set_xmargin(&screens[i],0);
- gui_textarea_update(&screens[i]);
+ screens[i].clear_viewport();
+ screens[i].update_viewport();
}
if(num_presets > 0)
@@ -1557,7 +1579,8 @@ MENUITEM_FUNCTION(presetsave_item, 0, ID2P(LANG_FM_PRESET_SAVE),
save_preset_list, NULL, NULL, Icon_NOICON);
MENUITEM_FUNCTION(presetclear_item, 0, ID2P(LANG_FM_PRESET_CLEAR),
clear_preset_list, NULL, NULL, Icon_NOICON);
-MENUITEM_FUNCTION(scan_presets_item, 0, ID2P(LANG_FM_SCAN_PRESETS),
+MENUITEM_FUNCTION(scan_presets_item, MENU_FUNC_USEPARAM,
+ ID2P(LANG_FM_SCAN_PRESETS),
scan_presets, NULL, NULL, Icon_NOICON);
MAKE_MENU(radio_settings_menu, ID2P(LANG_FM_MENU), NULL,
diff --git a/apps/screen_access.c b/apps/screen_access.c
index dbd3727a26..82f80638af 100644
--- a/apps/screen_access.c
+++ b/apps/screen_access.c
@@ -29,7 +29,6 @@
#include <icons.h>
#include "screen_access.h"
-#include "textarea.h"
struct screen screens[NB_SCREENS] =
{
@@ -228,11 +227,28 @@ void screen_clear_area(struct screen * display, int xstart, int ystart,
void screen_access_init(void)
{
int i;
+ struct screen *display;
FOR_NB_SCREENS(i)
{
+ display = &screens[i];
#ifdef HAVE_LCD_BITMAP
((struct screen*)&screens[i])->setfont(FONT_UI);
#endif
- gui_textarea_update_nblines(&screens[i]);
+
+ int height=display->height;
+#ifdef HAVE_LCD_BITMAP
+ if(global_settings.statusbar)
+ height -= STATUSBAR_HEIGHT;
+#ifdef HAS_BUTTONBAR
+ if(global_settings.buttonbar && display->has_buttonbar)
+ height -= BUTTONBAR_HEIGHT;
+#endif
+ display->getstringsize((unsigned char *)"A", &display->char_width,
+ &display->char_height);
+#else
+ display->char_width = 1;
+ display->char_height = 1;
+#endif
+ display->nb_lines = height / display->char_height;
}
}