// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include #include "gui/SwitchData.hpp" #include "locks/widgets/Lock.hpp" namespace locks { using LockInput = const std::vector &; enum class PhoneLockInputTypeAction { Unlock, Enable, Disable, ConfirmCurrent, Change, Set }; enum class SimInputTypeAction { UnlockWithPin, UnlockWithPuk, ChangePin, EnablePin, DisablePin, Blocked, Error, }; // class template that stores information that was sent along with switch message class LockData : public gui::SwitchData { Lock lock; PhoneLockInputTypeAction phoneLockInputTypeAction; public: explicit LockData(Lock lock, PhoneLockInputTypeAction phoneLockInputTypeAction = PhoneLockInputTypeAction::Unlock) : SwitchData(), lock(std::move(lock)), phoneLockInputTypeAction(phoneLockInputTypeAction) { description = "LockPhoneData"; } [[nodiscard]] auto getLock() const noexcept { return lock; } [[nodiscard]] auto getPhoneLockInputTypeAction() const noexcept { return phoneLockInputTypeAction; } }; class SimLockData : public LockData { SimInputTypeAction simInputTypeAction; unsigned int errorCode; public: explicit SimLockData(Lock lock, SimInputTypeAction simInputTypeAction, unsigned int errorCode) : LockData(std::move(lock)), simInputTypeAction(simInputTypeAction), errorCode(errorCode) { description = "SimLockPhoneData"; } [[nodiscard]] auto getSimInputTypeAction() const noexcept { return simInputTypeAction; } [[nodiscard]] auto getErrorCode() const noexcept { return errorCode; } }; } // namespace locks