File indexing completed on 2024-12-01 04:35:32

0001 /*
0002    SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "discussions/discussion.h"
0008 #include "utils.h"
0009 #include <KLocalizedString>
0010 #include <QDateTime>
0011 #include <QJsonObject>
0012 
0013 Discussion::Discussion() = default;
0014 
0015 QString Discussion::description() const
0016 {
0017     return mDescription;
0018 }
0019 
0020 void Discussion::setDescription(const QString &description)
0021 {
0022     mDescription = description;
0023 }
0024 
0025 QString Discussion::parentRoomId() const
0026 {
0027     return mParentRoomId;
0028 }
0029 
0030 void Discussion::setParentRoomId(const QString &parentRoomId)
0031 {
0032     mParentRoomId = parentRoomId;
0033 }
0034 
0035 int Discussion::numberMessages() const
0036 {
0037     return mNumberMessages;
0038 }
0039 
0040 void Discussion::setNumberMessages(int numberMessages)
0041 {
0042     mNumberMessages = numberMessages;
0043 }
0044 
0045 qint64 Discussion::lastMessage() const
0046 {
0047     return mLastMessage;
0048 }
0049 
0050 void Discussion::setLastMessage(qint64 lastMessage)
0051 {
0052     mLastMessage = lastMessage;
0053     QLocale l;
0054     mLastMessageDateTimeStr = l.toString(QDateTime::fromMSecsSinceEpoch(mLastMessage), QLocale::LongFormat);
0055 }
0056 
0057 QString Discussion::timeStampDisplay() const
0058 {
0059     return mTimeStampDateTimeStr;
0060 }
0061 
0062 QString Discussion::fname() const
0063 {
0064     return mFname;
0065 }
0066 
0067 void Discussion::setFname(const QString &fname)
0068 {
0069     mFname = fname;
0070 }
0071 
0072 const QString &Discussion::userName() const
0073 {
0074     return mUserName;
0075 }
0076 
0077 void Discussion::setUserName(const QString &newUserName)
0078 {
0079     mUserName = newUserName;
0080 }
0081 
0082 QString Discussion::lastMessageDisplay() const
0083 {
0084     return i18n("(Last Message: %1)", mLastMessageDateTimeStr);
0085 }
0086 
0087 qint64 Discussion::timeStamp() const
0088 {
0089     return mTimeStamp;
0090 }
0091 
0092 void Discussion::setTimeStamp(qint64 timeStamp)
0093 {
0094     mTimeStamp = timeStamp;
0095     QLocale l;
0096     mTimeStampDateTimeStr = l.toString(QDateTime::fromMSecsSinceEpoch(mTimeStamp), QLocale::LongFormat);
0097 }
0098 
0099 QDebug operator<<(QDebug d, const Discussion &t)
0100 {
0101     d.space() << "Parent Id" << t.parentRoomId();
0102     d.space() << "Last Message" << t.lastMessage();
0103     d.space() << "Number of Messages" << t.numberMessages();
0104     d.space() << "Description" << t.description();
0105     d.space() << "Discussion Room Id" << t.discussionRoomId();
0106     d.space() << "timestamp" << t.timeStamp();
0107     d.space() << "fname" << t.fname();
0108     d.space() << "mUserName" << t.userName();
0109     return d;
0110 }
0111 
0112 bool Discussion::operator==(const Discussion &other) const
0113 {
0114     return (description() == other.description()) && (parentRoomId() == other.parentRoomId()) && (numberMessages() == other.numberMessages())
0115         && (lastMessage() == other.lastMessage()) && (discussionRoomId() == other.discussionRoomId()) && (timeStamp() == other.timeStamp())
0116         && (fname() == other.fname()) && (userName() == other.userName());
0117 }
0118 
0119 void Discussion::parseDiscussion(const QJsonObject &o)
0120 {
0121     mParentRoomId = o.value(QLatin1String("prid")).toString();
0122     mDescription = o.value(QLatin1String("description")).toString();
0123     mFname = o.value(QLatin1String("fname")).toString();
0124     mNumberMessages = o.value(QLatin1String("msgs")).toInt();
0125     mDiscussionRoomId = o.value(QLatin1String("_id")).toString();
0126     setLastMessage(Utils::parseIsoDate(QStringLiteral("lm"), o));
0127     setTimeStamp(Utils::parseIsoDate(QStringLiteral("ts"), o));
0128     const QJsonValue ownerValue = o.value(QLatin1String("u"));
0129     if (!ownerValue.isUndefined()) {
0130         const QJsonObject objOwner = ownerValue.toObject();
0131         mUserName = objOwner.value(QLatin1String("username")).toString();
0132     }
0133 }
0134 
0135 QString Discussion::discussionRoomId() const
0136 {
0137     return mDiscussionRoomId;
0138 }
0139 
0140 void Discussion::setDiscussionRoomId(const QString &discussionRoomId)
0141 {
0142     mDiscussionRoomId = discussionRoomId;
0143 }
0144 
0145 #include "moc_discussion.cpp"