1
0
Fork 0
forked from len0rd/rockbox

Refactored. States are now handled in separate functions instead of using state variables.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2064 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Björn Stenberg 2002-08-30 00:31:00 +00:00
parent a487ef2acd
commit 87a4ed5731

View file

@ -68,10 +68,11 @@
#endif #endif
bool keys_locked = false; bool keys_locked = false;
bool device_muted = false;
static bool ff_rewind = false; static bool ff_rewind = false;
static bool paused = false; static bool paused = false;
int ff_rewind_count = 0; static int ff_rewind_count = 0;
static struct mp3entry* id3 = NULL;
static int old_release_mask;
#ifdef CUSTOM_WPS #ifdef CUSTOM_WPS
static char custom_wps[5][64]; static char custom_wps[5][64];
@ -80,7 +81,7 @@ static int scroll_line;
static int scroll_line_custom; static int scroll_line_custom;
#endif #endif
static void draw_screen(struct mp3entry* id3) static void draw_screen(void)
{ {
int font_height; int font_height;
@ -327,9 +328,6 @@ bool refresh_wps(bool refresh_scroll)
#endif #endif
#endif #endif
struct mp3entry* id3 = NULL;
id3 = mpeg_current_track();
if(!id3) if(!id3)
{ {
lcd_stop_scroll(); lcd_stop_scroll();
@ -437,10 +435,8 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string)
char cchr3; char cchr3;
unsigned int seek; unsigned int seek;
struct mp3entry* id3 = NULL;
char* szLast; char* szLast;
id3 = mpeg_current_track();
szLast = strrchr(id3->path, '/'); szLast = strrchr(id3->path, '/');
if(szLast) if(szLast)
/* point to the first letter in the file name */ /* point to the first letter in the file name */
@ -623,7 +619,6 @@ int player_id3_show(void)
int menu_max = 6; int menu_max = 6;
bool menu_changed = true; bool menu_changed = true;
char scroll_text[MAX_PATH]; char scroll_text[MAX_PATH];
struct mp3entry* id3 = NULL;
lcd_stop_scroll(); lcd_stop_scroll();
lcd_clear_display(); lcd_clear_display();
@ -633,7 +628,6 @@ int player_id3_show(void)
while(1) while(1)
{ {
id3 = mpeg_current_track();
button = button_get(false); button = button_get(false);
switch(button) switch(button)
@ -727,7 +721,6 @@ int player_id3_show(void)
lcd_puts_scroll(0, 1, scroll_text); lcd_puts_scroll(0, 1, scroll_text);
} }
status_draw();
lcd_update(); lcd_update();
yield(); yield();
} }
@ -736,9 +729,10 @@ int player_id3_show(void)
} }
#ifndef CUSTOM_WPS #ifndef CUSTOM_WPS
static void display_file_time(unsigned int elapsed, unsigned int length) static void display_file_time(void)
{ {
char buffer[32]; char buffer[32];
int elapsed = id3->elapsed + ff_rewind_count;
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
int line; int line;
@ -750,11 +744,12 @@ static void display_file_time(unsigned int elapsed, unsigned int length)
"Time:%3d:%02d/%d:%02d", "Time:%3d:%02d/%d:%02d",
elapsed / 60000, elapsed / 60000,
elapsed % 60000 / 1000, elapsed % 60000 / 1000,
length / 60000, id3->length / 60000,
length % 60000 / 1000 ); id3->length % 60000 / 1000 );
lcd_puts(0, line, buffer); lcd_puts(0, line, buffer);
slidebar(0, LCD_HEIGHT-6, LCD_WIDTH, 6, elapsed*100/length, Grow_Right); slidebar(0, LCD_HEIGHT-6, LCD_WIDTH, 6,
elapsed*100/id3->length, Grow_Right);
lcd_update(); lcd_update();
#else #else
/* Display time with the filename scroll only because /* Display time with the filename scroll only because
@ -767,8 +762,8 @@ static void display_file_time(unsigned int elapsed, unsigned int length)
snprintf(buffer,sizeof(buffer), "%d:%02d/%d:%02d ", snprintf(buffer,sizeof(buffer), "%d:%02d/%d:%02d ",
elapsed / 60000, elapsed / 60000,
elapsed % 60000 / 1000, elapsed % 60000 / 1000,
length / 60000, id3->length / 60000,
length % 60000 / 1000 ); id3->length % 60000 / 1000 );
lcd_puts(0, 1, buffer); lcd_puts(0, 1, buffer);
lcd_update(); lcd_update();
@ -813,7 +808,6 @@ void display_keylock_text(bool locked)
{ {
lcd_puts(2, 3, "Key lock is OFF"); lcd_puts(2, 3, "Key lock is OFF");
} }
status_draw();
lcd_update(); lcd_update();
#endif #endif
@ -839,167 +833,42 @@ void display_mute_text(bool muted)
{ {
lcd_puts(2, 3, "Mute is OFF"); lcd_puts(2, 3, "Mute is OFF");
} }
status_draw();
lcd_update(); lcd_update();
#endif #endif
sleep(HZ); sleep(HZ);
} }
/* demonstrates showing different formats from playtune */ static void handle_usb(void)
int wps_show(void)
{ {
struct mp3entry* id3 = NULL; #ifndef SIMULATOR
#ifdef HAVE_LCD_BITMAP
#ifdef HAVE_PLAYER_KEYPAD bool laststate=statusbar(false);
int retval;
#endif #endif
bool dont_go_to_menu = false; /* Tell the USB thread that we are safe */
bool menu_button_is_down = false; DEBUGF("wps got SYS_USB_CONNECTED\n");
bool pending_keylock = true; /* Keylock will go ON next time */ usb_acknowledge(SYS_USB_CONNECTED_ACK);
bool pending_mute = true; /* Mute will go ON next time */
int old_release_mask; /* Wait until the USB cable is extracted again */
int button; usb_wait_for_disconnect(&button_queue);
#ifdef HAVE_LCD_BITMAP
statusbar(laststate);
#endif
#endif
}
static bool ffwd_rew(int button)
{
unsigned int ff_rewind_step = 0; /* current rewind step size */ unsigned int ff_rewind_step = 0; /* current rewind step size */
unsigned int ff_rewind_max_step = 0; /* max rewind step size */ unsigned int ff_rewind_max_step = 0; /* max rewind step size */
long ff_rewind_accel_tick = 0; /* next time to bump ff/rewind step size */ long ff_rewind_accel_tick = 0; /* next time to bump ff/rewind step size */
bool ignore_keyup = true; bool exit = false;
bool restore = false; bool usb = false;
old_release_mask = button_set_release(RELEASE_MASK);
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_AUDIO, true);
lcd_icon(ICON_PARAM, false);
#else
if(global_settings.statusbar)
lcd_setmargins(0, STATUSBAR_HEIGHT);
else
lcd_setmargins(0, 0);
#endif
ff_rewind = false;
#ifdef CUSTOM_WPS
load_custom_wps(); /* Load the Custom WPS file, if there is one */
#endif
if(mpeg_is_playing())
{
id3 = mpeg_current_track();
draw_screen(id3);
restore = true;
}
while ( 1 )
{
button = button_get_w_tmo(HZ/5);
/* discard first event if it's a button release */
if (button && ignore_keyup)
{
ignore_keyup = false;
if (button & BUTTON_REL && button != SYS_USB_CONNECTED)
continue;
}
if(mpeg_has_changed_track())
{
lcd_stop_scroll();
id3 = mpeg_current_track();
draw_screen(id3);
}
switch(button)
{
case BUTTON_ON:
if (keys_locked)
{
display_keylock_text(keys_locked);
restore = true;
break;
}
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_RECORD, false);
lcd_icon(ICON_AUDIO, false);
#endif
button_set_release(old_release_mask);
return 0;
case BUTTON_PLAY:
if (keys_locked)
{
display_keylock_text(keys_locked);
restore = true;
break;
}
if ( !paused )
{
mpeg_pause();
paused = true;
status_set_playmode(STATUS_PAUSE);
status_draw();
if (global_settings.resume) {
settings_save();
#ifndef HAVE_RTC
ata_flush();
#endif
}
}
else
{
mpeg_resume();
paused = false;
status_set_playmode(STATUS_PLAY);
status_draw();
}
break;
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_UP:
case BUTTON_UP | BUTTON_REPEAT:
#endif
case BUTTON_VOL_UP:
if (keys_locked)
{
display_keylock_text(keys_locked);
restore = true;
break;
}
global_settings.volume++;
if(global_settings.volume > mpeg_sound_max(SOUND_VOLUME))
global_settings.volume = mpeg_sound_max(SOUND_VOLUME);
mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
status_draw();
settings_save();
break;
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_DOWN:
case BUTTON_DOWN | BUTTON_REPEAT:
#endif
case BUTTON_VOL_DOWN:
if (keys_locked)
{
display_keylock_text(keys_locked);
restore = true;
break;
}
global_settings.volume--;
if(global_settings.volume < mpeg_sound_min(SOUND_VOLUME))
global_settings.volume = mpeg_sound_min(SOUND_VOLUME);
mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
status_draw();
settings_save();
break;
while (!exit) {
switch ( button ) {
case BUTTON_LEFT | BUTTON_REPEAT: case BUTTON_LEFT | BUTTON_REPEAT:
if (!keys_locked)
{
if (ff_rewind) if (ff_rewind)
{ {
ff_rewind_count -= ff_rewind_step; ff_rewind_count -= ff_rewind_step;
@ -1023,7 +892,6 @@ int wps_show(void)
lcd_stop_scroll(); lcd_stop_scroll();
#endif #endif
status_set_playmode(STATUS_FASTBACKWARD); status_set_playmode(STATUS_FASTBACKWARD);
status_draw();
ff_rewind = true; ff_rewind = true;
ff_rewind_max_step = ff_rewind_max_step =
id3->length * FF_REWIND_MAX_PERCENT / 100; id3->length * FF_REWIND_MAX_PERCENT / 100;
@ -1044,15 +912,11 @@ int wps_show(void)
#ifdef CUSTOM_WPS #ifdef CUSTOM_WPS
refresh_wps(false); refresh_wps(false);
#else #else
display_file_time(id3->elapsed + ff_rewind_count, display_file_time();
id3->length);
#endif #endif
}
break; break;
case BUTTON_RIGHT | BUTTON_REPEAT: case BUTTON_RIGHT | BUTTON_REPEAT:
if (!keys_locked)
{
if (ff_rewind) if (ff_rewind)
{ {
ff_rewind_count += ff_rewind_step; ff_rewind_count += ff_rewind_step;
@ -1076,7 +940,6 @@ int wps_show(void)
lcd_stop_scroll(); lcd_stop_scroll();
#endif #endif
status_set_playmode(STATUS_FASTFORWARD); status_set_playmode(STATUS_FASTFORWARD);
status_draw();
ff_rewind = true; ff_rewind = true;
ff_rewind_max_step = ff_rewind_max_step =
id3->length * FF_REWIND_MAX_PERCENT / 100; id3->length * FF_REWIND_MAX_PERCENT / 100;
@ -1097,22 +960,11 @@ int wps_show(void)
#ifdef CUSTOM_WPS #ifdef CUSTOM_WPS
refresh_wps(false); refresh_wps(false);
#else #else
display_file_time(id3->elapsed + ff_rewind_count, display_file_time();
id3->length);
#endif #endif
}
break; break;
case BUTTON_LEFT | BUTTON_REL: case BUTTON_LEFT | BUTTON_REL:
if (menu_button_is_down && keys_locked)
{
sleep(HZ/6);
draw_screen(id3);
}
if (!keys_locked)
{
if (ff_rewind)
{
/* rewind */ /* rewind */
mpeg_ff_rewind(ff_rewind_count); mpeg_ff_rewind(ff_rewind_count);
ff_rewind_count = 0; ff_rewind_count = 0;
@ -1124,49 +976,12 @@ int wps_show(void)
status_set_playmode(STATUS_PLAY); status_set_playmode(STATUS_PLAY);
} }
#ifdef HAVE_LCD_CHARCELLS #ifdef HAVE_LCD_CHARCELLS
draw_screen(id3); draw_screen();
#endif #endif
} exit = true;
#ifdef HAVE_PLAYER_KEYPAD
else if(!menu_button_is_down)
#else
else
#endif
{
if (!id3 || (id3->elapsed < 3*1000))
mpeg_prev();
else {
if (!paused)
mpeg_pause();
mpeg_ff_rewind(-(id3->elapsed));
if (!paused)
mpeg_resume();
}
}
}
#ifdef HAVE_PLAYER_KEYPAD
else if(!menu_button_is_down)
#else
else
#endif
{
display_keylock_text(keys_locked);
restore = true;
}
break; break;
case BUTTON_RIGHT | BUTTON_REL: case BUTTON_RIGHT | BUTTON_REL:
if (menu_button_is_down && keys_locked)
{
sleep(HZ/6);
draw_screen(id3);
}
if (!keys_locked)
{
if (ff_rewind)
{
/* fast forward */ /* fast forward */
mpeg_ff_rewind(ff_rewind_count); mpeg_ff_rewind(ff_rewind_count);
ff_rewind_count = 0; ff_rewind_count = 0;
@ -1178,31 +993,168 @@ int wps_show(void)
status_set_playmode(STATUS_PLAY); status_set_playmode(STATUS_PLAY);
} }
#ifdef HAVE_LCD_CHARCELLS #ifdef HAVE_LCD_CHARCELLS
draw_screen(id3); draw_screen();
#endif #endif
} exit = true;
#ifdef HAVE_PLAYER_KEYPAD
else if(!menu_button_is_down)
#else
else
#endif
{
mpeg_next();
}
}
#ifdef HAVE_PLAYER_KEYPAD
else if(!menu_button_is_down)
#else
else
#endif
{
display_keylock_text(keys_locked);
restore = true;
break; break;
case SYS_USB_CONNECTED:
handle_usb();
usb = true;
exit = true;
break;
}
if (!exit)
button = button_get(true);
}
return usb;
}
static void update(void)
{
if (mpeg_has_changed_track())
{
lcd_stop_scroll();
id3 = mpeg_current_track();
draw_screen();
}
if (id3) {
#ifdef CUSTOM_WPS
refresh_wps(false);
#else
display_file_time();
#endif
}
status_draw();
/* save resume data */
if ( id3 &&
global_settings.resume &&
global_settings.resume_offset != id3->offset ) {
DEBUGF("R%X,%X (%X)\n", global_settings.resume_offset,
id3->offset,id3);
global_settings.resume_index = id3->index;
global_settings.resume_offset = id3->offset;
settings_save();
}
}
static bool keylock(void)
{
bool exit = false;
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_RECORD, true);
#endif
display_keylock_text(true);
keys_locked = true;
draw_screen();
status_draw();
while (button_get(false)); /* clear button queue */
while (!exit) {
switch ( button_get_w_tmo(HZ/5) ) {
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_F1 | BUTTON_DOWN:
#else
case BUTTON_MENU | BUTTON_STOP:
#endif
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_RECORD, false);
#endif
display_keylock_text(false);
keys_locked = false;
exit = true;
while (button_get(false)); /* clear button queue */
break;
case SYS_USB_CONNECTED:
handle_usb();
return true;
case BUTTON_NONE:
update();
break;
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_F1:
#else
case BUTTON_MENU:
#endif
/* ignore menu key, to avoid displaying "Keylock ON"
every time we unlock the keys */
break;
default:
display_keylock_text(true);
while (button_get(false)); /* clear button queue */
draw_screen();
break;
}
}
return false;
}
static bool menu(void)
{
static bool muted = false;
bool exit = false;
int last_button = 0;
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_PARAM, true);
#endif
while (!exit) {
int button = button_get(true);
switch ( button ) {
/* go into menu */
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_F1 | BUTTON_REL:
#else
case BUTTON_MENU | BUTTON_REL:
#endif
exit = true;
if ( !last_button ) {
lcd_stop_scroll();
button_set_release(old_release_mask);
main_menu();
old_release_mask = button_set_release(RELEASE_MASK);
} }
break; break;
/* mute */
#ifdef HAVE_PLAYER_KEYPAD #ifdef HAVE_PLAYER_KEYPAD
case BUTTON_PLAY:
#else
case BUTTON_UP:
#endif
if ( muted )
mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
else
mpeg_sound_set(SOUND_VOLUME, 0);
muted = !muted;
display_mute_text(muted);
break;
/* key lock */
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_F1 | BUTTON_DOWN:
#else
case BUTTON_MENU | BUTTON_STOP:
#endif
if (keylock())
return true;
exit = true;
break;
#ifdef HAVE_PLAYER_KEYPAD
/* change volume */
case BUTTON_MENU | BUTTON_LEFT: case BUTTON_MENU | BUTTON_LEFT:
case BUTTON_MENU | BUTTON_LEFT | BUTTON_REPEAT: case BUTTON_MENU | BUTTON_LEFT | BUTTON_REPEAT:
dont_go_to_menu = true; dont_go_to_menu = true;
@ -1211,11 +1163,12 @@ int wps_show(void)
global_settings.volume = mpeg_sound_min(SOUND_VOLUME); global_settings.volume = mpeg_sound_min(SOUND_VOLUME);
mpeg_sound_set(SOUND_VOLUME, global_settings.volume); mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
display_volume_level(global_settings.volume); display_volume_level(global_settings.volume);
draw_screen(id3); draw_screen();
status_draw(); status_draw();
settings_save(); settings_save();
break; break;
/* change volume */
case BUTTON_MENU | BUTTON_RIGHT: case BUTTON_MENU | BUTTON_RIGHT:
case BUTTON_MENU | BUTTON_RIGHT | BUTTON_REPEAT: case BUTTON_MENU | BUTTON_RIGHT | BUTTON_REPEAT:
dont_go_to_menu = true; dont_go_to_menu = true;
@ -1224,11 +1177,12 @@ int wps_show(void)
global_settings.volume = mpeg_sound_max(SOUND_VOLUME); global_settings.volume = mpeg_sound_max(SOUND_VOLUME);
mpeg_sound_set(SOUND_VOLUME, global_settings.volume); mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
display_volume_level(global_settings.volume); display_volume_level(global_settings.volume);
draw_screen(id3); draw_screen();
status_draw(); status_draw();
settings_save(); settings_save();
break; break;
/* show id3 tags */
case BUTTON_MENU | BUTTON_ON: case BUTTON_MENU | BUTTON_ON:
if (keys_locked) if (keys_locked)
{ {
@ -1237,139 +1191,184 @@ int wps_show(void)
break; break;
} }
lcd_stop_scroll(); lcd_stop_scroll();
dont_go_to_menu = false;
menu_button_is_down = false;
lcd_icon(ICON_PARAM, true); lcd_icon(ICON_PARAM, true);
lcd_icon(ICON_AUDIO, true); lcd_icon(ICON_AUDIO, true);
retval = player_id3_show(); if(player_id3_show() == SYS_USB_CONNECTED)
if(retval == SYS_USB_CONNECTED) return true;
return SYS_USB_CONNECTED;
lcd_icon(ICON_PARAM, false); lcd_icon(ICON_PARAM, false);
lcd_icon(ICON_AUDIO, true); lcd_icon(ICON_AUDIO, true);
draw_screen(id3); draw_screen();
break; break;
#endif
case BUTTON_MENU: case SYS_USB_CONNECTED:
lcd_icon(ICON_PARAM, true); handle_usb();
return true;
}
last_button = button;
}
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_PARAM, false);
#endif
draw_screen();
return false;
}
/* demonstrates showing different formats from playtune */
int wps_show(void)
{
#ifdef HAVE_PLAYER_KEYPAD
int retval;
#endif
int button;
bool ignore_keyup = true;
bool restore = false;
id3 = NULL;
old_release_mask = button_set_release(RELEASE_MASK);
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_AUDIO, true);
lcd_icon(ICON_PARAM, false);
#else
if(global_settings.statusbar)
lcd_setmargins(0, STATUSBAR_HEIGHT);
else
lcd_setmargins(0, 0);
#endif
ff_rewind = false;
ff_rewind_count = 0;
#ifdef CUSTOM_WPS
load_custom_wps(); /* Load the Custom WPS file, if there is one */
#endif
if(mpeg_is_playing())
{
id3 = mpeg_current_track();
if (id3) {
draw_screen();
display_file_time();
}
restore = true;
}
while ( 1 )
{
button = button_get_w_tmo(HZ/5);
/* discard first event if it's a button release */
if (button && ignore_keyup)
{
ignore_keyup = false;
if (button & BUTTON_REL && button != SYS_USB_CONNECTED)
continue;
}
switch(button)
{
/* exit to dir browser */
case BUTTON_ON:
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_RECORD, false);
lcd_icon(ICON_AUDIO, false); lcd_icon(ICON_AUDIO, false);
menu_button_is_down = true; #endif
button_set_release(old_release_mask);
return 0;
/* play/pause */
case BUTTON_PLAY:
if ( paused )
{
mpeg_resume();
paused = false;
status_set_playmode(STATUS_PLAY);
}
else
{
mpeg_pause();
paused = true;
status_set_playmode(STATUS_PAUSE);
if (global_settings.resume) {
settings_save();
#ifndef HAVE_RTC
ata_flush();
#endif
}
}
break; break;
case BUTTON_PLAY | BUTTON_REL: /* volume up */
/* The PLAY key has been release while the MENU key #ifdef HAVE_RECORDER_KEYPAD
was held */ case BUTTON_UP:
if(menu_button_is_down) case BUTTON_UP | BUTTON_REPEAT:
pending_mute = !pending_mute; #endif
case BUTTON_VOL_UP:
global_settings.volume++;
if(global_settings.volume > mpeg_sound_max(SOUND_VOLUME))
global_settings.volume = mpeg_sound_max(SOUND_VOLUME);
mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
status_draw();
settings_save();
break; break;
case BUTTON_STOP | BUTTON_REL: /* volume down */
/* The STOP key has been release while the MENU key #ifdef HAVE_RECORDER_KEYPAD
was held */ case BUTTON_DOWN:
if(menu_button_is_down) case BUTTON_DOWN | BUTTON_REPEAT:
pending_keylock = !pending_keylock; #endif
case BUTTON_VOL_DOWN:
global_settings.volume--;
if(global_settings.volume < mpeg_sound_min(SOUND_VOLUME))
global_settings.volume = mpeg_sound_min(SOUND_VOLUME);
mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
status_draw();
settings_save();
break; break;
/* fast forward / rewind */
case BUTTON_LEFT | BUTTON_REPEAT:
case BUTTON_RIGHT | BUTTON_REPEAT:
ffwd_rew(button);
break;
/* prev / restart */
case BUTTON_LEFT | BUTTON_REL:
if (!id3 || (id3->elapsed < 3*1000))
mpeg_prev();
else {
if (!paused)
mpeg_pause();
mpeg_ff_rewind(-(id3->elapsed));
if (!paused)
mpeg_resume();
}
break;
/* next */
case BUTTON_RIGHT | BUTTON_REL:
mpeg_next();
break;
/* menu key functions */
#ifdef HAVE_PLAYER_KEYPAD
case BUTTON_MENU:
#else #else
case BUTTON_F1: case BUTTON_F1:
menu_button_is_down = true; #endif
break; if (menu())
return SYS_USB_CONNECTED;
case BUTTON_UP | BUTTON_REL:
/* The UP key has been release while the F1 key
was held */
if(menu_button_is_down)
{
pending_mute = !pending_mute;
debugf("pending: %d\n", pending_mute);
}
break;
case BUTTON_DOWN | BUTTON_REL:
/* The DOWN key has been release while the F1 key
was held */
if(menu_button_is_down)
{
pending_keylock = !pending_keylock;
debugf("pending: %d\n", pending_keylock);
}
break;
#endif
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_F1 | BUTTON_UP:
#else
case BUTTON_MENU | BUTTON_PLAY:
#endif
if(keys_locked)
{
display_keylock_text(keys_locked);
restore = true;
break;
}
if(device_muted != pending_mute)
{
device_muted = pending_mute;
if(device_muted)
mpeg_sound_set(SOUND_VOLUME, 0);
else
mpeg_sound_set(SOUND_VOLUME, global_settings.volume);
display_mute_text(device_muted);
restore = true;
}
dont_go_to_menu = true;
break;
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_F1 | BUTTON_DOWN:
#else
case BUTTON_MENU | BUTTON_STOP:
#endif
if(keys_locked != pending_keylock)
{
keys_locked = pending_keylock;
#ifdef HAVE_LCD_CHARCELLS
if(keys_locked)
lcd_icon(ICON_RECORD, true);
else
lcd_icon(ICON_RECORD, false);
#endif
display_keylock_text(keys_locked);
restore = true;
}
dont_go_to_menu = true;
break;
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_F1 | BUTTON_REL:
#else
case BUTTON_MENU | BUTTON_REL:
#endif
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_PARAM, false);
#endif
if(!keys_locked && !dont_go_to_menu && menu_button_is_down)
{
lcd_stop_scroll();
button_set_release(old_release_mask);
main_menu();
old_release_mask = button_set_release(RELEASE_MASK);
ignore_keyup = true;
id3 = mpeg_current_track();
restore = true;
}
else
{
dont_go_to_menu = false;
}
#ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_AUDIO, true);
#endif
menu_button_is_down = false;
break; break;
/* toggle status bar */
#ifdef HAVE_RECORDER_KEYPAD #ifdef HAVE_RECORDER_KEYPAD
case BUTTON_F3: case BUTTON_F3:
#ifdef HAVE_LCD_BITMAP #ifdef HAVE_LCD_BITMAP
@ -1384,18 +1383,12 @@ int wps_show(void)
break; break;
#endif #endif
/* stop and exit wps */
#ifdef HAVE_RECORDER_KEYPAD #ifdef HAVE_RECORDER_KEYPAD
case BUTTON_OFF: case BUTTON_OFF:
#else #else
case BUTTON_STOP: case BUTTON_STOP:
#endif #endif
if (keys_locked)
{
display_keylock_text(keys_locked);
restore = true;
break;
}
#ifdef HAVE_LCD_CHARCELLS #ifdef HAVE_LCD_CHARCELLS
lcd_icon(ICON_RECORD, false); lcd_icon(ICON_RECORD, false);
lcd_icon(ICON_AUDIO, false); lcd_icon(ICON_AUDIO, false);
@ -1406,48 +1399,13 @@ int wps_show(void)
return 0; return 0;
#ifndef SIMULATOR #ifndef SIMULATOR
case SYS_USB_CONNECTED: { case SYS_USB_CONNECTED:
#ifdef HAVE_LCD_BITMAP handle_usb();
bool laststate=statusbar(false);
#endif
/* Tell the USB thread that we are safe */
DEBUGF("wps got SYS_USB_CONNECTED\n");
usb_acknowledge(SYS_USB_CONNECTED_ACK);
/* Wait until the USB cable is extracted again */
usb_wait_for_disconnect(&button_queue);
#ifdef HAVE_LCD_BITMAP
statusbar(laststate);
#endif
/* Signal to our caller that we have been in USB mode */
return SYS_USB_CONNECTED; return SYS_USB_CONNECTED;
break;
}
#endif #endif
case BUTTON_NONE: /* Timeout */ case BUTTON_NONE: /* Timeout */
if(!mpeg_is_playing()) update();
restore = true;
if (id3)
#ifdef CUSTOM_WPS
refresh_wps(false);
#else
display_file_time(id3->elapsed, id3->length);
#endif
/* save resume data */
if ( id3 &&
global_settings.resume &&
global_settings.resume_offset != id3->offset ) {
DEBUGF("R%X,%X (%X)\n", global_settings.resume_offset,
id3->offset,id3);
global_settings.resume_index = id3->index;
global_settings.resume_offset = id3->offset;
settings_save();
}
status_draw();
break; break;
} }
@ -1456,12 +1414,12 @@ int wps_show(void)
if (restore) { if (restore) {
restore = false; restore = false;
draw_screen(id3); draw_screen();
if (mpeg_is_playing() && id3) if (id3)
#ifdef CUSTOM_WPS #ifdef CUSTOM_WPS
refresh_wps(false); refresh_wps(false);
#else #else
display_file_time(id3->elapsed, id3->length); display_file_time();
#endif #endif
} }
} }