File indexing completed on 2024-05-12 05:10:42

0001 /*
0002   SPDX-FileCopyrightText: 2009 KDAB
0003   SPDX-FileContributor: Frank Osterfeld <osterfeld@kde.org>
0004 
0005   SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include <Akonadi/EntityTreeModel>
0011 #include <Akonadi/Monitor>
0012 #include <QSharedPointer>
0013 #include <QWeakPointer>
0014 
0015 #include <memory>
0016 
0017 namespace Akonadi
0018 {
0019 class CalendarModelPrivate;
0020 
0021 class CalendarModel : public Akonadi::EntityTreeModel
0022 {
0023     Q_OBJECT
0024 public:
0025     using Ptr = QSharedPointer<CalendarModel>;
0026     enum ItemColumn { Summary = 0, Type, DateTimeStart, DateTimeEnd, DateTimeDue, Priority, PercentComplete, ItemColumnCount };
0027 
0028     enum CollectionColumn { CollectionTitle = 0, CollectionColumnCount };
0029 
0030     enum Role { SortRole = Akonadi::EntityTreeModel::UserRole, RecursRole };
0031 
0032     static Akonadi::CalendarModel::Ptr create(Akonadi::Monitor *monitor);
0033     ~CalendarModel() override;
0034 
0035     [[nodiscard]] QWeakPointer<CalendarModel> weakPointer() const;
0036     void setWeakPointer(const QWeakPointer<CalendarModel> &weakPointer);
0037 
0038     [[nodiscard]] QVariant entityData(const Akonadi::Item &item, int column, int role = Qt::DisplayRole) const override;
0039 
0040     [[nodiscard]] QVariant entityData(const Akonadi::Collection &collection, int column, int role = Qt::DisplayRole) const override;
0041 
0042     [[nodiscard]] int entityColumnCount(EntityTreeModel::HeaderGroup headerSet) const override;
0043 
0044     [[nodiscard]] QVariant entityHeaderData(int section, Qt::Orientation orientation, int role, EntityTreeModel::HeaderGroup headerSet) const override;
0045 
0046 private:
0047     explicit CalendarModel(Akonadi::Monitor *monitor);
0048 
0049     std::unique_ptr<CalendarModelPrivate> const d;
0050 };
0051 }