File indexing completed on 2024-10-06 04:34:02
0001 /* 0002 SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "reaction.h" 0008 #include "emoticons/emojimanager.h" 0009 #include <KLocalizedString> 0010 Reaction::Reaction() = default; 0011 0012 QString Reaction::convertedReactionName() const 0013 { 0014 return mCacheConvertedReactionName; 0015 } 0016 0017 QString Reaction::convertedUsersNameAtToolTip() const 0018 { 0019 if (mUserNames.isEmpty()) { 0020 return {}; 0021 } else if (mUserNames.count() == 1) { 0022 return i18n("%1 reacted with %2", mUserNames[0], mReactionName); 0023 } else { 0024 QString notificationStr; 0025 for (int i = 0, total = mUserNames.count(); i < total; ++i) { 0026 const QString user = mUserNames.at(i); 0027 if (i == 0) { 0028 notificationStr = user; 0029 } else if (i < (total - 1)) { 0030 notificationStr = i18n("%1, %2", notificationStr, user); 0031 } else { 0032 notificationStr = i18n("%1 and %2", notificationStr, user); 0033 } 0034 } 0035 return i18n("%1 reacted with %2", notificationStr, mReactionName); 0036 } 0037 } 0038 0039 bool Reaction::isAnimatedImage() const 0040 { 0041 return mIsAnimatedImage; 0042 } 0043 0044 void Reaction::setIsAnimatedImage(bool isAnimatedImage) 0045 { 0046 mIsAnimatedImage = isAnimatedImage; 0047 } 0048 0049 QString Reaction::reactionName() const 0050 { 0051 return mReactionName; 0052 } 0053 0054 void Reaction::setReactionName(const QString &reactionName, EmojiManager *emojiManager) 0055 { 0056 if (mReactionName != reactionName) { 0057 mReactionName = reactionName; 0058 if (emojiManager) { 0059 mCacheConvertedReactionName = emojiManager->replaceEmojiIdentifier(mReactionName, true); 0060 mIsAnimatedImage = emojiManager->isAnimatedImage(mReactionName); 0061 } 0062 } 0063 } 0064 0065 QStringList Reaction::userNames() const 0066 { 0067 return mUserNames; 0068 } 0069 0070 void Reaction::setUserNames(const QStringList &userNames) 0071 { 0072 mUserNames = userNames; 0073 } 0074 0075 int Reaction::count() const 0076 { 0077 return mUserNames.count(); 0078 } 0079 0080 bool Reaction::operator==(const Reaction &other) const 0081 { 0082 return (mUserNames == other.userNames()) && (mReactionName == other.reactionName()); 0083 } 0084 0085 QDebug operator<<(QDebug d, const Reaction &t) 0086 { 0087 d.space() << "ReactionName" << t.reactionName(); 0088 d.space() << "UserNames" << t.userNames(); 0089 return d; 0090 } 0091 0092 #include "moc_reaction.cpp"