// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #pragma once #include #include #include "WindowsPopupRequest.hpp" namespace app { class WindowsStack; } namespace gui { namespace popup { class Filter; } // namespace popup } // namespace gui namespace app { class WindowsPopupQueue { public: /// clears popup queue void clear(); /// pops next available popup we require to show /// * in order set by Disposition /// * limited by Filter passed to request std::optional popRequest(const gui::popup::Filter &filter); /// append element to stack /// returns success/fail void pushRequest(gui::popup::Request &&r); private: /// set of requests to handle if there are more than one /// requests have to be sortable (this is by design) /// to iterate by Requests in priority order /// this behaviour can be easily changed - just change: /// - gui::popup::Disposition class to hold more data /// - change comparison algorithm in Request (please use std::set then) std::multiset requests{}; }; } // namespace app