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
This commit is contained in:
Justin Heiner 2002-08-27 01:05:19 +00:00
parent 0dbcb43620
commit a7a46c70dd
2 changed files with 124 additions and 40 deletions

View file

@ -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,12 +95,15 @@ 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");

View file

@ -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 %
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
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.