aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--desktop-widgets/printdialog.cpp24
-rw-r--r--desktop-widgets/printdialog.h1
-rw-r--r--desktop-widgets/printer.cpp15
-rw-r--r--desktop-widgets/printer.h1
4 files changed, 41 insertions, 0 deletions
diff --git a/desktop-widgets/printdialog.cpp b/desktop-widgets/printdialog.cpp
index 4c863fbea..f0c8f4df8 100644
--- a/desktop-widgets/printdialog.cpp
+++ b/desktop-widgets/printdialog.cpp
@@ -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();
diff --git a/desktop-widgets/printdialog.h b/desktop-widgets/printdialog.h
index 51cee8214..f03abaff2 100644
--- a/desktop-widgets/printdialog.h
+++ b/desktop-widgets/printdialog.h
@@ -33,6 +33,7 @@ private
slots:
void onFinished();
void previewClicked();
+ void exportHtmlClicked();
void printClicked();
void onPaintRequested(QPrinter *);
void createPrinterObj();
diff --git a/desktop-widgets/printer.cpp b/desktop-widgets/printer.cpp
index b617fde11..9de1e41be 100644
--- a/desktop-widgets/printer.cpp
+++ b/desktop-widgets/printer.cpp
@@ -195,6 +195,21 @@ void Printer::templateProgessUpdated(int value)
emit progessUpdated(done);
}
+QString Printer::exportHtml() {
+ TemplateLayout t(printOptions, templateOptions);
+ connect(&t, SIGNAL(progressUpdated(int)), this, SLOT(templateProgessUpdated(int)));
+ QString html;
+
+ if (printOptions->type == print_options::DIVELIST) {
+ html = t.generate();
+ } else if (printOptions->type == print_options::STATISTICS ) {
+ html = t.generateStatistics();
+ }
+
+ // TODO: write html to file
+ return html;
+}
+
void Printer::print()
{
// we can only print if "PRINT" mode is selected
diff --git a/desktop-widgets/printer.h b/desktop-widgets/printer.h
index 9197c6891..cdc0acf09 100644
--- a/desktop-widgets/printer.h
+++ b/desktop-widgets/printer.h
@@ -40,6 +40,7 @@ public:
~Printer();
void print();
void previewOnePage();
+ QString exportHtml();
signals:
void progessUpdated(int value);