From 20e6e62927812e09b7b0a836baea0108d2c9f123 Mon Sep 17 00:00:00 2001 From: Dmitriy Belyaev Date: Wed, 9 Mar 2016 23:02:16 +0100 Subject: [PATCH 1/2] remeber paper size on pdf export ExportPdfDialog instance will be created only once during working session, it will give oss behaviour when last used settings will be shown on next execution of dialog --- app/exportpdfdialog.cpp | 23 +++++++++++++---------- app/exportpdfdialog.h | 4 +++- app/mainwindow.cpp | 12 ++++++++---- app/mainwindow.h | 3 +++ 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/app/exportpdfdialog.cpp b/app/exportpdfdialog.cpp index 8ba6e8c4..6342e772 100644 --- a/app/exportpdfdialog.cpp +++ b/app/exportpdfdialog.cpp @@ -21,7 +21,7 @@ #include #include -ExportPdfDialog::ExportPdfDialog(const QString &fileName, QWidget *parent) : +ExportPdfDialog::ExportPdfDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ExportPdfDialog) { @@ -31,12 +31,6 @@ ExportPdfDialog::ExportPdfDialog(const QString &fileName, QWidget *parent) : QPushButton *okButton = ui->buttonBox->button(QDialogButtonBox::Ok); okButton->setText("Export PDF"); - if (!fileName.isEmpty()) { - QFileInfo info(fileName); - QString exportFileName = info.absoluteFilePath().replace(info.suffix(), "pdf"); - ui->exportToLineEdit->setText(exportFileName); - } - // fill paper size combobox ui->paperSizeComboBox->addItem(tr("A4 (210 x 297 mm, 8.26 x 11.69 inches)"), QPrinter::A4); ui->paperSizeComboBox->addItem(tr("Letter (8.5 x 11 inches, 215.9 x 279.4 mm)"), QPrinter::Letter); @@ -46,9 +40,6 @@ ExportPdfDialog::ExportPdfDialog(const QString &fileName, QWidget *parent) : ui->paperSizeComboBox->addItem(tr("A6 (105 x 148 mm)"), QPrinter::A6); ui->paperSizeComboBox->addItem(tr("B4 (250 x 353 mm)"), QPrinter::B4); ui->paperSizeComboBox->addItem(tr("B5 (176 x 250 mm, 6.93 x 9.84 inches)"), QPrinter::B5); - - // initialize Ok button state - exportToTextChanged(fileName); } ExportPdfDialog::~ExportPdfDialog() @@ -79,6 +70,18 @@ QPrinter *ExportPdfDialog::printer() return p; } +void ExportPdfDialog::setFileName(const QString &fileName) +{ + if (!fileName.isEmpty()) { + QFileInfo info(fileName); + QString exportFileName = info.absoluteFilePath().replace(info.suffix(), "pdf"); + ui->exportToLineEdit->setText(exportFileName); + } + + // initialize Ok button state + exportToTextChanged(fileName); +} + void ExportPdfDialog::exportToTextChanged(const QString &text) { // only enable ok button if a filename was provided diff --git a/app/exportpdfdialog.h b/app/exportpdfdialog.h index 32b5f4c8..74dc8452 100644 --- a/app/exportpdfdialog.h +++ b/app/exportpdfdialog.h @@ -29,11 +29,13 @@ class ExportPdfDialog : public QDialog Q_OBJECT public: - explicit ExportPdfDialog(const QString &fileName, QWidget *parent = 0); + explicit ExportPdfDialog(QWidget *parent = 0); ~ExportPdfDialog(); QPrinter *printer(); + void setFileName(const QString &fileName); + private slots: void exportToTextChanged(const QString &text); void chooseFileButtonClicked(); diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp index 7b6e9ee5..e71085ab 100644 --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -85,7 +85,8 @@ MainWindow::MainWindow(const QString &fileName, QWidget *parent) : htmlPreviewController(0), themeCollection(new ThemeCollection()), splitFactor(0.5), - rightViewCollapsed(false) + rightViewCollapsed(false), + exportPdfDialog(0) { ui->setupUi(this); setupUi(); @@ -318,11 +319,14 @@ void MainWindow::fileExportToPdf() // of QWebView::print() method (possible bug in Qt?) // more info here: http://stackoverflow.com/questions/11629093/add-working-url-into-pdf-using-qt-qprinter - ExportPdfDialog dialog(fileName); - if (dialog.exec() == QDialog::Accepted) { + if (!exportPdfDialog) // init, if not exists + exportPdfDialog = new ExportPdfDialog(this); + + exportPdfDialog->setFileName(fileName); + if (exportPdfDialog->exec() == QDialog::Accepted) { QTextDocument doc; doc.setHtml(ui->webView->page()->currentFrame()->toHtml()); - doc.print(dialog.printer()); + doc.print(exportPdfDialog->printer()); } } diff --git a/app/mainwindow.h b/app/mainwindow.h index 2c91aee9..2ee91576 100644 --- a/app/mainwindow.h +++ b/app/mainwindow.h @@ -40,6 +40,7 @@ class SlideLineMapping; class SnippetCollection; class ThemeCollection; class ViewSynchronizer; +class ExportPdfDialog; class MainWindow : public QMainWindow @@ -166,6 +167,8 @@ private slots: QString fileName; float splitFactor; bool rightViewCollapsed; + + ExportPdfDialog *exportPdfDialog; }; #endif // MAINWINDOW_H From f66fa7b81754deda4f1fb79b8f877dd4dadff171 Mon Sep 17 00:00:00 2001 From: Dmitriy Belyaev Date: Wed, 9 Mar 2016 23:03:47 +0100 Subject: [PATCH 2/2] tabs converted to spaces --- app/mainwindow.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp index e71085ab..547d5532 100644 --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -314,20 +314,20 @@ void MainWindow::fileExportToHtml() void MainWindow::fileExportToPdf() { - // using temporary QTextDocument instance to get links exported\printed correctly, - // as links will dissappear when printing directly from QWebView in current Qt implementation - // of QWebView::print() method (possible bug in Qt?) - // more info here: http://stackoverflow.com/questions/11629093/add-working-url-into-pdf-using-qt-qprinter + // using temporary QTextDocument instance to get links exported\printed correctly, + // as links will dissappear when printing directly from QWebView in current Qt implementation + // of QWebView::print() method (possible bug in Qt?) + // more info here: http://stackoverflow.com/questions/11629093/add-working-url-into-pdf-using-qt-qprinter if (!exportPdfDialog) // init, if not exists exportPdfDialog = new ExportPdfDialog(this); exportPdfDialog->setFileName(fileName); if (exportPdfDialog->exec() == QDialog::Accepted) { - QTextDocument doc; - doc.setHtml(ui->webView->page()->currentFrame()->toHtml()); - doc.print(exportPdfDialog->printer()); - } + QTextDocument doc; + doc.setHtml(ui->webView->page()->currentFrame()->toHtml()); + doc.print(exportPdfDialog->printer()); + } } void MainWindow::filePrint()