diff options
-rw-r--r-- | apps/bookmark.c | 3 | ||||
-rw-r--r-- | apps/filetree.c | 3 | ||||
-rw-r--r-- | apps/gui/gwps-common.c | 3 | ||||
-rw-r--r-- | apps/gui/gwps.c | 37 | ||||
-rw-r--r-- | apps/gui/wps_parser.c | 23 | ||||
-rw-r--r-- | apps/recorder/backdrop.c | 60 | ||||
-rw-r--r-- | apps/recorder/backdrop.h | 7 | ||||
-rw-r--r-- | apps/root_menu.c | 3 | ||||
-rw-r--r-- | apps/screens.c | 3 | ||||
-rw-r--r-- | apps/settings.c | 6 | ||||
-rw-r--r-- | firmware/export/lcd-remote.h | 2 |
11 files changed, 141 insertions, 9 deletions
diff --git a/apps/bookmark.c b/apps/bookmark.c index 8ff9040c2d..cb0dbe718a 100644 --- a/apps/bookmark.c +++ b/apps/bookmark.c @@ -181,6 +181,9 @@ bool bookmark_autobookmark(void) #if LCD_DEPTH > 1 show_main_backdrop(); /* switch to main backdrop as we may come from wps */ #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif gui_syncstatusbar_draw(&statusbars, false); if(gui_syncyesno_run(&message, NULL, NULL)==YESNO_YES) { diff --git a/apps/filetree.c b/apps/filetree.c index 088d68ac1e..4a8e9c1868 100644 --- a/apps/filetree.c +++ b/apps/filetree.c @@ -453,6 +453,9 @@ int ft_enter(struct tree_context* c) #if LCD_DEPTH > 1 unload_wps_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + unload_remote_wps_backdrop(); +#endif wps_data_load(gui_wps[0].data, buf, true); set_file(buf, (char *)global_settings.wps_file, MAX_FILENAME); diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index 8022209189..7f84be613b 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c @@ -337,6 +337,9 @@ bool gui_wps_display(void) /* set the default wps for the remote-screen */ else if(i == 1) { +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + unload_remote_wps_backdrop(); +#endif wps_data_load(gui_wps[i].data, "%s%?ia<%ia|%?d2<%d2|(root)>>\n" "%s%?it<%?in<%in. |>%it|%fn>\n" diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c index e46f804af8..97f3b4dbbc 100644 --- a/apps/gui/gwps.c +++ b/apps/gui/gwps.c @@ -119,6 +119,10 @@ long gui_wps_show(void) #endif /* LCD_DEPTH > 1 */ #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_wps_backdrop(); +#endif + #ifdef AB_REPEAT_ENABLE ab_repeat_init(); ab_reset_markers(); @@ -235,6 +239,9 @@ long gui_wps_show(void) #if LCD_DEPTH > 1 show_main_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif action_signalscreenchange(); if (onplay(wps_state.id3->path, FILE_ATTR_AUDIO, CONTEXT_WPS) == ONPLAY_MAINMENU) @@ -242,6 +249,9 @@ long gui_wps_show(void) #if LCD_DEPTH > 1 show_wps_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_wps_backdrop(); +#endif #ifdef HAVE_LCD_BITMAP FOR_NB_SCREENS(i) { @@ -501,11 +511,17 @@ long gui_wps_show(void) #if LCD_DEPTH > 1 show_main_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif if (quick_screen_quick(button)) return SYS_USB_CONNECTED; #if LCD_DEPTH > 1 show_wps_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_wps_backdrop(); +#endif #ifdef HAVE_LCD_BITMAP FOR_NB_SCREENS(i) { @@ -522,6 +538,9 @@ long gui_wps_show(void) #if LCD_DEPTH > 1 show_main_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif if (quick_screen_f3(BUTTON_F3)) return SYS_USB_CONNECTED; #ifdef HAVE_LCD_BITMAP @@ -540,12 +559,18 @@ long gui_wps_show(void) #if LCD_DEPTH > 1 show_main_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif action_signalscreenchange(); if (1 == pitch_screen()) return SYS_USB_CONNECTED; #if LCD_DEPTH > 1 show_wps_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_wps_backdrop(); +#endif restore = true; break; #endif /* HAVE_PITCHSCREEN */ @@ -572,10 +597,16 @@ long gui_wps_show(void) #if LCD_DEPTH > 1 show_main_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif browse_id3(); #if LCD_DEPTH > 1 show_wps_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_wps_backdrop(); +#endif #ifdef HAVE_LCD_BITMAP FOR_NB_SCREENS(i) { @@ -598,6 +629,9 @@ long gui_wps_show(void) #if LCD_DEPTH > 1 show_main_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif default_event_handler(SYS_POWEROFF); break; @@ -751,4 +785,7 @@ void gui_sync_wps_init(void) #if LCD_DEPTH > 1 unload_wps_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + unload_remote_wps_backdrop(); +#endif } diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c index b6cda91e74..2b5d1bb321 100644 --- a/apps/gui/wps_parser.c +++ b/apps/gui/wps_parser.c @@ -257,7 +257,7 @@ static const struct wps_tag all_tags[] = { { WPS_TOKEN_IMAGE_DISPLAY, "x", 0, parse_image_load }, { WPS_TOKEN_IMAGE_PROGRESS_BAR, "P", 0, parse_image_special }, -#if LCD_DEPTH > 1 +#if (LCD_DEPTH > 1) || (defined(HAVE_LCD_REMOTE) && (LCD_REMOTE_DEPTH > 1)) { WPS_TOKEN_IMAGE_BACKDROP, "X", 0, parse_image_special }, #endif #endif @@ -908,17 +908,22 @@ static void load_wps_bitmaps(struct wps_data *wps_data, char *bmpdir) } } -#if LCD_DEPTH > 1 +#if (LCD_DEPTH > 1) || (defined(HAVE_LCD_REMOTE) && (LCD_REMOTE_DEPTH > 1)) + if (backdrop_bmp_name) + { + get_image_filename(backdrop_bmp_name, bmpdir, + img_path, sizeof(img_path)); #ifdef HAVE_REMOTE_LCD - if (!wps_data->remote_wps) + if (wps_data->remote_wps) +#if LCD_REMOTE_DEPTH > 1 + load_remote_wps_backdrop(img_path) #endif - if (backdrop_bmp_name) - { - get_image_filename(backdrop_bmp_name, bmpdir, - img_path, sizeof(img_path)); + ; + else +#endif /* HAVE_REMOTE_LCD */ load_wps_backdrop(img_path); - } -#endif + } +#endif /* has backdrop support */ } #endif /* HAVE_LCD_BITMAP */ diff --git a/apps/recorder/backdrop.c b/apps/recorder/backdrop.c index e31543549d..0d023602be 100644 --- a/apps/recorder/backdrop.c +++ b/apps/recorder/backdrop.c @@ -20,6 +20,9 @@ #include <stdio.h> #include "config.h" #include "lcd.h" +#ifdef HAVE_REMOTE_LCD +#include "lcd-remote.h" +#endif #include "backdrop.h" #if LCD_DEPTH >= 8 @@ -30,6 +33,11 @@ static fb_data main_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH]; static fb_data wps_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH]; #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 +static fb_remote_data remote_wps_backdrop[LCD_REMOTE_FBHEIGHT][LCD_REMOTE_FBWIDTH]; +static bool remote_wps_backdrop_valid = false; +#endif + static bool main_backdrop_valid = false; static bool wps_backdrop_valid = false; @@ -93,3 +101,55 @@ void show_wps_backdrop(void) show_main_backdrop(); } } + +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + +static bool load_remote_backdrop(char* filename, fb_remote_data* backdrop_buffer) +{ + struct bitmap bm; + int ret; + + /* load the image */ + bm.data=(char*)backdrop_buffer; + ret = read_bmp_file(filename, &bm, sizeof(main_backdrop), + FORMAT_NATIVE | FORMAT_DITHER | FORMAT_REMOTE); + + if ((ret > 0) && (bm.width == LCD_REMOTE_WIDTH) && (bm.height == LCD_REMOTE_HEIGHT)) + { + return true; + } + else + { + return false; + } +} + +bool load_remote_wps_backdrop(char* filename) +{ + remote_wps_backdrop_valid = load_remote_backdrop(filename, &remote_wps_backdrop[0][0]); + return remote_wps_backdrop_valid; +} + +void unload_remote_wps_backdrop(void) +{ + remote_wps_backdrop_valid = false; +} + +void show_remote_wps_backdrop(void) +{ + /* if no wps backdrop, fall back to main backdrop */ + if(remote_wps_backdrop_valid) + { + lcd_remote_set_backdrop(&remote_wps_backdrop[0][0]); + } + else + { + show_remote_main_backdrop(); + } +} + +void show_remote_main_backdrop(void) +{ + lcd_remote_set_backdrop(NULL); +} +#endif diff --git a/apps/recorder/backdrop.h b/apps/recorder/backdrop.h index 93373f1321..c930a87433 100644 --- a/apps/recorder/backdrop.h +++ b/apps/recorder/backdrop.h @@ -36,4 +36,11 @@ void show_wps_backdrop(void); #endif /* LCD_DEPTH > 1 */ +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 +bool load_remote_wps_backdrop(char* filename); +void unload_remote_wps_backdrop(void); +void show_remote_wps_backdrop(void); +void show_remote_main_backdrop(void); /* only clears the wps backdrop */ +#endif + #endif /* _BACKDROP_H */ diff --git a/apps/root_menu.c b/apps/root_menu.c index 9f1491df8e..ebb13ecb92 100644 --- a/apps/root_menu.c +++ b/apps/root_menu.c @@ -234,6 +234,9 @@ static int wpsscrn(void* param) #if LCD_DEPTH > 1 show_main_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif return ret_val; } #if CONFIG_TUNER diff --git a/apps/screens.c b/apps/screens.c index 0c65ca425c..82ae490d75 100644 --- a/apps/screens.c +++ b/apps/screens.c @@ -89,6 +89,9 @@ void usb_screen(void) #ifdef HAVE_LCD_COLOR show_main_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif FOR_NB_SCREENS(i) screens[i].backlight_on(); diff --git a/apps/settings.c b/apps/settings.c index 52af7cb481..ba4a98c4e2 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -742,6 +742,9 @@ void settings_apply(void) #if LCD_DEPTH > 1 unload_wps_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + unload_remote_wps_backdrop(); +#endif if ( global_settings.wps_file[0] && global_settings.wps_file[0] != 0xff ) { snprintf(buf, sizeof buf, WPS_DIR "/%s.wps", @@ -767,6 +770,9 @@ void settings_apply(void) } show_main_backdrop(); #endif +#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1 + show_remote_main_backdrop(); +#endif #ifdef HAVE_LCD_COLOR screens[SCREEN_MAIN].set_foreground(global_settings.fg_color); diff --git a/firmware/export/lcd-remote.h b/firmware/export/lcd-remote.h index 08accf7116..ad311a8255 100644 --- a/firmware/export/lcd-remote.h +++ b/firmware/export/lcd-remote.h @@ -181,6 +181,8 @@ extern void lcd_remote_set_background(unsigned background); extern unsigned lcd_remote_get_background(void); extern void lcd_remote_set_drawinfo(int mode, unsigned foreground, unsigned background); +void lcd_remote_set_backdrop(fb_remote_data* backdrop); +fb_remote_data* lcd_remote_get_backdrop(void); extern void lcd_remote_mono_bitmap_part(const unsigned char *src, int src_x, int src_y, int stride, int x, int y, |