Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Rockbox mail archive

Subject: [PATCH] WPS modification
From: Brian King (brking_at_charter.net)
Date: 2002-08-01


I made a small modification to the WPS code. I usually have WPS set to
display id3 info, but I have a few songs that do not have valid id3 info
in them. So I made a patch that will use directory/filename to display
on the screen if there are no valid id3 tags. I also modified the
directory parsing code so that both

Genre/Artist/Album/Mp3_file

and

Artist/Album/Mp3_file

directory formats should work and display the proper artist/title.

This patch will only affect the Jukebox, but I'm sure it would be easy
enough to add to it to give the recorder the same behavior.

-bk

Index: wps.c
===================================================================
RCS file: /cvsroot/rockbox/apps/wps.c,v
retrieving revision 1.44
diff -u -r1.44 wps.c
--- wps.c 29 Jul 2002 09:08:38 -0000 1.44
+++ wps.c 1 Aug 2002 01:50:54 -0000
@@ -47,6 +47,49 @@
 #define RELEASE_MASK (BUTTON_MENU | BUTTON_STOP)
 #endif
 
+static void display_track_title(struct mp3entry* id3, char *artist, char *title)
+{
+ char ch = '/';
+ char* end;
+ char* szTok;
+ char* szDelimit;
+ char* szPeriod;
+ char szArtist[26];
+ char szBuff[257];
+ int i;
+ szBuff[sizeof(szBuff)-1] = 0;
+
+ strncpy(szBuff, id3->path, sizeof(szBuff));
+
+ for (i=0, szTok = strchr(szBuff, '/'); szTok; i++)
+ szTok = strchr(szTok+1, '/');
+
+ szTok = strtok_r(szBuff, "/", &end);
+
+ if (i > 3)
+ szTok = strtok_r(NULL, "/", &end);
+
+ // Assume path format of: Genre/Artist/Album/Mp3_file
+ strncpy(szArtist,szTok,sizeof(szArtist));
+ szArtist[sizeof(szArtist)-1] = 0;
+ szDelimit = strrchr(id3->path, ch);
+
+ if (artist)
+ lcd_puts(0, 0, artist);
+ else
+ lcd_puts(0,0, szArtist?szArtist:"<nothing>");
+
+ // removes the .mp3 from the end of the display buffer
+ szPeriod = strrchr(szDelimit, '.');
+ if (szPeriod != NULL)
+ *szPeriod = 0;
+
+ if (title)
+ lcd_puts_scroll(0, LINE_Y, id3->title);
+ else
+ lcd_puts_scroll(0,LINE_Y,(++szDelimit));
+}
+
 static void draw_screen(struct mp3entry* id3)
 {
     lcd_clear_display();
@@ -65,32 +108,7 @@
         switch ( global_settings.wps_display ) {
             case PLAY_DISPLAY_TRACK_TITLE:
             {
- char ch = '/';
- char* end;
- char* szTok;
- char* szDelimit;
- char* szPeriod;
- char szArtist[26];
- char szBuff[257];
- szBuff[sizeof(szBuff)-1] = 0;
-
- strncpy(szBuff, id3->path, sizeof(szBuff));
-
- szTok = strtok_r(szBuff, "/", &end);
- szTok = strtok_r(NULL, "/", &end);
-
- // Assume path format of: Genre/Artist/Album/Mp3_file
- strncpy(szArtist,szTok,sizeof(szArtist));
- szArtist[sizeof(szArtist)-1] = 0;
- szDelimit = strrchr(id3->path, ch);
- lcd_puts(0,0, szArtist?szArtist:"<nothing>");
-
- // removes the .mp3 from the end of the display buffer
- szPeriod = strrchr(szDelimit, '.');
- if (szPeriod != NULL)
- *szPeriod = 0;
-
- lcd_puts_scroll(0,LINE_Y,(++szDelimit));
+ display_track_title(id3, NULL, NULL);
                 break;
             }
             case PLAY_DISPLAY_FILENAME_SCROLL:
@@ -126,9 +144,12 @@
                 snprintf(buffer,sizeof(buffer), "%d Hz", id3->frequency);
                 lcd_puts(0, l++, buffer);
 #else
-
- lcd_puts(0, l++, id3->artist?id3->artist:"<no artist>");
- lcd_puts_scroll(0, l++, id3->title?id3->title:"<no title>");
+ if (!id3->artist || !id3->title)
+ display_track_title(id3, id3->artist, id3->title);
+ else {
+ lcd_puts(0, l++, id3->artist);
+ lcd_puts_scroll(0, l++, id3->title);
+ }
 #endif
                 break;
             }



Page was last modified "Jan 10 2012" The Rockbox Crew
aaa