summaryrefslogtreecommitdiff
path: root/src/rekonqwindow_class.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/rekonqwindow_class.cpp')
-rw-r--r--src/rekonqwindow_class.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/rekonqwindow_class.cpp b/src/rekonqwindow_class.cpp
new file mode 100644
index 00000000..d0645cb6
--- /dev/null
+++ b/src/rekonqwindow_class.cpp
@@ -0,0 +1,91 @@
+/* ============================================================
+ * The rekonq project
+ * ============================================================
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * Copyright (C) 2013 by Andrea Diamantini <adjam7 at gmail dot com>
+ * SPDX-License-Identifier: GPL-3.0-only
+ * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net>
+ * ============================================================ */
+
+#include "rekonqwindow.hpp"
+#include "ui_rekonqwindow.h"
+#include <QRegularExpression>
+#include <rview.hpp>
+
+#ifndef REKONQ_TEST
+#include "application.hpp"
+#include "settings/settingsdialog.h"
+#include "taskmanager.h"
+#endif
+
+#if defined(QT_DEBUG) && !defined(REKONQ_TEST)
+#include "test/rview_fake.h"
+#endif
+
+RekonqWindow::RekonqWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::RekonqWindow)
+{
+ ui->setupUi(this);
+
+ connect(ui->tabs, &TabBar::currentChanged, this, [this](RekonqView *view) {
+ if (view == nullptr) { // last tab has been closed
+ close();
+ return;
+ }
+
+ ui->views->setCurrentWidget(view);
+ ui->urlBar->setCurrentView(view);
+ });
+ connect(ui->tabs, &TabBar::removeView, this, [this](RekonqView *view) { ui->views->removeWidget(view); });
+
+ connect(ui->back, &QToolButton::clicked, this, [this]() { currentView()->back(); });
+ connect(ui->forward, &QToolButton::clicked, this, [this]() { currentView()->forward(); });
+ connect(ui->refresh, &QToolButton::clicked, this, [this]() { currentView()->refresh(); });
+ connect(ui->home, &QToolButton::clicked, this, [this]() { loadUrl(rekonq::HomePage, rekonq::CurrentTab); });
+
+ auto *actionFocusUrlBar = new QAction(this);
+ actionFocusUrlBar->setShortcut({"F6"});
+ connect(actionFocusUrlBar, &QAction::triggered, this, [this]() {
+ ui->urlBar->setFocus();
+ ui->urlBar->selectAll();
+ });
+ addAction(actionFocusUrlBar);
+
+ // connect menu actions
+ // file menu
+#if defined(QT_DEBUG) && !defined(REKONQ_TEST)
+ {
+ auto *actionNewDebugTab = new QAction(tr("New Debug Tab"), ui->menuFile);
+ connect(actionNewDebugTab, &QAction::triggered, this, [this]() { addView(new RekonqView_fake(this)); });
+ ui->menuFile->insertAction(ui->actionNewTab, actionNewDebugTab);
+ }
+#endif
+ connect(ui->actionNewTab, &QAction::triggered, this,
+ [this]() { loadUrl(rekonq::NewTabPage, rekonq::NewFocusedTab); });
+ connect(ui->actionCloseTab, &QAction::triggered, this,
+ [this]() { emit ui->tabs->tabCloseRequested(ui->tabs->currentIndex()); });
+ connect(ui->actionQuit, &QAction::triggered, qApp, &QApplication::quit);
+ // edit menu
+ // view menu
+ // history menu
+ // bookmarks menu
+ // settings menu
+#ifndef REKONQ_TEST
+ connect(ui->actionSettings, &QAction::triggered, this,
+ [this]() { (new SettingsDialog(Application::instance()->settings(), this))->show(); });
+ connect(ui->actionTaskManager, &QAction::triggered, this, [this]() { (new TaskManager(this))->show(); });
+#endif
+ // help menu
+ connect(ui->actionAboutQt, &QAction::triggered, qApp, &QApplication::aboutQt);
+
+ connect(ui->newTab, &QToolButton::clicked, ui->actionNewTab, &QAction::trigger);
+}
+
+RekonqWindow::~RekonqWindow() { delete ui; }
+
+void RekonqWindow::setupShortcuts(const RekonqSettings *settings)
+{
+ for (auto *action : findChildren<QAction *>(QRegularExpression("^action.*"))) {
+ const auto shortcut = settings->value(action->objectName());
+ if (shortcut.isValid()) action->setShortcut(shortcut.toString());
+ }
+}