aboutsummaryrefslogtreecommitdiff
path: root/src/subwindow/subwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/subwindow/subwindow.cpp')
-rw-r--r--src/subwindow/subwindow.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/subwindow/subwindow.cpp b/src/subwindow/subwindow.cpp
index 58acee6..8c2e3e7 100644
--- a/src/subwindow/subwindow.cpp
+++ b/src/subwindow/subwindow.cpp
@@ -10,10 +10,12 @@
#include "browser.h"
#include "configuration.h"
#include "webengine/webprofile.h"
+#include "webengine/webprofilemanager.h"
#include "webengine/webview.h"
#include <QAction>
#include <QCloseEvent>
#include <QHideEvent>
+#include <QJsonArray>
#include <QMenu>
#include <QShortcut>
#include <QShowEvent>
@@ -76,6 +78,35 @@ SubWindow::SubWindow(QWidget *parent, Qt::WindowFlags flags)
});
}
+SubWindow::SubWindow(const Session::SubWindow &data, QWidget *parent, Qt::WindowFlags flags)
+ : SubWindow(parent, flags)
+{
+ const auto *profileManager = WebProfileManager::instance();
+ Q_CHECK_PTR(profileManager);
+
+ auto *profile = profileManager->profile(data.profile);
+ if(profile != nullptr) {
+ setProfile(profile);
+ }
+
+ for(const auto &data : data.tabs) {
+ addTab(data);
+ }
+}
+
+Session::SubWindow SubWindow::serialize() const
+{
+ const auto *profileManager = WebProfileManager::instance();
+ Q_CHECK_PTR(profileManager);
+
+ QVector<Session::WebView> tabs(tabCount());
+ for(int i = 0; i < tabCount(); ++i) {
+ tabs[i] = view(i)->serialize();
+ }
+
+ return { profileManager->id(profile()), tabs };
+}
+
void SubWindow::setProfile(WebProfile *profile)
{
if(profile == nullptr) {
@@ -115,6 +146,12 @@ int SubWindow::addTab(const QUrl &url, WebProfile *profile)
return tabWidget->addTab(view);
}
+int SubWindow::addTab(const Session::WebView &data)
+{
+ auto *view = new WebView(data, this);
+ return tabWidget->addTab(view);
+}
+
void SubWindow::moveTab(int from, int to)
{
tabWidget->tabBar()->moveTab(from, to);