1
0
Fork 0
forked from len0rd/rockbox

Plugin rework 5: (all) Now using the default event handler, standard placement is in switch() default case. (splitedit,star,vu_meter) Compile-time keyboard configuration, for Ondio adaption. (splitedit) Timing kludge for MMC. (star) Completed USB support.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5321 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jens Arnold 2004-10-22 00:22:07 +00:00
parent 3a931c113f
commit 2afdf95401
7 changed files with 285 additions and 106 deletions

View file

@ -22,6 +22,29 @@
#ifndef SIMULATOR
#ifdef HAVE_LCD_BITMAP
/* variable button definitions */
#if CONFIG_KEYPAD == RECORDER_PAD
#define SPLITEDIT_QUIT BUTTON_OFF
#define SPLITEDIT_PLAY BUTTON_PLAY
#define SPLITEDIT_SAVE BUTTON_F1
#define SPLITEDIT_LOOP_MODE BUTTON_F2
#define SPLITEDIT_SCALE BUTTON_F3
#define SPLITEDIT_SPEED50 (BUTTON_ON | BUTTON_LEFT)
#define SPLITEDIT_SPEED100 (BUTTON_ON | BUTTON_PLAY)
#define SPLITEDIT_SPEED150 (BUTTON_ON | BUTTON_RIGHT)
#define SPLITEDIT_MENU_RUN BUTTON_PLAY
#elif CONFIG_KEYPAD == ONDIO_PAD
#define SPLITEDIT_QUIT BUTTON_OFF
#define SPLITEDIT_PLAY_PRE BUTTON_MENU
#define SPLITEDIT_PLAY (BUTTON_MENU | BUTTON_REL)
#define SPLITEDIT_SAVE (BUTTON_MENU | BUTTON_LEFT)
#define SPLITEDIT_LOOP_MODE (BUTTON_MENU | BUTTON_UP)
#define SPLITEDIT_SCALE (BUTTON_MENU | BUTTON_RIGHT)
#define SPLITEDIT_MENU_RUN BUTTON_RIGHT
#endif
#define BMPHEIGHT 7
#define BMPWIDTH 13
unsigned char LOOP_BMP[][13] =
@ -499,7 +522,7 @@ static void generateFileName(char* file_name, int part_no)
}
else
{
rb->splash(0, true, "name to long");
rb->splash(0, true, "name too long");
rb->button_get(true);
rb->button_get(true);
@ -765,7 +788,7 @@ static void save_editor(struct mp3entry *mp3, int splittime)
choice = (choice + 1) % SE_COUNT;
break;
case BUTTON_PLAY:
case SPLITEDIT_MENU_RUN:
switch (choice)
{
int saved;
@ -806,9 +829,17 @@ static void save_editor(struct mp3entry *mp3, int splittime)
}
break;
case BUTTON_OFF:
case SPLITEDIT_QUIT:
exit_request = true;
break;
default:
if (rb->default_event_handler(button) == SYS_USB_CONNECTED)
{
splitedit_exit_code = PLUGIN_USB_CONNECTED;
exit_request = true;
}
break;
}
}
}
@ -821,6 +852,7 @@ unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
unsigned int range)
{
int button = BUTTON_NONE;
int lastbutton = BUTTON_NONE;
struct mp3entry *mp3 = mp3_to_split;
unsigned int last_elapsed = 0;
int lastx = OSCI_X + (OSCI_WIDTH / 2);
@ -943,12 +975,24 @@ unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
case LOOP_MODE_TO:
rb->mpeg_pause();
rb->mpeg_ff_rewind(range_start);
#ifdef HAVE_MMC
/* MMC is slow - wait some time to allow track reload to finish */
rb->sleep(HZ/20);
if (mp3->elapsed > play_end) /* reload in progress */
rb->splash(10*HZ, true, "Wait - reloading");
#endif
rb->mpeg_resume();
break;
case LOOP_MODE_FROM:
rb->mpeg_pause();
rb->mpeg_ff_rewind(xpos_to_time(split_x));
#ifdef HAVE_MMC
/* MMC is slow - wait some time to allow track reload to finish */
rb->sleep(HZ/20);
if (mp3->elapsed > play_end) /* reload in progress */
rb->splash(10*HZ, true, "Wait - reloading");
#endif
rb->mpeg_resume();
break;
@ -964,7 +1008,6 @@ unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
rb->lcd_update();
break;
}
}
}
@ -977,17 +1020,11 @@ unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
/* key_scheme_execute(button, &scheme); */
switch (button)
{
case SYS_USB_CONNECTED:
rb->usb_screen();
splitedit_exit_code = PLUGIN_USB_CONNECTED;
exit_request = true;
break;
case BUTTON_OFF:
exit_request = true;
break;
case BUTTON_PLAY:
case SPLITEDIT_PLAY:
#ifdef SPLITEDIT_PLAY_PRE
if (lastbutton != SPLITEDIT_PLAY_PRE)
break;
#endif
rb->mpeg_pause();
rb->mpeg_ff_rewind(xpos_to_time(split_x));
rb->mpeg_resume();
@ -1004,20 +1041,22 @@ unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
break;
#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F)
case BUTTON_ON | BUTTON_RIGHT:
#if defined(SPLITEDIT_SPEED150) && defined(SPLITEDIT_SPEED100) && defined(SPLITEDIT_SPEED50)
case SPLITEDIT_SPEED150:
rb->mpeg_set_pitch(1500);
splitedit_invalidate_osci();
break;
case BUTTON_ON | BUTTON_PLAY:
case SPLITEDIT_SPEED100:
rb->mpeg_set_pitch(1000);
splitedit_invalidate_osci();
break;
case BUTTON_ON | BUTTON_LEFT:
case SPLITEDIT_SPEED50:
rb->mpeg_set_pitch(500);
splitedit_invalidate_osci();
break;
#endif
#endif
case BUTTON_LEFT:
@ -1046,7 +1085,7 @@ unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
}
break;
case BUTTON_F1 | BUTTON_REL:
case SPLITEDIT_SAVE:
save_editor(mp3, xpos_to_time(split_x));
rb->lcd_clear_display();
update_osci();
@ -1054,19 +1093,34 @@ unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
update_icons();
break;
case BUTTON_F2:
case SPLITEDIT_LOOP_MODE:
splitedit_set_loop_mode(splitedit_get_loop_mode() + 1);
update_icons();
break;
case BUTTON_F3:
case SPLITEDIT_SCALE:
#if (CONFIG_HWCODEC == MAS3587F) || (CONFIG_HWCODEC == MAS3539F)
rb->peak_meter_set_use_dbfs(rb->peak_meter_get_use_dbfs() +1);
#endif
splitedit_invalidate_osci();
update_icons();
break;
case SPLITEDIT_QUIT:
exit_request = true;
break;
default:
if (rb->default_event_handler(button) == SYS_USB_CONNECTED)
{
splitedit_exit_code = PLUGIN_USB_CONNECTED;
exit_request = true;
}
break;
}
if (button != BUTTON_NONE)
lastbutton = button;
if (validation_start == ~(unsigned int)0)
{