diff options
Diffstat (limited to 'src/mainwindow/mainwindow.cpp')
-rw-r--r-- | src/mainwindow/mainwindow.cpp | 54 |
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; } |