File indexing completed on 2023-11-26 08:17:49

0001 /*
0002    SPDX-FileCopyrightText: 2018-2023 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 <QDebug>
0011 // TODO rename it
0012 class LIBRUQOLACORE_EXPORT Channel
0013 {
0014     Q_GADGET
0015 public:
0016     enum ChannelType {
0017         Room,
0018         DirectChannel,
0019         Unknown,
0020     };
0021     Q_ENUM(ChannelType)
0022 
0023     Channel();
0024     ~Channel();
0025     void parseChannel(const QJsonObject &object, Channel::ChannelType);
0026 
0027     [[nodiscard]] ChannelType type() const;
0028     void setType(Channel::ChannelType type);
0029 
0030     [[nodiscard]] bool operator==(const Channel &other) const;
0031 
0032     Channel &operator=(const Channel &other) = default;
0033 
0034     [[nodiscard]] QString roomId() const;
0035     void setRoomId(const QString &roomId);
0036 
0037     [[nodiscard]] QString roomName() const;
0038     void setRoomName(const QString &roomName);
0039 
0040     [[nodiscard]] QString roomType() const;
0041     void setRoomType(const QString &roomType);
0042 
0043     [[nodiscard]] QString userId() const;
0044     void setUserId(const QString &userId);
0045 
0046     [[nodiscard]] QString name() const;
0047     void setName(const QString &name);
0048 
0049     [[nodiscard]] QString status() const;
0050     void setStatus(const QString &status);
0051 
0052     [[nodiscard]] QString userName() const;
0053     void setUserName(const QString &userName);
0054 
0055     [[nodiscard]] QString iconFromStatus() const;
0056 
0057 private:
0058     QString mRoomId;
0059     QString mRoomName;
0060     QString mRoomType;
0061 
0062     // Private Channel
0063     QString mUserId;
0064     QString mName;
0065     QString mStatus;
0066     QString mUserName;
0067     ChannelType mType = ChannelType::Unknown;
0068 };
0069 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0070 Q_DECLARE_METATYPE(Channel)
0071 #endif
0072 Q_DECLARE_TYPEINFO(Channel, Q_MOVABLE_TYPE);
0073 LIBRUQOLACORE_EXPORT QDebug operator<<(QDebug d, const Channel &t);