aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow/mainwindow.cpp')
-rw-r--r--src/mainwindow/mainwindow.cpp61
1 files changed, 59 insertions, 2 deletions
diff --git a/src/mainwindow/mainwindow.cpp b/src/mainwindow/mainwindow.cpp
index 741b544..ff8c911 100644
--- a/src/mainwindow/mainwindow.cpp
+++ b/src/mainwindow/mainwindow.cpp
@@ -32,6 +32,10 @@
#include <webprofile.h>
#include "session.h"
#include <QFileDialog>
+#include <QPrinter>
+#include <QPrinterInfo>
+#include <QPrintDialog>
+#include "profilemanager.h"
#ifdef PLASMA_BLUR
#include <KWindowEffects>
@@ -116,6 +120,38 @@ MainWindow::MainWindow(const std::unique_ptr<Configuration> &config, QWidget *pa
subWindowAction = ui->actionCurrentWindow;
}
+ // connect page menu
+ {
+ connect(ui->actionBookmarkPage, &QAction::triggered, this, [this]() {
+ if(currentView != nullptr)
+ emit createBookmark(currentView->title(), currentView->url().toString());
+ });
+ connect(ui->actionSavePage, &QAction::triggered, this, [this]() {
+ if(currentView != nullptr)
+ currentView->triggerPageAction(QWebEnginePage::SavePage);
+ });
+ connect(ui->actionPrintPage, &QAction::triggered, this, [this]() {
+ if(currentView != nullptr) {
+ auto *printer = new QPrinter(QPrinterInfo::defaultPrinter());
+ QPrintDialog dlg(printer, this);
+ if(dlg.exec() == QDialog::Accepted) {
+ currentView->page()->print(printer, [printer](bool success) {
+ delete printer;
+ });
+ }
+ }
+ });
+ connect(ui->actionPrintPageToPdf, &QAction::triggered, this, [this]() {
+ if(currentView != nullptr) {
+ const QString path = QFileDialog::getSaveFileName(this, tr("Print to PDF"), QDir::homePath(), tr("PDF files (*.pdf)"));
+ currentView->page()->printToPdf(path);
+ }
+ });
+
+ pageLoadProfileMenu = ui->menuPage->addMenu(tr("Load Profile"));
+ connect(pageLoadProfileMenu, &QMenu::aboutToShow, this, &MainWindow::updatePageLoadProfileMenu);
+ }
+
navigationToolBar = new NavigationBar(config->section("navigation"), this);
navigationToolBar->setMovable(config->value<bool>("navigation.movable").value());
addToolBar(Qt::TopToolBarArea, navigationToolBar);
@@ -290,7 +326,6 @@ void MainWindow::setView(WebView *view)
currentView = view;
if(view) {
- addressBar->setPageMenu(view->pageMenu());
addressBar->setToolsMenu(view->toolsMenu());
connect(view, &WebView::urlChanged, addressBar, &AddressBar::setUrl);
@@ -300,7 +335,6 @@ void MainWindow::setView(WebView *view)
addressBar->setProgress(100);
} else {
- addressBar->setPageMenu(nullptr);
addressBar->setToolsMenu(nullptr);
addressBar->setUrl(QUrl());
@@ -311,6 +345,29 @@ void MainWindow::setView(WebView *view)
searchBox->setView(view);
}
+void MainWindow::updatePageLoadProfileMenu()
+{
+ Q_CHECK_PTR(pageLoadProfileMenu);
+ pageLoadProfileMenu->clear();
+
+ if(currentView == nullptr)
+ return;
+
+ auto *browser = qobject_cast<Browser *>(qApp);
+ Q_CHECK_PTR(browser);
+
+ ProfileIterator it(ProfileManager::profileList());
+ while(it.hasNext()) {
+ it.next();
+ auto *profile = it.value();
+ auto *loadAction = pageLoadProfileMenu->addAction(profile->name());
+
+ connect(loadAction, &QAction::triggered, this, [=]() {
+ currentView->setProfile(profile);
+ });
+ }
+}
+
void MainWindow::closeEvent(QCloseEvent *event)
{
if(mdiArea->subWindowList().count() > 1) {