1 /* 2 * SPDX-FileCopyrightText: 2020 Dimitris Kardarakos <dimkard@posteo.net> 3 * 4 * SPDX-License-Identifier: GPL-3.0-or-later 5 */ 6 7 #ifndef CONFERENCEMODEL_H 8 #define CONFERENCEMODEL_H 9 10 #include <QAbstractListModel> 11 #include <QVariantMap> 12 #include <QVector> 13 #include <QHash> 14 15 class Conference; 16 class ConferenceController; 17 18 class ConferenceModel : public QAbstractListModel 19 { 20 Q_OBJECT 21 22 Q_PROPERTY(ConferenceController *controller READ controller WRITE setController NOTIFY controllerChanged) 23 Q_PROPERTY(bool busyDownlading READ busyDownlading NOTIFY busyDownladingChanged) 24 25 public: 26 enum Roles { 27 ConferenceId = Qt::UserRole + 1, 28 ConferenceName, 29 ConferenceDescription, 30 ConferenceIcalUrl, 31 ConferenceDays, 32 ConferenceVenueImageUrl, 33 ConferenceVenueLongitude, 34 ConferenceVenueLatitude, 35 ConferenceVenueOsmUrl, 36 ConferenceTimeZone, 37 PastUpcoming 38 }; 39 40 explicit ConferenceModel(QObject *parent = nullptr); 41 42 QHash<int, QByteArray> roleNames() const override; 43 QVariant data(const QModelIndex &index, int role) const override; 44 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 45 46 ConferenceController *controller() const; 47 void setController(ConferenceController *conferenceController); 48 49 bool busyDownlading() const; 50 51 Q_SIGNALS: 52 void controllerChanged(); 53 void busyDownladingChanged(); 54 55 private Q_SLOTS: 56 void setBusyStatus(const bool downlading); 57 58 private: 59 void loadConferences(); 60 QString pastOrUpcoming(const int index) const; 61 62 ConferenceController *m_controller; 63 QVector<Conference *> m_conferences; 64 bool m_busy_downloading; 65 66 }; 67 #endif 68