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;