summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Heiner <jheiner@rockbox.org>2002-08-27 01:05:19 +0000
committerJustin Heiner <jheiner@rockbox.org>2002-08-27 01:05:19 +0000
commita7a46c70ddec4930945b7ebb484b379952962a0b (patch)
treee2b8074e75f7dd99f45c376e4d386a0f129816d5
parent0dbcb43620ca106b2d6ec44c798208653acf38dc (diff)
downloadrockbox-a7a46c70ddec4930945b7ebb484b379952962a0b.zip
rockbox-a7a46c70ddec4930945b7ebb484b379952962a0b.tar.gz
rockbox-a7a46c70ddec4930945b7ebb484b379952962a0b.tar.bz2
rockbox-a7a46c70ddec4930945b7ebb484b379952962a0b.tar.xz
Update to CUSTOM_WPS. Now has an If/Else ability. Also updated the docs
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1990 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/wps.c65
-rw-r--r--docs/CUSTOM_WPS_FORMAT101
2 files changed, 125 insertions, 41 deletions
diff --git a/apps/wps.c b/apps/wps.c
index 571b356..55aa531 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -73,7 +73,6 @@ static char custom_wps[64];
static void draw_screen(struct mp3entry* id3)
{
-
int font_height;
#ifdef LOADABLE_FONTS
unsigned char *font = lcd_getcurrentldfont();
@@ -96,13 +95,16 @@ static void draw_screen(struct mp3entry* id3)
else
{
#ifdef CUSTOM_WPS
+#ifdef HAVE_LCD_CHARCELLS
static int last_wps = -1;
- if ( last_wps != global_settings.wps_display &&
- global_settings.wps_display == PLAY_DISPLAY_CUSTOM_WPS ) {
+ if ((last_wps != global_settings.wps_display
+ && global_settings.wps_display == PLAY_DISPLAY_CUSTOM_WPS))
+ {
load_custom_wps();
last_wps = global_settings.wps_display;
}
#endif
+#endif
switch ( global_settings.wps_display ) {
case PLAY_DISPLAY_TRACK_TITLE:
{
@@ -266,6 +268,11 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string)
{
char buffer[128];
char tmpbuf[64];
+ int con_flag = 0; /* (0)Not inside of if/else
+ (1)Inside of If
+ (2)Inside of Else */
+ char con_if[64];
+ char con_else[64];
char cchr1;
char cchr2;
char cchr3;
@@ -384,11 +391,53 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string)
case '%': /* Displays % */
snprintf(tmpbuf, sizeof(tmpbuf), "%%");
break;
+ case '?': /* Conditional Display of ID3/File */
+ switch(con_flag)
+ {
+ case 0:
+ con_if[0] = 0;
+ con_else[0] = 0;
+ con_flag = 1;
+ break;
+ default:
+ if(id3->artist && id3->title)
+ snprintf(tmpbuf, sizeof(tmpbuf), "%s", con_if);
+ else
+ snprintf(tmpbuf, sizeof(tmpbuf), "%s", con_else);
+ con_flag = 0;
+ break;
+ }
+ break;
+ case ':': /* Seperator for Conditional ID3/File Display */
+ con_flag = 2;
+ break;
+ }
+ switch(con_flag)
+ {
+ case 0:
+ snprintf(buffer, sizeof(buffer), "%s%s", buffer, tmpbuf);
+ break;
+ case 1:
+ snprintf(con_if, sizeof(con_if), "%s%s", con_if, tmpbuf);
+ break;
+ case 2:
+ snprintf(con_else, sizeof(con_else), "%s%s", con_else, tmpbuf);
+ break;
}
- snprintf(buffer, sizeof(buffer), "%s%s", buffer, tmpbuf);
break;
default:
- snprintf(buffer, sizeof(buffer), "%s%c", buffer, cchr1);
+ switch(con_flag)
+ {
+ case 0:
+ snprintf(buffer, sizeof(buffer), "%s%c", buffer, cchr1);
+ break;
+ case 1:
+ snprintf(con_if, sizeof(con_if), "%s%c", con_if, cchr1);
+ break;
+ case 2:
+ snprintf(con_else, sizeof(con_else), "%s%c", con_else, cchr1);
+ break;
+ }
break;
}
if(seek >= strlen(wps_string))
@@ -474,17 +523,17 @@ int player_id3_show(void)
case 0:
lcd_puts(0, 0, "Title");
snprintf(scroll_text,sizeof(scroll_text), "%s",
- id3->title);
+ id3->title?id3->title:"<no title>");
break;
case 1:
lcd_puts(0, 0, "Artist");
snprintf(scroll_text,sizeof(scroll_text), "%s",
- id3->artist);
+ id3->artist?id3->artist:"<no artist>");
break;
case 2:
lcd_puts(0, 0, "Album");
snprintf(scroll_text,sizeof(scroll_text), "%s",
- id3->album);
+ id3->album?id3->album:"<no album>");
break;
case 3:
lcd_puts(0, 0, "Length");
diff --git a/docs/CUSTOM_WPS_FORMAT b/docs/CUSTOM_WPS_FORMAT
index d9461f9..916c988 100644
--- a/docs/CUSTOM_WPS_FORMAT
+++ b/docs/CUSTOM_WPS_FORMAT
@@ -1,46 +1,78 @@
Custom WPS Display
wps.config File Format Specifications
-Description
------------
-The Custom WPS Display is used on the Rockbox Player ONLY as a means
-to customize the WPS to the user's likings.
-The first line of the 2 line display is the customized line (scrolling).
-The second line is always the time display. (Elapsed & Total Time).
-The second line is not able to be customized.
-All characters not preceded by % are displayed as typed.
+
+Description / General Info
+--------------------------
+* The Custom WPS Display is used on the Rockbox Player ONLY, as a means
+ to customize the WPS to the user's likings.
+* Plans to implement this feature into the recorder are in progress.
+* The first line of the 2 line display is the customized line (scrolling).
+* The second line is always the time display. (Elapsed & Total Time).
+* The second line is not able to be customized.
+* Any CR's, LF's, or CR/LF's (Commonly known as Newline/Return/Enter) in
+ the wps.config file will be treated as spaces. IE: Don't use them.
+* After editing the wps.config file, you may need to reboot your Rockbox.
+* All tags except for %%, %?, and %: contain 3 characters (%xx). Remember
+ to type the tags correctly, or you will get unexpected output, or even
+ possibly no output at all.
+* All characters not preceded by % are displayed as typed.
+
File Location
-------------
The configuration file must be located in the root folder of the
device and must be named wps.config (lowercase)
+
Tags
----
-%t : ID3 Title
-%a : ID3 Artist
-%n : ID3 Track Number
-%u : ID3 Album
-%c : Conditional Title/Filename
- Displays "Artist - Title" *or*
- Displays Filename if no ID3 Artist/Title
-%h : Conditional Title/Filename
- Displays "Title - Artist" *or*
- Displays Filename if no ID3 Artist/Title
-%b : File Bitrate
-%f : File Frequency
-%p : File Path
-%m : File Name
-%s : File Size (In Kilobytes)
-%i : Playlist Position
-%l : Playlist Total Entries
-%e : Elapsed Track Time
-%o : Total Track Time
-%% : Displays a %
-
-Example wps.config File
+ID3 Info Tags:
+ %it : ID3 Title
+ %ia : ID3 Artist
+ %in : ID3 Track Number
+ %id : ID3 Album
+File Info Tags:
+ %fc : Conditional Title/Filename
+ Displays "Artist - Title" *or*
+ Displays Filename if no ID3 Artist/Title
+ %fd : Conditional Title/Filename
+ Displays "Title - Artist" *or*
+ Displays Filename if no ID3 Artist/Title
+ %fb : File Bitrate
+ %ff : File Frequency
+ %fp : File Path
+ %fn : File Name
+ %fs : File Size (In Kilobytes)
+Playlist/Song Info Tags:
+ %pp : Playlist Position
+ %pe : Playlist Total Entries
+ %pc : Current Time In Song
+ %pt : Total Track Time
+Other Tags:
+ %% : Displays a %
+Conditional ID3/File Tags (If/Else block):
+ The following two tags are completely optional, and meant only for those
+ that wish to go crazy with customization. It lets you specify what to
+ do when it finds an ID3 tag, and also when it doesn't find one. It can
+ be placed anywhere within the wps.config file.
+ The first condition of the If/Else block is what to do when it DOES find
+ valid ID3 tags. The second condition is what to do when there are no
+ valid ID3 tags available.
+ %? : Start/End an If/Else block
+ %: : Seperator between If and Else
+ Example:
+ To display "Title - Artist" if there is ID3 available, or "Filename"
+ if there is no ID3, the following string would be used:
+ %?%it - %ia%:%fn%?
+ Yes, you are not going crazy (although I may be)... This *IS* more
+ confusing then Perl :-)
+
+
+Example wps.config File (Without If/Else)
-----------------------
-%i/%l: %c * %sKB
+%pp/%pe: %fc * %fsKB
+
Example Output
--------------
@@ -53,5 +85,8 @@ File Size: 3500
Elapsed Track Time: 2:23
Total Track Time: 3:01
The output of this on the player would be:
-5/10: My Song.mp3 * 3500KB
-2:23/3:01
+ ---------------------------
+| 5/10: My Song.mp3 * 3500KB|
+| 2:23/3:01 |
+ ---------------------------
+Of course, the whole first line wouldn't fit, so it scrolls it.