refactor: merge emote element flags (#6511)
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
- Dev: Fix the WinGet release workflow. (#6497)
|
||||
- Dev: Correct handling of eventsubs without any account. (#6503)
|
||||
- Dev: Removed dependency to Qt5 Compatibility module by updating libcommuni. (#6500)
|
||||
- Dev: Merged emote element flags from different providers into two. (#6511)
|
||||
|
||||
## 2.5.4
|
||||
|
||||
|
||||
+3
-14
@@ -376,22 +376,11 @@ c2.MessageElementFlag = {
|
||||
Text = 0,
|
||||
Username = 0,
|
||||
Timestamp = 0,
|
||||
TwitchEmoteImage = 0,
|
||||
TwitchEmoteText = 0,
|
||||
TwitchEmote = 0,
|
||||
BttvEmoteImage = 0,
|
||||
BttvEmoteText = 0,
|
||||
BttvEmote = 0,
|
||||
EmoteImage = 0,
|
||||
EmoteText = 0,
|
||||
Emote = 0,
|
||||
ChannelPointReward = 0,
|
||||
ChannelPointRewardImage = 0,
|
||||
FfzEmoteImage = 0,
|
||||
FfzEmoteText = 0,
|
||||
FfzEmote = 0,
|
||||
SevenTVEmoteImage = 0,
|
||||
SevenTVEmoteText = 0,
|
||||
SevenTVEmote = 0,
|
||||
EmoteImages = 0,
|
||||
EmoteText = 0,
|
||||
BitsStatic = 0,
|
||||
BitsAnimated = 0,
|
||||
BadgeSharedChannel = 0,
|
||||
|
||||
@@ -116,25 +116,21 @@ bool appendWhisperMessageWordsLocally(const QStringList &words)
|
||||
auto it = accemotes->find({words[i]});
|
||||
if (it != accemotes->end())
|
||||
{
|
||||
b.emplace<EmoteElement>(it->second,
|
||||
MessageElementFlag::TwitchEmote);
|
||||
b.emplace<EmoteElement>(it->second, MessageElementFlag::Emote);
|
||||
continue;
|
||||
}
|
||||
} // Twitch emote
|
||||
|
||||
{ // bttv/ffz emote
|
||||
if ((emote = bttvemotes->emote({words[i]})))
|
||||
emote = bttvemotes->emote({words[i]});
|
||||
if (!emote)
|
||||
{
|
||||
flags = MessageElementFlag::BttvEmote;
|
||||
}
|
||||
else if ((emote = ffzemotes->emote({words[i]})))
|
||||
{
|
||||
flags = MessageElementFlag::FfzEmote;
|
||||
emote = ffzemotes->emote({words[i]});
|
||||
}
|
||||
// TODO: Load 7tv global emotes
|
||||
if (emote)
|
||||
{
|
||||
b.emplace<EmoteElement>(*emote, flags);
|
||||
b.emplace<EmoteElement>(*emote, MessageElementFlag::Emote);
|
||||
continue;
|
||||
}
|
||||
} // bttv/ffz emote
|
||||
|
||||
@@ -416,8 +416,7 @@ EmotePtr makeSharedChatBadge(const QString &sourceName,
|
||||
});
|
||||
}
|
||||
|
||||
std::tuple<std::optional<EmotePtr>, MessageElementFlags> parseEmote(
|
||||
TwitchChannel *twitchChannel, const EmoteName &name)
|
||||
EmotePtr parseEmote(TwitchChannel *twitchChannel, const EmoteName &name)
|
||||
{
|
||||
// Emote order:
|
||||
// - FrankerFaceZ Channel
|
||||
@@ -440,19 +439,19 @@ std::tuple<std::optional<EmotePtr>, MessageElementFlags> parseEmote(
|
||||
emote = twitchChannel->ffzEmote(name);
|
||||
if (emote)
|
||||
{
|
||||
return {emote, MessageElementFlag::FfzEmote};
|
||||
return *emote;
|
||||
}
|
||||
|
||||
emote = twitchChannel->bttvEmote(name);
|
||||
if (emote)
|
||||
{
|
||||
return {emote, MessageElementFlag::BttvEmote};
|
||||
return *emote;
|
||||
}
|
||||
|
||||
emote = twitchChannel->seventvEmote(name);
|
||||
if (emote)
|
||||
{
|
||||
return {emote, MessageElementFlag::SevenTVEmote};
|
||||
return *emote;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,22 +460,22 @@ std::tuple<std::optional<EmotePtr>, MessageElementFlags> parseEmote(
|
||||
emote = globalFfzEmotes->emote(name);
|
||||
if (emote)
|
||||
{
|
||||
return {emote, MessageElementFlag::FfzEmote};
|
||||
return *emote;
|
||||
}
|
||||
|
||||
emote = globalBttvEmotes->emote(name);
|
||||
if (emote)
|
||||
{
|
||||
return {emote, MessageElementFlag::BttvEmote};
|
||||
return *emote;
|
||||
}
|
||||
|
||||
emote = globalSeventvEmotes->globalEmote(name);
|
||||
if (emote)
|
||||
{
|
||||
return {emote, MessageElementFlag::SevenTVEmote};
|
||||
return *emote;
|
||||
}
|
||||
|
||||
return {{}, {}};
|
||||
return {};
|
||||
}
|
||||
|
||||
} // namespace
|
||||
@@ -2211,14 +2210,14 @@ void MessageBuilder::appendUsername(const QVariantMap &tags,
|
||||
Outcome MessageBuilder::tryAppendEmote(TwitchChannel *twitchChannel,
|
||||
const EmoteName &name)
|
||||
{
|
||||
auto [emote, flags] = parseEmote(twitchChannel, name);
|
||||
auto emote = parseEmote(twitchChannel, name);
|
||||
|
||||
if (!emote)
|
||||
{
|
||||
return Failure;
|
||||
}
|
||||
|
||||
if ((*emote)->zeroWidth && getSettings()->enableZeroWidthEmotes &&
|
||||
if (emote->zeroWidth && getSettings()->enableZeroWidthEmotes &&
|
||||
!this->isEmpty())
|
||||
{
|
||||
// Attempt to merge current zero-width emote into any previous emotes
|
||||
@@ -2231,9 +2230,12 @@ Outcome MessageBuilder::tryAppendEmote(TwitchChannel *twitchChannel,
|
||||
auto baseEmoteElement = this->releaseBack();
|
||||
|
||||
std::vector<LayeredEmoteElement::Emote> layers = {
|
||||
{baseEmote, baseEmoteElement->getFlags()}, {*emote, flags}};
|
||||
{baseEmote, baseEmoteElement->getFlags()},
|
||||
{emote, MessageElementFlag::Emote},
|
||||
};
|
||||
this->emplace<LayeredEmoteElement>(
|
||||
std::move(layers), baseEmoteElement->getFlags() | flags,
|
||||
std::move(layers),
|
||||
baseEmoteElement->getFlags() | MessageElementFlag::Emote,
|
||||
this->textColor_);
|
||||
return Success;
|
||||
}
|
||||
@@ -2241,15 +2243,16 @@ Outcome MessageBuilder::tryAppendEmote(TwitchChannel *twitchChannel,
|
||||
auto *asLayered = dynamic_cast<LayeredEmoteElement *>(&this->back());
|
||||
if (asLayered)
|
||||
{
|
||||
asLayered->addEmoteLayer({*emote, flags});
|
||||
asLayered->addFlags(flags);
|
||||
asLayered->addEmoteLayer({emote, MessageElementFlag::Emote});
|
||||
asLayered->addFlags(MessageElementFlag::Emote);
|
||||
return Success;
|
||||
}
|
||||
|
||||
// No emote to merge with, just show as regular emote
|
||||
}
|
||||
|
||||
this->emplace<EmoteElement>(*emote, flags, this->textColor_);
|
||||
this->emplace<EmoteElement>(emote, MessageElementFlag::Emote,
|
||||
this->textColor_);
|
||||
return Success;
|
||||
}
|
||||
|
||||
@@ -2278,7 +2281,7 @@ void MessageBuilder::addWords(
|
||||
{
|
||||
// This emote exists right at the start of the word!
|
||||
this->emplace<EmoteElement>(currentTwitchEmote.ptr,
|
||||
MessageElementFlag::TwitchEmote,
|
||||
MessageElementFlag::Emote,
|
||||
this->textColor_);
|
||||
|
||||
auto len = currentTwitchEmote.name.string.length();
|
||||
|
||||
@@ -200,7 +200,7 @@ void EmoteElement::addToContainer(MessageLayoutContainer &container,
|
||||
return;
|
||||
}
|
||||
|
||||
if (ctx.flags.has(MessageElementFlag::EmoteImages))
|
||||
if (ctx.flags.has(MessageElementFlag::EmoteImage))
|
||||
{
|
||||
auto image =
|
||||
this->emote_->images.getImageOrLoaded(container.getImageScale());
|
||||
@@ -286,7 +286,7 @@ void LayeredEmoteElement::addToContainer(MessageLayoutContainer &container,
|
||||
{
|
||||
if (ctx.flags.hasAny(this->getFlags()))
|
||||
{
|
||||
if (ctx.flags.has(MessageElementFlag::EmoteImages))
|
||||
if (ctx.flags.has(MessageElementFlag::EmoteImage))
|
||||
{
|
||||
auto images = this->getLoadedImages(container.getImageScale());
|
||||
if (images.empty())
|
||||
|
||||
@@ -40,29 +40,18 @@ enum class MessageElementFlag : int64_t {
|
||||
Username = (1LL << 2),
|
||||
Timestamp = (1LL << 3),
|
||||
|
||||
TwitchEmoteImage = (1LL << 4),
|
||||
TwitchEmoteText = (1LL << 5),
|
||||
TwitchEmote = TwitchEmoteImage | TwitchEmoteText,
|
||||
EmoteImage = (1LL << 4),
|
||||
EmoteText = (1LL << 5),
|
||||
Emote = EmoteImage | EmoteText,
|
||||
|
||||
BttvEmoteImage = (1LL << 6),
|
||||
BttvEmoteText = (1LL << 7),
|
||||
BttvEmote = BttvEmoteImage | BttvEmoteText,
|
||||
// unused: (1LL << 6),
|
||||
// unused: (1LL << 7),
|
||||
|
||||
ChannelPointReward = (1LL << 8),
|
||||
ChannelPointRewardImage = ChannelPointReward | TwitchEmoteImage,
|
||||
ChannelPointRewardImage = ChannelPointReward | EmoteImage,
|
||||
|
||||
FfzEmoteImage = (1LL << 9),
|
||||
FfzEmoteText = (1LL << 10),
|
||||
FfzEmote = FfzEmoteImage | FfzEmoteText,
|
||||
|
||||
SevenTVEmoteImage = (1LL << 34),
|
||||
SevenTVEmoteText = (1LL << 35),
|
||||
SevenTVEmote = SevenTVEmoteImage | SevenTVEmoteText,
|
||||
|
||||
EmoteImages =
|
||||
TwitchEmoteImage | BttvEmoteImage | FfzEmoteImage | SevenTVEmoteImage,
|
||||
EmoteText =
|
||||
TwitchEmoteText | BttvEmoteText | FfzEmoteText | SevenTVEmoteText,
|
||||
// unused: (1LL << 9),
|
||||
// unused: (1LL << 10),
|
||||
|
||||
BitsStatic = (1LL << 11),
|
||||
BitsAnimated = (1LL << 12),
|
||||
@@ -158,11 +147,9 @@ enum class MessageElementFlag : int64_t {
|
||||
// for the reply button element
|
||||
ReplyButton = (1LL << 33),
|
||||
|
||||
// (1LL << 34) through (1LL << 36) are occupied by
|
||||
// SevenTVEmoteImage, SevenTVEmoteText, and BadgeSevenTV,
|
||||
// (1LL << 36) is occupied by BadgeSevenTV
|
||||
|
||||
Default = Timestamp | Badges | Username | BitsStatic | FfzEmoteImage |
|
||||
BttvEmoteImage | SevenTVEmoteImage | TwitchEmoteImage |
|
||||
Default = Timestamp | Badges | Username | BitsStatic | EmoteImage |
|
||||
BitsAmount | Text | AlwaysShow,
|
||||
};
|
||||
using MessageElementFlags = FlagsEnum<MessageElementFlag>;
|
||||
|
||||
@@ -179,7 +179,7 @@ void MessageLayoutContainer::breakLine()
|
||||
bool isCompactEmote =
|
||||
!this->flags_.has(MessageFlag::DisableCompactEmotes) &&
|
||||
element->getCreator().getFlags().has(
|
||||
MessageElementFlag::EmoteImages);
|
||||
MessageElementFlag::EmoteImage);
|
||||
|
||||
qreal yExtra = 0;
|
||||
if (isCompactEmote)
|
||||
@@ -635,7 +635,7 @@ void MessageLayoutContainer::addElement(MessageLayoutElement *element,
|
||||
}
|
||||
|
||||
// Returns true if the last element was an emote image
|
||||
return lastElement->getFlags().has(MessageElementFlag::EmoteImages);
|
||||
return lastElement->getFlags().has(MessageElementFlag::EmoteImage);
|
||||
};
|
||||
|
||||
bool isRTLElement = element->getText().isRightToLeft();
|
||||
@@ -670,7 +670,7 @@ void MessageLayoutContainer::addElement(MessageLayoutElement *element,
|
||||
// compact emote offset
|
||||
bool isCompactEmote =
|
||||
!this->flags_.has(MessageFlag::DisableCompactEmotes) &&
|
||||
element->getCreator().getFlags().has(MessageElementFlag::EmoteImages);
|
||||
element->getCreator().getFlags().has(MessageElementFlag::EmoteImage);
|
||||
|
||||
if (isCompactEmote)
|
||||
{
|
||||
@@ -686,13 +686,13 @@ void MessageLayoutContainer::addElement(MessageLayoutElement *element,
|
||||
if (element->getCreator().getFlags().has(
|
||||
MessageElementFlag::ChannelPointReward) &&
|
||||
element->getCreator().getFlags().hasNone(
|
||||
{MessageElementFlag::TwitchEmoteImage}))
|
||||
{MessageElementFlag::EmoteImage}))
|
||||
{
|
||||
yOffset -= (MARGIN.top() * this->scale_);
|
||||
}
|
||||
|
||||
if (getSettings()->removeSpacesBetweenEmotes &&
|
||||
element->getFlags().hasAny({MessageElementFlag::EmoteImages}) &&
|
||||
element->getFlags().hasAny({MessageElementFlag::EmoteImage}) &&
|
||||
shouldRemoveSpaceBetweenEmotes())
|
||||
{
|
||||
// Move cursor one 'space width' to the left (right in case of RTL) to combine hug the previous emote
|
||||
|
||||
@@ -209,7 +209,7 @@ void WindowManager::updateWordTypeMask()
|
||||
// emotes
|
||||
if (settings->enableEmoteImages)
|
||||
{
|
||||
flags.set(MEF::EmoteImages);
|
||||
flags.set(MEF::EmoteImage);
|
||||
}
|
||||
flags.set(MEF::EmoteText);
|
||||
flags.set(MEF::EmojiText);
|
||||
|
||||
@@ -44,8 +44,7 @@ auto makeTitleMessage(const QString &title)
|
||||
return builder.release();
|
||||
}
|
||||
|
||||
auto makeEmoteMessage(std::vector<EmotePtr> emotes,
|
||||
const MessageElementFlag &emoteFlag)
|
||||
auto makeEmoteMessage(std::vector<EmotePtr> emotes)
|
||||
{
|
||||
MessageBuilder builder;
|
||||
builder->flags.set(MessageFlag::Centered);
|
||||
@@ -66,15 +65,15 @@ auto makeEmoteMessage(std::vector<EmotePtr> emotes,
|
||||
{
|
||||
builder
|
||||
.emplace<EmoteElement>(
|
||||
emote,
|
||||
MessageElementFlags{MessageElementFlag::AlwaysShow, emoteFlag})
|
||||
emote, MessageElementFlags{MessageElementFlag::AlwaysShow,
|
||||
MessageElementFlag::Emote})
|
||||
->setLink(Link(Link::InsertText, emote->name.string));
|
||||
}
|
||||
|
||||
return builder.release();
|
||||
}
|
||||
|
||||
auto makeEmoteMessage(const EmoteMap &map, const MessageElementFlag &emoteFlag)
|
||||
auto makeEmoteMessage(const EmoteMap &map)
|
||||
{
|
||||
if (map.empty())
|
||||
{
|
||||
@@ -93,7 +92,7 @@ auto makeEmoteMessage(const EmoteMap &map, const MessageElementFlag &emoteFlag)
|
||||
{
|
||||
vec.emplace_back(ptr);
|
||||
}
|
||||
return makeEmoteMessage(std::move(vec), emoteFlag);
|
||||
return makeEmoteMessage(std::move(vec));
|
||||
}
|
||||
|
||||
auto makeEmojiMessage(const std::vector<EmojiPtr> &emojiMap)
|
||||
@@ -116,13 +115,11 @@ auto makeEmojiMessage(const std::vector<EmojiPtr> &emojiMap)
|
||||
return builder.release();
|
||||
}
|
||||
|
||||
void addEmotes(Channel &channel, auto &&emotes, const QString &title,
|
||||
const MessageElementFlag &emoteFlag)
|
||||
void addEmotes(Channel &channel, auto &&emotes, const QString &title)
|
||||
{
|
||||
channel.addMessage(makeTitleMessage(title), MessageContext::Original);
|
||||
channel.addMessage(
|
||||
makeEmoteMessage(std::forward<decltype(emotes)>(emotes), emoteFlag),
|
||||
MessageContext::Original);
|
||||
channel.addMessage(makeEmoteMessage(std::forward<decltype(emotes)>(emotes)),
|
||||
MessageContext::Original);
|
||||
}
|
||||
|
||||
void addTwitchEmoteSets(const std::shared_ptr<const EmoteMap> &local,
|
||||
@@ -133,8 +130,7 @@ void addTwitchEmoteSets(const std::shared_ptr<const EmoteMap> &local,
|
||||
{
|
||||
if (!local->empty())
|
||||
{
|
||||
addEmotes(subChannel, *local, channelName % u" (Follower)",
|
||||
MessageElementFlag::TwitchEmote);
|
||||
addEmotes(subChannel, *local, channelName % u" (Follower)");
|
||||
}
|
||||
|
||||
std::vector<
|
||||
@@ -146,8 +142,7 @@ void addTwitchEmoteSets(const std::shared_ptr<const EmoteMap> &local,
|
||||
if (set.owner->id == currentChannelID)
|
||||
{
|
||||
// Put current channel emotes at the top
|
||||
addEmotes(subChannel, set.emotes, set.title(),
|
||||
MessageElementFlag::TwitchEmote);
|
||||
addEmotes(subChannel, set.emotes, set.title());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -162,7 +157,7 @@ void addTwitchEmoteSets(const std::shared_ptr<const EmoteMap> &local,
|
||||
for (const auto &[title, set] : sortedSets)
|
||||
{
|
||||
addEmotes(set.get().isSubLike ? subChannel : globalChannel,
|
||||
set.get().emotes, title, MessageElementFlag::TwitchEmote);
|
||||
set.get().emotes, title);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -269,7 +264,7 @@ EmotePopup::EmotePopup(QWidget *parent)
|
||||
|
||||
view->setOverrideFlags(MessageElementFlags{
|
||||
MessageElementFlag::Default, MessageElementFlag::AlwaysShow,
|
||||
MessageElementFlag::EmoteImages});
|
||||
MessageElementFlag::EmoteImage});
|
||||
view->setEnableScrollingToBottom(false);
|
||||
// We can safely ignore this signal connection since the ChannelView is deleted
|
||||
// either when the notebook is deleted, or when our main layout is deleted.
|
||||
@@ -457,34 +452,34 @@ void EmotePopup::reloadEmotes()
|
||||
if (Settings::instance().enableBTTVChannelEmotes)
|
||||
{
|
||||
addEmotes(*channelChannel, *this->twitchChannel_->bttvEmotes(),
|
||||
"BetterTTV", MessageElementFlag::BttvEmote);
|
||||
"BetterTTV");
|
||||
}
|
||||
if (Settings::instance().enableFFZChannelEmotes)
|
||||
{
|
||||
addEmotes(*channelChannel, *this->twitchChannel_->ffzEmotes(),
|
||||
"FrankerFaceZ", MessageElementFlag::FfzEmote);
|
||||
"FrankerFaceZ");
|
||||
}
|
||||
if (Settings::instance().enableSevenTVChannelEmotes)
|
||||
{
|
||||
addEmotes(*channelChannel, *this->twitchChannel_->seventvEmotes(),
|
||||
"7TV", MessageElementFlag::SevenTVEmote);
|
||||
"7TV");
|
||||
}
|
||||
}
|
||||
// global
|
||||
if (Settings::instance().enableBTTVGlobalEmotes)
|
||||
{
|
||||
addEmotes(*globalChannel, *getApp()->getBttvEmotes()->emotes(),
|
||||
"BetterTTV", MessageElementFlag::BttvEmote);
|
||||
"BetterTTV");
|
||||
}
|
||||
if (Settings::instance().enableFFZGlobalEmotes)
|
||||
{
|
||||
addEmotes(*globalChannel, *getApp()->getFfzEmotes()->emotes(),
|
||||
"FrankerFaceZ", MessageElementFlag::FfzEmote);
|
||||
"FrankerFaceZ");
|
||||
}
|
||||
if (Settings::instance().enableSevenTVGlobalEmotes)
|
||||
{
|
||||
addEmotes(*globalChannel, *getApp()->getSeventvEmotes()->globalEmotes(),
|
||||
"7TV", MessageElementFlag::SevenTVEmote);
|
||||
"7TV");
|
||||
}
|
||||
|
||||
if (subChannel->getMessageSnapshot().size() == 0)
|
||||
@@ -524,8 +519,7 @@ void EmotePopup::filterTwitchEmotes(std::shared_ptr<Channel> searchChannel,
|
||||
if (!local.empty())
|
||||
{
|
||||
addEmotes(*searchChannel, local,
|
||||
this->twitchChannel_->getName() % u" (Follower)",
|
||||
MessageElementFlag::TwitchEmote);
|
||||
this->twitchChannel_->getName() % u" (Follower)");
|
||||
}
|
||||
|
||||
for (const auto &[_id, set] :
|
||||
@@ -534,8 +528,7 @@ void EmotePopup::filterTwitchEmotes(std::shared_ptr<Channel> searchChannel,
|
||||
auto filtered = filterEmoteVec(searchText, set.emotes);
|
||||
if (!filtered.empty())
|
||||
{
|
||||
addEmotes(*searchChannel, std::move(filtered), set.title(),
|
||||
MessageElementFlag::TwitchEmote);
|
||||
addEmotes(*searchChannel, std::move(filtered), set.title());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -550,18 +543,15 @@ void EmotePopup::filterTwitchEmotes(std::shared_ptr<Channel> searchChannel,
|
||||
// global
|
||||
if (!bttvGlobalEmotes.empty())
|
||||
{
|
||||
addEmotes(*searchChannel, bttvGlobalEmotes, "BetterTTV (Global)",
|
||||
MessageElementFlag::BttvEmote);
|
||||
addEmotes(*searchChannel, bttvGlobalEmotes, "BetterTTV (Global)");
|
||||
}
|
||||
if (!ffzGlobalEmotes.empty())
|
||||
{
|
||||
addEmotes(*searchChannel, ffzGlobalEmotes, "FrankerFaceZ (Global)",
|
||||
MessageElementFlag::FfzEmote);
|
||||
addEmotes(*searchChannel, ffzGlobalEmotes, "FrankerFaceZ (Global)");
|
||||
}
|
||||
if (!seventvGlobalEmotes.empty())
|
||||
{
|
||||
addEmotes(*searchChannel, seventvGlobalEmotes, "7TV (Global)",
|
||||
MessageElementFlag::SevenTVEmote);
|
||||
addEmotes(*searchChannel, seventvGlobalEmotes, "7TV (Global)");
|
||||
}
|
||||
|
||||
if (this->twitchChannel_ == nullptr)
|
||||
@@ -579,18 +569,15 @@ void EmotePopup::filterTwitchEmotes(std::shared_ptr<Channel> searchChannel,
|
||||
// channel
|
||||
if (!bttvChannelEmotes.empty())
|
||||
{
|
||||
addEmotes(*searchChannel, bttvChannelEmotes, "BetterTTV (Channel)",
|
||||
MessageElementFlag::BttvEmote);
|
||||
addEmotes(*searchChannel, bttvChannelEmotes, "BetterTTV (Channel)");
|
||||
}
|
||||
if (!ffzChannelEmotes.empty())
|
||||
{
|
||||
addEmotes(*searchChannel, ffzChannelEmotes, "FrankerFaceZ (Channel)",
|
||||
MessageElementFlag::FfzEmote);
|
||||
addEmotes(*searchChannel, ffzChannelEmotes, "FrankerFaceZ (Channel)");
|
||||
}
|
||||
if (!seventvChannelEmotes.empty())
|
||||
{
|
||||
addEmotes(*searchChannel, seventvChannelEmotes, "7TV (Channel)",
|
||||
MessageElementFlag::SevenTVEmote);
|
||||
addEmotes(*searchChannel, seventvChannelEmotes, "7TV (Channel)");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@ void addImageContextMenuItems(QMenu *menu,
|
||||
|
||||
// Emote actions
|
||||
if (creatorFlags.hasAny(
|
||||
{MessageElementFlag::EmoteImages, MessageElementFlag::EmojiImage}))
|
||||
{MessageElementFlag::EmoteImage, MessageElementFlag::EmojiImage}))
|
||||
{
|
||||
if (const auto *emoteElement =
|
||||
dynamic_cast<const EmoteElement *>(&creator))
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa Tooltip"
|
||||
},
|
||||
"flags": "BttvEmoteImage|BttvEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa Tooltip"
|
||||
},
|
||||
"flags": "BttvEmoteImage|BttvEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -175,7 +175,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"name": "Keepo",
|
||||
"tooltip": "Keepo<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -126,7 +126,7 @@
|
||||
"name": "Keepo",
|
||||
"tooltip": "Keepo<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -145,7 +145,7 @@
|
||||
"name": "PogChamp",
|
||||
"tooltip": "PogChamp<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
"name": "BTTVEmote",
|
||||
"tooltip": "BTTVEmote Tooltip"
|
||||
},
|
||||
"flags": "BttvEmoteImage|BttvEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -108,7 +108,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -130,7 +130,7 @@
|
||||
"name": "7TVEmote",
|
||||
"tooltip": "7TVEmote Tooltip"
|
||||
},
|
||||
"flags": "SevenTVEmoteImage|SevenTVEmoteText"
|
||||
"flags": "EmoteImage|EmoteText"
|
||||
},
|
||||
{
|
||||
"emote": {
|
||||
@@ -145,7 +145,7 @@
|
||||
"tooltip": "7TVEmote0w Tooltip",
|
||||
"zeroWidth": true
|
||||
},
|
||||
"flags": "SevenTVEmoteImage|SevenTVEmoteText"
|
||||
"flags": "EmoteImage|EmoteText"
|
||||
},
|
||||
{
|
||||
"emote": {
|
||||
@@ -160,10 +160,10 @@
|
||||
"tooltip": "7TVEmote0w Tooltip",
|
||||
"zeroWidth": true
|
||||
},
|
||||
"flags": "SevenTVEmoteImage|SevenTVEmoteText"
|
||||
"flags": "EmoteImage|EmoteText"
|
||||
}
|
||||
],
|
||||
"flags": "SevenTVEmoteImage|SevenTVEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -236,7 +236,7 @@
|
||||
"name": "PogChamp",
|
||||
"tooltip": "PogChamp<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -256,7 +256,7 @@
|
||||
"name": "7TVGlobal",
|
||||
"tooltip": "7TVGlobal Tooltip"
|
||||
},
|
||||
"flags": "SevenTVEmoteImage|SevenTVEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -275,7 +275,7 @@
|
||||
"name": "Keepo",
|
||||
"tooltip": "Keepo<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -294,7 +294,7 @@
|
||||
"name": "FFZEmote",
|
||||
"tooltip": "FFZEmote Tooltip"
|
||||
},
|
||||
"flags": "FfzEmoteImage|FfzEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -313,7 +313,7 @@
|
||||
"name": "FFZGlobal",
|
||||
"tooltip": "FFZGlobal Tooltip"
|
||||
},
|
||||
"flags": "FfzEmoteImage|FfzEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -157,7 +157,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
"name": "f",
|
||||
"tooltip": "f<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
"name": "fo",
|
||||
"tooltip": "fo<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
"name": "PogChamp",
|
||||
"tooltip": "PogChamp<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -123,7 +123,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -157,7 +157,7 @@
|
||||
"name": "Keepo",
|
||||
"tooltip": "Keepo<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -197,7 +197,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -233,7 +233,7 @@
|
||||
"name": "MyCoolTwitchEmote",
|
||||
"tooltip": "MyCoolTwitchEmote Tooltip"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
"name": "Kreygasm",
|
||||
"tooltip": "Kreygasm<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -148,7 +148,7 @@
|
||||
"name": "Kreygasm",
|
||||
"tooltip": "Kreygasm<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa Tooltip"
|
||||
},
|
||||
"flags": "BttvEmoteImage|BttvEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
"name": "BTTVGlobal",
|
||||
"tooltip": "BTTVGlobal Tooltip"
|
||||
},
|
||||
"flags": "BttvEmoteImage|BttvEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -123,7 +123,7 @@
|
||||
"name": ":)",
|
||||
"tooltip": ":)<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
"name": "Keepo",
|
||||
"tooltip": "Keepo<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -183,7 +183,7 @@
|
||||
"name": "FFZEmote",
|
||||
"tooltip": "FFZEmote Tooltip"
|
||||
},
|
||||
"flags": "FfzEmoteImage|FfzEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"flags": "TwitchEmoteImage|ChannelPointReward",
|
||||
"flags": "EmoteImage|ChannelPointReward",
|
||||
"image": "https://chatterino.com/reward1x.png",
|
||||
"link": {
|
||||
"type": "None",
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"flags": "TwitchEmoteImage|ChannelPointReward",
|
||||
"flags": "EmoteImage|ChannelPointReward",
|
||||
"image": "https://chatterino.com/reward1x.png",
|
||||
"link": {
|
||||
"type": "None",
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"flags": "TwitchEmoteImage|ChannelPointReward",
|
||||
"flags": "EmoteImage|ChannelPointReward",
|
||||
"image": "https://chatterino.com/reward1x.png",
|
||||
"link": {
|
||||
"type": "None",
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
"name": "7TVEmote",
|
||||
"tooltip": "7TVEmote Tooltip"
|
||||
},
|
||||
"flags": "SevenTVEmoteImage|SevenTVEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -109,7 +109,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -145,7 +145,7 @@
|
||||
"name": "7TVEmote",
|
||||
"tooltip": "7TVEmote Tooltip"
|
||||
},
|
||||
"flags": "SevenTVEmoteImage|SevenTVEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -141,7 +141,7 @@
|
||||
"name": "BTTVGlobal",
|
||||
"tooltip": "BTTVGlobal Tooltip"
|
||||
},
|
||||
"flags": "BttvEmoteImage|BttvEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -176,7 +176,7 @@
|
||||
"name": "7TVGlobal",
|
||||
"tooltip": "7TVGlobal Tooltip"
|
||||
},
|
||||
"flags": "SevenTVEmoteImage|SevenTVEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -210,7 +210,7 @@
|
||||
"name": "FFZGlobal",
|
||||
"tooltip": "FFZGlobal Tooltip"
|
||||
},
|
||||
"flags": "FfzEmoteImage|FfzEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -229,7 +229,7 @@
|
||||
"name": "BTTVTwitchDev",
|
||||
"tooltip": "BTTVTwitchDev Tooltip"
|
||||
},
|
||||
"flags": "BttvEmoteImage|BttvEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -249,7 +249,7 @@
|
||||
"name": "7TVTwitchDev",
|
||||
"tooltip": "7TVTwitchDev Tooltip"
|
||||
},
|
||||
"flags": "SevenTVEmoteImage|SevenTVEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
@@ -268,7 +268,7 @@
|
||||
"name": "FFZTwitchDev",
|
||||
"tooltip": "FFZTwitchDev Tooltip"
|
||||
},
|
||||
"flags": "FfzEmoteImage|FfzEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
"name": "Kappa",
|
||||
"tooltip": "Kappa<br>Twitch Emote"
|
||||
},
|
||||
"flags": "TwitchEmoteImage|TwitchEmoteText",
|
||||
"flags": "EmoteImage|EmoteText",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"input": [
|
||||
"msg = {elements={",
|
||||
" { type = 'linebreak' },",
|
||||
" { type = 'linebreak', flags = c2.MessageElementFlag.BttvEmoteImage },",
|
||||
" { type = 'linebreak', flags = c2.MessageElementFlag.EmoteImage },",
|
||||
" { type = 'linebreak', tooltip = 't' },",
|
||||
" { type = 'linebreak', trailing_space = false },",
|
||||
"}}"
|
||||
@@ -27,7 +27,7 @@
|
||||
"type": "LinebreakElement"
|
||||
},
|
||||
{
|
||||
"flags": "BttvEmoteImage",
|
||||
"flags": "EmoteImage",
|
||||
"link": {
|
||||
"type": "None",
|
||||
"value": ""
|
||||
|
||||
@@ -78,7 +78,7 @@ std::vector<std::shared_ptr<MessageElement>> makeElements(const QString &text)
|
||||
.baseName = {},
|
||||
});
|
||||
elements.emplace_back(std::make_shared<EmoteElement>(
|
||||
emote, MessageElementFlag::TwitchEmote));
|
||||
emote, MessageElementFlag::Emote));
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ TEST_P(MessageLayoutContainerTest, RtlReordering)
|
||||
{
|
||||
MessageElementFlag::Text,
|
||||
MessageElementFlag::Username,
|
||||
MessageElementFlag::TwitchEmote,
|
||||
MessageElementFlag::Emote,
|
||||
},
|
||||
.width = 10000,
|
||||
.scale = 1.0F,
|
||||
|
||||
@@ -899,27 +899,21 @@ TEST_F(PluginTest, MessageElementFlag)
|
||||
"BitsAmount=0x200000,"
|
||||
"BitsAnimated=0x1000,"
|
||||
"BitsStatic=0x800,"
|
||||
"BttvEmoteImage=0x40,"
|
||||
"BttvEmoteText=0x80,"
|
||||
"ChannelName=0x100000,"
|
||||
"ChannelPointReward=0x100,"
|
||||
"Collapsed=0x4000000,"
|
||||
"EmojiImage=0x800000,"
|
||||
"EmojiText=0x1000000,"
|
||||
"FfzEmoteImage=0x200,"
|
||||
"FfzEmoteText=0x400,"
|
||||
"EmoteImage=0x10,"
|
||||
"EmoteText=0x20,"
|
||||
"LowercaseLinks=0x20000000,"
|
||||
"Mention=0x8000000,"
|
||||
"Misc=0x1,"
|
||||
"ModeratorTools=0x400000,"
|
||||
"RepliedMessage=0x100000000,"
|
||||
"ReplyButton=0x200000000,"
|
||||
"SevenTVEmoteImage=0x400000000,"
|
||||
"SevenTVEmoteText=0x800000000,"
|
||||
"Text=0x2,"
|
||||
"Timestamp=0x8,"
|
||||
"TwitchEmoteImage=0x10,"
|
||||
"TwitchEmoteText=0x20,"
|
||||
"Username=0x4";
|
||||
|
||||
std::string got = (*lua)["out"];
|
||||
|
||||
Reference in New Issue
Block a user