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