summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Heiner <jheiner@rockbox.org>2002-08-31 04:58:35 +0000
committerJustin Heiner <jheiner@rockbox.org>2002-08-31 04:58:35 +0000
commitb5025a8c40ada463ff2e0c0e1ec15328670b4fa8 (patch)
tree13803997be280176868a782bb9a6c415b9381690
parentae17b526ff69cfa3c02078cd5b6cfc1c6aa61de7 (diff)
downloadrockbox-b5025a8c40ada463ff2e0c0e1ec15328670b4fa8.tar.gz
rockbox-b5025a8c40ada463ff2e0c0e1ec15328670b4fa8.tar.bz2
rockbox-b5025a8c40ada463ff2e0c0e1ec15328670b4fa8.zip
USB Related:
Consolidated some more of the USB code in the WPS. Have backlight turn offf when USB Connected. menu.c: LINE_X was set wrong for player. settings_menu.c / wps-display.c: Added 1 Line ID3+. Has progress bar & Kbps. Renamed some of the WPS options to be more readable. wps.c / wps-display.c Fixed problem with FF/REW when 'Remaining Time' is on. Added %pb to the WPS mix. Player progress bar thingy. Thanks to whoever fixed my PLAYER_PROGRESS function :-) Changed how volume changes on player (works better now). General cleanup of Custom WPS code. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2091 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/menu.c6
-rw-r--r--apps/settings.c2
-rw-r--r--apps/settings_menu.c10
-rw-r--r--apps/tree.c5
-rw-r--r--apps/wps-display.c74
-rw-r--r--apps/wps-display.h4
-rw-r--r--apps/wps.c100
-rw-r--r--apps/wps.h1
8 files changed, 117 insertions, 85 deletions
diff --git a/apps/menu.c b/apps/menu.c
index f0c793a780..1940c379bc 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -17,7 +17,9 @@
*
****************************************************************************/
#include <stdbool.h>
+
#include "lcd.h"
+#include "backlight.h"
#include "menu.h"
#include "button.h"
#include "kernel.h"
@@ -69,7 +71,7 @@ struct menu {
#else /* HAVE_LCD_BITMAP */
-#define LINE_X 0 /* X position the entry-list starts at */
+#define LINE_X 1 /* X position the entry-list starts at */
#define MENU_LINES 2
@@ -331,8 +333,10 @@ Menu menu_run(int m)
#ifdef HAVE_LCD_BITMAP
laststate = statusbar(false);
#endif
+ backlight_time(4);
usb_acknowledge(SYS_USB_CONNECTED_ACK);
usb_wait_for_disconnect(&button_queue);
+ backlight_time(global_settings.backlight);
#ifdef HAVE_LCD_BITMAP
statusbar(laststate);
#else
diff --git a/apps/settings.c b/apps/settings.c
index e7cc38dc9f..2926b6a175 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -26,6 +26,8 @@
#include "panic.h"
#include "debug.h"
#include "button.h"
+#include "usb.h"
+#include "backlight.h"
#include "lcd.h"
#include "mpeg.h"
#include "string.h"
diff --git a/apps/settings_menu.c b/apps/settings_menu.c
index 0d25fc944e..22468b642e 100644
--- a/apps/settings_menu.c
+++ b/apps/settings_menu.c
@@ -21,13 +21,13 @@
#include <stdio.h>
#include <stdbool.h>
+
#include "lcd.h"
#include "menu.h"
#include "mpeg.h"
#include "button.h"
#include "kernel.h"
#include "sprintf.h"
-
#include "settings.h"
#include "settings_menu.h"
#include "backlight.h"
@@ -97,12 +97,12 @@ static Menu scroll_speed(void)
static Menu wps_set(void)
{
#ifdef HAVE_LCD_BITMAP
- char* names[] = { "ID3 Tags ", "File ", "Parse ", "Custom WPS " };
+ char* names[] = { "ID3 Tags ", "Filename ", "Dir Parse ", "Custom WPS " };
set_option("[WPS display]", &global_settings.wps_display, names, 4 );
#else
- char* names[] = { "1 Line ID3", "2 Line ID3", "File ",
- "Parse ", "Custom WPS " };
- set_option("[WPS display]", &global_settings.wps_display, names, 5 );
+ char* names[] = { "1 Line ID3 ", "1 Line ID3+", "2 Line ID3 ", "Filename ",
+ "Dir Parse ", "Custom WPS " };
+ set_option("[WPS display]", &global_settings.wps_display, names, 6 );
#endif
return MENU_OK;
}
diff --git a/apps/tree.c b/apps/tree.c
index 7c4d0e62e3..6dbf55046a 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -26,6 +26,7 @@
#include "dir.h"
#include "file.h"
#include "lcd.h"
+#include "backlight.h"
#include "button.h"
#include "kernel.h"
#include "usb.h"
@@ -731,12 +732,16 @@ bool dirbrowse(char *root)
#ifdef HAVE_LCD_BITMAP
bool laststate=statusbar(false);
#endif
+ backlight_time(4);
+
/* Tell the USB thread that we are safe */
DEBUGF("dirbrowse 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);
+
+ backlight_time(global_settings.backlight);
/* Force a re-read of the root directory */
restore = true;
diff --git a/apps/wps-display.c b/apps/wps-display.c
index 0925a3e936..e8156cfcbf 100644
--- a/apps/wps-display.c
+++ b/apps/wps-display.c
@@ -47,10 +47,11 @@
#define PLAY_DISPLAY_CUSTOM_WPS 3
#else
#define PLAY_DISPLAY_1LINEID3 0
- #define PLAY_DISPLAY_2LINEID3 1
- #define PLAY_DISPLAY_FILENAME_SCROLL 2
- #define PLAY_DISPLAY_TRACK_TITLE 3
- #define PLAY_DISPLAY_CUSTOM_WPS 4
+ #define PLAY_DISPLAY_1LINEID3_PLUS 1
+ #define PLAY_DISPLAY_2LINEID3 2
+ #define PLAY_DISPLAY_FILENAME_SCROLL 3
+ #define PLAY_DISPLAY_TRACK_TITLE 4
+ #define PLAY_DISPLAY_CUSTOM_WPS 5
#endif
#define LINE_LEN 64
@@ -60,6 +61,7 @@ static char custom_wps[5][LINE_LEN];
static char display[5][LINE_LEN];
static int scroll_line;
static int scroll_line_custom;
+bool wps_time_countup = true;
static bool load_custom_wps(void)
{
@@ -232,6 +234,12 @@ static bool display_custom_wps( struct mp3entry* id3,
switch(cchr3)
{
+#ifdef HAVE_LCD_CHARCELLS
+ case 'b': /* Progress Bar (PLAYER ONLY)*/
+ draw_player_progress(id3, ff_rewind_count);
+ snprintf(buf, LINE_LEN, "\x01");
+ break;
+#endif
case 'p': /* Playlist Position */
snprintf(buf, LINE_LEN, "%d", id3->index + 1);
break;
@@ -245,6 +253,7 @@ static bool display_custom_wps( struct mp3entry* id3,
snprintf(buf, LINE_LEN, "%d:%02d",
i / 60000,
i % 60000 / 1000);
+ wps_time_countup = true;
break;
case 'r': /* Remaining Time in Song */
@@ -252,6 +261,7 @@ static bool display_custom_wps( struct mp3entry* id3,
snprintf(buf, LINE_LEN, "%d:%02d",
i / 60000,
i % 60000 / 1000 );
+ wps_time_countup = false;
break;
case 't': /* Total Time */
@@ -367,9 +377,8 @@ bool wps_refresh(struct mp3entry* id3, int ffwd_offset, bool refresh_scroll)
scroll_line = scroll_line_custom;
if (scroll_line != l)
display_custom_wps(id3, 0, l, false, custom_wps[l]);
- else
- if (refresh_scroll)
- display_custom_wps(id3, 0, l, true, custom_wps[l]);
+ if (scroll_line == l && refresh_scroll)
+ display_custom_wps(id3, 0, l, true, custom_wps[l]);
}
else
{
@@ -390,11 +399,6 @@ bool wps_refresh(struct mp3entry* id3, int ffwd_offset, bool refresh_scroll)
slidebar(0, LCD_HEIGHT-6, LCD_WIDTH, 6, id3->elapsed*100/id3->length, Grow_Right);
lcd_update();
#endif
-#ifdef PLAYER_PROGRESS
-#ifdef HAVE_LCD_CHARCELLS
- draw_player_progress(10,1,id3);
-#endif
-#endif
return true;
}
@@ -466,7 +470,6 @@ void wps_display(struct mp3entry* id3)
for (tmpcnt=2;tmpcnt<=5;tmpcnt++)
display[tmpcnt][0] = 0;
scroll_line = 0;
- wps_refresh(id3,0,false);
break;
}
case PLAY_DISPLAY_FILENAME_SCROLL:
@@ -476,7 +479,6 @@ void wps_display(struct mp3entry* id3)
snprintf(display[1], sizeof display[1], "%s", "%pc/%pt");
#endif
scroll_line = 0;
- wps_refresh(id3,0,false);
break;
}
case PLAY_DISPLAY_2LINEID3:
@@ -506,12 +508,10 @@ void wps_display(struct mp3entry* id3)
strncpy(display[l++], "%fb kbit %ffHz", LINE_LEN);
}
scroll_line = 0;
- wps_refresh(id3,0,false);
#else
strncpy(display[0], "%ia", LINE_LEN);
strncpy(display[1], "%it", LINE_LEN);
scroll_line = 1;
- wps_refresh(id3,0,false);
#endif
break;
}
@@ -521,7 +521,13 @@ void wps_display(struct mp3entry* id3)
strncpy(display[0], "%pp/%pe: %fc", LINE_LEN);
strncpy(display[1], "%pc/%pt", LINE_LEN);
scroll_line = 0;
- wps_refresh(id3,0,false);
+ break;
+ }
+ case PLAY_DISPLAY_1LINEID3_PLUS:
+ {
+ strncpy(display[0], "%pp/%pe: %fc", LINE_LEN);
+ strncpy(display[1], "%pr%pb%fbkps", LINE_LEN);
+ scroll_line = 0;
break;
}
#endif
@@ -532,51 +538,41 @@ void wps_display(struct mp3entry* id3)
strncpy(display[0], "Couldn't Load Custom WPS", LINE_LEN);
strncpy(display[1], "%pc/%pt", LINE_LEN);
}
- wps_refresh(id3,0,false);
break;
}
}
}
+ wps_refresh(id3,0,false);
status_draw();
lcd_update();
}
-#ifdef PLAYER_PROGRESS
-/*static int bin2int(char *input, int size)
-{
- int result=0;
- while(size--) {
- result <<= 1;
- result += (*input++ - '0');
- }
- return result;
-}
-*/
#ifdef HAVE_LCD_CHARCELLS
-void draw_player_progress(int x, int y, struct mp3entry* id3)
+bool draw_player_progress(struct mp3entry* id3, int ff_rewwind_count)
{
+ if(!id3)
+ return(false);
char player_progressbar[7];
char binline[36];
int songpos = 0;
int i,j;
- memset(binline, 0, sizeof binline);
- memset(player_progressbar, 0, sizeof player_progressbar);
- songpos = (id3->elapsed * 36) / id3->length;
-
+ memset(binline, 1, sizeof binline);
+ memset(player_progressbar, 1, sizeof player_progressbar);
+ if(wps_time_countup == false)
+ songpos = ((id3->elapsed - ff_rewwind_count) * 36) / id3->length;
+ else
+ songpos = ((id3->elapsed + ff_rewwind_count) * 36) / id3->length;
for (i=0; i < songpos; i++)
- binline[i] = 1;
+ binline[i] = 0;
for (i=0; i<=6; i++) {
for (j=0;j<5;j++) {
player_progressbar[i] <<= 1;
player_progressbar[i] += binline[i*5+j];
}
- /* player_progressbar[i] = bin2int(binline+(i*5),4); */
}
-
lcd_define_pattern(8,player_progressbar,7);
- lcd_puts(x,y,"\x01");
+ return(true);
}
#endif
-#endif
diff --git a/apps/wps-display.h b/apps/wps-display.h
index 2f5dc30453..932970d997 100644
--- a/apps/wps-display.h
+++ b/apps/wps-display.h
@@ -25,10 +25,8 @@
bool wps_refresh(struct mp3entry* id3, int ffwd_offset, bool refresh_scroll);
void wps_display(struct mp3entry* id3);
-#ifdef PLAYER_PROGRESS
#ifdef HAVE_LCD_CHARCELLS
-void draw_player_progress(int x, int y, struct mp3entry* id3);
-#endif
+bool draw_player_progress(struct mp3entry* id3, int ff_rewind_count);
#endif
#endif
diff --git a/apps/wps.c b/apps/wps.c
index 5115b79d81..b95931337a 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -22,6 +22,7 @@
#include "file.h"
#include "lcd.h"
+#include "backlight.h"
#include "button.h"
#include "kernel.h"
#include "tree.h"
@@ -59,23 +60,56 @@ static bool paused = false;
static struct mp3entry* id3 = NULL;
static int old_release_mask;
-
-void display_volume_level(int vol_level)
+#ifdef HAVE_PLAYER_KEYPAD
+void player_change_volume(void)
{
+ int button;
+ bool fun_done = false;
char buffer[32];
lcd_stop_scroll();
- snprintf(buffer,sizeof(buffer),"Vol: %d %% ", vol_level * 2);
+ while(!fun_done)
+ {
+ snprintf(buffer,sizeof(buffer),"Vol: %d %% ", global_settings.volume * 2);
#ifdef HAVE_LCD_CHARCELLS
- lcd_puts(0, 0, buffer);
+ lcd_puts(0, 0, buffer);
#else
- lcd_puts(2, 3, buffer);
- lcd_update();
+ lcd_puts(2, 3, buffer);
+ lcd_update();
#endif
- sleep(HZ/6);
+ button = button_get(false);
+ switch(button)
+ {
+ case BUTTON_MENU | BUTTON_RIGHT:
+ case BUTTON_MENU | BUTTON_RIGHT | BUTTON_REPEAT:
+ 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);
+ wps_refresh(id3,0,false);
+ settings_save();
+ break;
+ case BUTTON_MENU | BUTTON_LEFT:
+ case BUTTON_MENU | BUTTON_LEFT | BUTTON_REPEAT:
+ 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);
+ wps_refresh(id3,0,false);
+ settings_save();
+ break;
+ case BUTTON_MENU | BUTTON_REL:
+ fun_done = true;
+ break;
+ }
+ yield();
+ }
+ status_draw();
+ wps_refresh(id3,0,true);
}
+#endif
void display_keylock_text(bool locked)
{
@@ -133,6 +167,9 @@ static void handle_usb(void)
#ifdef HAVE_LCD_BITMAP
bool laststate=statusbar(false);
#endif
+
+ backlight_time(4);
+
/* Tell the USB thread that we are safe */
DEBUGF("wps got SYS_USB_CONNECTED\n");
usb_acknowledge(SYS_USB_CONNECTED_ACK);
@@ -140,6 +177,8 @@ static void handle_usb(void)
/* Wait until the USB cable is extracted again */
usb_wait_for_disconnect(&button_queue);
+ backlight_time(global_settings.backlight);
+
#ifdef HAVE_LCD_BITMAP
statusbar(laststate);
#endif
@@ -195,14 +234,7 @@ int player_id3_show(void)
#ifndef SIMULATOR
case SYS_USB_CONNECTED:
- /* 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);
-
- /* Signal to our caller that we have been in USB mode */
+ handle_usb();
return SYS_USB_CONNECTED;
break;
#endif
@@ -316,7 +348,10 @@ static bool ffwd_rew(int button)
if ((int)(id3->elapsed + ff_rewind_count) < 0)
ff_rewind_count = -id3->elapsed;
- wps_refresh(id3, ff_rewind_count, false);
+ if(wps_time_countup == false)
+ wps_refresh(id3, -ff_rewind_count, false);
+ else
+ wps_refresh(id3, ff_rewind_count, false);
break;
case BUTTON_RIGHT | BUTTON_REPEAT:
@@ -360,7 +395,10 @@ static bool ffwd_rew(int button)
if ((id3->elapsed + ff_rewind_count) > id3->length)
ff_rewind_count = id3->length - id3->elapsed;
- wps_refresh(id3, ff_rewind_count, false);
+ if(wps_time_countup == false)
+ wps_refresh(id3, -ff_rewind_count, false);
+ else
+ wps_refresh(id3, ff_rewind_count, false);
break;
case BUTTON_LEFT | BUTTON_REL:
@@ -524,10 +562,10 @@ static bool menu(void)
button_set_release(old_release_mask);
main_menu();
#ifdef HAVE_LCD_BITMAP
- if(global_settings.statusbar)
- lcd_setmargins(0, STATUSBAR_HEIGHT);
- else
- lcd_setmargins(0, 0);
+ if(global_settings.statusbar)
+ lcd_setmargins(0, STATUSBAR_HEIGHT);
+ else
+ lcd_setmargins(0, 0);
#endif
old_release_mask = button_set_release(RELEASE_MASK);
}
@@ -565,27 +603,15 @@ static bool menu(void)
/* change volume */
case BUTTON_MENU | BUTTON_LEFT:
case BUTTON_MENU | BUTTON_LEFT | BUTTON_REPEAT:
- 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);
- display_volume_level(global_settings.volume);
- wps_display(id3);
- status_draw();
- settings_save();
+ player_change_volume();
+ exit = true;
break;
/* change volume */
case BUTTON_MENU | BUTTON_RIGHT:
case BUTTON_MENU | BUTTON_RIGHT | BUTTON_REPEAT:
- 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);
- display_volume_level(global_settings.volume);
- wps_display(id3);
- status_draw();
- settings_save();
+ player_change_volume();
+ exit = true;
break;
/* show id3 tags */
diff --git a/apps/wps.h b/apps/wps.h
index 634ae4ea0b..81435b532f 100644
--- a/apps/wps.h
+++ b/apps/wps.h
@@ -22,6 +22,7 @@
#include "playlist.h"
extern bool keys_locked;
+extern bool wps_time_countup;
int wps_show(void);