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