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 }