summaryrefslogtreecommitdiff
path: root/apps/gui
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui')
-rw-r--r--apps/gui/gwps-common.c52
-rw-r--r--apps/gui/gwps.c55
-rw-r--r--apps/gui/gwps.h4
3 files changed, 37 insertions, 74 deletions
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c
index 349c92b9a0..5ab6ce8c82 100644
--- a/apps/gui/gwps-common.c
+++ b/apps/gui/gwps-common.c
@@ -146,44 +146,31 @@ bool wps_data_preload_tags(struct wps_data *data, char *buf,
146 case 'X': 146 case 'X':
147 /* Backdrop image - must be the same size as the LCD */ 147 /* Backdrop image - must be the same size as the LCD */
148 { 148 {
149 int ret = 0;
150 struct bitmap bm;
151 char *ptr = buf+2; 149 char *ptr = buf+2;
152 char *pos = NULL; 150 char *pos = NULL;
153 char imgname[MAX_PATH]; 151 char imgname[MAX_PATH];
154 152
155 /* format: %X|filename.bmp| */ 153 /* format: %X|filename.bmp| */
156 {
157 /* get filename */
158 pos = strchr(ptr, '|');
159 if ((pos - ptr) <
160 (int)sizeof(imgname)-ROCKBOX_DIR_LEN-2)
161 {
162 memcpy(imgname, bmpdir, bmpdirlen);
163 imgname[bmpdirlen] = '/';
164 memcpy(&imgname[bmpdirlen+1],
165 ptr, pos - ptr);
166 imgname[bmpdirlen+1+pos-ptr] = 0;
167 }
168 else
169 /* filename too long */
170 imgname[0] = 0;
171
172 ptr = pos+1;
173 154
174 /* load the image */ 155 /* get filename */
175 bm.data=(char*)&wps_backdrop[0][0]; 156 pos = strchr(ptr, '|');
176 ret = read_bmp_file(imgname, &bm, 157 if ((pos - ptr) <
177 sizeof(wps_backdrop), FORMAT_NATIVE); 158 (int)sizeof(imgname)-ROCKBOX_DIR_LEN-2)
178 159 {
179 if ((ret > 0) && (bm.width == LCD_WIDTH) 160 memcpy(imgname, bmpdir, bmpdirlen);
180 && (bm.height == LCD_HEIGHT)) { 161 imgname[bmpdirlen] = '/';
181 data->has_backdrop=true; 162 memcpy(&imgname[bmpdirlen+1],
182 return true; 163 ptr, pos - ptr);
183 } else { 164 imgname[bmpdirlen+1+pos-ptr] = 0;
184 return false;
185 }
186 } 165 }
166 else
167 {
168 /* filename too long */
169 imgname[0] = 0;
170 }
171
172 /* load the image */
173 return load_wps_backdrop(imgname);
187 } 174 }
188 175
189 break; 176 break;
@@ -2460,6 +2447,9 @@ bool gui_wps_display(void)
2460 if(i == 0) 2447 if(i == 0)
2461 { 2448 {
2462#ifdef HAVE_LCD_BITMAP 2449#ifdef HAVE_LCD_BITMAP
2450#ifdef HAVE_LCD_COLOR
2451 unload_wps_backdrop();
2452#endif
2463 wps_data_load(gui_wps[i].data, 2453 wps_data_load(gui_wps[i].data,
2464 "%s%?it<%?in<%in. |>%it|%fn>\n" 2454 "%s%?it<%?in<%in. |>%it|%fn>\n"
2465 "%s%?ia<%ia|%?d2<%d2|(root)>>\n" 2455 "%s%?ia<%ia|%?d2<%d2|(root)>>\n"
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c
index b84027c61c..d7a27e8eb9 100644
--- a/apps/gui/gwps.c
+++ b/apps/gui/gwps.c
@@ -105,18 +105,8 @@ long gui_wps_show(void)
105 gui_wps_set_margin(&gui_wps[i]); 105 gui_wps_set_margin(&gui_wps[i]);
106 } 106 }
107#ifdef HAVE_LCD_COLOR 107#ifdef HAVE_LCD_COLOR
108 gui_wps[SCREEN_MAIN].data->old_backdrop = lcd_get_backdrop(); 108 show_wps_backdrop();
109 if (gui_wps[SCREEN_MAIN].data->has_backdrop) 109#endif /* HAVE_LCD_COLOR */
110 {
111 lcd_set_backdrop(&wps_backdrop[0][0]);
112 }
113 else
114 {
115 /* wps has no backdrop, so clear it in case we're switching wps */
116 lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
117 }
118
119#endif
120#endif 110#endif
121 111
122#ifdef AB_REPEAT_ENABLE 112#ifdef AB_REPEAT_ENABLE
@@ -241,12 +231,11 @@ long gui_wps_show(void)
241 case WPS_RC_CONTEXT: 231 case WPS_RC_CONTEXT:
242#endif 232#endif
243#ifdef HAVE_LCD_COLOR 233#ifdef HAVE_LCD_COLOR
244 lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); 234 show_main_backdrop();
245#endif 235#endif
246 onplay(wps_state.id3->path, TREE_ATTR_MPA, CONTEXT_WPS); 236 onplay(wps_state.id3->path, TREE_ATTR_MPA, CONTEXT_WPS);
247#ifdef HAVE_LCD_COLOR 237#ifdef HAVE_LCD_COLOR
248 if (gui_wps[SCREEN_MAIN].data->has_backdrop) 238 show_wps_backdrop();
249 lcd_set_backdrop(&wps_backdrop[0][0]);
250#endif 239#endif
251#ifdef HAVE_LCD_BITMAP 240#ifdef HAVE_LCD_BITMAP
252 FOR_NB_SCREENS(i) 241 FOR_NB_SCREENS(i)
@@ -557,16 +546,12 @@ long gui_wps_show(void)
557 gui_wps[i].display->stop_scroll(); 546 gui_wps[i].display->stop_scroll();
558 547
559#ifdef HAVE_LCD_COLOR 548#ifdef HAVE_LCD_COLOR
560 lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); 549 show_main_backdrop();
561#endif 550#endif
562 if (main_menu()) 551 if (main_menu())
563 return true; 552 return true;
564#ifdef HAVE_LCD_COLOR 553#ifdef HAVE_LCD_COLOR
565 if(global_settings.backdrop_file[0] == 0) 554 show_wps_backdrop();
566 gui_wps[SCREEN_MAIN].data->old_backdrop = NULL;
567
568 if (gui_wps[SCREEN_MAIN].data->has_backdrop)
569 lcd_set_backdrop(&wps_backdrop[0][0]);
570#endif 555#endif
571#ifdef HAVE_LCD_BITMAP 556#ifdef HAVE_LCD_BITMAP
572 FOR_NB_SCREENS(i) 557 FOR_NB_SCREENS(i)
@@ -596,13 +581,12 @@ long gui_wps_show(void)
596 case WPS_RC_QUICK: 581 case WPS_RC_QUICK:
597#endif 582#endif
598#ifdef HAVE_LCD_COLOR 583#ifdef HAVE_LCD_COLOR
599 lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); 584 show_main_backdrop();
600#endif 585#endif
601 if (quick_screen_quick(button)) 586 if (quick_screen_quick(button))
602 return SYS_USB_CONNECTED; 587 return SYS_USB_CONNECTED;
603#ifdef HAVE_LCD_COLOR 588#ifdef HAVE_LCD_COLOR
604 if (gui_wps[SCREEN_MAIN].data->has_backdrop) 589 show_wps_backdrop();
605 lcd_set_backdrop(&wps_backdrop[0][0]);
606#endif 590#endif
607#ifdef HAVE_LCD_BITMAP 591#ifdef HAVE_LCD_BITMAP
608 FOR_NB_SCREENS(i) 592 FOR_NB_SCREENS(i)
@@ -629,13 +613,12 @@ long gui_wps_show(void)
629 case BUTTON_ON | BUTTON_UP: 613 case BUTTON_ON | BUTTON_UP:
630 case BUTTON_ON | BUTTON_DOWN: 614 case BUTTON_ON | BUTTON_DOWN:
631#ifdef HAVE_LCD_COLOR 615#ifdef HAVE_LCD_COLOR
632 lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); 616 show_main_backdrop();
633#endif 617#endif
634 if (1 == pitch_screen()) 618 if (1 == pitch_screen())
635 return SYS_USB_CONNECTED; 619 return SYS_USB_CONNECTED;
636#ifdef HAVE_LCD_COLOR 620#ifdef HAVE_LCD_COLOR
637 if (gui_wps[SCREEN_MAIN].data->has_backdrop) 621 show_wps_backdrop();
638 lcd_set_backdrop(&wps_backdrop[0][0]);
639#endif 622#endif
640 restore = true; 623 restore = true;
641 break; 624 break;
@@ -730,12 +713,11 @@ long gui_wps_show(void)
730#ifdef WPS_ID3 713#ifdef WPS_ID3
731 case WPS_ID3: 714 case WPS_ID3:
732#ifdef HAVE_LCD_COLOR 715#ifdef HAVE_LCD_COLOR
733 lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); 716 show_main_backdrop();
734#endif 717#endif
735 browse_id3(); 718 browse_id3();
736#ifdef HAVE_LCD_COLOR 719#ifdef HAVE_LCD_COLOR
737 if (gui_wps[SCREEN_MAIN].data->has_backdrop) 720 show_wps_backdrop();
738 lcd_set_backdrop(&wps_backdrop[0][0]);
739#endif 721#endif
740#ifdef HAVE_LCD_BITMAP 722#ifdef HAVE_LCD_BITMAP
741 FOR_NB_SCREENS(i) 723 FOR_NB_SCREENS(i)
@@ -754,19 +736,14 @@ long gui_wps_show(void)
754 case SYS_POWEROFF: 736 case SYS_POWEROFF:
755 bookmark_autobookmark(); 737 bookmark_autobookmark();
756#ifdef HAVE_LCD_COLOR 738#ifdef HAVE_LCD_COLOR
757 lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop); 739 show_main_backdrop();
758#endif 740#endif
759 default_event_handler(SYS_POWEROFF); 741 default_event_handler(SYS_POWEROFF);
760 break; 742 break;
761 743
762 default: 744 default:
763 if(default_event_handler(button) == SYS_USB_CONNECTED) 745 if(default_event_handler(button) == SYS_USB_CONNECTED)
764 {
765#ifdef HAVE_LCD_COLOR
766 lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
767#endif
768 return SYS_USB_CONNECTED; 746 return SYS_USB_CONNECTED;
769 }
770 update_track = true; 747 update_track = true;
771 break; 748 break;
772 } 749 }
@@ -887,9 +864,6 @@ void wps_data_init(struct wps_data *wps_data)
887 wps_data->format_buffer[0] = '\0'; 864 wps_data->format_buffer[0] = '\0';
888 wps_data->wps_loaded = false; 865 wps_data->wps_loaded = false;
889 wps_data->peak_meter_enabled = false; 866 wps_data->peak_meter_enabled = false;
890#ifdef HAVE_LCD_COLOR
891 wps_data->has_backdrop = false;
892#endif
893} 867}
894 868
895static void wps_reset(struct wps_data *data) 869static void wps_reset(struct wps_data *data)
@@ -1075,4 +1049,7 @@ void gui_sync_wps_init(void)
1075 gui_wps_set_data(&gui_wps[i], &wps_datas[i]); 1049 gui_wps_set_data(&gui_wps[i], &wps_datas[i]);
1076 gui_wps_set_statusbar(&gui_wps[i], &statusbars.statusbars[i]); 1050 gui_wps_set_statusbar(&gui_wps[i], &statusbars.statusbars[i]);
1077 } 1051 }
1052#ifdef HAVE_LCD_COLOR
1053 unload_wps_backdrop();
1054#endif
1078} 1055}
diff --git a/apps/gui/gwps.h b/apps/gui/gwps.h
index 08299acbfc..3911ad1825 100644
--- a/apps/gui/gwps.h
+++ b/apps/gui/gwps.h
@@ -367,10 +367,6 @@ struct wps_data
367 int progress_end; 367 int progress_end;
368 bool wps_loaded; 368 bool wps_loaded;
369 bool peak_meter_enabled; 369 bool peak_meter_enabled;
370#ifdef HAVE_LCD_COLOR
371 bool has_backdrop;
372 fb_data* old_backdrop;
373#endif
374}; 370};
375 371
376/* initial setup of wps_data */ 372/* initial setup of wps_data */