diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-07-25 17:03:32 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-07-25 17:03:32 +0530 |
| commit | 51be15cd7c9f39276f27d416356744041e62c22c (patch) | |
| tree | 0ba09371265f4b3d9923b60308d9aecce8c37e20 /src/widgets/EdgeDecoration.cpp | |
| parent | 7e3b6182c4581fcb39ab1d0ef2eb07fe9fa1d8b6 (diff) | |
| download | null-browser-51be15cd7c9f39276f27d416356744041e62c22c.tar.gz null-browser-51be15cd7c9f39276f27d416356744041e62c22c.zip | |
Add edge decoration widgets
Diffstat (limited to '')
| -rw-r--r-- | src/widgets/EdgeDecoration.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/widgets/EdgeDecoration.cpp b/src/widgets/EdgeDecoration.cpp new file mode 100644 index 0000000..58db639 --- /dev/null +++ b/src/widgets/EdgeDecoration.cpp @@ -0,0 +1,67 @@ +#include <QWidget> +#include <QtCore> +#include <qboxlayout.h> +#include <qlabel.h> +#include <qwebengineview.h> + +#include "widgets/WebView.hpp" +#include "widgets/WebViewStack.hpp" + +#include "widgets/EdgeDecoration.hpp" + +QString default_html_layout = R"HTML( + {{body}} + <style> + :where(html, body) { + margin: 0; + padding: 0; + background: black; + color: white; + overflow: hidden; + } + </style> +)HTML"; + +EdgeDecoration::EdgeDecoration(bool vertical, QWebEngineProfile *profile, QWidget *parent) + : QWidget(parent), vertical(vertical), profile(profile) { + auto *vbox = new QVBoxLayout(); + vbox->setContentsMargins(0, 0, 0, 0); + vbox->setSpacing(0); + setLayout(vbox); +} + +void EdgeDecoration::set_html(const QString &content) { + html_content = content; + setup_webview(); +} + +void EdgeDecoration::set_size(u_int16_t size_value) { + size = size_value; + setup_webview(); +} + +void EdgeDecoration::set_enabled(bool enabled_value) { + enabled = enabled_value; + setup_webview(); +} + +void EdgeDecoration::setup_webview() { + if (enabled) { + if (webview == nullptr) { + webview = new WebView(WebViewStack::next_webview_id++, profile, this); + layout()->addWidget(webview); + } + + webview->setHtml(default_html_layout.replace("{{body}}", html_content)); + if (vertical) + setFixedWidth(size); + else + setFixedHeight(size); + } else { + if (webview != nullptr) { + layout()->removeWidget(webview); + webview->deleteLater(); + webview = nullptr; + } + } +} |
