File indexing completed on 2025-02-02 05:05:40
0001 /* 0002 SPDX-FileCopyrightText: 2008 Tobias Koenig <tokoe@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <Akonadi/ResourceBase> 0010 0011 #include <KContacts/Addressee> 0012 #include <KContacts/VCardConverter> 0013 0014 class VCardDirResource : public Akonadi::ResourceBase, public Akonadi::AgentBase::Observer 0015 { 0016 Q_OBJECT 0017 0018 public: 0019 explicit VCardDirResource(const QString &id); 0020 ~VCardDirResource() override; 0021 0022 public Q_SLOTS: 0023 void aboutToQuit() override; 0024 0025 protected: 0026 using ResourceBase::retrieveItems; // Suppress -Woverload-virtual 0027 0028 protected Q_SLOTS: 0029 void retrieveCollections() override; 0030 void retrieveItems(const Akonadi::Collection &col) override; 0031 bool retrieveItems(const Akonadi::Item::List &items, const QSet<QByteArray> &parts) override; 0032 bool retrieveItem(const Akonadi::Item &item, const QSet<QByteArray> &parts) override; 0033 0034 protected: 0035 void itemAdded(const Akonadi::Item &item, const Akonadi::Collection &collection) override; 0036 void itemChanged(const Akonadi::Item &item, const QSet<QByteArray> &parts) override; 0037 void itemRemoved(const Akonadi::Item &item) override; 0038 0039 private: 0040 void slotReloadConfig(); 0041 void loadAddressees(); 0042 [[nodiscard]] QString vCardDirectoryName() const; 0043 [[nodiscard]] QString vCardDirectoryFileName(const QString &file) const; 0044 void initializeVCardDirectory() const; 0045 [[nodiscard]] bool doRetrieveItem(Akonadi::Item &item); 0046 0047 private: 0048 QMap<QString, KContacts::Addressee> mAddressees; 0049 KContacts::VCardConverter mConverter; 0050 };