File indexing completed on 2024-05-05 05:28:19
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Dimitris Kardarakos <dimkard@posteo.net> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef ATTENDEES_MODEL_H 0008 #define ATTENDEES_MODEL_H 0009 0010 #include <QAbstractListModel> 0011 #include <QVariantList> 0012 #include <KCalendarCore/Attendee> 0013 0014 class LocalCalendar; 0015 0016 /** 0017 * @brief Model that serves the attendees of an Incidence 0018 * 0019 */ 0020 class AttendeesModel : public QAbstractListModel 0021 { 0022 Q_OBJECT 0023 0024 Q_PROPERTY(QString uid READ uid WRITE setUid NOTIFY uidChanged) 0025 public: 0026 explicit AttendeesModel(QObject *parent = nullptr); 0027 0028 enum RoleNames { 0029 Email = Qt::UserRole + 1, 0030 FullName, 0031 Name, 0032 ParticipationStatus, 0033 ParticipationStatusIcon, 0034 ParticipationStatusDisplay, 0035 AttendeeRole 0036 }; 0037 0038 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0039 bool setData(const QModelIndex &index, const QVariant &value, int role) override; 0040 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0041 QHash<int, QByteArray> roleNames() const override; 0042 0043 QString uid() const; 0044 void setUid(const QString &uid); 0045 0046 Q_INVOKABLE void removeItem(const int row); 0047 Q_INVOKABLE void addPersons(const QStringList uris); 0048 Q_INVOKABLE QStringList emails() const; 0049 Q_INVOKABLE QVariantList attendees() const; 0050 0051 Q_SIGNALS: 0052 void uidChanged(); 0053 0054 public Q_SLOTS: 0055 void loadPersistentData(); 0056 0057 private: 0058 QString m_uid; 0059 KCalendarCore::Attendee::List m_attendees; 0060 0061 QString statusIcon(const int row) const; 0062 QString displayStatus(const int row) const; 0063 }; 0064 #endif