File indexing completed on 2024-03-24 05:28:29
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Nicolas Fella <nicolas.fella@gmx.de> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "contactcontroller.h" 0008 0009 #include <KContacts/VCardConverter> 0010 0011 #include <KConfigGroup> 0012 #include <KWindowConfig> 0013 #include <QDebug> 0014 #include <QFileDialog> 0015 #include <QGuiApplication> 0016 #include <QQuickWindow> 0017 0018 const static KContacts::VCardConverter converter; 0019 0020 ContactController::ContactController() 0021 : m_dataResource(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation) 0022 { 0023 } 0024 0025 KContacts::Addressee ContactController::addresseeFromVCard(const QByteArray &vcard) 0026 { 0027 return converter.parseVCard(vcard); 0028 } 0029 0030 QByteArray ContactController::addresseeToVCard(const KContacts::Addressee &addressee) 0031 { 0032 return converter.createVCard(addressee); 0033 } 0034 0035 KContacts::Addressee ContactController::emptyAddressee() 0036 { 0037 return {}; 0038 } 0039 0040 KContacts::Picture ContactController::preparePhoto(const QUrl &path) 0041 { 0042 #ifdef Q_OS_ANDROID 0043 const QImage image(path.toString()); 0044 #else 0045 const QImage image(path.toLocalFile()); 0046 #endif 0047 // Scale the photo down to make sure contacts are not taking too 0048 // long time to load their photos 0049 constexpr int unscaledWidth = 200; 0050 const qreal scaleFactor = dynamic_cast<QGuiApplication *>(QCoreApplication::instance())->devicePixelRatio(); 0051 const int avatarSize = int(unscaledWidth * scaleFactor); 0052 const QSize size(avatarSize, avatarSize); 0053 0054 return KContacts::Picture(image.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation)); 0055 } 0056 0057 KContacts::Email ContactController::createEmail(const QString &email) 0058 { 0059 return KContacts::Email(email); 0060 } 0061 0062 KContacts::PhoneNumber ContactController::createPhoneNumber(const QString &number) 0063 { 0064 return KContacts::PhoneNumber(number); 0065 } 0066 0067 KContacts::Impp ContactController::createImpp(const QString &address) 0068 { 0069 return KContacts::Impp(QUrl(address)); 0070 } 0071 0072 void ContactController::saveWindowGeometry(QQuickWindow *window) 0073 { 0074 KConfigGroup windowGroup(&m_dataResource, QStringLiteral("Window")); 0075 KWindowConfig::saveWindowPosition(window, windowGroup); 0076 KWindowConfig::saveWindowSize(window, windowGroup); 0077 m_dataResource.sync(); 0078 } 0079 0080 QString ContactController::lastPersonUri() const 0081 { 0082 KConfigGroup stateGroup(&m_dataResource, QStringLiteral("State")); 0083 return stateGroup.readEntry(QStringLiteral("lastPersonUri"), QString()); 0084 } 0085 0086 void ContactController::setLastPersonUri(const QString &lastPersonUri) 0087 { 0088 KConfigGroup stateGroup(&m_dataResource, QStringLiteral("State")); 0089 stateGroup.writeEntry(QStringLiteral("lastPersonUri"), lastPersonUri); 0090 Q_EMIT lastPersonUriChanged(); 0091 // dataResource.sync() is done in the saveWindowGeometry method onClosing 0092 }