File indexing completed on 2024-05-12 05:13:31

0001 /*
0002    SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 #include "themeconfiguredialog.h"
0007 #include "themeeditorutil.h"
0008 #include <TextCustomEditor/PlainTextEditorWidget>
0009 
0010 #include "configurewidget.h"
0011 
0012 #include <KConfig>
0013 #include <KLocalizedString>
0014 
0015 #include <KConfigGroup>
0016 
0017 #include <KSharedConfig>
0018 #include <QDialogButtonBox>
0019 #include <QLabel>
0020 #include <QPushButton>
0021 #include <QTabWidget>
0022 #include <QVBoxLayout>
0023 
0024 ThemeConfigureDialog::ThemeConfigureDialog(QWidget *parent)
0025     : QDialog(parent)
0026 {
0027     setWindowTitle(i18nc("@title:window", "Configure"));
0028     auto tab = new QTabWidget;
0029 
0030     auto w = new QWidget;
0031 
0032     auto lay = new QVBoxLayout(w);
0033 
0034     mConfigureWidget = new GrantleeThemeEditor::ConfigureWidget;
0035     lay->addWidget(mConfigureWidget);
0036 
0037     auto lab = new QLabel(i18n("Default email:"));
0038     lay->addWidget(lab);
0039 
0040     mDefaultEmail = new TextCustomEditor::PlainTextEditorWidget;
0041     lay->addWidget(mDefaultEmail);
0042     tab->addTab(w, i18n("General"));
0043 
0044     mDefaultTemplate = new TextCustomEditor::PlainTextEditorWidget;
0045     tab->addTab(mDefaultTemplate, i18n("Default Template"));
0046 
0047     auto mainLayout = new QVBoxLayout(this);
0048     mainLayout->addWidget(tab);
0049 
0050     auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::RestoreDefaults, this);
0051     QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
0052     okButton->setDefault(true);
0053     okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
0054     connect(buttonBox, &QDialogButtonBox::rejected, this, &ThemeConfigureDialog::reject);
0055     mainLayout->addWidget(buttonBox);
0056     buttonBox->button(QDialogButtonBox::Ok)->setFocus();
0057 
0058     connect(buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, this, &ThemeConfigureDialog::slotDefaultClicked);
0059     connect(buttonBox->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &ThemeConfigureDialog::slotOkClicked);
0060     readConfig();
0061 }
0062 
0063 ThemeConfigureDialog::~ThemeConfigureDialog()
0064 {
0065     KSharedConfig::Ptr config = KSharedConfig::openConfig();
0066 
0067     KConfigGroup group = config->group(QStringLiteral("ThemeConfigureDialog"));
0068     group.writeEntry("Size", size());
0069 }
0070 
0071 void ThemeConfigureDialog::slotDefaultClicked()
0072 {
0073     mConfigureWidget->setDefault();
0074     ThemeEditorUtil themeutil;
0075     mDefaultEmail->setPlainText(themeutil.defaultMail());
0076     mDefaultTemplate->clear();
0077 }
0078 
0079 void ThemeConfigureDialog::slotOkClicked()
0080 {
0081     writeConfig();
0082     accept();
0083 }
0084 
0085 void ThemeConfigureDialog::readConfig()
0086 {
0087     KSharedConfig::Ptr config = KSharedConfig::openConfig();
0088     ThemeEditorUtil themeutil;
0089     if (config->hasGroup(QStringLiteral("Global"))) {
0090         KConfigGroup group = config->group(QStringLiteral("Global"));
0091         mConfigureWidget->readConfig();
0092         mDefaultEmail->setPlainText(group.readEntry("defaultEmail", themeutil.defaultMail()));
0093         mDefaultTemplate->setPlainText(group.readEntry("defaultTemplate", QString()));
0094     } else {
0095         mDefaultEmail->setPlainText(themeutil.defaultMail());
0096     }
0097 
0098     KConfigGroup group = KConfigGroup(config, QStringLiteral("ThemeConfigureDialog"));
0099     const QSize sizeDialog = group.readEntry("Size", QSize(600, 400));
0100     if (sizeDialog.isValid()) {
0101         resize(sizeDialog);
0102     }
0103 }
0104 
0105 void ThemeConfigureDialog::writeConfig()
0106 {
0107     KSharedConfig::Ptr config = KSharedConfig::openConfig();
0108     KConfigGroup group = config->group(QStringLiteral("Global"));
0109     group.writeEntry("defaultEmail", mDefaultEmail->toPlainText());
0110     group.writeEntry("defaultTemplate", mDefaultTemplate->toPlainText());
0111     mConfigureWidget->writeConfig();
0112 }
0113 
0114 #include "moc_themeconfiguredialog.cpp"