M module-apps/application-desktop/windows/PinLockBaseWindow.cpp => module-apps/application-desktop/windows/PinLockBaseWindow.cpp +14 -0
@@ 53,6 53,7 @@ namespace gui
void PinLockBaseWindow::setTitleBar(bool isVisible, bool isIceActive)
{
+ iceBox->setVisible(isIceActive);
LockWindow::setTitleBar(isVisible);
}
@@ 66,10 67,23 @@ namespace gui
{
using namespace style::window::pin_lock;
+ iceBox = new gui::HBox(this, ice::x, ice::y, ice::w, ice::h);
+ iceBox->setAlignment(Alignment(Alignment::Horizontal::Left, Alignment::Vertical::Center));
+ iceBox->setEdges(RectangleEdge::None);
+ iceBox->setVisible(false);
+
auto arrow = new gui::Image("left_label_arrow");
arrow->activeItem = false;
arrow->setAlignment(Alignment(Alignment::Horizontal::Left, Alignment::Vertical::Center));
arrow->setMargins(Margins(0, 0, ice::margin, 0));
+ iceBox->addWidget(arrow);
+
+ auto iceText = new gui::Text(nullptr, 0, 0, ice::text::w, ice::h);
+ iceText->activeItem = false;
+ iceText->setAlignment(Alignment(Alignment::Horizontal::Left, Alignment::Vertical::Center));
+ iceText->setFont(style::window::font::verysmall);
+ iceText->setText(utils::localize.get("app_desktop_emergency"));
+ iceBox->addWidget(iceText);
title = new gui::Text(this, title::x, title::y, title::w, title::h);
title->setFilled(false);
M module-apps/application-desktop/windows/PinLockBaseWindow.hpp => module-apps/application-desktop/windows/PinLockBaseWindow.hpp +2 -1
@@ 21,8 21,9 @@ namespace gui
void setImagesVisible(bool lockImg, bool infoImg);
void setTitleBar(bool isVisible, bool isIceActive);
+ gui::HBox *iceBox = nullptr;
gui::Image *infoImage = nullptr;
- gui::Image *lockImage = nullptr;
+ gui::Image *lockImage = nullptr;
private:
void buildBottomBar() override;
M module-apps/application-desktop/windows/PinLockWindow.cpp => module-apps/application-desktop/windows/PinLockWindow.cpp +6 -13
@@ 42,17 42,6 @@ namespace gui
void PinLockWindow::destroyInterface()
{
erase();
- invalidate();
- }
-
- void PinLockWindow::invalidate() noexcept
- {
- title = nullptr;
- lockImage = nullptr;
- infoImage = nullptr;
- primaryText = nullptr;
- secondaryText = nullptr;
- pinLabelsBox = nullptr;
}
void PinLockWindow::setVisibleState()
@@ 109,8 98,12 @@ namespace gui
if (!inputEvent.isShortPress()) {
return AppWindow::onInput(inputEvent);
}
- // accept only enter, RF, #, and numeric values;
- if (inputEvent.is(KeyCode::KEY_RF) && bottomBar->isActive(BottomBar::Side::RIGHT)) {
+ // accept only LF, enter, RF, #, and numeric values;
+ if (inputEvent.is(KeyCode::KEY_LEFT) && iceBox->visible) {
+ app::manager::Controller::sendAction(application, app::manager::actions::EmergencyDial);
+ return true;
+ }
+ else if (inputEvent.is(KeyCode::KEY_RF) && bottomBar->isActive(BottomBar::Side::RIGHT)) {
if (usesNumericKeys()) {
lock->clearAttempt();
}
M module-apps/application-desktop/windows/PinLockWindow.hpp => module-apps/application-desktop/windows/PinLockWindow.hpp +1 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 23,7 23,6 @@ namespace gui
// method hides or show widgets and sets bars according to provided state
void setVisibleState();
void buildPinLockBox();
- void invalidate() noexcept;
auto usesNumericKeys() const noexcept -> bool;
public:
M module-apps/application-desktop/windows/PukLockBox.hpp => module-apps/application-desktop/windows/PukLockBox.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 15,7 15,7 @@ namespace gui
class PukLockBox : public PinLockBox
{
public:
- PukLockBox(PinLockBaseWindow *LockBaseWindow) : LockWindow(LockBaseWindow)
+ explicit PukLockBox(PinLockBaseWindow *LockBaseWindow) : LockWindow(LockBaseWindow)
{}
private:
M module-apps/application-desktop/windows/ScreenLockBox.cpp => module-apps/application-desktop/windows/ScreenLockBox.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "application-desktop/widgets/PinLock.hpp"
@@ 26,7 26,7 @@ namespace gui
LockWindow->pinLabelsBox->setVisible(true);
LockWindow->setText("app_desktop_screen_enter_passcode_to_unlock", LockWindow::TextType::Primary, true);
LockWindow->setImagesVisible(true, false);
- LockWindow->setBottomBarWidgetsActive(true, false, true);
+ LockWindow->setBottomBarWidgetsActive(false, false, true);
}
void ScreenLockBox::setVisibleStateInvalidPin(PasscodeErrorType type, unsigned int value)