Back button now does something and lockscreen can OPTIONALLY be set to stay over reboot (Implemented #146)
This commit is contained in:
@@ -216,6 +216,7 @@ struct BatteryApplyCalibrationAccessor : public RefAccessorSaveSettings<bool> {
|
||||
struct LockscreenAllowPresetSwitchAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.lockscreen.allowPresetSwitch; } };
|
||||
template<uint8_t index>
|
||||
struct LockscreenPinDigitAccessor : public RefAccessorSaveSettings<int8_t> { int8_t &getRef() const override { return settings.lockscreen.pin[index]; } };
|
||||
struct LockscreenKeepLockedAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.lockscreen.keepLockedAfterReboot; } };
|
||||
|
||||
// Handbremse
|
||||
struct HandbremsEnabledAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.handbremse.enable; } };
|
||||
|
@@ -23,6 +23,11 @@ void Lockscreen::start()
|
||||
|
||||
profileButtonDisabled = !settings.lockscreen.allowPresetSwitch;
|
||||
isLocked = true;
|
||||
if (settings.lockscreen.keepLockedAfterReboot && !settings.lockscreen.locked)
|
||||
{
|
||||
settings.lockscreen.locked = true;
|
||||
saveSettings();
|
||||
}
|
||||
}
|
||||
|
||||
void Lockscreen::initScreen()
|
||||
@@ -64,12 +69,12 @@ void Lockscreen::update()
|
||||
|
||||
void Lockscreen::redraw()
|
||||
{
|
||||
if (m_pressed)
|
||||
if (m_pressed || m_back_pressed)
|
||||
{
|
||||
drawRect(m_currentIndex, 1, TFT_BLACK);
|
||||
drawRect(m_currentIndex, 2, TFT_BLACK);
|
||||
|
||||
if (++m_currentIndex>=4)
|
||||
if (!m_back_pressed && ++m_currentIndex>=4)
|
||||
{
|
||||
if (m_numbers == settings.lockscreen.pin)
|
||||
{
|
||||
@@ -83,7 +88,12 @@ void Lockscreen::redraw()
|
||||
|
||||
m_numbers = {0,0,0,0};
|
||||
m_currentIndex = 0;
|
||||
std::for_each(std::begin(m_labels) + 1, std::end(m_labels), [](auto &label){ label.redraw({}); });
|
||||
std::for_each(std::begin(m_labels) + 1, std::end(m_labels), [](auto &label){ label.redraw("0"); });
|
||||
}
|
||||
else if (m_back_pressed && m_currentIndex < 3)
|
||||
{
|
||||
drawRect(m_currentIndex+1, 1, TFT_BLACK);
|
||||
drawRect(m_currentIndex+1, 2, TFT_BLACK);
|
||||
}
|
||||
|
||||
m_labels[m_currentIndex].redraw(std::to_string(m_numbers[m_currentIndex]));
|
||||
@@ -92,6 +102,7 @@ void Lockscreen::redraw()
|
||||
drawRect(m_currentIndex, 2, TFT_YELLOW);
|
||||
|
||||
m_pressed = false;
|
||||
m_back_pressed = false;
|
||||
}
|
||||
|
||||
if (m_rotated)
|
||||
@@ -124,6 +135,11 @@ void Lockscreen::stop()
|
||||
|
||||
profileButtonDisabled = false;
|
||||
isLocked = false;
|
||||
if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked)
|
||||
{
|
||||
settings.lockscreen.locked = false;
|
||||
saveSettings();
|
||||
}
|
||||
}
|
||||
|
||||
void Lockscreen::confirm()
|
||||
@@ -133,6 +149,9 @@ void Lockscreen::confirm()
|
||||
|
||||
void Lockscreen::back()
|
||||
{
|
||||
if (m_currentIndex > 0)
|
||||
m_currentIndex--;
|
||||
m_back_pressed = true;
|
||||
}
|
||||
|
||||
void Lockscreen::rotate(int offset)
|
||||
|
@@ -46,6 +46,7 @@ private:
|
||||
uint8_t m_currentIndex{};
|
||||
|
||||
bool m_pressed;
|
||||
bool m_back_pressed;
|
||||
int m_rotated;
|
||||
|
||||
ModeInterface *m_oldMode;
|
||||
|
@@ -52,6 +52,7 @@ using namespace espgui;
|
||||
LockscreenSettingsMenu::LockscreenSettingsMenu()
|
||||
{
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ALLOWPRESETSWITCH>, ToggleBoolAction, CheckboxIcon, LockscreenAllowPresetSwitchAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_KEEPLOCKED>, ToggleBoolAction, CheckboxIcon, LockscreenKeepLockedAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT0, LockscreenPinDigitAccessor<0>>, SwitchScreenAction<LockscreenPinDigit0ChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT1, LockscreenPinDigitAccessor<1>>, SwitchScreenAction<LockscreenPinDigit1ChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT2, LockscreenPinDigitAccessor<2>>, SwitchScreenAction<LockscreenPinDigit2ChangeScreen>>>();
|
||||
|
@@ -75,6 +75,7 @@ using namespace std::chrono_literals;
|
||||
#endif
|
||||
#include "modes/defaultmode.h"
|
||||
#include "displays/statusdisplay.h"
|
||||
#include "displays/lockscreen.h"
|
||||
#include "displays/calibratedisplay.h"
|
||||
#ifdef FEATURE_DNS_NS
|
||||
#include "dnsannounce.h"
|
||||
@@ -291,7 +292,16 @@ extern "C" void app_main()
|
||||
if (!gas || !brems || *gas > 200.f || *brems > 200.f)
|
||||
espgui::switchScreen<CalibrateDisplay>(true);
|
||||
else
|
||||
{
|
||||
if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked)
|
||||
{
|
||||
espgui::switchScreen<Lockscreen>();
|
||||
}
|
||||
else
|
||||
{
|
||||
espgui::switchScreen<StatusDisplay>();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef FEATURE_ESPNOW
|
||||
espnow::initESPNow();
|
||||
|
@@ -274,6 +274,8 @@ constexpr Settings::Ledstrip defaultLedstrip {
|
||||
|
||||
constexpr Settings::LockscreenSettings defaultLockscreen {
|
||||
.allowPresetSwitch = true,
|
||||
.keepLockedAfterReboot = false,
|
||||
.locked = false,
|
||||
.pin = { 1, 2, 3, 4 }
|
||||
};
|
||||
|
||||
|
@@ -210,6 +210,8 @@ struct Settings
|
||||
|
||||
struct LockscreenSettings {
|
||||
bool allowPresetSwitch;
|
||||
bool keepLockedAfterReboot;
|
||||
bool locked;
|
||||
std::array<int8_t, 4> pin;
|
||||
} lockscreen;
|
||||
|
||||
@@ -360,6 +362,8 @@ void Settings::executeForEveryCommonSetting(T &&callable)
|
||||
callable("hybridDeacL", hybrid.deactivationLimit);
|
||||
|
||||
callable("lockAlwPresetSw", lockscreen.allowPresetSwitch);
|
||||
callable("keepLocked", lockscreen.keepLockedAfterReboot);
|
||||
callable("currentlyLocked", lockscreen.locked);
|
||||
callable("lockscreenPin", lockscreen.pin);
|
||||
|
||||
callable("totalCentimeter", savedStatistics.totalCentimeters);
|
||||
|
@@ -332,6 +332,7 @@ char TEXT_ANIMATION_BLINKBOTH[] = "Blink Both";
|
||||
//LockscreenSettingsMenu
|
||||
char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings";
|
||||
char TEXT_ALLOWPRESETSWITCH[] = "Allow preset switch";
|
||||
char TEXT_KEEPLOCKED[] = "Keep locked";
|
||||
char TEXT_PINDIGIT0[] = "PIN digit0";
|
||||
char TEXT_PINDIGIT1[] = "PIN digit1";
|
||||
char TEXT_PINDIGIT2[] = "PIN digit2";
|
||||
|
@@ -332,6 +332,7 @@ extern char TEXT_ANIMATION_BLINKBOTH[];
|
||||
//LockscreenSettingsMenu
|
||||
extern char TEXT_LOCKSCREENSETTINGS[];
|
||||
extern char TEXT_ALLOWPRESETSWITCH[];
|
||||
extern char TEXT_KEEPLOCKED[];
|
||||
extern char TEXT_PINDIGIT0[];
|
||||
extern char TEXT_PINDIGIT1[];
|
||||
extern char TEXT_PINDIGIT2[];
|
||||
|
Reference in New Issue
Block a user