File indexing completed on 2024-04-21 15:02:45
0001 /* 0002 SPDX-FileCopyrightText: 2013 David Edmundson <davidedmundson@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "fakecontactsource.h" 0008 0009 FakeContactSource::FakeContactSource(QObject *parent, const QVariantList &args) 0010 : BasePersonsDataSource(parent, args) 0011 { 0012 } 0013 0014 QString FakeContactSource::sourcePluginId() const 0015 { 0016 return QStringLiteral("fakesource://"); 0017 } 0018 0019 KPeople::AllContactsMonitor *FakeContactSource::createAllContactsMonitor() 0020 { 0021 return new FakeAllContactsMonitor(); 0022 } 0023 0024 void FakeContactSource::changeProperty(const QString &key, const QVariant &value) 0025 { 0026 qobject_cast<FakeAllContactsMonitor *>(allContactsMonitor().data())->changeProperty(key, value); 0027 } 0028 0029 void FakeContactSource::remove(const QString &uri) 0030 { 0031 qobject_cast<FakeAllContactsMonitor *>(allContactsMonitor().data())->remove(uri); 0032 } 0033 0034 //---------------------------------------------------------------------------- 0035 0036 class FakeContact : public KPeople::AbstractContact 0037 { 0038 public: 0039 FakeContact(const QVariantMap &props) 0040 : m_properties(props) 0041 { 0042 } 0043 0044 QVariant customProperty(const QString &key) const override 0045 { 0046 if (key.startsWith(QLatin1String("all-"))) { 0047 return QStringList(m_properties[key.mid(4)].toString()); 0048 } else { 0049 return m_properties[key]; 0050 } 0051 } 0052 0053 QVariantMap m_properties; 0054 }; 0055 0056 FakeAllContactsMonitor::FakeAllContactsMonitor() 0057 : m_contacts( 0058 {{QStringLiteral("fakesource://contact1"), 0059 KPeople::AbstractContact::Ptr(new FakeContact(QVariantMap{{KPeople::AbstractContact::NameProperty, QStringLiteral("Contact 1")}, 0060 {KPeople::AbstractContact::EmailProperty, QStringLiteral("contact1@example.com")}}))}, 0061 0062 {QStringLiteral("fakesource://contact2"), 0063 KPeople::AbstractContact::Ptr(new FakeContact(QVariantMap{{KPeople::AbstractContact::NameProperty, QStringLiteral("Contact 2")}, 0064 {KPeople::AbstractContact::EmailProperty, QStringLiteral("contact2@example.com")}, 0065 {KPeople::AbstractContact::PhoneNumberProperty, QStringLiteral("+1 234 567 890")}}))}, 0066 0067 {QStringLiteral("fakesource://contact3"), 0068 KPeople::AbstractContact::Ptr(new FakeContact(QVariantMap{{KPeople::AbstractContact::NameProperty, QStringLiteral("Contact 3")}, 0069 {KPeople::AbstractContact::EmailProperty, QStringLiteral("contact3@example.com")}, 0070 {KPeople::AbstractContact::PhoneNumberProperty, QStringLiteral("+34 666 777 999")}}))}, 0071 0072 {QStringLiteral("fakesource://contact4"), 0073 KPeople::AbstractContact::Ptr(new FakeContact(QVariantMap{{KPeople::AbstractContact::NameProperty, QStringLiteral("Contact 4")}, 0074 {KPeople::AbstractContact::EmailProperty, QStringLiteral("contact4@example.com")}, 0075 {KPeople::AbstractContact::PresenceProperty, QStringLiteral("online")}}))}}) 0076 { 0077 emitInitialFetchComplete(true); 0078 } 0079 0080 void FakeAllContactsMonitor::remove(const QString &uri) 0081 { 0082 m_contacts.remove(uri); 0083 Q_EMIT contactRemoved(uri); 0084 } 0085 0086 QMap<QString, KPeople::AbstractContact::Ptr> FakeAllContactsMonitor::contacts() 0087 { 0088 return m_contacts; 0089 } 0090 0091 void FakeAllContactsMonitor::changeProperty(const QString &key, const QVariant &value) 0092 { 0093 KPeople::AbstractContact::Ptr contact1 = contacts()[QStringLiteral("fakesource://contact1")]; 0094 static_cast<FakeContact *>(contact1.data())->m_properties[key] = value; 0095 Q_ASSERT(contact1->customProperty(key) == value); 0096 0097 Q_EMIT contactChanged(QStringLiteral("fakesource://contact1"), contact1); 0098 } 0099 0100 #include "moc_fakecontactsource.cpp"