File indexing completed on 2024-05-19 05:14:00
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "contactconfigurationdialog.h" 0007 #include "contacteditorutil.h" 0008 #include <TextCustomEditor/PlainTextEditorWidget> 0009 0010 #include "configurewidget.h" 0011 0012 #include <Akonadi/ContactEditor> 0013 0014 #include <KContacts/VCardConverter> 0015 0016 #include <KConfig> 0017 #include <KLocalizedString> 0018 0019 #include <KConfigGroup> 0020 0021 #include <KSharedConfig> 0022 #include <QDialogButtonBox> 0023 #include <QLabel> 0024 #include <QPushButton> 0025 #include <QTabWidget> 0026 #include <QVBoxLayout> 0027 0028 ContactConfigureDialog::ContactConfigureDialog(QWidget *parent) 0029 : QDialog(parent) 0030 { 0031 setWindowTitle(i18nc("@title:window", "Configure")); 0032 0033 auto tab = new QTabWidget; 0034 0035 auto w = new QWidget; 0036 auto lay = new QVBoxLayout(w); 0037 0038 mConfigureWidget = new GrantleeThemeEditor::ConfigureWidget; 0039 lay->addWidget(mConfigureWidget); 0040 0041 auto lab = new QLabel(i18n("Default contact:")); 0042 lay->addWidget(lab); 0043 0044 mDefaultContact = new Akonadi::AkonadiContactEditor(Akonadi::AkonadiContactEditor::CreateMode, Akonadi::AkonadiContactEditor::VCardMode); 0045 lay->addWidget(mDefaultContact); 0046 0047 tab->addTab(w, i18n("General")); 0048 0049 mDefaultTemplate = new TextCustomEditor::PlainTextEditorWidget; 0050 tab->addTab(mDefaultTemplate, i18n("Default Template")); 0051 0052 auto mainLayout = new QVBoxLayout(this); 0053 mainLayout->addWidget(tab); 0054 auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::RestoreDefaults, this); 0055 QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok); 0056 okButton->setDefault(true); 0057 okButton->setShortcut(Qt::CTRL | Qt::Key_Return); 0058 connect(buttonBox, &QDialogButtonBox::rejected, this, &ContactConfigureDialog::reject); 0059 mainLayout->addWidget(buttonBox); 0060 okButton->setFocus(); 0061 0062 connect(buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, this, &ContactConfigureDialog::slotDefaultClicked); 0063 connect(buttonBox->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &ContactConfigureDialog::slotOkClicked); 0064 readConfig(); 0065 } 0066 0067 ContactConfigureDialog::~ContactConfigureDialog() 0068 { 0069 KSharedConfig::Ptr config = KSharedConfig::openConfig(); 0070 0071 KConfigGroup group = config->group(QStringLiteral("ContactConfigureDialog")); 0072 group.writeEntry("Size", size()); 0073 } 0074 0075 void ContactConfigureDialog::slotDefaultClicked() 0076 { 0077 mConfigureWidget->setDefault(); 0078 0079 ContactEditorUtil contactUtil; 0080 if (!contactUtil.defaultContact().isEmpty()) { 0081 KContacts::VCardConverter converter; 0082 KContacts::Addressee addr = converter.parseVCard(contactUtil.defaultContact().toUtf8()); 0083 mDefaultContact->setContactTemplate(addr); 0084 } else { 0085 mDefaultContact->setContactTemplate(KContacts::Addressee()); 0086 } 0087 mDefaultTemplate->clear(); 0088 } 0089 0090 void ContactConfigureDialog::slotOkClicked() 0091 { 0092 writeConfig(); 0093 accept(); 0094 } 0095 0096 void ContactConfigureDialog::readConfig() 0097 { 0098 KSharedConfig::Ptr config = KSharedConfig::openConfig(); 0099 0100 ContactEditorUtil contactUtil; 0101 if (config->hasGroup(QStringLiteral("Global"))) { 0102 KConfigGroup group = config->group(QStringLiteral("Global")); 0103 const QString defaultContact = group.readEntry("defaultContact", contactUtil.defaultContact()); 0104 if (!defaultContact.isEmpty()) { 0105 KContacts::VCardConverter converter; 0106 KContacts::Addressee addr = converter.parseVCard(defaultContact.toUtf8()); 0107 mDefaultContact->setContactTemplate(addr); 0108 } else { 0109 mDefaultContact->setContactTemplate(KContacts::Addressee()); 0110 } 0111 mDefaultTemplate->setPlainText(group.readEntry("defaultTemplate", QString())); 0112 } else { 0113 if (!contactUtil.defaultContact().isEmpty()) { 0114 KContacts::VCardConverter converter; 0115 KContacts::Addressee addr = converter.parseVCard(contactUtil.defaultContact().toUtf8()); 0116 mDefaultContact->setContactTemplate(addr); 0117 } else { 0118 mDefaultContact->setContactTemplate(KContacts::Addressee()); 0119 } 0120 mDefaultTemplate->setPlainText(QString()); 0121 } 0122 0123 mConfigureWidget->readConfig(); 0124 0125 KConfigGroup group = KConfigGroup(config, QStringLiteral("ContactConfigureDialog")); 0126 const QSize sizeDialog = group.readEntry("Size", QSize(600, 400)); 0127 if (sizeDialog.isValid()) { 0128 resize(sizeDialog); 0129 } 0130 } 0131 0132 void ContactConfigureDialog::writeConfig() 0133 { 0134 KSharedConfig::Ptr config = KSharedConfig::openConfig(); 0135 KConfigGroup group = config->group(QStringLiteral("Global")); 0136 const KContacts::Addressee addr = mDefaultContact->contact(); 0137 KContacts::VCardConverter converter; 0138 const QByteArray data = converter.exportVCard(addr, KContacts::VCardConverter::v3_0); 0139 group.writeEntry("defaultContact", data); 0140 0141 group.writeEntry("defaultTemplate", mDefaultTemplate->toPlainText()); 0142 mConfigureWidget->writeConfig(); 0143 } 0144 0145 #include "moc_contactconfigurationdialog.cpp"