Added first example popup
This commit is contained in:
@ -138,6 +138,7 @@ set(headers
|
||||
displays/menus/presetsmenu.h
|
||||
displays/menus/profilesmenu.h
|
||||
displays/menus/selectbatterytypemenu.h
|
||||
displays/menus/ledstripselectotamode.h
|
||||
displays/menus/selectbuildservermenu.h
|
||||
displays/menus/selectmodemenu.h
|
||||
displays/menus/settingsmenu.h
|
||||
@ -156,7 +157,7 @@ set(headers
|
||||
displays/starfielddisplay.h
|
||||
displays/statusdisplay.h
|
||||
displays/updatedisplay.h
|
||||
displays/menus/ledstripselectotamode.h
|
||||
displays/popups/alertdisplay.h
|
||||
icons/alert.h
|
||||
icons/battery.h
|
||||
icons/bluetooth.h
|
||||
@ -348,6 +349,7 @@ set(sources
|
||||
displays/starfielddisplay.cpp
|
||||
displays/statusdisplay.cpp
|
||||
displays/updatedisplay.cpp
|
||||
displays/popups/alertdisplay.h
|
||||
icons/alert.cpp
|
||||
icons/battery.cpp
|
||||
icons/bluetooth.cpp
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "checkboxicon.h"
|
||||
#include "icons/back.h"
|
||||
#include "accessors/settingsaccessors.h"
|
||||
#include <screenmanager.h>
|
||||
|
||||
// local includes
|
||||
#include "utils.h"
|
||||
@ -25,11 +26,27 @@
|
||||
#include "displays/menus/dynamicdebugmenu.h"
|
||||
#include "displays/menus/mainmenu.h"
|
||||
#include "displays/menus/batterydebugmenu.h"
|
||||
#include "displays/popups/alertdisplay.cpp"
|
||||
|
||||
namespace {
|
||||
class AlertAction : public espgui::MenuItem
|
||||
{
|
||||
public:
|
||||
std::string text() const override { return "Open popup"; }
|
||||
void triggered() override
|
||||
{
|
||||
auto newDisplay = std::make_unique<AlertDisplay>(std::move(currentDisplay));
|
||||
newDisplay->initOverlay();
|
||||
currentDisplay = std::move(newDisplay);
|
||||
}
|
||||
};
|
||||
} // namespace
|
||||
|
||||
using namespace espgui;
|
||||
|
||||
DebugMenu::DebugMenu()
|
||||
{
|
||||
constructMenuItem<AlertAction>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LOADSETTINGS>, LoadSettingsAction>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SAVESETTINGS>, SaveSettingsAction>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ERASENVS>, EraseNvsAction>>();
|
||||
|
46
main/displays/popups/alertdisplay.cpp
Normal file
46
main/displays/popups/alertdisplay.cpp
Normal file
@ -0,0 +1,46 @@
|
||||
#include "alertdisplay.h"
|
||||
|
||||
// 3rdparty lib includes
|
||||
#include <tftinstance.h>
|
||||
#include <screenmanager.h>
|
||||
|
||||
AlertDisplay::AlertDisplay(std::unique_ptr<Display> &&lastDisplay) :
|
||||
m_lastDisplay{std::move(lastDisplay)}
|
||||
{
|
||||
}
|
||||
|
||||
void AlertDisplay::initScreen()
|
||||
{
|
||||
m_lastDisplay->initScreen();
|
||||
|
||||
initOverlay();
|
||||
}
|
||||
|
||||
void AlertDisplay::confirm()
|
||||
{
|
||||
closeOverlay();
|
||||
}
|
||||
|
||||
void AlertDisplay::back()
|
||||
{
|
||||
closeOverlay();
|
||||
}
|
||||
|
||||
void AlertDisplay::initOverlay()
|
||||
{
|
||||
espgui::tft.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||
|
||||
espgui::tft.drawRect(20, 50, espgui::tft.width() - 40, espgui::tft.height() - 100, TFT_WHITE);
|
||||
espgui::tft.fillRect(21, 51, espgui::tft.width() - 42, espgui::tft.height() - 102, TFT_BLACK);
|
||||
|
||||
espgui::tft.drawString("oida", 25, 60);
|
||||
espgui::tft.drawString("oida", 25, 85);
|
||||
espgui::tft.drawString("oida", 25, 110);
|
||||
}
|
||||
|
||||
void AlertDisplay::closeOverlay()
|
||||
{
|
||||
auto guard = std::move(espgui::currentDisplay);
|
||||
espgui::currentDisplay = std::move(m_lastDisplay);
|
||||
espgui::currentDisplay->initScreen();
|
||||
}
|
27
main/displays/popups/alertdisplay.h
Normal file
27
main/displays/popups/alertdisplay.h
Normal file
@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
// system includes
|
||||
#include <memory>
|
||||
|
||||
// 3rdparty lib includes
|
||||
#include <display.h>
|
||||
|
||||
class AlertDisplay : public espgui::Display
|
||||
{
|
||||
public:
|
||||
AlertDisplay(std::unique_ptr<Display> &&lastDisplay);
|
||||
|
||||
//void start() override;
|
||||
void initScreen() override;
|
||||
//void update() override;
|
||||
//void redraw() override;
|
||||
//void stop() override;
|
||||
void confirm() override;
|
||||
void back() override;
|
||||
|
||||
void initOverlay();
|
||||
void closeOverlay();
|
||||
|
||||
private:
|
||||
std::unique_ptr<Display> m_lastDisplay;
|
||||
};
|
Reference in New Issue
Block a user