File indexing completed on 2024-04-14 05:43:44
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Dimitris Kardarakos <dimkard@posteo.net> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef CONFERENCEMODEL_H 0008 #define CONFERENCEMODEL_H 0009 0010 #include <QAbstractListModel> 0011 #include <QVector> 0012 #include <QHash> 0013 0014 class Conference; 0015 class ConferenceController; 0016 0017 class ConferenceModel : public QAbstractListModel 0018 { 0019 Q_OBJECT 0020 0021 Q_PROPERTY(ConferenceController *controller READ controller WRITE setController NOTIFY controllerChanged) 0022 Q_PROPERTY(bool busyDownlading READ busyDownlading NOTIFY busyDownladingChanged) 0023 0024 public: 0025 enum Roles { 0026 ConferenceId = Qt::UserRole + 1, 0027 ConferenceName, 0028 ConferenceDescription, 0029 ConferenceIcalUrl, 0030 ConferenceDays, 0031 ConferenceVenueImageUrl, 0032 ConferenceVenueLongitude, 0033 ConferenceVenueLatitude, 0034 ConferenceVenueOsmUrl, 0035 ConferenceTimeZone, 0036 PastUpcoming 0037 }; 0038 0039 explicit ConferenceModel(QObject *parent = nullptr); 0040 0041 QHash<int, QByteArray> roleNames() const override; 0042 QVariant data(const QModelIndex &index, int role) const override; 0043 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0044 0045 ConferenceController *controller() const; 0046 void setController(ConferenceController *conferenceController); 0047 0048 bool busyDownlading() const; 0049 0050 Q_SIGNALS: 0051 void controllerChanged(); 0052 void busyDownladingChanged(); 0053 0054 private Q_SLOTS: 0055 void setBusyStatus(const bool downlading); 0056 0057 private: 0058 void loadConferences(); 0059 QString pastOrUpcoming(const int index) const; 0060 0061 ConferenceController *m_controller; 0062 QVector<Conference *> m_conferences; 0063 bool m_busy_downloading; 0064 0065 }; 0066 #endif