aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow/mainwindow.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-07-01 18:13:01 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-07-01 18:13:01 +0200
commitaa8198eec380659fd3538e058b50c24b0f88743c (patch)
treeb9ae32ac4192de87054a8892d4e654a45737a04e /src/mainwindow/mainwindow.cpp
parentAdd browser.locale and browser.translation (diff)
downloadsmolbote-aa8198eec380659fd3538e058b50c24b0f88743c.tar.xz
Code cleanup
Clean up MainWindow Configuration is now a std::unique_ptr Connect downloads and request interceptor to all profiles
Diffstat (limited to 'src/mainwindow/mainwindow.cpp')
-rw-r--r--src/mainwindow/mainwindow.cpp164
1 files changed, 69 insertions, 95 deletions
diff --git a/src/mainwindow/mainwindow.cpp b/src/mainwindow/mainwindow.cpp
index 7adc9db..741b544 100644
--- a/src/mainwindow/mainwindow.cpp
+++ b/src/mainwindow/mainwindow.cpp
@@ -7,6 +7,7 @@
*/
#include "mainwindow.h"
+#include "ui_mainwindow.h"
#include "addressbar/addressbar.h"
#include "browser.h"
#include "subwindow.h"
@@ -36,12 +37,14 @@
#include <KWindowEffects>
#endif
-MainWindow::MainWindow(std::shared_ptr<Configuration> &config, QWidget *parent)
+MainWindow::MainWindow(const std::unique_ptr<Configuration> &config, QWidget *parent)
: QMainWindow(parent)
+ , ui(new Ui::MainWindow)
, mdiArea(new QMdiArea(this))
{
Q_ASSERT(config);
- m_config = config;
+
+ ui->setupUi(this);
#ifdef PLASMA_BLUR
setAttribute(Qt::WA_TranslucentBackground, true);
@@ -49,14 +52,69 @@ MainWindow::MainWindow(std::shared_ptr<Configuration> &config, QWidget *parent)
#endif
// create UI
- setWindowTitle(QString::fromStdString(config->value<std::string>("mainwindow.title").value()));
+ setWindowTitle(config->value<QString>("mainwindow.title").value());
resize(config->value<int>("mainwindow.width").value(), config->value<int>("mainwindow.height").value());
if(config->value<bool>("mainwindow.maximized").value()) {
setWindowState(Qt::WindowMaximized);
}
show();
- createMenuBar();
+ // connect smolbote menu
+ {
+ connect(ui->actionNewSubwindow, &QAction::triggered, this, [this, &config]() {
+ auto *profile = WebProfile::defaultProfile();
+ auto *window = createSubWindow(config, profile);
+ window->addTab(profile->newtab(), profile);
+ });
+ config->setShortcut(ui->actionNewSubwindow, "mainwindow.shortcuts.newGroup");
+
+ connect(ui->actionNewWindow, &QAction::triggered, this, []() {
+ auto *browser = qobject_cast<Browser *>(qApp);
+ if(browser)
+ browser->createWindow();
+ });
+ config->setShortcut(ui->actionNewWindow, "mainwindow.shortcuts.newWindow");
+
+ connect(ui->actionAbout, &QAction::triggered, qobject_cast<Browser *>(qApp), &Browser::about);
+ config->setShortcut(ui->actionAbout, "mainwindow.shortcuts.about");
+
+ connect(ui->actionAboutQt, &QAction::triggered, qApp, &QApplication::aboutQt);
+
+ connect(ui->actionQuit, &QAction::triggered, qApp, &QApplication::quit);
+ config->setShortcut(ui->actionQuit, "mainwindow.shortcuts.quit");
+ }
+
+ // connect session menu
+ {
+ connect(ui->actionSaveSession, &QAction::triggered, this, [this]() {
+ const QString filename = QFileDialog::getSaveFileName(this, tr("Save Session"), QDir::homePath(), tr("JSON (*.json)"));
+ QFile output(filename);
+ if(output.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) {
+ output.write(QJsonDocument(Session::toJsonObject(this)).toJson());
+ output.close();
+ }
+ });
+ connect(ui->actionLoadSession, &QAction::triggered, this, [this]() {
+ const QString filename = QFileDialog::getOpenFileName(this, tr("Load Session"), QDir::homePath(), tr("JSON (*.json)"));
+ QFile json(filename);
+ if(json.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ auto *browser = qobject_cast<Browser *>(qApp);
+ browser->sendMessage(json.readAll());
+ json.close();
+ }
+ });
+ }
+
+ // connect window menu
+ {
+ connect(ui->actionTileWindows, &QAction::triggered, mdiArea, &QMdiArea::tileSubWindows);
+ config->setShortcut(ui->actionTileWindows, "mainwindow.shortcuts.tileWindows");
+
+ connect(ui->actionCascadeWindows, &QAction::triggered, mdiArea, &QMdiArea::cascadeSubWindows);
+ config->setShortcut(ui->actionCascadeWindows, "mainwindow.shortcuts.cascadeWindows");
+
+ subWindowAction = ui->actionCurrentWindow;
+ }
navigationToolBar = new NavigationBar(config->section("navigation"), this);
navigationToolBar->setMovable(config->value<bool>("navigation.movable").value());
@@ -117,7 +175,7 @@ MainWindow::MainWindow(std::shared_ptr<Configuration> &config, QWidget *parent)
// search box
auto *searchAction = new QAction(this);
- m_config->setShortcut(searchAction, "mainwindow.shortcuts.search");
+ config->setShortcut(searchAction, "mainwindow.shortcuts.search");
connect(searchAction, &QAction::triggered, this, [=]() {
/* QTBUG-18665
* When focusing out of the search box and hiding it, the first
@@ -143,87 +201,11 @@ MainWindow::~MainWindow()
disconnect(addressBar);
}
-void MainWindow::createMenuBar()
-{
- Q_CHECK_PTR(mdiArea);
-
- // smolbote menu
- auto *smolboteMenu = menuBar()->addMenu(qApp->applicationDisplayName());
-
- auto *subwindowAction = smolboteMenu->addAction(tr("New subwindow"), this, [this]() {
- createSubWindow();
- });
- m_config->setShortcut(subwindowAction, "mainwindow.shortcuts.newGroup");
-
- auto *windowAction = smolboteMenu->addAction(tr("New window"), this, []() {
- auto *browser = qobject_cast<Browser *>(qApp);
- if(browser)
- browser->createWindow();
- });
- m_config->setShortcut(windowAction, "mainwindow.shortcuts.newWindow");
-
- smolboteMenu->addSeparator();
-
- auto *aboutAction = smolboteMenu->addAction(tr("About"), qobject_cast<Browser *>(qApp), &Browser::about);
- m_config->setShortcut(aboutAction, "mainwindow.shortcuts.about");
- smolboteMenu->addAction(tr("About Qt"), qApp, &QApplication::aboutQt);
-
- smolboteMenu->addSeparator();
-
- auto *quitAction = smolboteMenu->addAction(tr("Quit"), qApp, &QApplication::quit);
- m_config->setShortcut(quitAction, "mainwindow.shortcuts.quit");
-
- // session menu
- auto *sessionMenu = menuBar()->addMenu(tr("Session"));
-
- sessionMenu->addAction(tr("Save Session"), this, [this]() {
- const QString filename = QFileDialog::getSaveFileName(this, tr("Save Session"), QDir::homePath(), tr("JSON (*.json)"));
- QFile output(filename);
- if(output.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) {
- output.write(QJsonDocument(Session::toJsonObject(this)).toJson());
- output.close();
- }
- });
- sessionMenu->addAction(tr("Load Session"), this, [this]() {
- const QString filename = QFileDialog::getOpenFileName(this, tr("Load Session"), QDir::homePath(), tr("JSON (*.json)"));
- QFile json(filename);
- if(json.open(QIODevice::ReadOnly | QIODevice::Text)) {
- auto *browser = qobject_cast<Browser *>(qApp);
- browser->sendMessage(json.readAll());
- json.close();
- }
- });
-
- // window menu
- auto *windowMenu = menuBar()->addMenu(tr("Window"));
-
- auto *tileAction = windowMenu->addAction(tr("Tile windows"), mdiArea, &QMdiArea::tileSubWindows);
- m_config->setShortcut(tileAction, "mainwindow.shortcuts.tileWindows");
-
- auto *cascadeAction = windowMenu->addAction(tr("Cascade windows"), mdiArea, &QMdiArea::cascadeSubWindows);
- m_config->setShortcut(cascadeAction, "mainwindow.shortcuts.cascadeWindows");
-
- subWindowAction = windowMenu->addAction(tr("Current window"));
-
- // tools menu
- toolsMenu = menuBar()->addMenu(tr("Tools"));
-
- // debug menu
-#ifdef QT_DEBUG
- auto *debugMenu = menuBar()->addMenu(tr("Debug"));
-
- debugMenu->addAction(tr("Print window session"), [this]() {
- auto json = Session::toJsonObject(this);
- qDebug("session data >>>\n%s\n<<<", qUtf8Printable(QJsonDocument(json).toJson()));
- });
-#endif
-}
-
void MainWindow::addAction(ActionLocation where, QAction *action)
{
switch(where) {
case ToolsMenu:
- toolsMenu->addAction(action);
+ ui->menuTools->addAction(action);
break;
default:
QMainWindow::addAction(action);
@@ -264,7 +246,9 @@ void MainWindow::createTab(const QUrl &url)
{
auto *w = qobject_cast<SubWindow *>(mdiArea->currentSubWindow());
if(w == nullptr) {
- w = createSubWindow(url.toString());
+ //w = createSubWindow(url.toString());
+// w = createSubWindow(WebProfile::defaultProfile());
+// w->addTab(url);
} else {
w->addTab(url);
}
@@ -287,9 +271,9 @@ SubWindow *MainWindow::currentSubWindow() const
return qobject_cast<SubWindow *>(mdiArea->currentSubWindow());
}
-SubWindow *MainWindow::createSubWindow(WebProfile *profile)
+SubWindow *MainWindow::createSubWindow(const std::unique_ptr<Configuration> &config, WebProfile *profile)
{
- auto *w = new SubWindow(m_config->section("window"), this);
+ auto *w = new SubWindow(config, this);
w->setProfile(profile);
mdiArea->addSubWindow(w);
w->showMaximized();
@@ -297,16 +281,6 @@ SubWindow *MainWindow::createSubWindow(WebProfile *profile)
return w;
}
-SubWindow *MainWindow::createSubWindow(const QString &url)
-{
- auto *w = new SubWindow(m_config->section("window"), this);
- mdiArea->addSubWindow(w);
- w->showMaximized();
- w->setFocus();
- w->addTab(url);
- return w;
-}
-
void MainWindow::setView(WebView *view)
{
if(currentView) {