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"