aboutsummaryrefslogtreecommitdiff
path: root/src/webengine/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/webengine/widgets')
-rw-r--r--src/webengine/widgets/pagemenu.cpp25
-rw-r--r--src/webengine/widgets/pagemenu.h7
2 files changed, 32 insertions, 0 deletions
diff --git a/src/webengine/widgets/pagemenu.cpp b/src/webengine/widgets/pagemenu.cpp
index c435d34..9cfeb71 100644
--- a/src/webengine/widgets/pagemenu.cpp
+++ b/src/webengine/widgets/pagemenu.cpp
@@ -18,11 +18,13 @@
#include <QToolButton>
#include <QVBoxLayout>
#include <QWidgetAction>
+#include "browser.h"
PageMenu::PageMenu(WebView *parent)
: QMenu(tr("Page"), parent)
{
setMinimumWidth(240);
+ view = parent;
auto *bookmarkAction = addAction(tr("Bookmark page"));
connect(bookmarkAction, &QAction::triggered, parent, [parent]() {
@@ -89,4 +91,27 @@ PageMenu::PageMenu(WebView *parent)
}
addAction(zoomWidgetAction);
+ addSeparator();
+
+ loadProfile_menu = addMenu(tr("Load Profile"));
+ connect(this, &PageMenu::aboutToShow, this, &PageMenu::updateLoadProfileMenu);
+}
+
+void PageMenu::updateLoadProfileMenu()
+{
+ Q_CHECK_PTR(loadProfile_menu);
+ loadProfile_menu->clear();
+
+ auto *browser = qobject_cast<Browser *>(qApp);
+ Q_CHECK_PTR(browser);
+
+ for(const QString &name : browser->profiles()) {
+ auto *profile = browser->profile(name);
+ Q_CHECK_PTR(profile);
+
+ auto *profileAction = loadProfile_menu->addAction(profile->name());
+ connect(profileAction, &QAction::triggered, this, [this, profile]() {
+ view->setProfile(profile);
+ });
+ }
}
diff --git a/src/webengine/widgets/pagemenu.h b/src/webengine/widgets/pagemenu.h
index 91f35e0..23e0e20 100644
--- a/src/webengine/widgets/pagemenu.h
+++ b/src/webengine/widgets/pagemenu.h
@@ -17,6 +17,13 @@ class PageMenu : public QMenu
Q_OBJECT
public:
explicit PageMenu(WebView *parent = nullptr);
+
+private slots:
+ void updateLoadProfileMenu();
+
+private:
+ QMenu *loadProfile_menu = nullptr;
+ WebView *view = nullptr;
};
#endif //SMOLBOTE_PAGEMENU_H