Added debug menu for display coordinates

This commit is contained in:
CommanderRedYT
2022-06-07 22:52:14 +02:00
parent 65bc7d2b38
commit b9961e2e2f
3 changed files with 109 additions and 0 deletions

View File

@ -19,6 +19,7 @@
#include "esptexthelpers.h"
#include "accessors/settingsaccessors.h"
#include "displays/qrcodedebug.h"
#include "displays/xydebugdisplay.h"
#include "displays/menus/taskmanagermenu.h"
#ifdef FEATURE_CAN
#include "displays/menus/candebugmenu.h"
@ -38,6 +39,7 @@ constexpr char TEXT_TASKMANAGER[] = "Taskmanager";
constexpr char TEXT_CANDEBUG[] = "CAN Debug";
#endif
constexpr char TEXT_QRCODE_DEBUG[] = "QR Debug";
constexpr char TEXT_XY_DEBUG[] = "XY Debug";
constexpr char TEXT_BATTERYDEBUG[] = "Bat Debug Menu";
constexpr char TEXT_TOGGLECLOUDDEBUG[] = "Cloud Debug";
//constexpr char TEXT_FRONTCOMMAND[] = "Front command";
@ -67,6 +69,7 @@ DebugMenu::DebugMenu()
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CANDEBUG>, PushScreenAction<CanDebugMenu>>>();
#endif
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_QRCODE_DEBUG>, PushScreenAction<QrCodeDebugDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_XY_DEBUG>, PushScreenAction<XYDebugDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BATTERYDEBUG>, PushScreenAction<BatteryDebugMenu>, StaticMenuItemIcon<&bobbyicons::battery>>>();
if (configs.feature.udpcloud.isEnabled.value())
{

View File

@ -0,0 +1,77 @@
#include "xydebugdisplay.h"
// 3rdparty lib includes
#include <fmt/core.h>
#include <screenmanager.h>
#include <tftinstance.h>
// local includes
#include "bobbybuttons.h"
XYDebugDisplay::XYDebugDisplay() : m_labelCoordinates{5, 5} {}
void XYDebugDisplay::initScreen()
{
Base::initScreen();
m_labelCoordinates.start();
}
void XYDebugDisplay::redraw()
{
using namespace espgui;
Base::redraw();
m_labelCoordinates.redraw(fmt::format("X: {}, Y: {}", m_current_cursor.x, m_current_cursor.y));
if (m_current_cursor.x != m_last_cursor.x || m_current_cursor.y != m_last_cursor.y)
{
tft.fillCircle(m_last_cursor.x, m_last_cursor.y, 2, TFT_BLACK);
tft.fillCircle(m_current_cursor.x, m_current_cursor.y, 2, TFT_WHITE);
m_last_cursor = m_current_cursor;
}
}
void XYDebugDisplay::buttonPressed(espgui::Button button)
{
switch (button)
{
using espgui::Button;
case Button::Left:
case Button::Right:
case Button::Up:
case Button::Down:
espgui::popScreen();
break;
default:;
}
switch (BobbyButton(button))
{
case BobbyButton::Left2:
if (m_current_cursor.x > 0)
{
--m_current_cursor.x;
}
break;
case BobbyButton::Right2:
if (m_current_cursor.x < espgui::tft.width() - 1)
{
++m_current_cursor.x;
}
break;
case BobbyButton::Up2:
if (m_current_cursor.y > 0)
{
--m_current_cursor.y;
}
break;
case BobbyButton::Down2:
if (m_current_cursor.y < espgui::tft.height() - 1)
{
++m_current_cursor.y;
}
break;
default:;
}
}

View File

@ -0,0 +1,29 @@
#pragma once
// 3rdparty lib includes
#include <widgets/label.h>
// local includes
#include "bobbydisplay.h"
class XYDebugDisplay : public BobbyDisplay
{
using Base = BobbyDisplay;
public:
XYDebugDisplay();
void initScreen() override;
void redraw() override;
void buttonPressed(espgui::Button button) override;
private:
typedef struct {
uint8_t x;
uint8_t y;
} cursor_pos_t;
cursor_pos_t m_current_cursor{0, 0};
cursor_pos_t m_last_cursor{0, 0};
espgui::Label m_labelCoordinates;
};