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"