summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp25
-rw-r--r--src/mainwindow.h4
2 files changed, 21 insertions, 8 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 2de4853..1eb136e 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -48,12 +48,15 @@ class MainWindow::MainWindowPrivate
{
public:
MainWindowPrivate()
- {}
+ : printer(0)
+ {}
QDockWidget *itemPropsDock;
QStackedWidget *propertyEditorsStack;
QMap<QString, int> propertyEditorsIndexes;
+ QPrinter *printer;
+
QAction *printAction;
QAction *printPreviewAction;
@@ -513,25 +516,33 @@ MainWindow::exportDocument()
}
void
+MainWindow::initPrinter()
+{
+ if (!d->printer)
+ d->printer = new QPrinter();
+}
+
+void
MainWindow::print()
{
- QPrinter printer;
- QPrintDialog printDialog(&printer, this);
+ initPrinter();
+ QPrintDialog printDialog(d->printer, this);
if (printDialog.exec() == QDialog::Accepted) {
- paintOnPrinter(&printer);
+ printPreview(d->printer);
}
}
void
MainWindow::printPreview()
{
- QPrintPreviewDialog printPreviewDialog(this);
- connect(&printPreviewDialog, SIGNAL(paintRequested(QPrinter*)), SLOT(paintOnPrinter(QPrinter*)));
+ QPrintPreviewDialog printPreviewDialog(d->printer, this);
+ connect(&printPreviewDialog, SIGNAL(paintRequested(QPrinter*)),
+ SLOT(printPreview(QPrinter*)));
printPreviewDialog.exec();
}
void
-MainWindow::paintOnPrinter(QPrinter *printer)
+MainWindow::printPreview(QPrinter *printer)
{
QPainter painter(printer);
m_model->setPrinting(true);
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 6c1a094..7a77b8e 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -57,7 +57,7 @@ public slots:
void exportDocument();
void print();
void printPreview();
- void paintOnPrinter(QPrinter *);
+ void printPreview(QPrinter *);
void setViewScale(const QString &scale);
void about();
@@ -96,6 +96,8 @@ private:
class MainWindowPrivate;
MainWindowPrivate *const d;
+ void initPrinter();
+
DiagramView *m_view;
DiagramDocument *m_model;