File indexing completed on 2025-03-09 04:47:27
0001 /* 0002 SPDX-FileCopyrightText: 2011-2013 Daniel Vrátil <dvratil@redhat.com> 0003 SPDX-FileCopyrightText: 2020 Igor Pobiko <igor.poboiko@gmail.com> 0004 SPDX-FileCopyrightText: 2022-2023 Claudio Cambra <claudio.cambra@kde.org> 0005 0006 SPDX-License-Identifier: GPL-3.0-or-later 0007 */ 0008 0009 #pragma once 0010 0011 #include "generichandler.h" 0012 #include <KGAPI/People/Person> 0013 #include <KGAPI/Types> 0014 0015 class PersonHandler : public GenericHandler 0016 { 0017 Q_OBJECT 0018 public: 0019 using GenericHandler::GenericHandler; 0020 0021 QString mimeType() override; 0022 bool canPerformTask(const Akonadi::Item &item) override; 0023 bool canPerformTask(const Akonadi::Item::List &items) override; 0024 0025 void retrieveCollections(const Akonadi::Collection &rootCollection) override; 0026 void retrieveItems(const Akonadi::Collection &collection) override; 0027 0028 void itemAdded(const Akonadi::Item &item, const Akonadi::Collection &collection) override; 0029 void itemChanged(const Akonadi::Item &item, const QSet<QByteArray> &partIdentifiers) override; 0030 void itemsRemoved(const Akonadi::Item::List &items) override; 0031 void itemsMoved(const Akonadi::Item::List &items, const Akonadi::Collection &collectionSource, const Akonadi::Collection &collectionDestination) override; 0032 void itemsLinked(const Akonadi::Item::List &items, const Akonadi::Collection &collection) override; 0033 void itemsUnlinked(const Akonadi::Item::List &items, const Akonadi::Collection &collection) override; 0034 0035 void collectionAdded(const Akonadi::Collection &collection, const Akonadi::Collection &parent) override; 0036 void collectionChanged(const Akonadi::Collection &collection) override; 0037 void collectionRemoved(const Akonadi::Collection &collection) override; 0038 0039 private Q_SLOTS: 0040 void sendModifyJob(const Akonadi::Item::List &items, const KGAPI2::People::PersonList &people); 0041 void sendModifyJob(const Akonadi::Item &item, const KGAPI2::People::PersonPtr &person); 0042 0043 void slotItemsRetrieved(KGAPI2::Job *job); 0044 void slotPersonCreateJobFinished(KGAPI2::Job *job); 0045 void slotKGAPIModifyJobFinished(KGAPI2::Job *job); 0046 void processUpdatedPeople(KGAPI2::Job *job, const KGAPI2::ObjectsList &updatedPeople); 0047 void updatePersonItem(const Akonadi::Item &originalItem, const KGAPI2::People::PersonPtr &person); 0048 0049 void updateContactGroupCollection(const Akonadi::Collection &collection, const KGAPI2::People::ContactGroupPtr &group); 0050 0051 private: 0052 [[nodiscard]] static Akonadi::Collection collectionFromContactGroup(const KGAPI2::People::ContactGroupPtr &group); 0053 [[nodiscard]] static QString addresseeMimeType(); 0054 0055 QMap<QString, Akonadi::Collection> m_collections; 0056 QSet<QString> m_pendingPeoplePhotoUpdate; 0057 };