aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/Decorations.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/Decorations.hpp')
-rw-r--r--src/widgets/Decorations.hpp30
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);
};