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 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