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 };