diff options
| author | Teruaki Kawashima <teru@rockbox.org> | 2009-07-14 13:03:17 +0000 |
|---|---|---|
| committer | Teruaki Kawashima <teru@rockbox.org> | 2009-07-14 13:03:17 +0000 |
| commit | c72b23ad2e1b3a507a36b6223c0a35be9b746f0a (patch) | |
| tree | 2cf43da7cca0ff2caf8544a1f3c48ac5d961701c /apps/plugins/star.c | |
| parent | e37f9f16915a1a05059aee931723c127a53a68e0 (diff) | |
| download | rockbox-c72b23ad2e1b3a507a36b6223c0a35be9b746f0a.zip rockbox-c72b23ad2e1b3a507a36b6223c0a35be9b746f0a.tar.gz rockbox-c72b23ad2e1b3a507a36b6223c0a35be9b746f0a.tar.bz2 rockbox-c72b23ad2e1b3a507a36b6223c0a35be9b746f0a.tar.xz | |
use lib display text to display help messages (FS#10099).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21861 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/star.c')
| -rw-r--r-- | apps/plugins/star.c | 314 |
1 files changed, 129 insertions, 185 deletions
diff --git a/apps/plugins/star.c b/apps/plugins/star.c index 4bb3afc..0ab6dce 100644 --- a/apps/plugins/star.c +++ b/apps/plugins/star.c @@ -20,6 +20,7 @@ ****************************************************************************/ #include "plugin.h" #ifdef HAVE_LCD_BITMAP +#include "lib/display_text.h" PLUGIN_HEADER @@ -66,6 +67,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP BUTTON_F3 #define STAR_LEVEL_DOWN BUTTON_F1 #define STAR_LEVEL_REPEAT BUTTON_F2 +#define STAR_TOGGLE_CONTROL_NAME "ON" +#define STAR_QUIT_NAME "OFF" +#define STAR_LEVEL_UP_NAME "F3" +#define STAR_LEVEL_DOWN_NAME "F1" +#define STAR_LEVEL_REPEAT_NAME "F2" #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD #define STAR_QUIT BUTTON_OFF @@ -78,6 +84,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP BUTTON_F3 #define STAR_LEVEL_DOWN BUTTON_F1 #define STAR_LEVEL_REPEAT BUTTON_F2 +#define STAR_TOGGLE_CONTROL_NAME "ON/SELECT" +#define STAR_QUIT_NAME "OFF" +#define STAR_LEVEL_UP_NAME "F3" +#define STAR_LEVEL_DOWN_NAME "F1" +#define STAR_LEVEL_REPEAT_NAME "F2" #elif CONFIG_KEYPAD == ONDIO_PAD #define STAR_QUIT BUTTON_OFF @@ -90,6 +101,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP (BUTTON_MENU | BUTTON_RIGHT) #define STAR_LEVEL_DOWN (BUTTON_MENU | BUTTON_LEFT) #define STAR_LEVEL_REPEAT (BUTTON_MENU | BUTTON_UP) +#define STAR_TOGGLE_CONTROL_NAME "MODE" +#define STAR_QUIT_NAME "OFF" +#define STAR_LEVEL_UP_NAME "M >" +#define STAR_LEVEL_DOWN_NAME "M <" +#define STAR_LEVEL_REPEAT_NAME "M ^" #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ (CONFIG_KEYPAD == IRIVER_H300_PAD) @@ -103,6 +119,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP (BUTTON_ON | BUTTON_RIGHT) #define STAR_LEVEL_DOWN (BUTTON_ON | BUTTON_LEFT) #define STAR_LEVEL_REPEAT (BUTTON_ON | BUTTON_SELECT) +#define STAR_TOGGLE_CONTROL_NAME "MODE/SELECT" +#define STAR_QUIT_NAME "OFF" +#define STAR_LEVEL_UP_NAME "ON + RIGHT" +#define STAR_LEVEL_DOWN_NAME "ON + LEFT" +#define STAR_LEVEL_REPEAT_NAME "ON + NAVI" #define STAR_RC_QUIT BUTTON_RC_STOP #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ @@ -119,6 +140,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) #define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) #define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_PLAY) +#define STAR_TOGGLE_CONTROL_NAME "SELECT" +#define STAR_QUIT_NAME "S + MENU" +#define STAR_LEVEL_UP_NAME "S >" +#define STAR_LEVEL_DOWN_NAME "S <" +#define STAR_LEVEL_REPEAT_NAME "S + PLAY" #elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) @@ -133,6 +159,11 @@ PLUGIN_HEADER #define STAR_LEVEL_DOWN_PRE BUTTON_REC #define STAR_LEVEL_DOWN (BUTTON_REC|BUTTON_REPEAT) #define STAR_LEVEL_REPEAT BUTTON_PLAY +#define STAR_TOGGLE_CONTROL_NAME "SELECT" +#define STAR_QUIT_NAME "POWER" +#define STAR_LEVEL_UP_NAME "REC" +#define STAR_LEVEL_DOWN_NAME "REC.." +#define STAR_LEVEL_REPEAT_NAME "PLAY" #elif (CONFIG_KEYPAD == GIGABEAT_PAD) @@ -145,13 +176,18 @@ PLUGIN_HEADER #define STAR_LEVEL_UP BUTTON_VOL_UP #define STAR_LEVEL_DOWN BUTTON_VOL_DOWN #define STAR_LEVEL_REPEAT BUTTON_A +#define STAR_TOGGLE_CONTROL_NAME "SELECT" +#define STAR_QUIT_NAME "POWER" +#define STAR_LEVEL_UP_NAME "VOL UP" +#define STAR_LEVEL_DOWN_NAME "VOL DOWN" +#define STAR_LEVEL_REPEAT_NAME "A" #elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ (CONFIG_KEYPAD == SANSA_C200_PAD) || \ (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \ (CONFIG_KEYPAD == SANSA_M200_PAD) -#define STAR_QUIT BUTTON_POWER +#define STAR_QUIT BUTTON_POWER #define STAR_LEFT BUTTON_LEFT #define STAR_RIGHT BUTTON_RIGHT #define STAR_UP BUTTON_UP @@ -160,11 +196,15 @@ PLUGIN_HEADER #define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) #define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) #define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN) - +#define STAR_TOGGLE_CONTROL_NAME "SELECT" +#define STAR_QUIT_NAME "POWER" +#define STAR_LEVEL_UP_NAME "SELECT + RIGHT" +#define STAR_LEVEL_DOWN_NAME "SELECT + LEFT" +#define STAR_LEVEL_REPEAT_NAME "SELECT + DOWN" #elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) -#define STAR_QUIT (BUTTON_HOME|BUTTON_REPEAT) +#define STAR_QUIT (BUTTON_HOME|BUTTON_REPEAT) #define STAR_LEFT BUTTON_LEFT #define STAR_RIGHT BUTTON_RIGHT #define STAR_UP BUTTON_UP @@ -173,6 +213,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) #define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) #define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN) +#define STAR_TOGGLE_CONTROL_NAME "SELECT" +#define STAR_QUIT_NAME "HOME" +#define STAR_LEVEL_UP_NAME "SELECT + RIGHT" +#define STAR_LEVEL_DOWN_NAME "SELECT + LEFT" +#define STAR_LEVEL_REPEAT_NAME "SELECT + DOWN" #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) @@ -185,6 +230,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_SCROLL_UP) #define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_SCROLL_DOWN) #define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT) +#define STAR_TOGGLE_CONTROL_NAME "REW" +#define STAR_QUIT_NAME "POWER" +#define STAR_LEVEL_UP_NAME "PLAY+UP" +#define STAR_LEVEL_DOWN_NAME "PLAY+DOWN" +#define STAR_LEVEL_REPEAT_NAME "PLAY+RIGHT" #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) @@ -197,6 +247,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP BUTTON_VOL_UP #define STAR_LEVEL_DOWN BUTTON_VOL_DOWN #define STAR_LEVEL_REPEAT BUTTON_MENU +#define STAR_TOGGLE_CONTROL_NAME "SELECT" +#define STAR_QUIT_NAME "BACK" +#define STAR_LEVEL_UP_NAME "VOL UP" +#define STAR_LEVEL_DOWN_NAME "VOL DOWN" +#define STAR_LEVEL_REPEAT_NAME "MENU" #elif (CONFIG_KEYPAD == MROBE100_PAD) @@ -209,6 +264,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP BUTTON_PLAY #define STAR_LEVEL_DOWN BUTTON_MENU #define STAR_LEVEL_REPEAT BUTTON_DISPLAY +#define STAR_TOGGLE_CONTROL_NAME "SELECT" +#define STAR_QUIT_NAME "POWER" +#define STAR_LEVEL_UP_NAME "PLAY" +#define STAR_LEVEL_DOWN_NAME "MENU" +#define STAR_LEVEL_REPEAT_NAME "DISPLAY" #elif CONFIG_KEYPAD == IAUDIO_M3_PAD @@ -221,11 +281,16 @@ PLUGIN_HEADER #define STAR_LEVEL_UP (BUTTON_RC_PLAY|BUTTON_RC_VOL_UP) #define STAR_LEVEL_DOWN (BUTTON_RC_PLAY|BUTTON_RC_VOL_DOWN) #define STAR_LEVEL_REPEAT (BUTTON_RC_PLAY|BUTTON_RC_MENU) +#define STAR_TOGGLE_CONTROL_NAME "MODE" +#define STAR_QUIT_NAME "REC" +#define STAR_LEVEL_UP_NAME "PLAY+VOL+" +#define STAR_LEVEL_DOWN_NAME "PLAY+VOL-" +#define STAR_LEVEL_REPEAT_NAME "PLAY+MENU" #elif (CONFIG_KEYPAD == COWOND2_PAD) #define STAR_QUIT BUTTON_POWER -#define STAR_QUIT_NAME "[POWER]" +#define STAR_QUIT_NAME "POWER" #elif CONFIG_KEYPAD == CREATIVEZVM_PAD @@ -238,6 +303,11 @@ PLUGIN_HEADER #define STAR_LEVEL_UP (BUTTON_CUSTOM | BUTTON_UP) #define STAR_LEVEL_DOWN (BUTTON_CUSTOM | BUTTON_DOWN) #define STAR_LEVEL_REPEAT (BUTTON_CUSTOM | BUTTON_RIGHT) +#define STAR_TOGGLE_CONTROL_NAME "PLAY" +#define STAR_QUIT_NAME "BACK" +#define STAR_LEVEL_UP_NAME "CUSTOM+UP" +#define STAR_LEVEL_DOWN_NAME "CUSTOM+DOWN" +#define STAR_LEVEL_REPEAT_NAME "CUSTOM+RIGHT" #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD @@ -250,15 +320,20 @@ PLUGIN_HEADER #define STAR_LEVEL_UP BUTTON_VOL_UP #define STAR_LEVEL_DOWN BUTTON_VOL_DOWN #define STAR_LEVEL_REPEAT BUTTON_VIEW +#define STAR_TOGGLE_CONTROL_NAME "SELECT" +#define STAR_QUIT_NAME "POWER" +#define STAR_LEVEL_UP_NAME "VOL UP" +#define STAR_LEVEL_DOWN_NAME "VOL DOWN" +#define STAR_LEVEL_REPEAT_NAME "VIEW" #elif (CONFIG_KEYPAD == ONDAVX747_PAD) #define STAR_QUIT BUTTON_POWER -#define STAR_QUIT_NAME "[POWER]" +#define STAR_QUIT_NAME "POWER" #elif CONFIG_KEYPAD == MROBE500_PAD #define STAR_QUIT BUTTON_POWER -#define STAR_QUIT_NAME "[POWER]" +#define STAR_QUIT_NAME "POWER" #else #error No keymap defined! @@ -267,7 +342,7 @@ PLUGIN_HEADER #ifdef HAVE_TOUCHSCREEN //#ifndef STAR_QUIT //#define STAR_QUIT BUTTON_TOPLEFT -//#define STAR_QUIT_NAME "[TOPLEFT]" +//#define STAR_QUIT_NAME "TOPLEFT" //#endif #ifndef STAR_LEFT #define STAR_LEFT BUTTON_MIDLEFT @@ -283,19 +358,19 @@ PLUGIN_HEADER #endif #ifndef STAR_TOGGLE_CONTROL #define STAR_TOGGLE_CONTROL BUTTON_CENTER -#define STAR_TOGGLE_CONTROL_NAME "[CENTER]" +#define STAR_TOGGLE_CONTROL_NAME "CENTER" #endif #ifndef STAR_LEVEL_UP #define STAR_LEVEL_UP BUTTON_TOPLEFT -#define STAR_LEVEL_UP_NAME "[TOPLEFT]" +#define STAR_LEVEL_UP_NAME "TOPLEFT" #endif #ifndef STAR_LEVEL_DOWN #define STAR_LEVEL_DOWN BUTTON_BOTTOMLEFT -#define STAR_LEVEL_DOWN_NAME "[BOTTOMLEFT]" +#define STAR_LEVEL_DOWN_NAME "BOTTOMLEFT" #endif #ifndef STAR_LEVEL_REPEAT #define STAR_LEVEL_REPEAT BUTTON_BOTTOMRIGHT -#define STAR_LEVEL_REPEAT_NAME "[BOTTOMRIGHT]" +#define STAR_LEVEL_REPEAT_NAME "BOTTOMRIGHT" #endif #endif @@ -539,104 +614,6 @@ static unsigned char* levels = "****************"; /** - * Display text. - */ -void star_display_text(char *str, bool waitkey) -{ - int chars_by_line; - int lines_by_screen; - int chars_for_line; - int current_line = 0; - int first_char_index = 0; - char *ptr_char; - char *ptr_line; - int i; - char line[255]; - int key; - bool go_on; - - rb->lcd_clear_display(); - - chars_by_line = LCD_WIDTH / char_width; - lines_by_screen = LCD_HEIGHT / char_height; - - do - { - ptr_char = str + first_char_index; - chars_for_line = 0; - i = 0; - ptr_line = line; - while (i < chars_by_line) - { - switch (*ptr_char) - { - case '\t': - case ' ': - *(ptr_line++) = ' '; - case '\n': - case '\0': - chars_for_line = i; - break; - - default: - *(ptr_line++) = *ptr_char; - } - if (*ptr_char == '\n' || *ptr_char == '\0') - break; - ptr_char++; - i++; - } - - if (chars_for_line == 0) - chars_for_line = i; - - line[chars_for_line] = '\0'; - - /* test if we have cut a word. If it is the case we don't have to */ - /* skip the space */ - if (i == chars_by_line && chars_for_line == chars_by_line) - first_char_index += chars_for_line; - else - first_char_index += chars_for_line + 1; - - /* print the line on the screen */ - rb->lcd_putsxy(0, current_line * char_height, line); - - /* if the number of line showed on the screen is equals to the */ - /* maximum number of line we can show, we wait for a key pressed to */ - /* clear and show the remaining text. */ - current_line++; - if (current_line == lines_by_screen || *ptr_char == '\0') - { - current_line = 0; - rb->lcd_update(); - go_on = false; - while (waitkey && !go_on) - { - key = rb->button_get(true); - switch (key) - { - case STAR_QUIT: - case STAR_LEFT: - case STAR_DOWN: - go_on = true; - break; - - default: - if (rb->default_event_handler(key) == SYS_USB_CONNECTED) - { - usb_detected = true; - go_on = true; - break; - } - } - } - rb->lcd_clear_display(); - } - } while (*ptr_char != '\0'); -} - -/** * Do a pretty transition from one level to another. */ static void star_transition_update(void) @@ -986,7 +963,7 @@ static int star_run_game(int current_level) if (current_level == STAR_LEVEL_COUNT) { rb->lcd_clear_display(); - star_display_text("Congratulations!", true); + rb->splash(HZ*2, "Congratulations!"); rb->lcd_update(); /* There is no such level as STAR_LEVEL_COUNT so it can't be the @@ -1000,6 +977,45 @@ static int star_run_game(int current_level) } /** + * Display help text. + */ +static bool star_help(void) +{ + int button; +#define WORDS (sizeof help_text / sizeof (char*)) + static char* help_text[] = { + "Star", "", "Aim", "", + "Take", "all", "the", "stars", "to", "go", "to", "the", "next", "level.", + "You", "can", "toggle", "control", "with", "the", "block", "to", "use", + "it", "as", "a", "mobile", "wall.", "The", "block", "cannot", "take", + "stars.", "", "", + "Controls", "", + STAR_TOGGLE_CONTROL_NAME":", "Toggle", "Control", "", + STAR_QUIT_NAME":", "", "Exit", "", + STAR_LEVEL_DOWN_NAME":", "Prev.", "level", "", + STAR_LEVEL_REPEAT_NAME":", "Reset", "level", "", + STAR_LEVEL_UP_NAME":", "Next", "level" + }; + static struct style_text formation[]={ + { 0, TEXT_CENTER|TEXT_UNDERLINE }, + { 2, C_RED }, + { 35, C_RED }, + { -1, 0 } + }; + + if (display_text(WORDS, help_text, formation, NULL)) + return true; + do { + button = rb->button_get(true); + if ( rb->default_event_handler( button ) == SYS_USB_CONNECTED ) + return true; + } while( ( button == BUTTON_NONE ) + || ( button & (BUTTON_REL|BUTTON_REPEAT) ) ); + + return false; +} + +/** * Display the choice menu. */ static int star_menu(void) @@ -1010,7 +1026,7 @@ static int star_menu(void) rb->lcd_getstringsize("a", &char_width, &char_height); MENUITEM_STRINGLIST(menu,"Star Menu",NULL,"Play","Choose Level", - "Information","Keys","Quit"); + "Help", "Quit"); while(!menu_quit) { @@ -1024,80 +1040,8 @@ static int star_menu(void) NULL, 1, 1, STAR_LEVEL_COUNT, NULL ); break; case 2: - star_display_text( - "INFO\n\n" - "Take all the stars to go to the next level. " - "You can toggle control with the block to " - "use it as a mobile wall. The block cannot " - "take stars.", true); - break; - case 3: -#if CONFIG_KEYPAD == RECORDER_PAD - star_display_text("KEYS\n\n" - "[ON] Toggle Ctl.\n" - "[OFF] Exit\n" - "[F1] Prev. level\n" - "[F2] Reset level\n" - "[F3] Next level", true); -#elif CONFIG_KEYPAD == ONDIO_PAD - star_display_text("KEYS\n\n" - "[MODE] Toggle Ctl\n" - "[OFF] Exit\n" - "[M <] Prev. level\n" - "[M ^] Reset level\n" - "[M >] Next level", true); -#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) - star_display_text("KEYS\n\n" - "[MODE/NAVI] Toggle Ctrl\n" - "[OFF] Exit\n" - "[ON + LEFT] Prev. level\n" - "[ON + NAVI] Reset level\n" - "[ON + RIGHT] Next level", true); -#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ - (CONFIG_KEYPAD == IPOD_1G2G_PAD) - star_display_text("KEYS\n\n" - "[SELECT] Toggle Ctl\n" - "[S + MENU] Exit\n" - "[S <] Prev. level\n" - "[S + PLAY] Reset level\n" - "[S >] Next level", true); -#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD - star_display_text("KEYS\n\n" - "[SELECT] Toggle Ctl\n" - "[POWER] Exit\n" - "[REC..] Prev. level\n" - "[PLAY] Reset level\n" - "[REC] Next level", true); -#elif CONFIG_KEYPAD == GIGABEAT_PAD - star_display_text("KEYS\n\n" - "[SELECT] Toggle Control\n" - "[POWER] Exit\n" - "[VOL DOWN] Prev. level\n" - "[A] Reset level\n" - "[VOL UP] Next level", true); -#elif CONFIG_KEYPAD == IRIVER_H10_PAD - star_display_text("KEYS\n\n" - "[REW] Toggle Ctl\n" - "[POWER] Exit\n" - "[PLAY+DOWN] Prev. level\n" - "[PLAY+RIGHT] Reset level\n" - "[PLAY+UP] Next level", true); -#elif CONFIG_KEYPAD == GIGABEAT_S_PAD - star_display_text("KEYS\n\n" - "[SELECT] Toggle Control\n" - "[BACK] Exit\n" - "[VOL DOWN] Prev. level\n" - "[MENU] Reset level\n" - "[VOL UP] Next level", true); -#endif -#ifdef HAVE_TOUCHSCREEN - star_display_text("KEYS\n\n" - STAR_TOGGLE_CONTROL_NAME " Toggle Control\n" - STAR_QUIT_NAME " Exit\n" - STAR_LEVEL_DOWN_NAME " Prev. level\n" - STAR_LEVEL_REPEAT_NAME " Reset level\n" - STAR_LEVEL_UP_NAME " Next level", true); -#endif + if(star_help()) + usb_detected = true; break; default: menu_quit = true; |