File indexing completed on 2024-05-12 05:13:29
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "contactpreviewwidget.h" 0008 #include "contacteditorutil.h" 0009 0010 #include <KContacts/VCardConverter> 0011 0012 #include <Akonadi/ContactGroupViewer> 0013 #include <Akonadi/ContactViewer> 0014 #include <Akonadi/GrantleeContactFormatter> 0015 #include <Akonadi/GrantleeContactGroupFormatter> 0016 #include <Akonadi/Item> 0017 #include <KLocalizedString> 0018 0019 #include <KConfigGroup> 0020 #include <KSharedConfig> 0021 0022 #include <QHBoxLayout> 0023 #include <QPainter> 0024 #include <QTabWidget> 0025 0026 ContactPreviewWidget::ContactPreviewWidget(const QString &projectDirectory, QWidget *parent) 0027 : QWidget(parent) 0028 { 0029 auto lay = new QHBoxLayout(this); 0030 lay->setContentsMargins(0, 0, 0, 0); 0031 mTabWidget = new QTabWidget; 0032 0033 mContactViewer = new Akonadi::ContactViewer; 0034 mTabWidget->addTab(mContactViewer, i18n("Contact")); 0035 0036 mGroupViewer = new Akonadi::ContactGroupViewer; 0037 mTabWidget->addTab(mGroupViewer, i18n("Group")); 0038 0039 lay->addWidget(mTabWidget); 0040 0041 mFormatter = new KAddressBookGrantlee::GrantleeContactFormatter; 0042 0043 mContactViewer->setContactFormatter(mFormatter); 0044 0045 mGroupFormatter = new KAddressBookGrantlee::GrantleeContactGroupFormatter; 0046 0047 mGroupViewer->setContactGroupFormatter(mGroupFormatter); 0048 0049 loadConfig(); 0050 if (!projectDirectory.isEmpty()) { 0051 mGroupFormatter->setAbsoluteThemePath(projectDirectory); 0052 mFormatter->setAbsoluteThemePath(projectDirectory); 0053 } 0054 } 0055 0056 ContactPreviewWidget::~ContactPreviewWidget() 0057 { 0058 delete mFormatter; 0059 delete mGroupFormatter; 0060 } 0061 0062 void ContactPreviewWidget::updateViewer() 0063 { 0064 mContactViewer->setRawContact(mContact); 0065 // mGroupViewer->setContactGroup(); 0066 // TODO 0067 } 0068 0069 void ContactPreviewWidget::createScreenShot(const QStringList &fileName) 0070 { 0071 for (int i = 0; i < fileName.count(); ++i) { 0072 if (i == 0) { 0073 QImage image(mContactViewer->size(), QImage::Format_ARGB32_Premultiplied); 0074 image.fill(Qt::transparent); 0075 0076 QPainter painter(&image); 0077 painter.setRenderHint(QPainter::Antialiasing, true); 0078 painter.setRenderHint(QPainter::TextAntialiasing, true); 0079 painter.setRenderHint(QPainter::SmoothPixmapTransform, true); 0080 mContactViewer->render(&painter); 0081 painter.end(); 0082 image.save(fileName.at(i)); 0083 } else if (i == 1) { 0084 QImage image(mContactViewer->size(), QImage::Format_ARGB32_Premultiplied); 0085 image.fill(Qt::transparent); 0086 0087 QPainter painter(&image); 0088 painter.setRenderHint(QPainter::Antialiasing, true); 0089 painter.setRenderHint(QPainter::TextAntialiasing, true); 0090 painter.setRenderHint(QPainter::SmoothPixmapTransform, true); 0091 mGroupViewer->render(&painter); 0092 painter.end(); 0093 image.save(fileName.at(i)); 0094 } 0095 } 0096 } 0097 0098 void ContactPreviewWidget::loadConfig() 0099 { 0100 KSharedConfig::Ptr config = KSharedConfig::openConfig(); 0101 0102 ContactEditorUtil contactUtil; 0103 if (config->hasGroup(QStringLiteral("Global"))) { 0104 KConfigGroup group = config->group(QStringLiteral("Global")); 0105 const QString defaultContact = group.readEntry("defaultContact", contactUtil.defaultContact()); 0106 if (!defaultContact.isEmpty()) { 0107 KContacts::VCardConverter converter; 0108 mContact = converter.parseVCard(defaultContact.toUtf8()); 0109 } else { 0110 mContact = KContacts::Addressee(); 0111 } 0112 } else { 0113 if (!contactUtil.defaultContact().isEmpty()) { 0114 KContacts::VCardConverter converter; 0115 mContact = converter.parseVCard(contactUtil.defaultContact().toUtf8()); 0116 } else { 0117 mContact = KContacts::Addressee(); 0118 } 0119 } 0120 } 0121 0122 void ContactPreviewWidget::setThemePath(const QString &projectDirectory) 0123 { 0124 mGroupFormatter->setAbsoluteThemePath(projectDirectory); 0125 mFormatter->setAbsoluteThemePath(projectDirectory); 0126 } 0127 0128 #include "moc_contactpreviewwidget.cpp"