~aleteoryx/muditaos

7afd68ac760eafc4c65cc2f8c118d9eac182afaf — Wojtek Rzepecki 4 years ago 0d501a6
[EGD-7852] Fix batteryr screens switch

fix of switch from dead/charging battery screens
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;
    }