Holding up/down in menudisplay repeatadly rotates

This commit is contained in:
2022-06-09 13:53:49 +02:00
parent fe5078b146
commit 139a8a4711
2 changed files with 28 additions and 3 deletions

View File

@@ -3,6 +3,8 @@
// local includes // local includes
#include "tftinstance.h" #include "tftinstance.h"
using namespace std::chrono_literals;
namespace espgui { namespace espgui {
void MenuDisplay::start() void MenuDisplay::start()
{ {
@@ -93,6 +95,18 @@ void MenuDisplay::redraw()
{ {
Base::redraw(); Base::redraw();
if (m_upHoldingSince && espchrono::ago(*m_upHoldingSince) > 500ms)
{
m_upHoldingSince = espchrono::millis_clock::now();
m_rotateOffset--;
}
if (m_downHoldingSince && espchrono::ago(*m_downHoldingSince) > 500ms)
{
m_downHoldingSince = espchrono::millis_clock::now();
m_rotateOffset++;
}
tft.setTextFont(4); tft.setTextFont(4);
tft.setTextColor(TFT_YELLOW, TFT_BLACK); tft.setTextColor(TFT_YELLOW, TFT_BLACK);
@@ -197,14 +211,20 @@ void MenuDisplay::buttonPressed(Button button)
{ {
case Button::Left: this->back(); break; case Button::Left: this->back(); break;
case Button::Right: m_pressed = true; break; case Button::Right: m_pressed = true; break;
case Button::Up: m_rotateOffset--; break; case Button::Up: m_rotateOffset--; m_upHoldingSince = espchrono::millis_clock::now(); break;
case Button::Down: m_rotateOffset++; break; case Button::Down: m_rotateOffset++; m_downHoldingSince = espchrono::millis_clock::now(); break;
} }
} }
void MenuDisplay::buttonReleased(Button button) void MenuDisplay::buttonReleased(Button button)
{ {
//Base::buttonPressed(button); //Base::buttonPressed(button);
// TODO stop auto scroll
switch (button)
{
case Button::Up: m_upHoldingSince = std::nullopt; break;
case Button::Down: m_downHoldingSince = std::nullopt; break;
default:;
}
} }
} // namespace espgui } // namespace espgui

View File

@@ -8,6 +8,8 @@
#include <functional> #include <functional>
#include <cassert> #include <cassert>
#include <memory> #include <memory>
#include <optional>
#include <espchrono.h>
// local includes // local includes
#include "displaywithtitle.h" #include "displaywithtitle.h"
@@ -146,5 +148,8 @@ private:
bool m_pressed; bool m_pressed;
std::vector<std::unique_ptr<MenuItem>> m_menuItems; std::vector<std::unique_ptr<MenuItem>> m_menuItems;
std::optional<espchrono::millis_clock::time_point> m_upHoldingSince;
std::optional<espchrono::millis_clock::time_point> m_downHoldingSince;
}; };
} // namespace espgui } // namespace espgui