diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-05-28 11:42:09 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-05-28 11:42:09 +0200 |
commit | c299a5e9c1ce2cd7af2eb02645993b21b9448f34 (patch) | |
tree | cd74c10814014d5f86cfc253d59d1920df238f9e /src/mainwindow | |
parent | Remove Window::addTab(WebView *view) (diff) | |
download | smolbote-c299a5e9c1ce2cd7af2eb02645993b21b9448f34.tar.xz |
Changing Window profile
Diffstat (limited to 'src/mainwindow')
-rw-r--r-- | src/mainwindow/window.cpp | 35 | ||||
-rw-r--r-- | src/mainwindow/window.h | 2 |
2 files changed, 32 insertions, 5 deletions
diff --git a/src/mainwindow/window.cpp b/src/mainwindow/window.cpp index 47f8489..e3d5516 100644 --- a/src/mainwindow/window.cpp +++ b/src/mainwindow/window.cpp @@ -18,6 +18,7 @@ #include <QJsonObject> #include <QJsonArray> #include <QJsonDocument> +#include "browser.h" Window::Window(const QHash<QString, QString> &config, QWidget *parent, Qt::WindowFlags flags) : QMdiSubWindow(parent, flags) @@ -31,15 +32,28 @@ Window::Window(const QHash<QString, QString> &config, QWidget *parent, Qt::Windo profile = WebProfile::defaultProfile(); -#ifdef QT_DEBUG { auto *menu = systemMenu(); - menu->addSeparator(); - menu->addAction(tr("Debug menu"))->setEnabled(false); - menu->addAction(tr("Profile: %1").arg(profile->isOffTheRecord() ? tr("off-the-record") : profile->storageName()))->setEnabled(false); + auto *profileName_action = menu->addAction(tr("Profile: %1").arg(profile->isOffTheRecord() ? tr("off-the-record") : profile->storageName())); + profileName_action->setEnabled(false); + auto *loadProfile_menu = menu->addMenu(tr("Load profile")); + + Browser *instance = qobject_cast<Browser*>(qApp); + Q_ASSERT_X(instance != nullptr, "Window::Window", "Could not cast instance"); + for(const QString &name : instance->profiles()) { + auto *loadAction = loadProfile_menu->addAction(name); + connect(loadAction, &QAction::triggered, this, [name, instance, profileName_action, this]() { + auto *profile = instance->profile(name); + this->setProfile(profile); + profileName_action->setText(tr("Profile: %1").arg(name)); + }); + } + +#ifdef QT_DEBUG menu->addSeparator(); + menu->addAction(tr("Debug menu"))->setEnabled(false); auto *saveSession_action = menu->addAction(tr("Save session")); menu->addAction(tr("Load session"))->setEnabled(false); setSystemMenu(menu); @@ -48,8 +62,8 @@ Window::Window(const QHash<QString, QString> &config, QWidget *parent, Qt::Windo QJsonDocument doc(session()); qDebug("%s", qUtf8Printable(doc.toJson())); }); - } #endif + } // new tab button auto *newTab_button = new QToolButton(this); @@ -117,6 +131,17 @@ WebView *Window::view(int index) const return qobject_cast<WebView *>(tabWidget->widget(index)); } +void Window::setProfile(WebProfile *profile) +{ + Q_ASSERT_X(profile != nullptr, "Window::setProfile", "Tried to set null profile"); + for(int i = 0; i < tabWidget->count(); ++i) { + auto *view = qobject_cast<WebView *>(tabWidget->widget(i)); + const auto url = view->url(); + view->setPage(new WebPage(profile, view)); + view->load(url); + } +} + int Window::addTab(const QUrl &url) { auto *view = new WebView(profile, this); diff --git a/src/mainwindow/window.h b/src/mainwindow/window.h index a569214..6431466 100644 --- a/src/mainwindow/window.h +++ b/src/mainwindow/window.h @@ -27,6 +27,8 @@ public: WebView *currentView(); WebView *view(int index) const; + void setProfile(WebProfile *profile); + QJsonObject session() const; void restoreSession(const QJsonObject &sessionData); |