Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remember paper size and orientation on PDF export dialog during session #298

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions app/exportpdfdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#include <QFileInfo>
#include <QPrinter>

ExportPdfDialog::ExportPdfDialog(const QString &fileName, QWidget *parent) :
ExportPdfDialog::ExportPdfDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ExportPdfDialog)
{
Expand All @@ -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);
Expand All @@ -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()
Expand Down Expand Up @@ -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
Expand Down
4 changes: 3 additions & 1 deletion app/exportpdfdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
28 changes: 16 additions & 12 deletions app/mainwindow.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* Copyright 2013-2015 Christian Loose <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
Expand Down Expand Up @@ -84,7 +84,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();
Expand Down Expand Up @@ -312,17 +313,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

ExportPdfDialog dialog(fileName);
if (dialog.exec() == QDialog::Accepted) {
QTextDocument doc;
doc.setHtml(ui->webView->page()->currentFrame()->toHtml());
doc.print(dialog.printer());
}
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());
}
}

void MainWindow::filePrint()
Expand Down
5 changes: 4 additions & 1 deletion app/mainwindow.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* Copyright 2013-2014 Christian Loose <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
Expand Down Expand Up @@ -40,6 +40,7 @@ class SlideLineMapping;
class SnippetCollection;
class ThemeCollection;
class ViewSynchronizer;
class ExportPdfDialog;
class StatusBarWidget;


Expand Down Expand Up @@ -164,6 +165,8 @@ private slots:
QString fileName;
float splitFactor;
bool rightViewCollapsed;

ExportPdfDialog *exportPdfDialog;
};

#endif // MAINWINDOW_H