New input system work in progress
This commit is contained in:
Submodule components/esp-gui-lib updated: 9cf1c9a78c...4871df0898
@@ -52,6 +52,9 @@ set(headers
|
|||||||
debuginputhandler.h
|
debuginputhandler.h
|
||||||
debugtexthelpers.h
|
debugtexthelpers.h
|
||||||
displays/bmsdisplay.h
|
displays/bmsdisplay.h
|
||||||
|
displays/bobbydisplay.h
|
||||||
|
displays/bobbychangevaluedisplay.h
|
||||||
|
displays/bobbymenudisplay.h
|
||||||
displays/calibratedisplay.h
|
displays/calibratedisplay.h
|
||||||
displays/calibratevoltagedisplay.h
|
displays/calibratevoltagedisplay.h
|
||||||
displays/qrdisplay.h
|
displays/qrdisplay.h
|
||||||
@@ -270,6 +273,9 @@ set(sources
|
|||||||
debuginputhandler.cpp
|
debuginputhandler.cpp
|
||||||
debugtexthelpers.cpp
|
debugtexthelpers.cpp
|
||||||
displays/bmsdisplay.cpp
|
displays/bmsdisplay.cpp
|
||||||
|
displays/bobbydisplay.cpp
|
||||||
|
displays/bobbychangevaluedisplay.cpp
|
||||||
|
displays/bobbymenudisplay.cpp
|
||||||
displays/calibratedisplay.cpp
|
displays/calibratedisplay.cpp
|
||||||
displays/calibratevoltagedisplay.cpp
|
displays/calibratevoltagedisplay.cpp
|
||||||
displays/qrdisplay.cpp
|
displays/qrdisplay.cpp
|
||||||
|
0
main/displays/bobbychangevaluedisplay.cpp
Normal file
0
main/displays/bobbychangevaluedisplay.cpp
Normal file
0
main/displays/bobbychangevaluedisplay.h
Normal file
0
main/displays/bobbychangevaluedisplay.h
Normal file
66
main/displays/bobbydisplay.cpp
Normal file
66
main/displays/bobbydisplay.cpp
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#include "bobbydisplay.h"
|
||||||
|
|
||||||
|
void BobbyDisplay::rawButtonPressed(uint8_t button)
|
||||||
|
{
|
||||||
|
Base::rawButtonPressed(button);
|
||||||
|
switch (button)
|
||||||
|
{
|
||||||
|
using espgui::Button;
|
||||||
|
case 0: buttonPressed(Button::Left); break;
|
||||||
|
case 1: buttonPressed(Button::Right); break;
|
||||||
|
case 2: buttonPressed(Button::Up); break;
|
||||||
|
case 3: buttonPressed(Button::Down); break;
|
||||||
|
case 4: buttonPressed(Button(BobbyButton::Profile0)); break;
|
||||||
|
case 5: buttonPressed(Button(BobbyButton::Profile1)); break;
|
||||||
|
case 6: buttonPressed(Button(BobbyButton::Profile2)); break;
|
||||||
|
case 7: buttonPressed(Button(BobbyButton::Profile3)); break;
|
||||||
|
case 8: buttonPressed(Button(BobbyButton::Left2)); break;
|
||||||
|
case 9: buttonPressed(Button(BobbyButton::Right2)); break;
|
||||||
|
case 10: buttonPressed(Button(BobbyButton::Up2)); break;
|
||||||
|
case 11: buttonPressed(Button(BobbyButton::Down2)); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BobbyDisplay::rawButtonReleased(uint8_t button)
|
||||||
|
{
|
||||||
|
Base::rawButtonReleased(button);
|
||||||
|
switch (button)
|
||||||
|
{
|
||||||
|
using espgui::Button;
|
||||||
|
case 0: buttonReleased(Button::Left); break;
|
||||||
|
case 1: buttonReleased(Button::Right); break;
|
||||||
|
case 2: buttonReleased(Button::Up); break;
|
||||||
|
case 3: buttonReleased(Button::Down); break;
|
||||||
|
case 4: buttonReleased(Button(BobbyButton::Profile0)); break;
|
||||||
|
case 5: buttonReleased(Button(BobbyButton::Profile1)); break;
|
||||||
|
case 6: buttonReleased(Button(BobbyButton::Profile2)); break;
|
||||||
|
case 7: buttonReleased(Button(BobbyButton::Profile3)); break;
|
||||||
|
case 8: buttonReleased(Button(BobbyButton::Left2)); break;
|
||||||
|
case 9: buttonReleased(Button(BobbyButton::Right2)); break;
|
||||||
|
case 10: buttonReleased(Button(BobbyButton::Up2)); break;
|
||||||
|
case 11: buttonReleased(Button(BobbyButton::Down2)); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BobbyDisplay::buttonPressed(espgui::Button button)
|
||||||
|
{
|
||||||
|
Base::buttonPressed(button);
|
||||||
|
|
||||||
|
switch (BobbyButton(button))
|
||||||
|
{
|
||||||
|
case BobbyButton::Profile0: /* TODO */ break;
|
||||||
|
case BobbyButton::Profile1: /* TODO */ break;
|
||||||
|
case BobbyButton::Profile2: /* TODO */ break;
|
||||||
|
case BobbyButton::Profile3: /* TODO */ break;
|
||||||
|
case BobbyButton::Left2: /* TODO */ break;
|
||||||
|
case BobbyButton::Right2: /* TODO */ break;
|
||||||
|
case BobbyButton::Up2: /* TODO */ break;
|
||||||
|
case BobbyButton::Down2: /* TODO */ break;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BobbyDisplay::buttonReleased(espgui::Button button)
|
||||||
|
{
|
||||||
|
Base::buttonReleased(button);
|
||||||
|
}
|
31
main/displays/bobbydisplay.h
Normal file
31
main/displays/bobbydisplay.h
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// system includes
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
|
// 3rdparty lib includes
|
||||||
|
#include <display.h>
|
||||||
|
|
||||||
|
enum BobbyButton
|
||||||
|
{
|
||||||
|
Profile0 = espgui::Button::ButtonMax + 1,
|
||||||
|
Profile1,
|
||||||
|
Profile2,
|
||||||
|
Profile3,
|
||||||
|
Left2,
|
||||||
|
Right2,
|
||||||
|
Up2,
|
||||||
|
Down2
|
||||||
|
};
|
||||||
|
|
||||||
|
class BobbyDisplay : public espgui::Display
|
||||||
|
{
|
||||||
|
using Base = espgui::Display;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void rawButtonPressed(uint8_t button) override;
|
||||||
|
void rawButtonReleased(uint8_t button) override;
|
||||||
|
|
||||||
|
void buttonPressed(espgui::Button button) override;
|
||||||
|
void buttonReleased(espgui::Button button) override;
|
||||||
|
};
|
66
main/displays/bobbymenudisplay.cpp
Normal file
66
main/displays/bobbymenudisplay.cpp
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#include "bobbymenudisplay.h"
|
||||||
|
|
||||||
|
void BobbyMenuDisplay::rawButtonPressed(uint8_t button)
|
||||||
|
{
|
||||||
|
Base::rawButtonPressed(button);
|
||||||
|
switch (button)
|
||||||
|
{
|
||||||
|
using espgui::Button;
|
||||||
|
case 0: buttonPressed(Button::Left); break;
|
||||||
|
case 1: buttonPressed(Button::Right); break;
|
||||||
|
case 2: buttonPressed(Button::Up); break;
|
||||||
|
case 3: buttonPressed(Button::Down); break;
|
||||||
|
case 4: buttonPressed(Button(BobbyButton::Profile0)); break;
|
||||||
|
case 5: buttonPressed(Button(BobbyButton::Profile1)); break;
|
||||||
|
case 6: buttonPressed(Button(BobbyButton::Profile2)); break;
|
||||||
|
case 7: buttonPressed(Button(BobbyButton::Profile3)); break;
|
||||||
|
case 8: buttonPressed(Button(BobbyButton::Left2)); break;
|
||||||
|
case 9: buttonPressed(Button(BobbyButton::Right2)); break;
|
||||||
|
case 10: buttonPressed(Button(BobbyButton::Up2)); break;
|
||||||
|
case 11: buttonPressed(Button(BobbyButton::Down2)); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BobbyMenuDisplay::rawButtonReleased(uint8_t button)
|
||||||
|
{
|
||||||
|
Base::rawButtonReleased(button);
|
||||||
|
switch (button)
|
||||||
|
{
|
||||||
|
using espgui::Button;
|
||||||
|
case 0: buttonReleased(Button::Left); break;
|
||||||
|
case 1: buttonReleased(Button::Right); break;
|
||||||
|
case 2: buttonReleased(Button::Up); break;
|
||||||
|
case 3: buttonReleased(Button::Down); break;
|
||||||
|
case 4: buttonReleased(Button(BobbyButton::Profile0)); break;
|
||||||
|
case 5: buttonReleased(Button(BobbyButton::Profile1)); break;
|
||||||
|
case 6: buttonReleased(Button(BobbyButton::Profile2)); break;
|
||||||
|
case 7: buttonReleased(Button(BobbyButton::Profile3)); break;
|
||||||
|
case 8: buttonReleased(Button(BobbyButton::Left2)); break;
|
||||||
|
case 9: buttonReleased(Button(BobbyButton::Right2)); break;
|
||||||
|
case 10: buttonReleased(Button(BobbyButton::Up2)); break;
|
||||||
|
case 11: buttonReleased(Button(BobbyButton::Down2)); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BobbyMenuDisplay::buttonPressed(espgui::Button button)
|
||||||
|
{
|
||||||
|
Base::buttonPressed(button);
|
||||||
|
|
||||||
|
switch (BobbyButton(button))
|
||||||
|
{
|
||||||
|
case BobbyButton::Profile0: /* TODO */ break;
|
||||||
|
case BobbyButton::Profile1: /* TODO */ break;
|
||||||
|
case BobbyButton::Profile2: /* TODO */ break;
|
||||||
|
case BobbyButton::Profile3: /* TODO */ break;
|
||||||
|
case BobbyButton::Left2: /* TODO */ break;
|
||||||
|
case BobbyButton::Right2: /* TODO */ break;
|
||||||
|
case BobbyButton::Up2: /* TODO */ break;
|
||||||
|
case BobbyButton::Down2: /* TODO */ break;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BobbyMenuDisplay::buttonReleased(espgui::Button button)
|
||||||
|
{
|
||||||
|
Base::buttonReleased(button);
|
||||||
|
}
|
22
main/displays/bobbymenudisplay.h
Normal file
22
main/displays/bobbymenudisplay.h
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// system includes
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
|
// 3rdparty lib includes
|
||||||
|
#include <menudisplay.h>
|
||||||
|
|
||||||
|
// local includes
|
||||||
|
#include "bobbydisplay.h"
|
||||||
|
|
||||||
|
class BobbyMenuDisplay : public espgui::MenuDisplay
|
||||||
|
{
|
||||||
|
using Base = espgui::MenuDisplay;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void rawButtonPressed(uint8_t button) override;
|
||||||
|
void rawButtonReleased(uint8_t button) override;
|
||||||
|
|
||||||
|
void buttonPressed(espgui::Button button) override;
|
||||||
|
void buttonReleased(espgui::Button button) override;
|
||||||
|
};
|
@@ -1,17 +1,20 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
// 3rdparty lib includes
|
||||||
|
#include <accessorinterface.h>
|
||||||
#include <qrcode.h>
|
#include <qrcode.h>
|
||||||
|
|
||||||
// local includes
|
// local includes
|
||||||
#include "accessorinterface.h"
|
#include "displays/bobbymenudisplay.h"
|
||||||
#include "menudisplay.h"
|
|
||||||
#include "texts.h"
|
#include "texts.h"
|
||||||
|
|
||||||
class GreenPassMenu :
|
class GreenPassMenu :
|
||||||
public espgui::MenuDisplay,
|
public BobbyMenuDisplay,
|
||||||
public espgui::StaticText<TEXT_GREENPASS>
|
public espgui::StaticText<TEXT_GREENPASS>
|
||||||
{
|
{
|
||||||
using Base = espgui::MenuDisplay;
|
using Base = BobbyMenuDisplay;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GreenPassMenu();
|
GreenPassMenu();
|
||||||
void back() override;
|
void back() override;
|
||||||
|
@@ -9,7 +9,11 @@
|
|||||||
|
|
||||||
using namespace espgui;
|
using namespace espgui;
|
||||||
|
|
||||||
QrDisplay::QrDisplay(std::string_view msg, uint8_t ver) : m_msg{msg}, m_ver{ver} {}
|
QrDisplay::QrDisplay(std::string_view msg, uint8_t ver) :
|
||||||
|
m_msg{msg},
|
||||||
|
m_ver{ver}
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void QrDisplay::initScreen()
|
void QrDisplay::initScreen()
|
||||||
{
|
{
|
||||||
@@ -35,12 +39,15 @@ void QrDisplay::initScreen()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QrDisplay::back()
|
void QrDisplay::buttonPressed(espgui::Button button)
|
||||||
{
|
{
|
||||||
switchScreen<GreenPassMenu>();
|
Base::buttonPressed(button);
|
||||||
}
|
|
||||||
|
|
||||||
void QrDisplay::confirm()
|
switch (button)
|
||||||
{
|
{
|
||||||
switchScreen<GreenPassMenu>();
|
using espgui::Button;
|
||||||
|
case Button::Left: switchScreen<GreenPassMenu>(); break;
|
||||||
|
case Button::Right: switchScreen<GreenPassMenu>(); break;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,17 +1,22 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// 3rd party includes
|
// 3rd party includes
|
||||||
#include <display.h>
|
|
||||||
#include <qrcode.h>
|
#include <qrcode.h>
|
||||||
|
|
||||||
class QrDisplay :
|
// local includes
|
||||||
public espgui::Display
|
#include "bobbydisplay.h"
|
||||||
|
|
||||||
|
class QrDisplay : public BobbyDisplay
|
||||||
{
|
{
|
||||||
|
using Base = BobbyDisplay;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QrDisplay(std::string_view msg, uint8_t ver);
|
QrDisplay(std::string_view msg, uint8_t ver);
|
||||||
|
|
||||||
void initScreen() override;
|
void initScreen() override;
|
||||||
void confirm() override;
|
|
||||||
void back() override;
|
void buttonPressed(espgui::Button button) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string_view m_msg;
|
std::string_view m_msg;
|
||||||
uint8_t m_ver;
|
uint8_t m_ver;
|
||||||
|
@@ -16,39 +16,24 @@ constexpr const char * const TAG = "qrimport";
|
|||||||
|
|
||||||
using namespace espgui;
|
using namespace espgui;
|
||||||
|
|
||||||
QrImportDisplay::QrImportDisplay(std::string nvs_key) : m_nvs_key{nvs_key} {}
|
QrImportDisplay::QrImportDisplay(std::string nvs_key) :
|
||||||
|
m_nvs_key{nvs_key}
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void QrImportDisplay::start()
|
void QrImportDisplay::start()
|
||||||
{
|
{
|
||||||
|
Base::start();
|
||||||
|
|
||||||
m_statuslabel.start();
|
m_statuslabel.start();
|
||||||
qrimport::setup_request();
|
qrimport::setup_request();
|
||||||
m_statuslabel.redraw(fmt::format("Request not running."));
|
m_statuslabel.redraw(fmt::format("Request not running."));
|
||||||
}
|
}
|
||||||
|
|
||||||
void QrImportDisplay::back()
|
|
||||||
{
|
|
||||||
if (!qrimport::get_request_running())
|
|
||||||
{
|
|
||||||
switchScreen<GreenPassMenu>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void QrImportDisplay::confirm()
|
|
||||||
{
|
|
||||||
// start request
|
|
||||||
if (!m_confirmLocked)
|
|
||||||
{
|
|
||||||
if (const auto result = qrimport::start_qr_request(); !result)
|
|
||||||
{
|
|
||||||
switchScreen<GreenPassMenu>();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m_confirmLocked = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void QrImportDisplay::update()
|
void QrImportDisplay::update()
|
||||||
{
|
{
|
||||||
|
Base::update();
|
||||||
|
|
||||||
m_expected = qrimport::check_request();
|
m_expected = qrimport::check_request();
|
||||||
if (m_expected)
|
if (m_expected)
|
||||||
{
|
{
|
||||||
@@ -69,6 +54,8 @@ void QrImportDisplay::update()
|
|||||||
|
|
||||||
void QrImportDisplay::redraw()
|
void QrImportDisplay::redraw()
|
||||||
{
|
{
|
||||||
|
Base::redraw();
|
||||||
|
|
||||||
if (qrimport::get_request_running())
|
if (qrimport::get_request_running())
|
||||||
{
|
{
|
||||||
if (!m_expected)
|
if (!m_expected)
|
||||||
@@ -83,3 +70,31 @@ void QrImportDisplay::redraw()
|
|||||||
m_statuslabel.redraw("Request not running");
|
m_statuslabel.redraw("Request not running");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QrImportDisplay::buttonPressed(espgui::Button button)
|
||||||
|
{
|
||||||
|
Base::buttonPressed(button);
|
||||||
|
|
||||||
|
switch (button)
|
||||||
|
{
|
||||||
|
using espgui::Button;
|
||||||
|
case Button::Left:
|
||||||
|
if (!qrimport::get_request_running())
|
||||||
|
{
|
||||||
|
switchScreen<GreenPassMenu>();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Button::Right:
|
||||||
|
// start request
|
||||||
|
if (!m_confirmLocked)
|
||||||
|
{
|
||||||
|
if (const auto result = qrimport::start_qr_request(); !result)
|
||||||
|
{
|
||||||
|
switchScreen<GreenPassMenu>();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_confirmLocked = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1,21 +1,26 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// 3rd party includes
|
// 3rd party includes
|
||||||
#include <display.h>
|
|
||||||
#include <widgets/label.h>
|
#include <widgets/label.h>
|
||||||
#include <tftinstance.h>
|
#include <tftinstance.h>
|
||||||
#include <tl/expected.hpp>
|
#include <tl/expected.hpp>
|
||||||
|
|
||||||
class QrImportDisplay : public espgui::Display
|
// local includes
|
||||||
|
#include "bobbydisplay.h"
|
||||||
|
|
||||||
|
class QrImportDisplay : public BobbyDisplay
|
||||||
{
|
{
|
||||||
using Base = espgui::Display;
|
using Base = BobbyDisplay;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QrImportDisplay(std::string nvs_key);
|
QrImportDisplay(std::string nvs_key);
|
||||||
|
|
||||||
void start() override;
|
void start() override;
|
||||||
void back() override;
|
|
||||||
void update() override;
|
void update() override;
|
||||||
void redraw() override;
|
void redraw() override;
|
||||||
void confirm() override;
|
|
||||||
|
void buttonPressed(espgui::Button button) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_confirmLocked{false};
|
bool m_confirmLocked{false};
|
||||||
espgui::Label m_statuslabel{5,(espgui::tft.height() / 2)-espgui::tft.fontHeight(4)};
|
espgui::Label m_statuslabel{5,(espgui::tft.height() / 2)-espgui::tft.fontHeight(4)};
|
||||||
|
Reference in New Issue
Block a user