mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-19 01:41:30 +10:00
* chore: todo.txt * chore: comments * fix: no fast refresh on VME290 Reverts a line of code which was accidentally committed * refactor: god class Divide the behavior from the old WindowManager class into several subclasses which each have a clear role. * refactor: cppcheck medium warnings Enough to pass github CI for now * refactor: updateType selection * refactor: don't use a setter for the shared AppletFonts * fix: update prioritization forceUpdate calls weren't being prioritized * refactor: remove unhelpful logging getTimeString is used for parsing our own time, but also the timestamps of messages. The "one time only" log printing will likely fire in unhelpful situations. * fix: " " * refactor: get rid of types.h file for enums * Keep that sneaky todo file out of commits
60 lines
2.1 KiB
C++
60 lines
2.1 KiB
C++
#ifdef MESHTASTIC_INCLUDE_INKHUD
|
|
|
|
#include "configuration.h"
|
|
|
|
#include "graphics/niche/Drivers/Backlight/LatchingBacklight.h"
|
|
#include "graphics/niche/InkHUD/InkHUD.h"
|
|
#include "graphics/niche/InkHUD/Persistence.h"
|
|
#include "graphics/niche/InkHUD/SystemApplet.h"
|
|
|
|
#include "./MenuItem.h"
|
|
#include "./MenuPage.h"
|
|
|
|
#include "concurrency/OSThread.h"
|
|
|
|
namespace NicheGraphics::InkHUD
|
|
{
|
|
|
|
class Applet;
|
|
|
|
class MenuApplet : public SystemApplet, public concurrency::OSThread
|
|
{
|
|
public:
|
|
MenuApplet();
|
|
void onActivate() override;
|
|
void onForeground() override;
|
|
void onBackground() override;
|
|
void onButtonShortPress() override;
|
|
void onButtonLongPress() override;
|
|
void onRender() override;
|
|
|
|
void show(Tile *t); // Open the menu, onto a user tile
|
|
|
|
protected:
|
|
Drivers::LatchingBacklight *backlight = nullptr; // Convenient access to the backlight singleton
|
|
|
|
int32_t runOnce() override;
|
|
|
|
void execute(MenuItem item); // Perform the MenuAction associated with a MenuItem, if any
|
|
void showPage(MenuPage page); // Load and display a MenuPage
|
|
void populateAppletPage(); // Dynamically create MenuItems for toggling loaded applets
|
|
void populateAutoshowPage(); // Dynamically create MenuItems for selecting which applets can autoshow
|
|
void populateRecentsPage(); // Create menu items: a choice of values for settings.recentlyActiveSeconds
|
|
uint16_t getSystemInfoPanelHeight();
|
|
void drawSystemInfoPanel(int16_t left, int16_t top, uint16_t width,
|
|
uint16_t *height = nullptr); // Info panel at top of root menu
|
|
|
|
MenuPage currentPage = MenuPage::ROOT;
|
|
uint8_t cursor = 0; // Which menu item is currently highlighted
|
|
bool cursorShown = false; // Is *any* item highlighted? (Root menu: no initial selection)
|
|
|
|
uint16_t systemInfoPanelHeight = 0; // Need to know before we render
|
|
|
|
std::vector<MenuItem> items; // MenuItems for the current page. Filled by ShowPage
|
|
|
|
Applet *borrowedTileOwner = nullptr; // Which applet we have temporarily replaced while displaying menu
|
|
};
|
|
|
|
} // namespace NicheGraphics::InkHUD
|
|
|
|
#endif |