1 /*
2     SPDX-FileCopyrightText: 2011, 2012 Dan Vratil <dan@progdan.cz>
3     SPDX-FileCopyrightText: 2020 Igor Pobiko <igor.poboiko@gmail.com>
4 
5     SPDX-License-Identifier: GPL-3.0-or-later
6 */
7 
8 #pragma once
9 
10 #include "generichandler.h"
11 #include <KGAPI/Types>
12 
13 class ContactHandler : public GenericHandler
14 {
15     Q_OBJECT
16 public:
17     using GenericHandler::GenericHandler;
18 
19     QString mimeType() override;
20     bool canPerformTask(const Akonadi::Item &item) override;
21     bool canPerformTask(const Akonadi::Item::List &items) override;
22 
23     void retrieveCollections(const Akonadi::Collection &rootCollection) override;
24     void retrieveItems(const Akonadi::Collection &collection) override;
25 
26     void itemAdded(const Akonadi::Item &item, const Akonadi::Collection &collection) override;
27     void itemChanged(const Akonadi::Item &item, const QSet<QByteArray> &partIdentifiers) override;
28     void itemsRemoved(const Akonadi::Item::List &items) override;
29     void itemsMoved(const Akonadi::Item::List &items, const Akonadi::Collection &collectionSource, const Akonadi::Collection &collectionDestination) override;
30     void itemsLinked(const Akonadi::Item::List &items, const Akonadi::Collection &collection) override;
31     void itemsUnlinked(const Akonadi::Item::List &items, const Akonadi::Collection &collection) override;
32 
33     void collectionAdded(const Akonadi::Collection &collection, const Akonadi::Collection &parent) override;
34     void collectionChanged(const Akonadi::Collection &collection) override;
35     void collectionRemoved(const Akonadi::Collection &collection) override;
36 private Q_SLOTS:
37     void slotItemsRetrieved(KGAPI2::Job *job);
38     void slotUpdatePhotosItemsRetrieved(KJob *job);
39     void retrieveContactsPhotos(const QVariant &arguments);
40 
41 private:
42     QString myContactsRemoteId() const;
43     void setupCollection(Akonadi::Collection &collection, const KGAPI2::ContactsGroupPtr &group);
44     QMap<QString, Akonadi::Collection> m_collections;
45 };
46 
47