diff --git a/glabels/PrintView.cpp b/glabels/PrintView.cpp
index 6adb989..19c7ce9 100644
--- a/glabels/PrintView.cpp
+++ b/glabels/PrintView.cpp
@@ -18,8 +18,12 @@
* along with gLabels-qt. If not, see .
*/
+
#include "PrintView.h"
+#include "model/Settings.h"
+
+#include
#include
#include
@@ -38,25 +42,6 @@ namespace glabels
titleLabel->setText( QString( "%1" ).arg( tr("Print") ) );
preview->setRenderer( &mRenderer );
- mPrinter = new QPrinter( QPrinter::HighResolution );
- mPrinter->setColorMode( QPrinter::Color );
-
- mPrintDialog = new QPrintDialog( mPrinter, this );
- mPrintDialog->setOption( QAbstractPrintDialog::PrintToFile, true );
- mPrintDialog->setOption( QAbstractPrintDialog::PrintSelection, false );
- mPrintDialog->setOption( QAbstractPrintDialog::PrintPageRange, false );
- mPrintDialog->setOption( QAbstractPrintDialog::PrintShowPageSize, true );
- mPrintDialog->setOption( QAbstractPrintDialog::PrintCollateCopies, false );
- mPrintDialog->setOption( QAbstractPrintDialog::PrintCurrentPage, false );
- }
-
-
- ///
- /// Destructor
- ///
- PrintView::~PrintView()
- {
- delete mPrinter;
}
@@ -200,10 +185,25 @@ namespace glabels
///
void PrintView::onPrintButtonClicked()
{
- if ( mPrintDialog->exec() == QDialog::Accepted )
+ QPrinter printer( QPrinter::HighResolution );
+ printer.setColorMode( QPrinter::Color );
+ printer.setPrinterName( model::Settings::recentPrinter() );
+
+ QPrintDialog printDialog( &printer, this );
+ printDialog.setOption( QAbstractPrintDialog::PrintToFile, true );
+ printDialog.setOption( QAbstractPrintDialog::PrintSelection, false );
+ printDialog.setOption( QAbstractPrintDialog::PrintPageRange, false );
+ printDialog.setOption( QAbstractPrintDialog::PrintShowPageSize, true );
+ printDialog.setOption( QAbstractPrintDialog::PrintCollateCopies, false );
+ printDialog.setOption( QAbstractPrintDialog::PrintCurrentPage, false );
+
+ if ( printDialog.exec() == QDialog::Accepted )
{
- mRenderer.print( mPrinter );
+ mRenderer.print( &printer );
+
+ model::Settings::setRecentPrinter( printer.printerName() );
}
}
+
} // namespace glabels
diff --git a/glabels/PrintView.h b/glabels/PrintView.h
index 7949f93..bbcc87c 100644
--- a/glabels/PrintView.h
+++ b/glabels/PrintView.h
@@ -27,9 +27,6 @@
#include "model/Model.h"
#include "model/PageRenderer.h"
-#include
-#include
-
namespace glabels
{
@@ -47,7 +44,7 @@ namespace glabels
/////////////////////////////////
public:
PrintView( QWidget *parent = nullptr );
- ~PrintView() override;
+ virtual ~PrintView() = default;
/////////////////////////////////
@@ -71,11 +68,8 @@ namespace glabels
/////////////////////////////////
private:
model::Model* mModel;
- QPrinter* mPrinter;
model::PageRenderer mRenderer;
- QPrintDialog* mPrintDialog;
-
bool mBlocked;
};
diff --git a/model/Settings.cpp b/model/Settings.cpp
index 481941b..2219bb6 100644
--- a/model/Settings.cpp
+++ b/model/Settings.cpp
@@ -22,6 +22,7 @@
#include "Settings.h"
#include
+#include
#include
#include
@@ -356,5 +357,23 @@ namespace glabels
emit mInstance->changed();
}
+
+ QString Settings::recentPrinter()
+ {
+ mInstance->beginGroup( "Recent" );
+ QString printer = mInstance->value( "printer", QPrinterInfo::defaultPrinterName() ).toString();
+ mInstance->endGroup();
+
+ return printer;
+ }
+
+
+ void Settings::setRecentPrinter( const QString& printer )
+ {
+ mInstance->beginGroup( "Recent" );
+ mInstance->setValue( "printer", printer );
+ mInstance->endGroup();
+ }
+
}
}
diff --git a/model/Settings.h b/model/Settings.h
index a797f26..815e936 100644
--- a/model/Settings.h
+++ b/model/Settings.h
@@ -98,6 +98,9 @@ namespace glabels
static QStringList recentFileList();
static void addToRecentFileList( const QString& filePath );
+ static QString recentPrinter();
+ static void setRecentPrinter( const QString& printer );
+
private:
static Settings* mInstance;