File indexing completed on 2024-05-12 16:42:16

0001 /*
0002     SPDX-FileCopyrightText: 2019 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "kmm_printer.h"
0007 
0008 #include <QPrinter>
0009 #include <QPointer>
0010 #include <QPrintDialog>
0011 #include <QScopedPointer>
0012 #include <QDebug>
0013 
0014 // Q_LOGGING_CATEGORY(Print, "Printing")
0015 
0016 KMyMoneyPrinter::KMyMoneyPrinter()
0017 {
0018 }
0019 
0020 QPrinter* KMyMoneyPrinter::instance(QPrinter::PrinterMode mode)
0021 {
0022     static QPrinter* printer(nullptr);
0023 
0024     if (printer == nullptr) {
0025         printer = new QPrinter(mode);
0026     }
0027     return printer;
0028 }
0029 
0030 QPrintDialog* KMyMoneyPrinter::dialog()
0031 {
0032     static QPrintDialog* dialog(nullptr);
0033 
0034     if (dialog == nullptr) {
0035         dialog = new QPrintDialog(instance());
0036         dialog->setWindowTitle(QString());
0037     }
0038     return dialog;
0039 }
0040 
0041 QPrinter* KMyMoneyPrinter::startPrint(QPrinter::PrinterMode mode)
0042 {
0043     QPrinter *printer = instance(mode);
0044 
0045     if (dialog()->exec() != QDialog::Accepted)
0046         return nullptr;
0047     return printer;
0048 }
0049 
0050 void KMyMoneyPrinter::cleanup()
0051 {
0052     auto printer = instance();
0053     auto dlg = dialog();
0054 
0055     delete dlg;
0056     delete printer;
0057 }