File indexing completed on 2024-05-12 05:02:13
0001 /* 0002 SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "libruqolacore_export.h" 0010 #include "user.h" 0011 #include <QDebug> 0012 #include <QVector> 0013 0014 class LIBRUQOLACORE_EXPORT VideoConferenceInfo 0015 { 0016 Q_GADGET 0017 public: 0018 enum VideoConferenceType { 0019 Unknown, 0020 Direct, 0021 Conference, 0022 }; 0023 Q_ENUM(VideoConferenceType) 0024 0025 VideoConferenceInfo(); 0026 ~VideoConferenceInfo(); 0027 void parse(const QJsonObject &content); 0028 0029 [[nodiscard]] QString url() const; 0030 void setUrl(const QString &newUrl); 0031 0032 [[nodiscard]] int status() const; 0033 void setStatus(int newStatus); 0034 0035 [[nodiscard]] bool ringing() const; 0036 void setRinging(bool newRinging); 0037 0038 [[nodiscard]] QString roomId() const; 0039 void setRoomId(const QString &newRoomId); 0040 0041 [[nodiscard]] qint64 createdAtDateTime() const; 0042 void setCreatedAtDateTime(qint64 newCreatedAtDateTime); 0043 0044 [[nodiscard]] qint64 endedAtDateTime() const; 0045 void setEndedAtDateTime(qint64 newEndedAtDateTime); 0046 0047 [[nodiscard]] VideoConferenceType conferenceType() const; 0048 void setConferenceType(VideoConferenceType newConferenceType); 0049 0050 [[nodiscard]] QString providerName() const; 0051 void setProviderName(const QString &newProviderName); 0052 0053 [[nodiscard]] bool operator==(const VideoConferenceInfo &other) const; 0054 0055 [[nodiscard]] QVector<User> users() const; 0056 void setUsers(const QVector<User> &newUsers); 0057 0058 [[nodiscard]] QString statusInformation() const; 0059 0060 [[nodiscard]] QString messageId() const; 0061 void setMessageId(const QString &newMessageId); 0062 0063 [[nodiscard]] QString blockId() const; 0064 void setBlockId(const QString &newBlockId); 0065 0066 [[nodiscard]] bool isValid() const; 0067 0068 [[nodiscard]] bool canJoin() const; 0069 0070 [[nodiscard]] QString title() const; 0071 0072 static QJsonObject serialize(const VideoConferenceInfo &videoConfInfo); 0073 static VideoConferenceInfo deserialize(const QJsonObject &o); 0074 0075 [[nodiscard]] static QString convertEnumToString(const VideoConferenceInfo &info); 0076 0077 private: 0078 [[nodiscard]] LIBRUQOLACORE_NO_EXPORT VideoConferenceInfo::VideoConferenceType convertTypeToEnum(const QString &str) const; 0079 QVector<User> mUsers; 0080 QString mBlockId; 0081 QString mUrl; 0082 QString mRoomId; 0083 QString mProviderName; 0084 QString mMessageId; 0085 VideoConferenceType mConferenceType = Unknown; 0086 qint64 mCreatedAtDateTime = -1; 0087 qint64 mEndedAtDateTime = -1; 0088 int mStatus = -1; 0089 bool mRinging = false; 0090 }; 0091 Q_DECLARE_TYPEINFO(VideoConferenceInfo, Q_RELOCATABLE_TYPE); 0092 LIBRUQOLACORE_EXPORT QDebug operator<<(QDebug d, const VideoConferenceInfo &t);