Holding up/down in menudisplay repeatadly rotates
This commit is contained in:
@ -3,6 +3,8 @@
|
||||
// local includes
|
||||
#include "tftinstance.h"
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
namespace espgui {
|
||||
void MenuDisplay::start()
|
||||
{
|
||||
@ -93,6 +95,18 @@ void MenuDisplay::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.setTextColor(TFT_YELLOW, TFT_BLACK);
|
||||
|
||||
@ -197,14 +211,20 @@ void MenuDisplay::buttonPressed(Button button)
|
||||
{
|
||||
case Button::Left: this->back(); break;
|
||||
case Button::Right: m_pressed = true; break;
|
||||
case Button::Up: m_rotateOffset--; break;
|
||||
case Button::Down: m_rotateOffset++; break;
|
||||
case Button::Up: m_rotateOffset--; m_upHoldingSince = espchrono::millis_clock::now(); break;
|
||||
case Button::Down: m_rotateOffset++; m_downHoldingSince = espchrono::millis_clock::now(); break;
|
||||
}
|
||||
}
|
||||
|
||||
void MenuDisplay::buttonReleased(Button 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
|
||||
|
@ -8,6 +8,8 @@
|
||||
#include <functional>
|
||||
#include <cassert>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <espchrono.h>
|
||||
|
||||
// local includes
|
||||
#include "displaywithtitle.h"
|
||||
@ -146,5 +148,8 @@ private:
|
||||
bool m_pressed;
|
||||
|
||||
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
|
||||
|
Reference in New Issue
Block a user