diff options
Diffstat (limited to '')
| -rw-r--r-- | src/widgets/Decorations.hpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/widgets/Decorations.hpp b/src/widgets/Decorations.hpp index 30df104..57fc526 100644 --- a/src/widgets/Decorations.hpp +++ b/src/widgets/Decorations.hpp @@ -1,6 +1,7 @@ #pragma once #include "widgets/EdgeDecoration.hpp" +#include "widgets/WebViewStack.hpp" #include <QWidget> #include <QtCore> #include <optional> @@ -22,11 +23,40 @@ public: void set_enabled(DecorationType type, bool enabled); bool get_enabled(DecorationType type); + std::optional<WebViewId> get_view_id(DecorationType type) { + auto decoration = get_decoration_widget(type); + return decoration.has_value() ? decoration.value()->get_view_id() : std::nullopt; + } + + bool has_webview(WebViewId view_id) { + for (auto *decoration : decorations()) + if (decoration->get_view_id() == view_id) + return true; + return false; + } + + void open_url(const QUrl &url, WebViewId view_id) { + for (auto *decoration : decorations()) { + if (decoration->get_view_id() == view_id) { + decoration->set_url(url); + return; + } + } + } + private: EdgeDecoration *decoration_top; EdgeDecoration *decoration_bottom; EdgeDecoration *decoration_left; EdgeDecoration *decoration_right; + std::vector<EdgeDecoration *> decorations() { + return { + decoration_top, + decoration_bottom, + decoration_left, + decoration_right, + }; + } std::optional<EdgeDecoration *> get_decoration_widget(DecorationType type); }; |
