File indexing completed on 2024-12-01 13:09: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 <QDebug>
0011 #include <QJsonArray>
0012 #include <QPixmap>
0013 
0014 class LIBRUQOLACORE_EXPORT NotificationInfo
0015 {
0016     Q_GADGET
0017 public:
0018     NotificationInfo();
0019     ~NotificationInfo();
0020 
0021     enum NotificationType {
0022         StandardMessage,
0023         ConferenceCall,
0024     };
0025     Q_ENUM(NotificationType);
0026 
0027     [[nodiscard]] const QString &accountName() const;
0028     void setAccountName(const QString &newAccountName);
0029 
0030     [[nodiscard]] const QString &message() const;
0031     void setMessage(const QString &newMessage);
0032 
0033     [[nodiscard]] const QString &title() const;
0034     void setTitle(const QString &newTitle);
0035 
0036     [[nodiscard]] const QString &senderId() const;
0037     void setSenderId(const QString &newSenderId);
0038 
0039     [[nodiscard]] const QString &senderName() const;
0040     void setSenderName(const QString &newSenderName);
0041 
0042     [[nodiscard]] const QString &senderUserName() const;
0043     void setSenderUserName(const QString &newSenderUserName);
0044 
0045     [[nodiscard]] const QString &roomName() const;
0046     void setRoomName(const QString &newRoomName);
0047 
0048     [[nodiscard]] const QString &roomId() const;
0049     void setRoomId(const QString &newRoomId);
0050 
0051     [[nodiscard]] const QString &channelType() const;
0052     void setChannelType(const QString &newChannelType);
0053 
0054     [[nodiscard]] const QString &tmId() const;
0055     void setTmId(const QString &newTmId);
0056 
0057     [[nodiscard]] const QPixmap &pixmap() const;
0058     void setPixmap(const QPixmap &newPixmap);
0059 
0060     void parseNotification(const QJsonArray &contents);
0061 
0062     // Pixmap can be null.
0063     [[nodiscard]] bool isValid() const;
0064 
0065     [[nodiscard]] const QString &dateTime() const;
0066     void setDateTime(const QString &newDateTime);
0067 
0068     [[nodiscard]] const QString &messageId() const;
0069     void setMessageId(const QString &newMessageId);
0070 
0071     [[nodiscard]] NotificationType notificationType() const;
0072     void setNotificationType(const NotificationType &newNotificationType);
0073 
0074     [[nodiscard]] bool operator==(const NotificationInfo &other) const;
0075 
0076 private:
0077     QString mMessageId;
0078     QString mAccountName;
0079     QString mMessage;
0080     QString mTitle;
0081     QString mSenderId;
0082     QString mSenderName;
0083     QString mSenderUserName;
0084     QString mRoomName;
0085     QString mRoomId;
0086     QString mChannelType;
0087     QString mTmId;
0088     QString mDateTime;
0089     QPixmap mPixmap;
0090     NotificationType mNotificationType = StandardMessage;
0091 };
0092 Q_DECLARE_TYPEINFO(NotificationInfo, Q_MOVABLE_TYPE);
0093 LIBRUQOLACORE_EXPORT QDebug operator<<(QDebug d, const NotificationInfo &t);