From 835d23f1f3b8cc3ada5005ac87bdcfe7029c8732 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 12 Jan 2017 11:11:34 +0100 Subject: New Window action now works --- src/browser.cpp | 6 ------ src/browser.h | 2 -- src/main.cpp | 6 +++--- src/mainwindow.cpp | 11 +++++++++-- src/mainwindow.h | 5 ++++- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/browser.cpp b/src/browser.cpp index cc68174..2b35e21 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -21,12 +21,6 @@ Browser::~Browser() m_windows.clear(); } - -QVector Browser::windows() -{ - return m_windows; -} - void Browser::addWindow(MainWindow *window) { if(m_windows.contains(window)) { diff --git a/src/browser.h b/src/browser.h index 938acda..38826f0 100644 --- a/src/browser.h +++ b/src/browser.h @@ -13,8 +13,6 @@ public: explicit Browser(QString configPath, QObject *parent = 0); ~Browser(); - // what is windows() useful for? - QVector windows(); void addWindow(MainWindow* window); public slots: diff --git a/src/main.cpp b/src/main.cpp index f8c9c7d..a0ec78f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,12 +26,12 @@ int main(int argc, char *argv[]) if(parser.positionalArguments().length() > 0) { QUrl url = QUrl::fromUserInput(parser.positionalArguments().at(0)); if(url.isValid()) { - instance.addWindow(new MainWindow(url)); + instance.addWindow(new MainWindow(&instance, url)); } else { - instance.addWindow(new MainWindow()); + instance.addWindow(new MainWindow(&instance)); } } else { - instance.addWindow(new MainWindow()); + instance.addWindow(new MainWindow(&instance)); } return app.exec(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 763d192..dea9f79 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -4,8 +4,9 @@ #include #include #include +#include "browser.h" -MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) : +MainWindow::MainWindow(Browser *instance, QUrl defaultUrl, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), navigationToolBar(new QToolBar(this)), @@ -13,6 +14,7 @@ MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) : tabBar(new WebViewTabBar(this)), urlLineEdit(new QLineEdit(navigationToolBar)) { + browserInstance = instance; Settings settings; ui->setupUi(this); @@ -21,8 +23,8 @@ MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) : // Populate the menu bar // Browser menu - with new window, new tab, open and quit QMenu *browserMenu = new QMenu(qApp->applicationName(), ui->menuBar); + browserMenu->addAction(tr("New Window"), this, SLOT(handleNewWindow()), QKeySequence(tr("Ctrl+N"))); browserMenu->addAction(tr("New Tab"), this, SLOT(createNewTab()), QKeySequence(tr("Ctrl+T"))); - browserMenu->addAction(tr("New Window")); browserMenu->addSeparator(); browserMenu->addAction(tr("Quit"), qApp, SLOT(quit()), QKeySequence(tr("Ctrl+Q"))); ui->menuBar->addMenu(browserMenu); @@ -70,6 +72,11 @@ void MainWindow::closeEvent(QCloseEvent *event) QMainWindow::closeEvent(event); } +void MainWindow::handleNewWindow(const QUrl &url) +{ + browserInstance->addWindow(new MainWindow(browserInstance, url)); +} + void MainWindow::handleTabChanged(QWebEngineView *view) { centralWidget()->setParent(0); diff --git a/src/mainwindow.h b/src/mainwindow.h index 48ce43f..7371759 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -12,12 +12,13 @@ namespace Ui { class MainWindow; } +class Browser; class MainWindow : public QMainWindow { Q_OBJECT public: - explicit MainWindow(QUrl defaultUrl = QUrl(""), QWidget *parent = 0); + explicit MainWindow(Browser *instance, QUrl defaultUrl = QUrl(""), QWidget *parent = 0); ~MainWindow(); public slots: @@ -27,12 +28,14 @@ protected: void closeEvent(QCloseEvent *event) override; private slots: + void handleNewWindow(const QUrl &url = QUrl("")); void handleTabChanged(QWebEngineView *view); void handleUrlChanged(); void handleUrlUpdated(const QUrl &url); void handleTitleUpdated(const QString &title); private: + Browser *browserInstance; Ui::MainWindow *ui; QToolBar *navigationToolBar, *tabToolBar; WebViewTabBar *tabBar; -- cgit v1.2.1