From 72190e0977c0e352e5055e6f65bf2095efa77805 Mon Sep 17 00:00:00 2001 From: aqua Date: Sun, 28 Aug 2022 17:36:28 +0300 Subject: Add actions to RekonqView - back, forward, refresh, reload --- src/rekonqwindow.cpp | 112 +++++++++++++++++++++++++++------------------------ 1 file changed, 59 insertions(+), 53 deletions(-) (limited to 'src/rekonqwindow.cpp') diff --git a/src/rekonqwindow.cpp b/src/rekonqwindow.cpp index 4f3e57f1..094dc1ff 100644 --- a/src/rekonqwindow.cpp +++ b/src/rekonqwindow.cpp @@ -5,15 +5,14 @@ * Copyright (C) 2013 by Andrea Diamantini * SPDX-License-Identifier: GPL-3.0-only * Copyright (C) 2022 aqua - * ============================================================ - * Description: Main Window class * ============================================================ */ -#include "rekonqwindow.h" +#include "rekonqwindow.hpp" #include "application.hpp" #include "settings/settingsdialog.h" #include "taskmanager.h" #include "ui_rekonqwindow.h" +#include #include RekonqWindow::RekonqWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::RekonqWindow) @@ -29,8 +28,21 @@ RekonqWindow::RekonqWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::Re }); 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(QUrl()); }); + // connect menu actions // file menu + connect(ui->actionNewTab, &QAction::triggered, this, [this]() { + auto *app = Application::instance(); + Q_CHECK_PTR(app); + auto newTabUrl = app->settings()->value("newtab").toUrl(); + loadUrl(newTabUrl, 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 @@ -49,79 +61,73 @@ RekonqWindow::RekonqWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::Re RekonqWindow::~RekonqWindow() { delete ui; } -void RekonqWindow::addView(RekonqView *view) +// -------------------------------------------------------------------------------------------------- + +RekonqView *RekonqWindow::currentView() +{ + auto *view = ui->tabs->view(ui->tabs->currentIndex()); + Q_CHECK_PTR(view); + return view; +} + +int RekonqWindow::addView(RekonqView *view) { Q_CHECK_PTR(view); ui->views->addWidget(view); - ui->tabs->addTab(view); - connect(view, &RekonqView::urlChanged, ui->urlBar, &UrlBar::setUrl); + const auto index = ui->tabs->addTab(view); + connect(view, &RekonqView::urlChanged, [this, view](const QUrl &url) { + if (view == currentView()) ui->urlBar->setUrl(url); + }); connect(view, &RekonqView::titleChanged, [this, view](const QString &title) { - const auto index = ui->views->indexOf(view); - ui->tabs->setTabText(index, view->title()); + const auto idx = ui->views->indexOf(view); + ui->tabs->setTabText(idx, title); + }); + connect(view, &RekonqView::iconChanged, [this, view](const QIcon &icon) { + const auto idx = ui->views->indexOf(view); + ui->tabs->setTabIcon(idx, icon); }); connect(view, &RekonqView::loadStarted, ui->urlBar, &UrlBar::loadStarted); connect(view, &RekonqView::loadProgress, ui->urlBar, &UrlBar::loadProgress); connect(view, &RekonqView::loadFinished, ui->urlBar, &UrlBar::loadFinished); -} - -/* -void RekonqWindow::init() -{ - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - QVBoxLayout *l = new QVBoxLayout(this); - l->setMargin(0); - l->setSpacing(0); - - if (ReKonfig::showBookmarksPanel()) - showBookmarksPanel(true); - - if (ReKonfig::showHistoryPanel()) - showHistoryPanel(true); - _splitter->addWidget(_tabWidget); - _tabWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - l->addWidget(_splitter); - - // fix focus handling - setFocusProxy(_tabWidget); - - // signals - connect(_tabWidget, SIGNAL(closeWindow()), this, SLOT(close())); - connect(_tabWidget, SIGNAL(windowTitleChanged(QString)), this, SLOT(setWindowTitle(QString))); + return index; } -// -------------------------------------------------------------------------------------------------- - - -TabWidget *RekonqWindow::tabWidget() +void RekonqWindow::loadUrl(const QUrl &url, rekonq::OpenType type) { - return _tabWidget; -} - - -TabBar *RekonqWindow::tabBar() -{ - return _tabWidget->tabBar(); -} - - -WebWindow *RekonqWindow::currentWebWindow() const -{ - return _tabWidget->currentWebWindow(); + switch (type) { + case rekonq::CurrentTab: + currentView()->load(url); + break; + case rekonq::NewTab: + Application::instance()->newView(url, this); + break; + case rekonq::NewFocusedTab: + ui->tabs->setCurrentView(Application::instance()->newView(url, this)); + break; + case rekonq::NewBackGroundTab: + break; + case rekonq::NewWindow: + break; + case rekonq::NewPrivateWindow: + break; + case rekonq::WebApp: + Application::instance()->newView(url, nullptr); + break; + } } +// -------------------------------------------------------------------------------------------------- +/* bool RekonqWindow::isPrivateBrowsingMode() { return _tabWidget->isPrivateBrowsingWindowMode(); } -// -------------------------------------------------------------------------------------------------- void RekonqWindow::loadUrl(const KUrl &url, Rekonq::OpenType type, TabHistory *history) -- cgit v1.2.1