M module-apps/application-desktop/ApplicationDesktop.cpp => module-apps/application-desktop/ApplicationDesktop.cpp +17 -2
@@ 197,10 197,25 @@ namespace app
return false;
}
+ bool ApplicationDesktop::isPopupPermitted([[maybe_unused]] gui::popup::ID popupId) const
+ {
+ if (blockAllPopups) {
+ return false;
+ }
+ return true;
+ }
+
void ApplicationDesktop::handleLowBatteryNotification(manager::actions::ActionParamsPtr &&data)
{
auto lowBatteryState = static_cast<manager::actions::LowBatteryNotificationParams *>(data.get());
+ auto currentWindow = getCurrentWindow();
+ if (currentWindow->getName() == app::window::name::dead_battery ||
+ currentWindow->getName() == app::window::name::charging_battery) {
+ data->ignoreCurrentWindowOnStack = true;
+ }
+
if (lowBatteryState->isActive()) {
+ blockAllPopups = true;
if (lowBatteryState->isCharging()) {
switchWindow(app::window::name::charging_battery, std::move(data));
}
@@ 209,10 224,10 @@ namespace app
}
}
else {
- auto currentWindow = getCurrentWindow();
+ blockAllPopups = false;
if (currentWindow->getName() == app::window::name::dead_battery ||
currentWindow->getName() == app::window::name::charging_battery) {
- app::manager::Controller::sendAction(this, app::manager::actions::Home);
+ app::manager::Controller::sendAction(this, app::manager::actions::Home, std::move(data));
}
}
}
M module-apps/application-desktop/include/application-desktop/ApplicationDesktop.hpp => module-apps/application-desktop/include/application-desktop/ApplicationDesktop.hpp +3 -0
@@ 39,6 39,8 @@ namespace app
// done
void handleNotificationsChanged(std::unique_ptr<gui::SwitchData> notificationsParams) override;
+ bool isPopupPermitted(gui::popup::ID popupId) const override;
+
void setOsUpdateVersion(const std::string &value);
private:
@@ 46,6 48,7 @@ namespace app
void handleLowBatteryNotification(manager::actions::ActionParamsPtr &&data);
DBNotificationsHandler dbNotificationHandler;
sys::MessagePointer handleAsyncResponse(sys::ResponseMessage *resp) override;
+ bool blockAllPopups = false;
};
template <> struct ManifestTraits<ApplicationDesktop>
M module-services/service-appmgr/model/ApplicationManagerCommon.cpp => module-services/service-appmgr/model/ApplicationManagerCommon.cpp +2 -1
@@ 449,7 449,8 @@ namespace app::manager
{
action.setTargetApplication(resolveHomeApplication());
- SwitchRequest switchRequest(service::name::appmgr, resolveHomeApplication(), resolveHomeWindow(), nullptr);
+ SwitchRequest switchRequest(
+ service::name::appmgr, resolveHomeApplication(), resolveHomeWindow(), std::move(action.params));
return handleSwitchApplication(&switchRequest) ? ActionProcessStatus::Accepted : ActionProcessStatus::Dropped;
}