Added debug menu for display coordinates
This commit is contained in:
@ -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())
|
||||
{
|
||||
|
77
main/displays/xydebugdisplay.cpp
Normal file
77
main/displays/xydebugdisplay.cpp
Normal 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:;
|
||||
}
|
||||
}
|
29
main/displays/xydebugdisplay.h
Normal file
29
main/displays/xydebugdisplay.h
Normal 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;
|
||||
};
|
Reference in New Issue
Block a user