Add the ability to export print template as html

This way we can view the html generated from a print template, for
debugging, validation or printing via your favorite browser.

Signed-off-by: Anton Lundin <glance@acc.umu.se>
This commit is contained in:
Anton Lundin 2019-09-06 23:17:49 +02:00 committed by Dirk Hohndel
parent 18644c89f6
commit fcf5333bf2
4 changed files with 41 additions and 0 deletions

View file

@ -7,6 +7,7 @@
#include <QProgressBar>
#include <QPrintPreviewDialog>
#include <QPrintDialog>
#include <QFileDialog>
#include <QShortcut>
#include <QSettings>
#include <QMessageBox>
@ -108,10 +109,14 @@ PrintDialog::PrintDialog(QWidget *parent, Qt::WindowFlags f) :
QPushButton *previewButton = new QPushButton(tr("&Preview"));
connect(previewButton, SIGNAL(clicked(bool)), this, SLOT(previewClicked()));
QPushButton *exportHtmlButton = new QPushButton(tr("Export Html"));
connect(exportHtmlButton, SIGNAL(clicked(bool)), this, SLOT(exportHtmlClicked()));
QDialogButtonBox *buttonBox = new QDialogButtonBox;
buttonBox->addButton(QDialogButtonBox::Cancel);
buttonBox->addButton(printButton, QDialogButtonBox::AcceptRole);
buttonBox->addButton(previewButton, QDialogButtonBox::ActionRole);
buttonBox->addButton(exportHtmlButton, QDialogButtonBox::AcceptRole);
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
@ -181,6 +186,25 @@ void PrintDialog::previewClicked(void)
previewDialog.exec();
}
void PrintDialog::exportHtmlClicked(void)
{
createPrinterObj();
QString saveFileName = printOptions.p_template;
QString filename = existing_filename ?: prefs.default_filename;
QFileInfo fi(filename);
filename = fi.absolutePath().append(QDir::separator()).append(saveFileName);
QString htmlExportFilename = QFileDialog::getSaveFileName(this, tr("Filename to export html to"),
filename, tr("Html file") + " (*.html)");
if (!htmlExportFilename.isEmpty()) {
QFile file(htmlExportFilename);
file.open(QIODevice::WriteOnly);
connect(printer, SIGNAL(progessUpdated(int)), progressBar, SLOT(setValue(int)));
file.write(printer->exportHtml().toUtf8());
file.close();
close();
}
}
void PrintDialog::printClicked(void)
{
createPrinterObj();