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