Files
MuditaOS/module-apps/application-desktop/widgets/PinLock.cpp
Michał Kamoń 38ee9a224c [EGD-4452] unify desktop locks (#1071)
* [EGD-4452] Desktop locks refactored
2020-11-25 11:48:03 +01:00

59 lines
1.5 KiB
C++

// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "PinLock.hpp"
#include <module-utils/log/log.hpp>
namespace gui
{
void PinLock::consumeState() noexcept
{
if (lockState == LockState::PasscodeInvalidRetryRequired) {
lockState = LockState::PasscodeRequired;
}
else if (lockState == LockState::NewPasscodeInvalid) {
lockState = LockState::NewPasscodeRequired;
}
}
void PinLock::setNewPasscodeInvalidState() noexcept
{
if (lockState == LockState::NewPasscodeRequired) {
lockState = LockState::NewPasscodeInvalid;
}
}
void PinLock::putNextChar(unsigned int c)
{
if (maxPinSize > pinValue.size()) {
pinValue.push_back(c);
}
if (canVerify() && autoActivate && onActivatedCallback != nullptr) {
onActivatedCallback(lockType, pinValue);
}
}
void PinLock::popChar()
{
if (pinValue.size() > 0) {
pinValue.pop_back();
}
}
void PinLock::clearAttempt() noexcept
{
pinValue.clear();
}
void PinLock::activate()
{
auto pinCopy = std::move(pinValue);
clearAttempt();
if (!onActivatedCallback) {
LOG_ERROR("Passcode verification callback null");
return;
}
onActivatedCallback(lockType, pinCopy);
}
} // namespace gui