File indexing completed on 2024-06-09 05:02:19

0001 /*
0002     SPDX-FileCopyrightText: 2009 Cristian Onet onet.cristian @gmail.com
0003     SPDX-FileCopyrightText: 2021 Dawid Wróbel <me@dawidwrobel.com>
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #include <config-kmymoney-version.h>
0008 
0009 // Qt includes
0010 #include <QFrame>
0011 #include <QTextEdit>
0012 
0013 // KDE includes
0014 #include <KAboutData>
0015 #include <KPluginFactory>
0016 
0017 // ----------------------------------------------------------------------------
0018 // Project Includes
0019 
0020 #include "checkprintingsettings.h"
0021 #include "kcm_checkprinting.h"
0022 
0023 CheckPrintingSettingsWidget::CheckPrintingSettingsWidget(QWidget *parent)
0024     :
0025     QWidget(parent)
0026 {
0027     setupUi(this);
0028     m_checkTemplatePreviewHTMLPart = new QTextEdit(m_previewFrame);
0029 
0030     QVBoxLayout *layout = new QVBoxLayout;
0031     m_previewFrame->setLayout(layout);
0032     layout->addWidget(m_checkTemplatePreviewHTMLPart);
0033 
0034     if (CheckPrintingSettings::checkTemplateFile().isEmpty()) {
0035         restoreDefaultSettings();
0036     }
0037 
0038     connect(kcfg_checkTemplateFile, &KUrlRequester::textChanged, this, &CheckPrintingSettingsWidget::textChanged);
0039     connect(kcfg_checkTemplateFile,
0040             &KUrlRequester::urlSelected,
0041             this,
0042             QOverload<const QUrl &>::of(&CheckPrintingSettingsWidget::urlSelected));
0043     connect(kcfg_checkTemplateFile, QOverload<const QString &>::of(&KUrlRequester::returnPressed), this,
0044             QOverload<const QString &>::of(&CheckPrintingSettingsWidget::urlSelected));
0045     connect(kcfg_useCustomCheckTemplate, SIGNAL(toggled(bool)), kcfg_checkTemplateFile, SLOT(setEnabled(bool)));
0046     connect(kcfg_useCustomCheckTemplate,
0047             &QCheckBox::toggled,
0048             this,
0049             QOverload<>::of(&CheckPrintingSettingsWidget::urlSelected));
0050 }
0051 
0052 void CheckPrintingSettingsWidget::urlSelected()
0053 {
0054     if (kcfg_useCustomCheckTemplate->checkState() == Qt::Unchecked || CheckPrintingSettings::checkTemplateFile().isEmpty()
0055         || kcfg_checkTemplateFile->url().isEmpty()) {
0056         urlSelected(QUrl::fromUserInput(CheckPrintingSettings::defaultCheckTemplateFileValue()));
0057     } else {
0058         urlSelected(kcfg_checkTemplateFile->url());
0059     }
0060 }
0061 
0062 void CheckPrintingSettingsWidget::urlSelected(const QString &url)
0063 {
0064     urlSelected(QUrl::fromUserInput(url));
0065 }
0066 
0067 void CheckPrintingSettingsWidget::urlSelected(const QUrl &url)
0068 {
0069     if (!url.isEmpty()) {
0070         m_checkTemplatePreviewHTMLPart->clear();
0071         QFile file(url.toLocalFile());
0072 
0073         if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
0074             QTextStream stream(&file);
0075             m_checkTemplatePreviewHTMLPart->setHtml(stream.readAll());
0076             file.close();
0077         }
0078     }
0079     else {
0080         urlSelected();
0081     }
0082 }
0083 
0084 void CheckPrintingSettingsWidget::textChanged(const QString& text)
0085 {
0086     // conceal the default "qrc:/" value to avoid confusing regular users
0087     if (text == CheckPrintingSettings::defaultCheckTemplateFileValue()) {
0088         kcfg_checkTemplateFile->setText("");
0089     }
0090 }
0091 
0092 void CheckPrintingSettingsWidget::restoreDefaultSettings() const
0093 {
0094     CheckPrintingSettings::setUseCustomCheckTemplate(false);
0095     CheckPrintingSettings::setCheckTemplateFile(CheckPrintingSettings::defaultCheckTemplateFileValue());
0096     CheckPrintingSettings::self()->save();
0097 }
0098 
0099 CheckPrintingSettingsWidget::~CheckPrintingSettingsWidget()
0100 {
0101     if (kcfg_checkTemplateFile->url().isEmpty()) {
0102         restoreDefaultSettings();
0103     }
0104 }
0105 
0106 KCMCheckPrinting::KCMCheckPrinting(QWidget *parent, const QVariantList& args)
0107     : KCModule(parent, args)
0108 {
0109     CheckPrintingSettingsWidget* w = new CheckPrintingSettingsWidget(this);
0110     addConfig(CheckPrintingSettings::self(), w);
0111     QVBoxLayout *layout = new QVBoxLayout;
0112     setLayout(layout);
0113     layout->addWidget(w);
0114     load();
0115     w->urlSelected(CheckPrintingSettings::useCustomCheckTemplate() ? CheckPrintingSettings::checkTemplateFile()
0116                                                                    : CheckPrintingSettings::defaultCheckTemplateFileValue());
0117 }
0118 
0119 KCMCheckPrinting::~KCMCheckPrinting()
0120 {
0121 }
0122 
0123 K_PLUGIN_CLASS(KCMCheckPrinting)
0124 
0125 #include "kcm_checkprinting.moc"