From 1fcbe65981295f11d8a09b61a09736ba2a1b44b7 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 24 Aug 2017 20:13:27 +0200 Subject: Implemented Print to PDF action --- src/main.cpp | 6 +++--- src/mainwindow.cpp | 9 +++++++++ src/mainwindow.h | 1 + src/widgets/mainwindowmenubar.cpp | 31 ++++++++++++++++++------------- src/widgets/mainwindowmenubar.h | 4 ++++ 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 789a3e6..9c12b64 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -92,9 +92,9 @@ int main(int argc, char *argv[]) app.loadProfiles(); // Load plugins - if(!parser.isSet(nopluginsOption)) { - app.loadPlugins(); - } +// if(!parser.isSet(nopluginsOption)) { +// app.loadPlugins(); +// } MainWindow *w = new MainWindow(parser.positionalArguments()); if(parser.isSet(profileOption)) { diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index bce1716..dd16172 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -30,6 +30,8 @@ #include #include +#include + MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), @@ -55,6 +57,11 @@ MainWindow::MainWindow(QUrl defaultUrl, QWidget *parent) : MainWindowMenuBar *menuBar = new MainWindowMenuBar(this); menuBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); + connect(menuBar->printAction(), &QAction::triggered, [this]() { + QString path = QFileDialog::getSaveFileName(this, tr("Print to PDF"), QDir::homePath(), tr("PDF files (*.pdf)")); + m_currentView->page()->printToPdf(path); + }); + // Add the toolbars // tabToolBar: main menu and tab list tabToolBar->setMovable(sSettings->value("window.ui.tabtoolbarMovable").toBool()); @@ -213,6 +220,8 @@ void MainWindow::handleTabChanged(WebView *view) { Q_ASSERT(view != nullptr); + m_currentView = view; + // centralWidget can be a nullptr if(centralWidget()) { // clear the parent of the central widget so it doesn't get deleted diff --git a/src/mainwindow.h b/src/mainwindow.h index b0572c5..cf0bac5 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -69,6 +69,7 @@ private: Ui::MainWindow *ui; QToolBar *navigationToolBar, *tabToolBar; WebViewTabBar *tabBar; + WebView *m_currentView; AddressBar *m_addressBar; LoadingBar *m_progressBar; }; diff --git a/src/widgets/mainwindowmenubar.cpp b/src/widgets/mainwindowmenubar.cpp index ba28607..8dd7fe6 100644 --- a/src/widgets/mainwindowmenubar.cpp +++ b/src/widgets/mainwindowmenubar.cpp @@ -54,16 +54,17 @@ MainWindowMenuBar::MainWindowMenuBar(MainWindow *parent) : toolsMenu->addSeparator(); toolsMenu->addAction(tr("Filter"), qApp->blocklists(), SLOT(show()), QKeySequence::fromString(sSettings->value("blocker.shortcut").toString())); - if(qApp->plugin("")) { - GuiInterface *gui = qobject_cast(qApp->plugin("")); - if(gui) { - toolsMenu->addAction(gui->action()); - } else { - qDebug("Plugin doesn't gui"); - } - } else { - qDebug("No plugin!"); - } + // Plugins +// if(qApp->plugin("")) { +// GuiInterface *gui = qobject_cast(qApp->plugin("")); +// if(gui) { +// toolsMenu->addAction(gui->action()); +// } else { +// qDebug("Plugin doesn't gui"); +// } +// } else { +// qDebug("No plugin!"); +// } // Profile menu QMenu *profileMenu = new QMenu(tr("Profile"), this); @@ -73,10 +74,14 @@ MainWindowMenuBar::MainWindowMenuBar(MainWindow *parent) : // Page menu QMenu *pageMenu = new QMenu(tr("Page"), this); addMenu(pageMenu); - pageMenu->addAction(tr("Print")); - pageMenu->addAction(tr("Print to PDF")); - pageMenu->addAction(tr("Zoom")); + pageMenu->addAction(tr("Print"))->setEnabled(false); + m_printAction = pageMenu->addAction(tr("Print to PDF")); + pageMenu->addAction(tr("Zoom"))->setEnabled(false); +} +QAction *MainWindowMenuBar::printAction() +{ + return m_printAction; } void MainWindowMenuBar::handleLoadProfile() diff --git a/src/widgets/mainwindowmenubar.h b/src/widgets/mainwindowmenubar.h index a6c6dc4..43c786b 100644 --- a/src/widgets/mainwindowmenubar.h +++ b/src/widgets/mainwindowmenubar.h @@ -30,11 +30,15 @@ class MainWindowMenuBar : public QMenuBar public: explicit MainWindowMenuBar(MainWindow *parent = nullptr); + QAction *printAction(); + private slots: void handleLoadProfile(); private: MainWindow *m_parentWindow; + + QAction *m_printAction; }; #endif // MAINWINDOWMENUBAR_H -- cgit v1.2.1