File indexing completed on 2024-02-25 16:44:31

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 "videoconference/videoconferenceinfo.h"
0011 #include <QDebug>
0012 
0013 class LIBRUQOLACORE_EXPORT Block
0014 {
0015     Q_GADGET
0016 public:
0017     enum BlockType {
0018         Unknown,
0019         VideoConf,
0020     };
0021     Q_ENUM(BlockType)
0022 
0023     Block();
0024     [[nodiscard]] bool operator==(const Block &other) const;
0025 
0026     static QJsonObject serialize(const Block &block);
0027     static Block deserialize(const QJsonObject &o);
0028     void parseBlock(const QJsonObject &block);
0029 
0030     [[nodiscard]] QString blockId() const;
0031     void setBlockId(const QString &newBlockId);
0032 
0033     [[nodiscard]] QString callId() const;
0034     void setCallId(const QString &newCallId);
0035 
0036     [[nodiscard]] QString appId() const;
0037     void setAppId(const QString &newAppId);
0038 
0039     [[nodiscard]] BlockType blockType() const;
0040     void setBlockType(BlockType newBlockType);
0041 
0042     [[nodiscard]] bool isValid() const;
0043 
0044     [[nodiscard]] QString title() const;
0045 
0046     [[nodiscard]] QString blockTypeStr() const;
0047     void setBlockTypeStr(const QString &newBlockStr);
0048 
0049     [[nodiscard]] VideoConferenceInfo videoConferenceInfo() const;
0050     void setVideoConferenceInfo(const VideoConferenceInfo &newInfo);
0051 
0052 private:
0053     [[nodiscard]] LIBRUQOLACORE_NO_EXPORT QString convertEnumToStr(BlockType newBlockType) const;
0054     [[nodiscard]] LIBRUQOLACORE_NO_EXPORT Block::BlockType convertBlockTypeToEnum(const QString &type);
0055     QString mBlockId;
0056     QString mCallId;
0057     QString mAppId;
0058     QString mBlockStr;
0059     BlockType mBlockType = Unknown;
0060     VideoConferenceInfo mVideoConferenceInfo;
0061 };
0062 LIBRUQOLACORE_EXPORT QDebug operator<<(QDebug d, const Block &t);
0063 Q_DECLARE_TYPEINFO(Block, Q_MOVABLE_TYPE);