M module-apps/Application.cpp => module-apps/Application.cpp +11 -0
@@ 275,6 275,14 @@ namespace app
}
}
+ void Application::popWindow(const std::string &window)
+ {
+ auto popWindow = std::find(windowsStack.stack.begin(), windowsStack.stack.end(), window);
+ if (popWindow != windowsStack.stack.end()) {
+ windowsStack.stack.erase(popWindow);
+ }
+ }
+
void Application::refreshWindow(gui::RefreshModes mode)
{
if (not windowsStack.isEmpty()) {
@@ 816,6 824,9 @@ namespace app
if (getCurrentWindow()->getName() == popupName) {
returnToPreviousWindow();
}
+ else {
+ popWindow(popupName);
+ }
}
bool Application::isPopupPermitted([[maybe_unused]] gui::popup::ID popupId) const
M module-apps/Application.hpp => module-apps/Application.hpp +3 -0
@@ 334,6 334,9 @@ namespace app
WindowsStack windowsStack;
WindowsFactory windowsFactory;
+ /// Find and pop window from stack by window name
+ void popWindow(const std::string &window);
+
/// Method used to attach popups windows to application
void attachPopups(const std::vector<gui::popup::ID> &popupsList);
void showPopup(gui::popup::ID id, const gui::PopupRequestParams *params);
M module-apps/locks/data/LockMessages.hpp => module-apps/locks/data/LockMessages.hpp +8 -21
@@ 8,32 8,19 @@
namespace locks
{
class UnlockPhone : public sys::DataMessage
- {
- public:
- UnlockPhone() : DataMessage{}
- {}
- };
+ {};
class CancelUnlockPhone : public sys::DataMessage
- {
- public:
- CancelUnlockPhone() : DataMessage{}
- {}
- };
+ {};
class UnlockedPhone : public sys::DataMessage
- {
- public:
- UnlockedPhone() : DataMessage{}
- {}
- };
+ {};
class LockPhone : public sys::DataMessage
- {
- public:
- LockPhone() : DataMessage{}
- {}
- };
+ {};
+
+ class LockedPhone : public sys::DataMessage
+ {};
class UnLockPhoneInput : public sys::DataMessage
{
@@ 49,4 36,4 @@ namespace locks
return inputData;
}
};
-} // namespace lock
+} // namespace locks
M module-apps/locks/handlers/PhoneLockHandler.cpp => module-apps/locks/handlers/PhoneLockHandler.cpp +6 -3
@@ 38,6 38,7 @@ namespace locks
app::manager::Controller::sendAction(owner,
app::manager::actions::ShowPopup,
std::make_unique<gui::PopupRequestParams>(gui::popup::ID::PhoneLock));
+ owner->bus.sendMulticast(std::make_shared<locks::LockedPhone>(), sys::BusChannel::PhoneLockChanges);
}
void PhoneLockHandler::PhoneUnlockPopupsCloseAction()
@@ 45,9 46,11 @@ namespace locks
app::manager::Controller::sendAction(owner,
app::manager::actions::AbortPopup,
std::make_unique<gui::PopupRequestParams>(gui::popup::ID::InputLock));
- app::manager::Controller::sendAction(owner,
- app::manager::actions::AbortPopup,
- std::make_unique<gui::PopupRequestParams>(gui::popup::ID::PhoneLock));
+ if (!isPhoneLocked()) {
+ app::manager::Controller::sendAction(owner,
+ app::manager::actions::AbortPopup,
+ std::make_unique<gui::PopupRequestParams>(gui::popup::ID::PhoneLock));
+ }
}
void PhoneLockHandler::PhoneUnlockAction()
M module-apps/locks/windows/PinLockWindow.cpp => module-apps/locks/windows/PinLockWindow.cpp +1 -1
@@ 108,7 108,7 @@ namespace gui
else if (lock->isState(Lock::LockState::InputInvalidRetryRequired)) {
lock->consumeState();
}
- application->switchWindow(gui::name::window::main_window);
+ application->returnToPreviousWindow();
return true;
}
else if (inputEvent.is(KeyCode::KEY_PND)) {
M module-services/service-desktop/ServiceDesktop.cpp => module-services/service-desktop/ServiceDesktop.cpp +1 -1
@@ 353,7 353,7 @@ void ServiceDesktop::processUSBHandshake(sdesktop::usb::USBHandshake *msg)
if (usbSecurityModel->processHandshake(msg)) {
LOG_DEBUG("Handshake ok. Unlocking.");
- bus.sendUnicast(std::make_shared<locks::UnlockedPhone>(), service::name::service_desktop);
+ bus.sendUnicast(std::make_shared<locks::UnlockPhone>(), service::name::service_desktop);
responseContext.setResponseStatus(parserFSM::http::Code::OK);
}