File indexing completed on 2024-06-02 05:21:02
0001 /* 0002 SPDX-FileCopyrightText: 2011-2013 Daniel Vrátil <dvratil@redhat.com> 0003 SPDX-FileCopyrightText: 2020 Igor Pobiko <igor.poboiko@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-3.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include "generichandler.h" 0011 #include <QObject> 0012 #include <QSharedPointer> 0013 0014 class CalendarHandler : public GenericHandler 0015 { 0016 Q_OBJECT 0017 public: 0018 using GenericHandler::GenericHandler; 0019 0020 QString mimeType() override; 0021 bool canPerformTask(const Akonadi::Item &item) override; 0022 bool canPerformTask(const Akonadi::Item::List &items) override; 0023 0024 void retrieveCollections(const Akonadi::Collection &rootCollection) override; 0025 void retrieveItems(const Akonadi::Collection &collection) override; 0026 0027 void itemAdded(const Akonadi::Item &item, const Akonadi::Collection &collection) override; 0028 void itemChanged(const Akonadi::Item &item, const QSet<QByteArray> &partIdentifiers) override; 0029 void itemsRemoved(const Akonadi::Item::List &items) override; 0030 void itemsMoved(const Akonadi::Item::List &items, const Akonadi::Collection &collectionSource, const Akonadi::Collection &collectionDestination) override; 0031 0032 void collectionAdded(const Akonadi::Collection &collection, const Akonadi::Collection &parent) override; 0033 void collectionChanged(const Akonadi::Collection &collection) override; 0034 void collectionRemoved(const Akonadi::Collection &collection) override; 0035 0036 private: 0037 void slotItemsRetrieved(KGAPI2::Job *job); 0038 void setupCollection(Akonadi::Collection &collection, const KGAPI2::CalendarPtr &group); 0039 }; 0040 0041 class FreeBusyHandler : public QObject 0042 { 0043 Q_OBJECT 0044 public: 0045 using Ptr = std::unique_ptr<FreeBusyHandler>; 0046 0047 FreeBusyHandler(GoogleResourceStateInterface *iface, GoogleSettings *settings); 0048 0049 QDateTime lastCacheUpdate() const; 0050 void canHandleFreeBusy(const QString &email); 0051 void retrieveFreeBusy(const QString &email, const QDateTime &start, const QDateTime &end); 0052 0053 private: 0054 GoogleResourceStateInterface *m_iface = nullptr; 0055 GoogleSettings *m_settings = nullptr; 0056 };