summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/wps.c65
1 files changed, 57 insertions, 8 deletions
diff --git a/apps/wps.c b/apps/wps.c
index 571b35675d..55aa531ea7 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -73,7 +73,6 @@ static char custom_wps[64];
73 73
74static void draw_screen(struct mp3entry* id3) 74static void draw_screen(struct mp3entry* id3)
75{ 75{
76
77 int font_height; 76 int font_height;
78#ifdef LOADABLE_FONTS 77#ifdef LOADABLE_FONTS
79 unsigned char *font = lcd_getcurrentldfont(); 78 unsigned char *font = lcd_getcurrentldfont();
@@ -96,13 +95,16 @@ static void draw_screen(struct mp3entry* id3)
96 else 95 else
97 { 96 {
98#ifdef CUSTOM_WPS 97#ifdef CUSTOM_WPS
98#ifdef HAVE_LCD_CHARCELLS
99 static int last_wps = -1; 99 static int last_wps = -1;
100 if ( last_wps != global_settings.wps_display && 100 if ((last_wps != global_settings.wps_display
101 global_settings.wps_display == PLAY_DISPLAY_CUSTOM_WPS ) { 101 && global_settings.wps_display == PLAY_DISPLAY_CUSTOM_WPS))
102 {
102 load_custom_wps(); 103 load_custom_wps();
103 last_wps = global_settings.wps_display; 104 last_wps = global_settings.wps_display;
104 } 105 }
105#endif 106#endif
107#endif
106 switch ( global_settings.wps_display ) { 108 switch ( global_settings.wps_display ) {
107 case PLAY_DISPLAY_TRACK_TITLE: 109 case PLAY_DISPLAY_TRACK_TITLE:
108 { 110 {
@@ -266,6 +268,11 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string)
266{ 268{
267 char buffer[128]; 269 char buffer[128];
268 char tmpbuf[64]; 270 char tmpbuf[64];
271 int con_flag = 0; /* (0)Not inside of if/else
272 (1)Inside of If
273 (2)Inside of Else */
274 char con_if[64];
275 char con_else[64];
269 char cchr1; 276 char cchr1;
270 char cchr2; 277 char cchr2;
271 char cchr3; 278 char cchr3;
@@ -384,11 +391,53 @@ bool display_custom_wps(int x_val, int y_val, bool do_scroll, char *wps_string)
384 case '%': /* Displays % */ 391 case '%': /* Displays % */
385 snprintf(tmpbuf, sizeof(tmpbuf), "%%"); 392 snprintf(tmpbuf, sizeof(tmpbuf), "%%");
386 break; 393 break;
394 case '?': /* Conditional Display of ID3/File */
395 switch(con_flag)
396 {
397 case 0:
398 con_if[0] = 0;
399 con_else[0] = 0;
400 con_flag = 1;
401 break;
402 default:
403 if(id3->artist && id3->title)
404 snprintf(tmpbuf, sizeof(tmpbuf), "%s", con_if);
405 else
406 snprintf(tmpbuf, sizeof(tmpbuf), "%s", con_else);
407 con_flag = 0;
408 break;
409 }
410 break;
411 case ':': /* Seperator for Conditional ID3/File Display */
412 con_flag = 2;
413 break;
414 }
415 switch(con_flag)
416 {
417 case 0:
418 snprintf(buffer, sizeof(buffer), "%s%s", buffer, tmpbuf);
419 break;
420 case 1:
421 snprintf(con_if, sizeof(con_if), "%s%s", con_if, tmpbuf);
422 break;
423 case 2:
424 snprintf(con_else, sizeof(con_else), "%s%s", con_else, tmpbuf);
425 break;
387 } 426 }
388 snprintf(buffer, sizeof(buffer), "%s%s", buffer, tmpbuf);
389 break; 427 break;
390 default: 428 default:
391 snprintf(buffer, sizeof(buffer), "%s%c", buffer, cchr1); 429 switch(con_flag)
430 {
431 case 0:
432 snprintf(buffer, sizeof(buffer), "%s%c", buffer, cchr1);
433 break;
434 case 1:
435 snprintf(con_if, sizeof(con_if), "%s%c", con_if, cchr1);
436 break;
437 case 2:
438 snprintf(con_else, sizeof(con_else), "%s%c", con_else, cchr1);
439 break;
440 }
392 break; 441 break;
393 } 442 }
394 if(seek >= strlen(wps_string)) 443 if(seek >= strlen(wps_string))
@@ -474,17 +523,17 @@ int player_id3_show(void)
474 case 0: 523 case 0:
475 lcd_puts(0, 0, "Title"); 524 lcd_puts(0, 0, "Title");
476 snprintf(scroll_text,sizeof(scroll_text), "%s", 525 snprintf(scroll_text,sizeof(scroll_text), "%s",
477 id3->title); 526 id3->title?id3->title:"<no title>");
478 break; 527 break;
479 case 1: 528 case 1:
480 lcd_puts(0, 0, "Artist"); 529 lcd_puts(0, 0, "Artist");
481 snprintf(scroll_text,sizeof(scroll_text), "%s", 530 snprintf(scroll_text,sizeof(scroll_text), "%s",
482 id3->artist); 531 id3->artist?id3->artist:"<no artist>");
483 break; 532 break;
484 case 2: 533 case 2:
485 lcd_puts(0, 0, "Album"); 534 lcd_puts(0, 0, "Album");
486 snprintf(scroll_text,sizeof(scroll_text), "%s", 535 snprintf(scroll_text,sizeof(scroll_text), "%s",
487 id3->album); 536 id3->album?id3->album:"<no album>");
488 break; 537 break;
489 case 3: 538 case 3:
490 lcd_puts(0, 0, "Length"); 539 lcd_puts(0, 0, "Length");