Added first example popup

This commit is contained in:
2021-11-26 23:31:17 +01:00
parent 79bbd16371
commit e7a6a2d506
4 changed files with 93 additions and 1 deletions

View File

@ -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

View File

@ -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>>();

View 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();
}

View 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;
};