// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "ConfigurePasscodeWindow.hpp" #include "locks/data/LockStyle.hpp" #include #include #include #include #include #include #include namespace lock_style = style::window::pin_lock; namespace screen_lock_style = style::window::screen_pin_lock; namespace gui { ConfigurePasscodeWindow::ConfigurePasscodeWindow(app::Application *app) : ChangePasscodeWindow(app) { lockState = Lock::LockState::NewInputRequired; textForEnterNewPassword = "app_onboarding_set_password"; testForConfirmPassword = "app_onboarding_confirm_password"; textForWrongPassword = "app_onboarding_worng_password"; } auto ConfigurePasscodeWindow::onInput(const InputEvent &inputEvent) -> bool { if (inputEvent.isShortPress() && inputEvent.is(KeyCode::KEY_LF)) { application->setLockScreenPasscodeOn(false); application->switchWindow(gui::window::name::onBoarding_date_and_time, gui::ShowMode::GUI_SHOW_INIT, std::make_unique()); } return ChangePasscodeWindow::onInput(inputEvent); } void ConfigurePasscodeWindow::buildBottomBar() { bottomBar->setText(BottomBar::Side::CENTER, utils::translate(style::strings::common::confirm)); bottomBar->setText(BottomBar::Side::RIGHT, utils::translate(style::strings::common::back)); bottomBar->setText(BottomBar::Side::LEFT, utils::translate(style::strings::common::skip)); } void ConfigurePasscodeWindow::buildTitleBar() { setTitle(utils::translate("app_onboarding_passcode_configuration")); } void ConfigurePasscodeWindow::processPasscode() { switch (lockState) { case Lock::LockState::NewInputConfirmRequired: case Lock::LockState::NewInputInvalid: { lockState = lockHandler.newPasscodeConfirmed(); if (lockState == Lock::LockState::Unlocked) { auto app = static_cast(application); app->setLockPassHash(lockHandler.getNewPasscodeHash()); } break; } default: return ChangePasscodeWindow::processPasscode(); } } void ConfigurePasscodeWindow::setVisibleState() { switch (lockState) { case Lock::LockState::NewInputInvalid: { auto metaData = std::make_unique( gui::DialogMetadata{utils::translate("app_onboarding_passcode_configuration"), "info_big_circle_W_G", utils::translate("app_onboarding_wrong_password"), "", [this]() { application->switchWindow(gui::window::name::onBoarding_configure_passcode, gui::ShowMode::GUI_SHOW_INIT, std::make_unique( ChangePasscodeAction::OnlyProvideNewPasscode)); return true; }}); application->switchWindow( gui::window::name::dialog_confirm, gui::ShowMode::GUI_SHOW_INIT, std::move(metaData)); break; } case Lock::LockState::Unlocked: { application->setLockScreenPasscodeOn(true); application->switchWindow(gui::window::name::onBoarding_date_and_time, gui::ShowMode::GUI_SHOW_INIT, std::make_unique()); break; } default: ChangePasscodeWindow::setVisibleState(); break; } } } // namespace gui