snapshot
This commit is contained in:
53
sketches/doorbell-touch-esp32-32e/Dashboard.h
Normal file
53
sketches/doorbell-touch-esp32-32e/Dashboard.h
Normal file
@@ -0,0 +1,53 @@
|
||||
#pragma once
|
||||
#include <TFT_eSPI.h>
|
||||
|
||||
// Grid layout constants
|
||||
#define DASH_COLS 3
|
||||
#define DASH_ROWS 2
|
||||
#define DASH_MARGIN 8
|
||||
#define DASH_TOP_BAR 40
|
||||
|
||||
// Tile dimensions (calculated for 480x320)
|
||||
#define TILE_W ((480 - (DASH_COLS + 1) * DASH_MARGIN) / DASH_COLS) // ~148
|
||||
#define TILE_H ((320 - DASH_TOP_BAR - (DASH_ROWS + 1) * DASH_MARGIN) / DASH_ROWS) // ~128
|
||||
|
||||
// Tile IDs
|
||||
enum TileID : uint8_t {
|
||||
TILE_LAST_ALERT = 0,
|
||||
TILE_STATS,
|
||||
TILE_NETWORK,
|
||||
TILE_MUTE,
|
||||
TILE_HISTORY,
|
||||
TILE_SYSTEM,
|
||||
TILE_COUNT
|
||||
};
|
||||
|
||||
struct TileData {
|
||||
const char* icon; // emoji/symbol character
|
||||
const char* label; // tile name
|
||||
char value[32]; // dynamic value text
|
||||
char sub[32]; // secondary line
|
||||
uint16_t bgColor;
|
||||
uint16_t fgColor;
|
||||
bool dirty; // needs redraw
|
||||
};
|
||||
|
||||
class Dashboard {
|
||||
public:
|
||||
Dashboard(TFT_eSPI& tft);
|
||||
|
||||
void begin();
|
||||
void drawAll();
|
||||
void drawTopBar(const char* time, int rssi, bool wifiOk);
|
||||
void updateTile(TileID id, const char* value, const char* sub = nullptr);
|
||||
int handleTouch(int x, int y); // returns TileID or -1
|
||||
|
||||
private:
|
||||
TFT_eSPI& _tft;
|
||||
TFT_eSprite _sprite;
|
||||
TileData _tiles[TILE_COUNT];
|
||||
|
||||
void drawTile(TileID id);
|
||||
void tilePosition(TileID id, int& x, int& y);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user