File indexing completed on 2024-05-12 05:21:26

0001 /*
0002     SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@kde.org>
0003     SPDX-FileCopyrightText: 2015 Martin Klapetek <mklapetek@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-or-later
0006 */
0007 
0008 #ifndef KPEOPLEVCARD_H
0009 #define KPEOPLEVCARD_H
0010 
0011 #include <KDirWatch>
0012 #include <KPeopleBackend/AbstractContact>
0013 #include <KPeopleBackend/AbstractEditableContact>
0014 #include <KPeopleBackend/AllContactsMonitor>
0015 #include <KPeopleBackend/BasePersonsDataSource>
0016 
0017 class QFileInfo;
0018 
0019 class KPeopleVCard : public KPeople::AllContactsMonitor
0020 {
0021     Q_OBJECT
0022 
0023 public:
0024     KPeopleVCard();
0025     ~KPeopleVCard() override;
0026 
0027     QMap<QString, KPeople::AbstractContact::Ptr> contacts() override;
0028     static QString contactsVCardPath();
0029     static QString contactsVCardWritePath();
0030 
0031 private:
0032     void processVCard(const QString &path);
0033     void deleteVCard(const QString &path);
0034     void processDirectory(const QFileInfo &fi);
0035 
0036     QMap<QString, KPeople::AbstractContact::Ptr> m_contactForUri;
0037     KDirWatch *m_fs;
0038 };
0039 
0040 class VCardDataSource : public KPeople::BasePersonsDataSourceV2
0041 {
0042 public:
0043     VCardDataSource(QObject *parent, const QVariantList &data);
0044     ~VCardDataSource() override;
0045     QString sourcePluginId() const override;
0046 
0047     KPeople::AllContactsMonitor *createAllContactsMonitor() override;
0048     bool addContact(const QVariantMap &properties) override;
0049     bool deleteContact(const QString &uri) override;
0050 };
0051 
0052 #endif