aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow/mainwindow.cpp')
-rw-r--r--src/mainwindow/mainwindow.cpp54
1 files changed, 42 insertions, 12 deletions
diff --git a/src/mainwindow/mainwindow.cpp b/src/mainwindow/mainwindow.cpp
index b607a63..e16f34f 100644
--- a/src/mainwindow/mainwindow.cpp
+++ b/src/mainwindow/mainwindow.cpp
@@ -14,6 +14,7 @@
#include "configuration.h"
#include "menubar.h"
#include "webengine/webprofile.h"
+#include "webengine/webprofilemanager.h"
#include "webengine/webview.h"
#include "widgets/dockwidget.h"
#include "widgets/navigationbar.h"
@@ -23,10 +24,9 @@
#include <QMessageBox>
#include <QStatusBar>
-MainWindow::MainWindow(QWidget *parent)
+MainWindow::MainWindow(const Session::MainWindow &data, QWidget *parent)
: QMainWindow(parent)
{
-
Configuration config;
// create UI
@@ -46,7 +46,7 @@ MainWindow::MainWindow(QWidget *parent)
addressBar = new AddressBar(this);
navigationToolBar->addWidget(addressBar);
- Browser *app = qobject_cast<Browser *>(qApp);
+ auto *app = qobject_cast<Browser *>(qApp);
this->addToolBarBreak();
this->addToolBar(new BookmarksToolbar(app->bookmarks()->model(), this));
@@ -65,6 +65,14 @@ MainWindow::MainWindow(QWidget *parent)
searchBox->setVisible(!searchBox->isVisible());
});
QMainWindow::addAction(searchAction);
+
+ for(const auto &s : data.subwindows) {
+ createSubWindow(s);
+ }
+ if(m_subwindows.isEmpty()) {
+ const Session::SubWindow s;
+ createSubWindow(s);
+ }
}
void MainWindow::addDockWidget(Qt::DockWidgetArea area, QWidget *widget)
@@ -72,18 +80,20 @@ void MainWindow::addDockWidget(Qt::DockWidgetArea area, QWidget *widget)
QDockWidget *lastDock = nullptr;
const auto docks = findChildren<QDockWidget *>();
for(QDockWidget *dock : docks) {
- if(dockWidgetArea(dock) == area)
+ if(dockWidgetArea(dock) == area) {
lastDock = dock;
+ }
}
- DockWidget *dock = new DockWidget(widget->windowTitle(), this);
+ auto *dock = new DockWidget(widget->windowTitle(), this);
dock->setMinimumWidth(460);
dock->setWidget(widget);
- if(lastDock == nullptr)
+ if(lastDock == nullptr) {
QMainWindow::addDockWidget(area, dock);
- else
+ } else {
tabifyDockWidget(lastDock, dock);
+ }
}
void MainWindow::removeDockWidget(QWidget *widget)
@@ -105,8 +115,23 @@ void MainWindow::createTab(const QUrl &url)
}
}
-SubWindow *MainWindow::createSubWindow(WebProfile *profile, bool openProfileNewtab)
+void MainWindow::createTab(const Session::WebView &data)
+{
+ auto *w = qobject_cast<SubWindow *>(centralWidget());
+ if(w != nullptr) {
+ w->addTab(data);
+ }
+}
+
+SubWindow *MainWindow::createSubWindow(const Session::SubWindow &data)
{
+ const auto *profileManager = WebProfileManager::instance();
+ Q_CHECK_PTR(profileManager);
+
+ auto *profile = profileManager->profile(data.profile);
+ if(profile == nullptr) {
+ profile = WebProfile::defaultProfile();
+ }
auto *w = new SubWindow(this);
w->setProfile(profile);
m_subwindows.append(w);
@@ -114,8 +139,9 @@ SubWindow *MainWindow::createSubWindow(WebProfile *profile, bool openProfileNewt
m_menuBar->insertSubWindow(w);
connect(w, &SubWindow::windowTitleChanged, this, [this, w](const QString &title) {
- if(w == currentSubWindow())
+ if(w == currentSubWindow()) {
setWindowTitle(QString("[%1] - %2").arg(title, defaultWindowTitle));
+ }
});
connect(w, &SubWindow::aboutToClose, this, [this, w]() {
@@ -128,9 +154,13 @@ SubWindow *MainWindow::createSubWindow(WebProfile *profile, bool openProfileNewt
}
});
- if(openProfileNewtab)
- w->addTab(w->profile()->newtab());
-
+ if(data.tabs.count() == 0) {
+ w->addTab(profile->newtab());
+ return w;
+ }
+ for(const auto &tab : data.tabs) {
+ w->addTab(tab);
+ }
return w;
}