Added first example popup
This commit is contained in:
@ -138,6 +138,7 @@ set(headers
|
|||||||
displays/menus/presetsmenu.h
|
displays/menus/presetsmenu.h
|
||||||
displays/menus/profilesmenu.h
|
displays/menus/profilesmenu.h
|
||||||
displays/menus/selectbatterytypemenu.h
|
displays/menus/selectbatterytypemenu.h
|
||||||
|
displays/menus/ledstripselectotamode.h
|
||||||
displays/menus/selectbuildservermenu.h
|
displays/menus/selectbuildservermenu.h
|
||||||
displays/menus/selectmodemenu.h
|
displays/menus/selectmodemenu.h
|
||||||
displays/menus/settingsmenu.h
|
displays/menus/settingsmenu.h
|
||||||
@ -156,7 +157,7 @@ set(headers
|
|||||||
displays/starfielddisplay.h
|
displays/starfielddisplay.h
|
||||||
displays/statusdisplay.h
|
displays/statusdisplay.h
|
||||||
displays/updatedisplay.h
|
displays/updatedisplay.h
|
||||||
displays/menus/ledstripselectotamode.h
|
displays/popups/alertdisplay.h
|
||||||
icons/alert.h
|
icons/alert.h
|
||||||
icons/battery.h
|
icons/battery.h
|
||||||
icons/bluetooth.h
|
icons/bluetooth.h
|
||||||
@ -348,6 +349,7 @@ set(sources
|
|||||||
displays/starfielddisplay.cpp
|
displays/starfielddisplay.cpp
|
||||||
displays/statusdisplay.cpp
|
displays/statusdisplay.cpp
|
||||||
displays/updatedisplay.cpp
|
displays/updatedisplay.cpp
|
||||||
|
displays/popups/alertdisplay.h
|
||||||
icons/alert.cpp
|
icons/alert.cpp
|
||||||
icons/battery.cpp
|
icons/battery.cpp
|
||||||
icons/bluetooth.cpp
|
icons/bluetooth.cpp
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include "checkboxicon.h"
|
#include "checkboxicon.h"
|
||||||
#include "icons/back.h"
|
#include "icons/back.h"
|
||||||
#include "accessors/settingsaccessors.h"
|
#include "accessors/settingsaccessors.h"
|
||||||
|
#include <screenmanager.h>
|
||||||
|
|
||||||
// local includes
|
// local includes
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
@ -25,11 +26,27 @@
|
|||||||
#include "displays/menus/dynamicdebugmenu.h"
|
#include "displays/menus/dynamicdebugmenu.h"
|
||||||
#include "displays/menus/mainmenu.h"
|
#include "displays/menus/mainmenu.h"
|
||||||
#include "displays/menus/batterydebugmenu.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;
|
using namespace espgui;
|
||||||
|
|
||||||
DebugMenu::DebugMenu()
|
DebugMenu::DebugMenu()
|
||||||
{
|
{
|
||||||
|
constructMenuItem<AlertAction>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LOADSETTINGS>, LoadSettingsAction>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LOADSETTINGS>, LoadSettingsAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SAVESETTINGS>, SaveSettingsAction>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SAVESETTINGS>, SaveSettingsAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ERASENVS>, EraseNvsAction>>();
|
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