summaryrefslogtreecommitdiff
path: root/apps/plugins/star.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/star.c')
-rw-r--r--apps/plugins/star.c314
1 files changed, 129 insertions, 185 deletions
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 4bb3afcbd5..0ab6dce17b 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -20,6 +20,7 @@
20 ****************************************************************************/ 20 ****************************************************************************/
21#include "plugin.h" 21#include "plugin.h"
22#ifdef HAVE_LCD_BITMAP 22#ifdef HAVE_LCD_BITMAP
23#include "lib/display_text.h"
23 24
24PLUGIN_HEADER 25PLUGIN_HEADER
25 26
@@ -66,6 +67,11 @@ PLUGIN_HEADER
66#define STAR_LEVEL_UP BUTTON_F3 67#define STAR_LEVEL_UP BUTTON_F3
67#define STAR_LEVEL_DOWN BUTTON_F1 68#define STAR_LEVEL_DOWN BUTTON_F1
68#define STAR_LEVEL_REPEAT BUTTON_F2 69#define STAR_LEVEL_REPEAT BUTTON_F2
70#define STAR_TOGGLE_CONTROL_NAME "ON"
71#define STAR_QUIT_NAME "OFF"
72#define STAR_LEVEL_UP_NAME "F3"
73#define STAR_LEVEL_DOWN_NAME "F1"
74#define STAR_LEVEL_REPEAT_NAME "F2"
69 75
70#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD 76#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
71#define STAR_QUIT BUTTON_OFF 77#define STAR_QUIT BUTTON_OFF
@@ -78,6 +84,11 @@ PLUGIN_HEADER
78#define STAR_LEVEL_UP BUTTON_F3 84#define STAR_LEVEL_UP BUTTON_F3
79#define STAR_LEVEL_DOWN BUTTON_F1 85#define STAR_LEVEL_DOWN BUTTON_F1
80#define STAR_LEVEL_REPEAT BUTTON_F2 86#define STAR_LEVEL_REPEAT BUTTON_F2
87#define STAR_TOGGLE_CONTROL_NAME "ON/SELECT"
88#define STAR_QUIT_NAME "OFF"
89#define STAR_LEVEL_UP_NAME "F3"
90#define STAR_LEVEL_DOWN_NAME "F1"
91#define STAR_LEVEL_REPEAT_NAME "F2"
81 92
82#elif CONFIG_KEYPAD == ONDIO_PAD 93#elif CONFIG_KEYPAD == ONDIO_PAD
83#define STAR_QUIT BUTTON_OFF 94#define STAR_QUIT BUTTON_OFF
@@ -90,6 +101,11 @@ PLUGIN_HEADER
90#define STAR_LEVEL_UP (BUTTON_MENU | BUTTON_RIGHT) 101#define STAR_LEVEL_UP (BUTTON_MENU | BUTTON_RIGHT)
91#define STAR_LEVEL_DOWN (BUTTON_MENU | BUTTON_LEFT) 102#define STAR_LEVEL_DOWN (BUTTON_MENU | BUTTON_LEFT)
92#define STAR_LEVEL_REPEAT (BUTTON_MENU | BUTTON_UP) 103#define STAR_LEVEL_REPEAT (BUTTON_MENU | BUTTON_UP)
104#define STAR_TOGGLE_CONTROL_NAME "MODE"
105#define STAR_QUIT_NAME "OFF"
106#define STAR_LEVEL_UP_NAME "M >"
107#define STAR_LEVEL_DOWN_NAME "M <"
108#define STAR_LEVEL_REPEAT_NAME "M ^"
93 109
94#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ 110#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
95 (CONFIG_KEYPAD == IRIVER_H300_PAD) 111 (CONFIG_KEYPAD == IRIVER_H300_PAD)
@@ -103,6 +119,11 @@ PLUGIN_HEADER
103#define STAR_LEVEL_UP (BUTTON_ON | BUTTON_RIGHT) 119#define STAR_LEVEL_UP (BUTTON_ON | BUTTON_RIGHT)
104#define STAR_LEVEL_DOWN (BUTTON_ON | BUTTON_LEFT) 120#define STAR_LEVEL_DOWN (BUTTON_ON | BUTTON_LEFT)
105#define STAR_LEVEL_REPEAT (BUTTON_ON | BUTTON_SELECT) 121#define STAR_LEVEL_REPEAT (BUTTON_ON | BUTTON_SELECT)
122#define STAR_TOGGLE_CONTROL_NAME "MODE/SELECT"
123#define STAR_QUIT_NAME "OFF"
124#define STAR_LEVEL_UP_NAME "ON + RIGHT"
125#define STAR_LEVEL_DOWN_NAME "ON + LEFT"
126#define STAR_LEVEL_REPEAT_NAME "ON + NAVI"
106 127
107#define STAR_RC_QUIT BUTTON_RC_STOP 128#define STAR_RC_QUIT BUTTON_RC_STOP
108#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ 129#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
@@ -119,6 +140,11 @@ PLUGIN_HEADER
119#define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) 140#define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT)
120#define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) 141#define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT)
121#define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_PLAY) 142#define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_PLAY)
143#define STAR_TOGGLE_CONTROL_NAME "SELECT"
144#define STAR_QUIT_NAME "S + MENU"
145#define STAR_LEVEL_UP_NAME "S >"
146#define STAR_LEVEL_DOWN_NAME "S <"
147#define STAR_LEVEL_REPEAT_NAME "S + PLAY"
122 148
123#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) 149#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
124 150
@@ -133,6 +159,11 @@ PLUGIN_HEADER
133#define STAR_LEVEL_DOWN_PRE BUTTON_REC 159#define STAR_LEVEL_DOWN_PRE BUTTON_REC
134#define STAR_LEVEL_DOWN (BUTTON_REC|BUTTON_REPEAT) 160#define STAR_LEVEL_DOWN (BUTTON_REC|BUTTON_REPEAT)
135#define STAR_LEVEL_REPEAT BUTTON_PLAY 161#define STAR_LEVEL_REPEAT BUTTON_PLAY
162#define STAR_TOGGLE_CONTROL_NAME "SELECT"
163#define STAR_QUIT_NAME "POWER"
164#define STAR_LEVEL_UP_NAME "REC"
165#define STAR_LEVEL_DOWN_NAME "REC.."
166#define STAR_LEVEL_REPEAT_NAME "PLAY"
136 167
137#elif (CONFIG_KEYPAD == GIGABEAT_PAD) 168#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
138 169
@@ -145,13 +176,18 @@ PLUGIN_HEADER
145#define STAR_LEVEL_UP BUTTON_VOL_UP 176#define STAR_LEVEL_UP BUTTON_VOL_UP
146#define STAR_LEVEL_DOWN BUTTON_VOL_DOWN 177#define STAR_LEVEL_DOWN BUTTON_VOL_DOWN
147#define STAR_LEVEL_REPEAT BUTTON_A 178#define STAR_LEVEL_REPEAT BUTTON_A
179#define STAR_TOGGLE_CONTROL_NAME "SELECT"
180#define STAR_QUIT_NAME "POWER"
181#define STAR_LEVEL_UP_NAME "VOL UP"
182#define STAR_LEVEL_DOWN_NAME "VOL DOWN"
183#define STAR_LEVEL_REPEAT_NAME "A"
148 184
149#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 185#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
150(CONFIG_KEYPAD == SANSA_C200_PAD) || \ 186(CONFIG_KEYPAD == SANSA_C200_PAD) || \
151(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \ 187(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
152(CONFIG_KEYPAD == SANSA_M200_PAD) 188(CONFIG_KEYPAD == SANSA_M200_PAD)
153 189
154#define STAR_QUIT BUTTON_POWER 190#define STAR_QUIT BUTTON_POWER
155#define STAR_LEFT BUTTON_LEFT 191#define STAR_LEFT BUTTON_LEFT
156#define STAR_RIGHT BUTTON_RIGHT 192#define STAR_RIGHT BUTTON_RIGHT
157#define STAR_UP BUTTON_UP 193#define STAR_UP BUTTON_UP
@@ -160,11 +196,15 @@ PLUGIN_HEADER
160#define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) 196#define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT)
161#define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) 197#define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT)
162#define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN) 198#define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN)
163 199#define STAR_TOGGLE_CONTROL_NAME "SELECT"
200#define STAR_QUIT_NAME "POWER"
201#define STAR_LEVEL_UP_NAME "SELECT + RIGHT"
202#define STAR_LEVEL_DOWN_NAME "SELECT + LEFT"
203#define STAR_LEVEL_REPEAT_NAME "SELECT + DOWN"
164 204
165#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) 205#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
166 206
167#define STAR_QUIT (BUTTON_HOME|BUTTON_REPEAT) 207#define STAR_QUIT (BUTTON_HOME|BUTTON_REPEAT)
168#define STAR_LEFT BUTTON_LEFT 208#define STAR_LEFT BUTTON_LEFT
169#define STAR_RIGHT BUTTON_RIGHT 209#define STAR_RIGHT BUTTON_RIGHT
170#define STAR_UP BUTTON_UP 210#define STAR_UP BUTTON_UP
@@ -173,6 +213,11 @@ PLUGIN_HEADER
173#define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT) 213#define STAR_LEVEL_UP (BUTTON_SELECT | BUTTON_RIGHT)
174#define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT) 214#define STAR_LEVEL_DOWN (BUTTON_SELECT | BUTTON_LEFT)
175#define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN) 215#define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_DOWN)
216#define STAR_TOGGLE_CONTROL_NAME "SELECT"
217#define STAR_QUIT_NAME "HOME"
218#define STAR_LEVEL_UP_NAME "SELECT + RIGHT"
219#define STAR_LEVEL_DOWN_NAME "SELECT + LEFT"
220#define STAR_LEVEL_REPEAT_NAME "SELECT + DOWN"
176 221
177#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 222#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
178 223
@@ -185,6 +230,11 @@ PLUGIN_HEADER
185#define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_SCROLL_UP) 230#define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_SCROLL_UP)
186#define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_SCROLL_DOWN) 231#define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_SCROLL_DOWN)
187#define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT) 232#define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_RIGHT)
233#define STAR_TOGGLE_CONTROL_NAME "REW"
234#define STAR_QUIT_NAME "POWER"
235#define STAR_LEVEL_UP_NAME "PLAY+UP"
236#define STAR_LEVEL_DOWN_NAME "PLAY+DOWN"
237#define STAR_LEVEL_REPEAT_NAME "PLAY+RIGHT"
188 238
189#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) 239#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
190 240
@@ -197,6 +247,11 @@ PLUGIN_HEADER
197#define STAR_LEVEL_UP BUTTON_VOL_UP 247#define STAR_LEVEL_UP BUTTON_VOL_UP
198#define STAR_LEVEL_DOWN BUTTON_VOL_DOWN 248#define STAR_LEVEL_DOWN BUTTON_VOL_DOWN
199#define STAR_LEVEL_REPEAT BUTTON_MENU 249#define STAR_LEVEL_REPEAT BUTTON_MENU
250#define STAR_TOGGLE_CONTROL_NAME "SELECT"
251#define STAR_QUIT_NAME "BACK"
252#define STAR_LEVEL_UP_NAME "VOL UP"
253#define STAR_LEVEL_DOWN_NAME "VOL DOWN"
254#define STAR_LEVEL_REPEAT_NAME "MENU"
200 255
201#elif (CONFIG_KEYPAD == MROBE100_PAD) 256#elif (CONFIG_KEYPAD == MROBE100_PAD)
202 257
@@ -209,6 +264,11 @@ PLUGIN_HEADER
209#define STAR_LEVEL_UP BUTTON_PLAY 264#define STAR_LEVEL_UP BUTTON_PLAY
210#define STAR_LEVEL_DOWN BUTTON_MENU 265#define STAR_LEVEL_DOWN BUTTON_MENU
211#define STAR_LEVEL_REPEAT BUTTON_DISPLAY 266#define STAR_LEVEL_REPEAT BUTTON_DISPLAY
267#define STAR_TOGGLE_CONTROL_NAME "SELECT"
268#define STAR_QUIT_NAME "POWER"
269#define STAR_LEVEL_UP_NAME "PLAY"
270#define STAR_LEVEL_DOWN_NAME "MENU"
271#define STAR_LEVEL_REPEAT_NAME "DISPLAY"
212 272
213#elif CONFIG_KEYPAD == IAUDIO_M3_PAD 273#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
214 274
@@ -221,11 +281,16 @@ PLUGIN_HEADER
221#define STAR_LEVEL_UP (BUTTON_RC_PLAY|BUTTON_RC_VOL_UP) 281#define STAR_LEVEL_UP (BUTTON_RC_PLAY|BUTTON_RC_VOL_UP)
222#define STAR_LEVEL_DOWN (BUTTON_RC_PLAY|BUTTON_RC_VOL_DOWN) 282#define STAR_LEVEL_DOWN (BUTTON_RC_PLAY|BUTTON_RC_VOL_DOWN)
223#define STAR_LEVEL_REPEAT (BUTTON_RC_PLAY|BUTTON_RC_MENU) 283#define STAR_LEVEL_REPEAT (BUTTON_RC_PLAY|BUTTON_RC_MENU)
284#define STAR_TOGGLE_CONTROL_NAME "MODE"
285#define STAR_QUIT_NAME "REC"
286#define STAR_LEVEL_UP_NAME "PLAY+VOL+"
287#define STAR_LEVEL_DOWN_NAME "PLAY+VOL-"
288#define STAR_LEVEL_REPEAT_NAME "PLAY+MENU"
224 289
225#elif (CONFIG_KEYPAD == COWOND2_PAD) 290#elif (CONFIG_KEYPAD == COWOND2_PAD)
226 291
227#define STAR_QUIT BUTTON_POWER 292#define STAR_QUIT BUTTON_POWER
228#define STAR_QUIT_NAME "[POWER]" 293#define STAR_QUIT_NAME "POWER"
229 294
230#elif CONFIG_KEYPAD == CREATIVEZVM_PAD 295#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
231 296
@@ -238,6 +303,11 @@ PLUGIN_HEADER
238#define STAR_LEVEL_UP (BUTTON_CUSTOM | BUTTON_UP) 303#define STAR_LEVEL_UP (BUTTON_CUSTOM | BUTTON_UP)
239#define STAR_LEVEL_DOWN (BUTTON_CUSTOM | BUTTON_DOWN) 304#define STAR_LEVEL_DOWN (BUTTON_CUSTOM | BUTTON_DOWN)
240#define STAR_LEVEL_REPEAT (BUTTON_CUSTOM | BUTTON_RIGHT) 305#define STAR_LEVEL_REPEAT (BUTTON_CUSTOM | BUTTON_RIGHT)
306#define STAR_TOGGLE_CONTROL_NAME "PLAY"
307#define STAR_QUIT_NAME "BACK"
308#define STAR_LEVEL_UP_NAME "CUSTOM+UP"
309#define STAR_LEVEL_DOWN_NAME "CUSTOM+DOWN"
310#define STAR_LEVEL_REPEAT_NAME "CUSTOM+RIGHT"
241 311
242#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD 312#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
243 313
@@ -250,15 +320,20 @@ PLUGIN_HEADER
250#define STAR_LEVEL_UP BUTTON_VOL_UP 320#define STAR_LEVEL_UP BUTTON_VOL_UP
251#define STAR_LEVEL_DOWN BUTTON_VOL_DOWN 321#define STAR_LEVEL_DOWN BUTTON_VOL_DOWN
252#define STAR_LEVEL_REPEAT BUTTON_VIEW 322#define STAR_LEVEL_REPEAT BUTTON_VIEW
323#define STAR_TOGGLE_CONTROL_NAME "SELECT"
324#define STAR_QUIT_NAME "POWER"
325#define STAR_LEVEL_UP_NAME "VOL UP"
326#define STAR_LEVEL_DOWN_NAME "VOL DOWN"
327#define STAR_LEVEL_REPEAT_NAME "VIEW"
253 328
254#elif (CONFIG_KEYPAD == ONDAVX747_PAD) 329#elif (CONFIG_KEYPAD == ONDAVX747_PAD)
255 330
256#define STAR_QUIT BUTTON_POWER 331#define STAR_QUIT BUTTON_POWER
257#define STAR_QUIT_NAME "[POWER]" 332#define STAR_QUIT_NAME "POWER"
258 333
259#elif CONFIG_KEYPAD == MROBE500_PAD 334#elif CONFIG_KEYPAD == MROBE500_PAD
260#define STAR_QUIT BUTTON_POWER 335#define STAR_QUIT BUTTON_POWER
261#define STAR_QUIT_NAME "[POWER]" 336#define STAR_QUIT_NAME "POWER"
262 337
263#else 338#else
264#error No keymap defined! 339#error No keymap defined!
@@ -267,7 +342,7 @@ PLUGIN_HEADER
267#ifdef HAVE_TOUCHSCREEN 342#ifdef HAVE_TOUCHSCREEN
268//#ifndef STAR_QUIT 343//#ifndef STAR_QUIT
269//#define STAR_QUIT BUTTON_TOPLEFT 344//#define STAR_QUIT BUTTON_TOPLEFT
270//#define STAR_QUIT_NAME "[TOPLEFT]" 345//#define STAR_QUIT_NAME "TOPLEFT"
271//#endif 346//#endif
272#ifndef STAR_LEFT 347#ifndef STAR_LEFT
273#define STAR_LEFT BUTTON_MIDLEFT 348#define STAR_LEFT BUTTON_MIDLEFT
@@ -283,19 +358,19 @@ PLUGIN_HEADER
283#endif 358#endif
284#ifndef STAR_TOGGLE_CONTROL 359#ifndef STAR_TOGGLE_CONTROL
285#define STAR_TOGGLE_CONTROL BUTTON_CENTER 360#define STAR_TOGGLE_CONTROL BUTTON_CENTER
286#define STAR_TOGGLE_CONTROL_NAME "[CENTER]" 361#define STAR_TOGGLE_CONTROL_NAME "CENTER"
287#endif 362#endif
288#ifndef STAR_LEVEL_UP 363#ifndef STAR_LEVEL_UP
289#define STAR_LEVEL_UP BUTTON_TOPLEFT 364#define STAR_LEVEL_UP BUTTON_TOPLEFT
290#define STAR_LEVEL_UP_NAME "[TOPLEFT]" 365#define STAR_LEVEL_UP_NAME "TOPLEFT"
291#endif 366#endif
292#ifndef STAR_LEVEL_DOWN 367#ifndef STAR_LEVEL_DOWN
293#define STAR_LEVEL_DOWN BUTTON_BOTTOMLEFT 368#define STAR_LEVEL_DOWN BUTTON_BOTTOMLEFT
294#define STAR_LEVEL_DOWN_NAME "[BOTTOMLEFT]" 369#define STAR_LEVEL_DOWN_NAME "BOTTOMLEFT"
295#endif 370#endif
296#ifndef STAR_LEVEL_REPEAT 371#ifndef STAR_LEVEL_REPEAT
297#define STAR_LEVEL_REPEAT BUTTON_BOTTOMRIGHT 372#define STAR_LEVEL_REPEAT BUTTON_BOTTOMRIGHT
298#define STAR_LEVEL_REPEAT_NAME "[BOTTOMRIGHT]" 373#define STAR_LEVEL_REPEAT_NAME "BOTTOMRIGHT"
299#endif 374#endif
300#endif 375#endif
301 376
@@ -539,104 +614,6 @@ static unsigned char* levels =
539"****************"; 614"****************";
540 615
541/** 616/**
542 * Display text.
543 */
544void star_display_text(char *str, bool waitkey)
545{
546 int chars_by_line;
547 int lines_by_screen;
548 int chars_for_line;
549 int current_line = 0;
550 int first_char_index = 0;
551 char *ptr_char;
552 char *ptr_line;
553 int i;
554 char line[255];
555 int key;
556 bool go_on;
557
558 rb->lcd_clear_display();
559
560 chars_by_line = LCD_WIDTH / char_width;
561 lines_by_screen = LCD_HEIGHT / char_height;
562
563 do
564 {
565 ptr_char = str + first_char_index;
566 chars_for_line = 0;
567 i = 0;
568 ptr_line = line;
569 while (i < chars_by_line)
570 {
571 switch (*ptr_char)
572 {
573 case '\t':
574 case ' ':
575 *(ptr_line++) = ' ';
576 case '\n':
577 case '\0':
578 chars_for_line = i;
579 break;
580
581 default:
582 *(ptr_line++) = *ptr_char;
583 }
584 if (*ptr_char == '\n' || *ptr_char == '\0')
585 break;
586 ptr_char++;
587 i++;
588 }
589
590 if (chars_for_line == 0)
591 chars_for_line = i;
592
593 line[chars_for_line] = '\0';
594
595 /* test if we have cut a word. If it is the case we don't have to */
596 /* skip the space */
597 if (i == chars_by_line && chars_for_line == chars_by_line)
598 first_char_index += chars_for_line;
599 else
600 first_char_index += chars_for_line + 1;
601
602 /* print the line on the screen */
603 rb->lcd_putsxy(0, current_line * char_height, line);
604
605 /* if the number of line showed on the screen is equals to the */
606 /* maximum number of line we can show, we wait for a key pressed to */
607 /* clear and show the remaining text. */
608 current_line++;
609 if (current_line == lines_by_screen || *ptr_char == '\0')
610 {
611 current_line = 0;
612 rb->lcd_update();
613 go_on = false;
614 while (waitkey && !go_on)
615 {
616 key = rb->button_get(true);
617 switch (key)
618 {
619 case STAR_QUIT:
620 case STAR_LEFT:
621 case STAR_DOWN:
622 go_on = true;
623 break;
624
625 default:
626 if (rb->default_event_handler(key) == SYS_USB_CONNECTED)
627 {
628 usb_detected = true;
629 go_on = true;
630 break;
631 }
632 }
633 }
634 rb->lcd_clear_display();
635 }
636 } while (*ptr_char != '\0');
637}
638
639/**
640 * Do a pretty transition from one level to another. 617 * Do a pretty transition from one level to another.
641 */ 618 */
642static void star_transition_update(void) 619static void star_transition_update(void)
@@ -986,7 +963,7 @@ static int star_run_game(int current_level)
986 if (current_level == STAR_LEVEL_COUNT) 963 if (current_level == STAR_LEVEL_COUNT)
987 { 964 {
988 rb->lcd_clear_display(); 965 rb->lcd_clear_display();
989 star_display_text("Congratulations!", true); 966 rb->splash(HZ*2, "Congratulations!");
990 rb->lcd_update(); 967 rb->lcd_update();
991 968
992 /* There is no such level as STAR_LEVEL_COUNT so it can't be the 969 /* 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)
1000} 977}
1001 978
1002/** 979/**
980 * Display help text.
981 */
982static bool star_help(void)
983{
984 int button;
985#define WORDS (sizeof help_text / sizeof (char*))
986 static char* help_text[] = {
987 "Star", "", "Aim", "",
988 "Take", "all", "the", "stars", "to", "go", "to", "the", "next", "level.",
989 "You", "can", "toggle", "control", "with", "the", "block", "to", "use",
990 "it", "as", "a", "mobile", "wall.", "The", "block", "cannot", "take",
991 "stars.", "", "",
992 "Controls", "",
993 STAR_TOGGLE_CONTROL_NAME":", "Toggle", "Control", "",
994 STAR_QUIT_NAME":", "", "Exit", "",
995 STAR_LEVEL_DOWN_NAME":", "Prev.", "level", "",
996 STAR_LEVEL_REPEAT_NAME":", "Reset", "level", "",
997 STAR_LEVEL_UP_NAME":", "Next", "level"
998 };
999 static struct style_text formation[]={
1000 { 0, TEXT_CENTER|TEXT_UNDERLINE },
1001 { 2, C_RED },
1002 { 35, C_RED },
1003 { -1, 0 }
1004 };
1005
1006 if (display_text(WORDS, help_text, formation, NULL))
1007 return true;
1008 do {
1009 button = rb->button_get(true);
1010 if ( rb->default_event_handler( button ) == SYS_USB_CONNECTED )
1011 return true;
1012 } while( ( button == BUTTON_NONE )
1013 || ( button & (BUTTON_REL|BUTTON_REPEAT) ) );
1014
1015 return false;
1016}
1017
1018/**
1003 * Display the choice menu. 1019 * Display the choice menu.
1004 */ 1020 */
1005static int star_menu(void) 1021static int star_menu(void)
@@ -1010,7 +1026,7 @@ static int star_menu(void)
1010 rb->lcd_getstringsize("a", &char_width, &char_height); 1026 rb->lcd_getstringsize("a", &char_width, &char_height);
1011 1027
1012 MENUITEM_STRINGLIST(menu,"Star Menu",NULL,"Play","Choose Level", 1028 MENUITEM_STRINGLIST(menu,"Star Menu",NULL,"Play","Choose Level",
1013 "Information","Keys","Quit"); 1029 "Help", "Quit");
1014 1030
1015 while(!menu_quit) 1031 while(!menu_quit)
1016 { 1032 {
@@ -1024,80 +1040,8 @@ static int star_menu(void)
1024 NULL, 1, 1, STAR_LEVEL_COUNT, NULL ); 1040 NULL, 1, 1, STAR_LEVEL_COUNT, NULL );
1025 break; 1041 break;
1026 case 2: 1042 case 2:
1027 star_display_text( 1043 if(star_help())
1028 "INFO\n\n" 1044 usb_detected = true;
1029 "Take all the stars to go to the next level. "
1030 "You can toggle control with the block to "
1031 "use it as a mobile wall. The block cannot "
1032 "take stars.", true);
1033 break;
1034 case 3:
1035#if CONFIG_KEYPAD == RECORDER_PAD
1036 star_display_text("KEYS\n\n"
1037 "[ON] Toggle Ctl.\n"
1038 "[OFF] Exit\n"
1039 "[F1] Prev. level\n"
1040 "[F2] Reset level\n"
1041 "[F3] Next level", true);
1042#elif CONFIG_KEYPAD == ONDIO_PAD
1043 star_display_text("KEYS\n\n"
1044 "[MODE] Toggle Ctl\n"
1045 "[OFF] Exit\n"
1046 "[M <] Prev. level\n"
1047 "[M ^] Reset level\n"
1048 "[M >] Next level", true);
1049#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
1050 star_display_text("KEYS\n\n"
1051 "[MODE/NAVI] Toggle Ctrl\n"
1052 "[OFF] Exit\n"
1053 "[ON + LEFT] Prev. level\n"
1054 "[ON + NAVI] Reset level\n"
1055 "[ON + RIGHT] Next level", true);
1056#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
1057 (CONFIG_KEYPAD == IPOD_1G2G_PAD)
1058 star_display_text("KEYS\n\n"
1059 "[SELECT] Toggle Ctl\n"
1060 "[S + MENU] Exit\n"
1061 "[S <] Prev. level\n"
1062 "[S + PLAY] Reset level\n"
1063 "[S >] Next level", true);
1064#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
1065 star_display_text("KEYS\n\n"
1066 "[SELECT] Toggle Ctl\n"
1067 "[POWER] Exit\n"
1068 "[REC..] Prev. level\n"
1069 "[PLAY] Reset level\n"
1070 "[REC] Next level", true);
1071#elif CONFIG_KEYPAD == GIGABEAT_PAD
1072 star_display_text("KEYS\n\n"
1073 "[SELECT] Toggle Control\n"
1074 "[POWER] Exit\n"
1075 "[VOL DOWN] Prev. level\n"
1076 "[A] Reset level\n"
1077 "[VOL UP] Next level", true);
1078#elif CONFIG_KEYPAD == IRIVER_H10_PAD
1079 star_display_text("KEYS\n\n"
1080 "[REW] Toggle Ctl\n"
1081 "[POWER] Exit\n"
1082 "[PLAY+DOWN] Prev. level\n"
1083 "[PLAY+RIGHT] Reset level\n"
1084 "[PLAY+UP] Next level", true);
1085#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
1086 star_display_text("KEYS\n\n"
1087 "[SELECT] Toggle Control\n"
1088 "[BACK] Exit\n"
1089 "[VOL DOWN] Prev. level\n"
1090 "[MENU] Reset level\n"
1091 "[VOL UP] Next level", true);
1092#endif
1093#ifdef HAVE_TOUCHSCREEN
1094 star_display_text("KEYS\n\n"
1095 STAR_TOGGLE_CONTROL_NAME " Toggle Control\n"
1096 STAR_QUIT_NAME " Exit\n"
1097 STAR_LEVEL_DOWN_NAME " Prev. level\n"
1098 STAR_LEVEL_REPEAT_NAME " Reset level\n"
1099 STAR_LEVEL_UP_NAME " Next level", true);
1100#endif
1101 break; 1045 break;
1102 default: 1046 default:
1103 menu_quit = true; 1047 menu_quit = true;