You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.0 KiB
48 lines
1.0 KiB
#define LGFX_AUTODETECT; |
|
#define LGFX_USE_V1 |
|
#include <LovyanGFX.hpp> |
|
|
|
#define UI_WIDTH (320) |
|
#define UI_HEIGHT (240) |
|
|
|
#define STATUS_BAR_HEIGHT (20) |
|
|
|
static LGFX lcd; |
|
static AppState lastAppState; |
|
|
|
void uiDebug(AppState *state) { |
|
|
|
} |
|
|
|
void uiLoop(AppState *state) { |
|
lcd.startWrite(); |
|
|
|
lcd.setTextColor(0x000000U, 0x00FF00); |
|
|
|
bool statusBarDirty = false; |
|
statusBarDirty = state->wifiOnline != lastAppState.wifiOnline; |
|
statusBarDirty = statusBarDirty || (state->volume != lastAppState.volume); |
|
if (statusBarDirty) { |
|
lcd.fillRect(0, 0, UI_WIDTH, STATUS_BAR_HEIGHT, 0x00FF00); |
|
if (state->wifiOnline) { |
|
lcd.drawString(state->wifiIP.toString(), 10, 10); |
|
lcd.drawString(String(state->volume), UI_WIDTH - 20, 10); |
|
} |
|
else { |
|
lcd.drawString("connecting...", 10, 10); |
|
} |
|
} |
|
|
|
lastAppState = *state; |
|
|
|
lcd.endWrite(); |
|
} |
|
|
|
void uiSetup(AppState *state) { |
|
lcd.init(); |
|
lcd.setColorDepth(16); |
|
lcd.fillScreen(0xFF0000); |
|
lcd.setBrightness(128); |
|
|
|
lastAppState = AppStateMake(); |
|
}
|
|
|