From 728ed13c7ef74f395844f7e3a288a2c0ae0da63e Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sun, 9 May 2021 15:56:19 +0200 Subject: [PATCH] Added "USB plugged" screen --- radio/src/bitmaps/480x272/mask_usb_symbol.png | Bin 0 -> 10983 bytes radio/src/gui/colorlcd/theme.cpp | 17 +++++++++++++++++ radio/src/gui/colorlcd/theme.h | 3 +++ radio/src/main.cpp | 6 +++++- 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 radio/src/bitmaps/480x272/mask_usb_symbol.png diff --git a/radio/src/bitmaps/480x272/mask_usb_symbol.png b/radio/src/bitmaps/480x272/mask_usb_symbol.png new file mode 100644 index 0000000000000000000000000000000000000000..54fc5e2af6bcb553c1a8f81f2ded8b66f79ec6a6 GIT binary patch literal 10983 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 & getRegisteredThemes() { static std::list themes; @@ -204,6 +211,16 @@ void OpenTxTheme::drawSlider(BitmapBuffer * dc, int vmin, int vmax, int value, c } } +void OpenTxTheme::drawUsbPluggedScreen(BitmapBuffer * dc) const +{ + // draw USB icon + dc->clear(DEFAULT_BGCOLOR); + dc->drawBitmapPattern((LCD_W - LBM_USB_PLUGGED_W) / 2, + (LCD_H - LBM_USB_PLUGGED_H) / 2, + LBM_USB_PLUGGED, DEFAULT_COLOR); +} + + OpenTxTheme * getTheme(const char * name) { std::list::const_iterator it = getRegisteredThemes().cbegin(); diff --git a/radio/src/gui/colorlcd/theme.h b/radio/src/gui/colorlcd/theme.h index 133f7856c..be31fbc52 100644 --- a/radio/src/gui/colorlcd/theme.h +++ b/radio/src/gui/colorlcd/theme.h @@ -100,6 +100,9 @@ class OpenTxTheme: public Theme virtual void drawTopLeftBitmap(BitmapBuffer * dc) const = 0; + virtual void drawUsbPluggedScreen(BitmapBuffer * dc) const; + + protected: const char * name; const ZoneOption * options; diff --git a/radio/src/main.cpp b/radio/src/main.cpp index b7c72514c..dfc742c5a 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -474,7 +474,11 @@ void perMain() #if defined(STM32) if (usbPlugged() && getSelectedUsbMode() == USB_MASS_STORAGE_MODE) { #if defined(LIBOPENUI) - #warning "TODO USB plugged view" + // draw some image showing USB + lcdNextLayer(); + lcd->reset(); + OpenTxTheme::instance()->drawUsbPluggedScreen(lcd); + lcdRefresh(); #else // disable access to menus lcdClear();