Reworked pitch screen for easier adjustment and better looks. Added some button definitions for iPods - coming soon to a Sound Settings menu near you...

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9146 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Zakk Roberts 2006-03-21 07:59:23 +00:00
parent dd521146b7
commit 87afd0b050
4 changed files with 123 additions and 127 deletions

View file

@ -134,7 +134,7 @@ long gui_wps_show(void)
while ( 1 )
{
bool audio_paused = (audio_status() & AUDIO_STATUS_PAUSE)?true:false;
/* did someone else (i.e power thread) change audio pause mode? */
if (wps_state.paused != audio_paused) {
wps_state.paused = audio_paused;
@ -160,7 +160,7 @@ long gui_wps_show(void)
if(gui_wps[i].data->peak_meter_enabled)
pm = true;
}
if (pm) {
long next_refresh = current_tick;
long next_big_refresh = current_tick + HZ / 5;
@ -171,7 +171,7 @@ long gui_wps_show(void)
break;
}
peak_meter_peek();
sleep(0); /* Sleep until end of current tick. */
sleep(0); /* Sleep until end of current tick. */
if (TIME_AFTER(current_tick, next_refresh)) {
FOR_NB_SCREENS(i)
@ -185,7 +185,7 @@ long gui_wps_show(void)
}
}
/* The peak meter is disabled
-> no additional screen updates needed */
else {
@ -408,7 +408,7 @@ long gui_wps_show(void)
if ((button == WPS_RC_PREV) && (lastbutton != WPS_RC_PREV_PRE))
break;
#endif
#endif
#endif
left_lastclick = current_tick;
update_track = true;
@ -487,7 +487,7 @@ long gui_wps_show(void)
case WPS_NEXT:
#ifdef WPS_NEXT_PRE
if (lastbutton != WPS_NEXT_PRE)
break;
break;
#endif
#ifdef WPS_RC_NEXT
case WPS_RC_NEXT:
@ -607,15 +607,11 @@ long gui_wps_show(void)
/* pitch screen */
#if CONFIG_KEYPAD == RECORDER_PAD || CONFIG_KEYPAD == IRIVER_H100_PAD \
|| CONFIG_KEYPAD == IRIVER_H300_PAD
case BUTTON_ON | BUTTON_UP:
case BUTTON_ON | BUTTON_DOWN:
#if CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD
case BUTTON_ON | BUTTON_OFF:
#endif
case BUTTON_ON | BUTTON_REPEAT:
#ifdef HAVE_LCD_COLOR
lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
#endif
if (2 == pitch_screen())
if (1 == pitch_screen())
return SYS_USB_CONNECTED;
#ifdef HAVE_LCD_COLOR
if (gui_wps[SCREEN_MAIN].data->has_backdrop)
@ -653,8 +649,8 @@ long gui_wps_show(void)
ab_set_A_marker(wps_state.id3->elapsed);
break;
#endif
#ifdef WPS_AB_SET_A_MARKER
/* set A marker for A-B repeat */
case WPS_AB_SET_A_MARKER:
@ -717,7 +713,7 @@ long gui_wps_show(void)
restore = true;
break;
#endif
case BUTTON_NONE: /* Timeout */
update_track = true;
break;
@ -726,7 +722,7 @@ long gui_wps_show(void)
bookmark_autobookmark();
default_event_handler(SYS_POWEROFF);
break;
default:
if(default_event_handler(button) == SYS_USB_CONNECTED)
return SYS_USB_CONNECTED;
@ -748,7 +744,7 @@ long gui_wps_show(void)
if (global_settings.browse_current &&
wps_state.current_track_path[0] != '\0')
set_current_file(wps_state.current_track_path);
return 0;
}
update_track = false;
@ -761,7 +757,7 @@ long gui_wps_show(void)
#endif
if (global_settings.fade_on_stop)
fade(0);
FOR_NB_SCREENS(i)
gui_wps[i].display->stop_scroll();
bookmark_autobookmark();
@ -778,10 +774,10 @@ long gui_wps_show(void)
if (global_settings.browse_current &&
wps_state.current_track_path[0] != '\0')
set_current_file(wps_state.current_track_path);
return 0;
}
if ( button )
ata_spin();
@ -883,8 +879,8 @@ bool wps_data_load(struct wps_data *wps_data,
}
else
{
/*
* Hardcode loading WPS_DEFAULTCFG to cause a reset ideally this
/*
* Hardcode loading WPS_DEFAULTCFG to cause a reset ideally this
* wants to be a virtual file. Feel free to modify dirbrowse()
* if you're feeling brave.
*/
@ -893,7 +889,7 @@ bool wps_data_load(struct wps_data *wps_data,
wps_reset(wps_data);
global_settings.wps_file[0] = 0;
return false;
}
}
#ifdef HAVE_REMOTE_LCD
if (! strcmp(buf, RWPS_DEFAULTCFG) )
@ -907,13 +903,13 @@ bool wps_data_load(struct wps_data *wps_data,
size_t bmpdirlen;
char *bmpdir = strrchr(buf, '.');
bmpdirlen = bmpdir - buf;
fd = open(buf, O_RDONLY);
if (fd >= 0)
{
unsigned int start = 0;
wps_reset(wps_data);
#ifdef HAVE_LCD_BITMAP
wps_data->img_buf_ptr = wps_data->img_buf; /* where in image buffer */
@ -928,7 +924,7 @@ bool wps_data_load(struct wps_data *wps_data,
buf, bmpdirlen))
{
start += strlen(&wps_data->format_buffer[start]);
if (start < sizeof(wps_data->format_buffer) - 1)
{
wps_data->format_buffer[start++] = '\n';
@ -941,11 +937,11 @@ bool wps_data_load(struct wps_data *wps_data,
{
gui_wps_format(wps_data);
}
close(fd);
wps_data->wps_loaded = true;
return start > 0;
}
}

View file

@ -3827,3 +3827,8 @@ eng: "File/directory exists. Overwrite?"
voice: "File or directory exists. Overwrite?"
new:
id: LANG_PITCH
desc: "pitch" in the pitch screen
eng: "Pitch"
voice: "Pitch"
new:

View file

@ -345,147 +345,120 @@ int charging_screen(void)
}
#endif /* HAVE_CHARGING && !HAVE_POWEROFF_WHILE_CHARGING */
#if CONFIG_KEYPAD == RECORDER_PAD || CONFIG_KEYPAD == IRIVER_H100_PAD \
|| CONFIG_KEYPAD == IRIVER_H300_PAD
#if (CONFIG_KEYPAD != IAUDIO_X5_PAD) && (CONFIG_KEYPAD != PLAYER_PAD)
/* returns:
0 if no key was pressed
1 if a key was pressed (or if ON was held down long enough to repeat)
2 if USB was connected */
#if CONFIG_KEYPAD == RECORDER_PAD
#define PITCH_PAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD
#define PITCH_PAUSE BUTTON_SELECT
#endif
int pitch_screen(void)
1 if USB was connected */
bool pitch_screen(void)
{
int button;
int pitch = sound_get_pitch();
bool exit = false;
bool used = false;
while (!exit) {
unsigned char* ptr;
unsigned char buf[32];
int w, h;
if ( used ) {
unsigned char* ptr;
unsigned char buf[32];
int w, h;
lcd_clear_display();
lcd_setfont(FONT_SYSFIXED);
lcd_clear_display();
lcd_setfont(FONT_SYSFIXED);
/* UP: +0.1% */
ptr = "+0.1%";
lcd_getstringsize(ptr,&w,&h);
lcd_putsxy((LCD_WIDTH-w)/2, 0, ptr);
lcd_mono_bitmap(bitmap_icons_7x8[Icon_UpArrow],
LCD_WIDTH/2 - 3, h, 7, 8);
ptr = str(LANG_PITCH_UP);
lcd_getstringsize(ptr,&w,&h);
lcd_putsxy((LCD_WIDTH-w)/2, 0, ptr);
lcd_mono_bitmap(bitmap_icons_7x8[Icon_UpArrow],
LCD_WIDTH/2 - 3, h*2, 7, 8);
/* DOWN: -0.1% */
ptr = "-0.1%";
lcd_getstringsize(ptr,&w,&h);
lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr);
lcd_mono_bitmap(bitmap_icons_7x8[Icon_DownArrow],
LCD_WIDTH/2 - 3, LCD_HEIGHT - h*2, 7, 8);
snprintf((char *)buf, sizeof buf, "%d.%d%%",
pitch / 10, pitch % 10 );
lcd_getstringsize(buf,&w,&h);
lcd_putsxy((LCD_WIDTH-w)/2, h, buf);
/* RIGHT: +2% */
ptr = "+2%";
lcd_getstringsize(ptr,&w,&h);
lcd_putsxy(LCD_WIDTH-w, (LCD_HEIGHT-h)/2, ptr);
lcd_mono_bitmap(bitmap_icons_7x8[Icon_FastForward],
LCD_WIDTH-w-8, (LCD_HEIGHT-h)/2, 7, 8);
ptr = str(LANG_PITCH_DOWN);
lcd_getstringsize(ptr,&w,&h);
lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr);
lcd_mono_bitmap(bitmap_icons_7x8[Icon_DownArrow],
LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8);
/* LEFT: -2% */
ptr = "-2%";
lcd_getstringsize(ptr,&w,&h);
lcd_putsxy(0, (LCD_HEIGHT-h)/2, ptr);
lcd_mono_bitmap(bitmap_icons_7x8[Icon_FastBackward],
w+1, (LCD_HEIGHT-h)/2, 7, 8);
ptr = str(LANG_PAUSE);
lcd_getstringsize(ptr,&w,&h);
lcd_putsxy((LCD_WIDTH-(w/2))/2, LCD_HEIGHT/2 - h/2, ptr);
lcd_mono_bitmap(bitmap_icons_7x8[Icon_Pause],
(LCD_WIDTH-(w/2))/2-10, LCD_HEIGHT/2 - h/2, 7, 8);
/* "Pitch" */
snprintf((char *)buf, sizeof(buf), str(LANG_PITCH));
lcd_getstringsize(buf,&w,&h);
lcd_putsxy((LCD_WIDTH-w)/2, (LCD_HEIGHT/2)-h, buf);
/* "XX.X%" */
snprintf((char *)buf, sizeof(buf), "%d.%d%%",
pitch / 10, pitch % 10 );
lcd_getstringsize(buf,&w,&h);
lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT/2, buf);
lcd_update();
}
lcd_update();
/* use lastbutton, so the main loop can decide whether to
exit to browser or not */
button = button_get(true);
switch (button) {
case BUTTON_UP:
case BUTTON_ON | BUTTON_UP:
case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT:
used = true;
case PITCH_UP:
case PITCH_UP | BUTTON_REPEAT:
if ( pitch < 2000 )
pitch++;
sound_set_pitch(pitch);
break;
case BUTTON_DOWN:
case BUTTON_ON | BUTTON_DOWN:
case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT:
used = true;
case PITCH_DOWN:
case PITCH_DOWN | BUTTON_REPEAT:
if ( pitch > 500 )
pitch--;
sound_set_pitch(pitch);
break;
case BUTTON_ON | PITCH_PAUSE:
audio_pause();
used = true;
break;
case PITCH_PAUSE | BUTTON_REL:
audio_resume();
used = true;
break;
case BUTTON_ON | PITCH_PAUSE | BUTTON_REL:
audio_resume();
exit = true;
break;
case BUTTON_ON | BUTTON_RIGHT:
case BUTTON_LEFT | BUTTON_REL:
if ( pitch < 2000 ) {
case PITCH_RIGHT:
case PITCH_RIGHT | BUTTON_REPEAT:
if ( pitch < 1980 )
pitch += 20;
sound_set_pitch(pitch);
}
else
pitch = 2000;
sound_set_pitch(pitch);
break;
case BUTTON_ON | BUTTON_LEFT:
case BUTTON_RIGHT | BUTTON_REL:
if ( pitch > 500 ) {
case PITCH_LEFT:
case PITCH_LEFT | BUTTON_REPEAT:
if ( pitch > 520 )
pitch -= 20;
sound_set_pitch(pitch);
}
else
pitch = 500;
sound_set_pitch(pitch);
break;
#ifdef SIMULATOR
case BUTTON_ON:
#else
case BUTTON_ON | BUTTON_REL:
case BUTTON_ON | BUTTON_UP | BUTTON_REL:
case BUTTON_ON | BUTTON_DOWN | BUTTON_REL:
#endif
exit = true;
break;
case BUTTON_ON | BUTTON_REPEAT:
used = true;
break;
case BUTTON_ON | BUTTON_OFF:
case PITCH_RESET:
pitch = 1000;
sound_set_pitch( pitch );
break;
case PITCH_EXIT:
exit = true;
break;
default:
if(default_event_handler(button) == SYS_USB_CONNECTED)
return 2;
return 1;
break;
}
}
lcd_setfont(FONT_UI);
if ( used )
return 1;
else
return 0;
return 0;
}
#endif
#if (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IRIVER_H100_PAD) ||\

View file

@ -22,6 +22,30 @@
#include "config.h"
#include "timefuncs.h"
#if (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IRIVER_H100_PAD) ||\
(CONFIG_KEYPAD == IRIVER_H300_PAD) || (CONFIG_KEYPAD == ONDIO_PAD)
#define PITCH_UP BUTTON_UP
#define PITCH_DOWN BUTTON_DOWN
#define PITCH_RIGHT BUTTON_RIGHT
#define PITCH_LEFT BUTTON_LEFT
#define PITCH_EXIT BUTTON_OFF
#define PITCH_RESET BUTTON_ON
#elif (CONFIG_KEYPAD == ONDIO_PAD)
#define PITCH_UP BUTTON_UP
#define PITCH_DOWN BUTTON_DOWN
#define PITCH_RIGHT BUTTON_RIGHT
#define PITCH_LEFT BUTTON_LEFT
#define PITCH_EXIT BUTTON_OFF
#define PITCH_RESET BUTTON_MENU
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD)
#define PITCH_UP BUTTON_SCROLL_FWD
#define PITCH_DOWN BUTTON_SCROLL_BACK
#define PITCH_RIGHT BUTTON_RIGHT
#define PITCH_LEFT BUTTON_LEFT
#define PITCH_EXIT BUTTON_SELECT
#define PITCH_RESET BUTTON_MENU
#endif
struct screen;
void usb_display_info(struct screen * display);
@ -33,11 +57,9 @@ void charging_splash(void);
int mmc_remove_request(void);
#endif
#if CONFIG_KEYPAD == RECORDER_PAD || CONFIG_KEYPAD == IRIVER_H100_PAD \
|| CONFIG_KEYPAD == IRIVER_H300_PAD
int pitch_screen(void);
#endif
#if CONFIG_KEYPAD == RECORDER_PAD
bool pitch_screen(void);
#if CONFIG_KEYPAD == RECORDER_PAD
extern bool quick_screen_f3(int button_enter);
#endif
extern bool quick_screen_quick(int button_enter);