Files
MuditaOS/module-apps/application-desktop/widgets/PinLockHandler.hpp
T
Pawel Olejniczak 4b35b13fe9 [EGD-4734] Add PIN settings window
This window displays switch button for
disabling/enabling pin code for sim card.
Its also starting point for changing pin code.
Added actions for enabling and disabling
pin code for sim card.
Added method for checking if pin code is
set for sim card.
2021-04-07 19:09:20 +02:00

71 lines
3.0 KiB
C++

// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include "PinLock.hpp"
#include <module-services/service-appmgr/service-appmgr/messages/ActionRequest.hpp>
#include <module-services/service-appmgr/service-appmgr/Actions.hpp>
namespace app
{
class ApplicationDesktop;
}
namespace gui
{
class PinLockHandler
{
app::ApplicationDesktop *app = nullptr;
gui::PinLock screenLock;
gui::PinLock simLock;
bool promptSimLockWindow = true;
void handleScreenPin(const std::vector<unsigned int> &pin);
void handlePasscode(PinLock::LockType type, const std::vector<unsigned int> passcode);
void handlePasscodeChange(const std::vector<unsigned int> passcode);
void handleNewPasscodeUnconfirmed(const std::vector<unsigned int> &passcode,
const std::vector<unsigned int> &pin);
void handleNewPasscodeConfirmed(PinLock::LockType type,
const std::vector<unsigned int> &passcode,
const std::vector<unsigned int> &pin);
void handleNewPasscodeInvalid(const std::vector<unsigned int> &passcode);
void handlePasscodeParams(PinLock::LockType type,
PinLock::LockState state,
app::manager::actions::ActionParamsPtr &&data);
void switchToPinLockWindow(
std::function<void(PinLock::LockType, const std::vector<unsigned int> &)> onLockActivatedCallback);
void switchToPinLockWindow(
PinLock::LockState type,
std::function<void(PinLock::LockType, const std::vector<unsigned int> &)> onLockActivatedCallback);
auto getStrongestLock() noexcept -> gui::PinLock &;
void unlock();
void setSimLockHandled() noexcept;
public:
PinLockHandler(app::ApplicationDesktop *app);
void handlePasscodeRequest(PinLock::LockType type, app::manager::actions::ActionParamsPtr &&data);
void handlePinChangeRequest(app::manager::actions::ActionParamsPtr &&data);
void handlePinDisableRequest(app::manager::actions::ActionParamsPtr &&data);
void handlePinEnableRequest(app::manager::actions::ActionParamsPtr &&data);
void handleSimBlocked(app::manager::actions::ActionParamsPtr &&data);
void handleUnlockSim(app::manager::actions::ActionParamsPtr &&data);
void handleCMEError(app::manager::actions::ActionParamsPtr &&data) const;
void handleScreenPasscodeRequest(app::manager::actions::ActionParamsPtr &&data) const;
[[nodiscard]] auto isScreenLocked() const noexcept -> bool
{
return !screenLock.isState(PinLock::LockState::Unlocked);
}
[[nodiscard]] auto isScreenBlocked() const noexcept -> bool
{
return screenLock.isState(PinLock::LockState::Blocked);
}
void lockScreen();
void unlockScreen();
};
} // namespace gui