File indexing completed on 2024-04-28 09:46:20
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Dimitris Kardarakos <dimkard@posteo.net> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef CONFERENCE_CONTROLLER_H 0008 #define CONFERENCE_CONTROLLER_H 0009 0010 #include <QObject> 0011 #include <QFile> 0012 #include <QVector> 0013 #include <QJsonObject> 0014 #include <QNetworkAccessManager> 0015 0016 class Conference; 0017 0018 class ConferenceController : public QObject 0019 { 0020 Q_OBJECT 0021 0022 Q_PROPERTY(Conference *activeConference READ activeConference NOTIFY activeConferenceChanged) 0023 Q_PROPERTY(QString defaultConferenceId READ defaultConferenceId WRITE setDefaultConferenceId NOTIFY defaultConferenceIdChanged) 0024 0025 public: 0026 explicit ConferenceController(QObject *parent = nullptr); 0027 void setNetworkAccessManager(QNetworkAccessManager *nam); 0028 0029 Conference *activeConference() const; 0030 0031 QString defaultConferenceId() const; 0032 void setDefaultConferenceId(const QString &confId); 0033 0034 QVector<Conference *> conferences() const; 0035 Q_INVOKABLE void activateConference(const QString &conferenceId); 0036 Q_INVOKABLE void activateDefaultConference(); 0037 Q_INVOKABLE void clearActiveConference(); 0038 public Q_SLOTS: 0039 void loadConferences(); 0040 Q_SIGNALS: 0041 void conferencesLoaded(); 0042 void activeConferenceChanged(); 0043 void defaultConferenceIdChanged(); 0044 void downlading(const bool downlading); 0045 0046 private: 0047 void loadConference(const QJsonObject &jsonObj); 0048 void loadConferencesFromFile(QFile &jsonFile); 0049 QVector<Conference *> m_conferences; 0050 Conference *m_active_conference; 0051 QFile *m_conferences_file; 0052 0053 class Private; 0054 Private *d; 0055 0056 }; 0057 #endif