mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-21 22:24:07 +01:00
fixed emotes settings a little bit
This commit is contained in:
parent
cb6af11b5a
commit
91d45214d9
4 changed files with 134 additions and 120 deletions
|
@ -61,27 +61,40 @@ ImageElement::ImageElement(Image *_image, MessageElement::Flags flags)
|
||||||
|
|
||||||
void ImageElement::addToContainer(MessageLayoutContainer &container, MessageElement::Flags _flags)
|
void ImageElement::addToContainer(MessageLayoutContainer &container, MessageElement::Flags _flags)
|
||||||
{
|
{
|
||||||
|
if (_flags & this->getFlags()) {
|
||||||
QSize size(this->image->getWidth() * this->image->getScale() * container.scale,
|
QSize size(this->image->getWidth() * this->image->getScale() * container.scale,
|
||||||
this->image->getHeight() * this->image->getScale() * container.scale);
|
this->image->getHeight() * this->image->getScale() * container.scale);
|
||||||
|
|
||||||
container.addElement(
|
container.addElement(
|
||||||
(new ImageLayoutElement(*this, this->image, size))->setLink(this->getLink()));
|
(new ImageLayoutElement(*this, this->image, size))->setLink(this->getLink()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// EMOTE
|
// EMOTE
|
||||||
EmoteElement::EmoteElement(const util::EmoteData &_data, MessageElement::Flags flags)
|
EmoteElement::EmoteElement(const util::EmoteData &_data, MessageElement::Flags flags)
|
||||||
: MessageElement(flags)
|
: MessageElement(flags)
|
||||||
, data(_data)
|
, data(_data)
|
||||||
|
, textElement(nullptr)
|
||||||
{
|
{
|
||||||
if (_data.isValid()) {
|
if (_data.isValid()) {
|
||||||
this->setTooltip(data.image1x->getTooltip());
|
this->setTooltip(data.image1x->getTooltip());
|
||||||
|
qDebug() << "valid xDDDDDDDDD" << _data.image1x->getName();
|
||||||
|
this->textElement = new TextElement(_data.image1x->getName(), MessageElement::Misc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EmoteElement::~EmoteElement()
|
||||||
|
{
|
||||||
|
if (this->textElement != nullptr) {
|
||||||
|
delete this->textElement;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EmoteElement::addToContainer(MessageLayoutContainer &container, MessageElement::Flags _flags)
|
void EmoteElement::addToContainer(MessageLayoutContainer &container, MessageElement::Flags _flags)
|
||||||
{
|
{
|
||||||
|
if (_flags & this->getFlags()) {
|
||||||
|
if (_flags & this->getFlags() & MessageElement::EmoteImages) {
|
||||||
if (!this->data.isValid()) {
|
if (!this->data.isValid()) {
|
||||||
qDebug() << "EmoteElement::data is invalid xD";
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +112,14 @@ void EmoteElement::addToContainer(MessageLayoutContainer &container, MessageElem
|
||||||
QSize size((int)(container.scale * _image->getScaledWidth()),
|
QSize size((int)(container.scale * _image->getScaledWidth()),
|
||||||
(int)(container.scale * _image->getScaledHeight()));
|
(int)(container.scale * _image->getScaledHeight()));
|
||||||
|
|
||||||
container.addElement((new ImageLayoutElement(*this, _image, size))->setLink(this->getLink()));
|
container.addElement(
|
||||||
|
(new ImageLayoutElement(*this, _image, size))->setLink(this->getLink()));
|
||||||
|
} else {
|
||||||
|
if (this->textElement != nullptr) {
|
||||||
|
this->textElement->addToContainer(container, MessageElement::Misc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TEXT
|
// TEXT
|
||||||
|
@ -117,9 +137,11 @@ TextElement::TextElement(const QString &text, MessageElement::Flags flags,
|
||||||
|
|
||||||
void TextElement::addToContainer(MessageLayoutContainer &container, MessageElement::Flags _flags)
|
void TextElement::addToContainer(MessageLayoutContainer &container, MessageElement::Flags _flags)
|
||||||
{
|
{
|
||||||
|
if (_flags & this->getFlags()) {
|
||||||
QFontMetrics &metrics =
|
QFontMetrics &metrics =
|
||||||
singletons::FontManager::getInstance().getFontMetrics(this->style, container.scale);
|
singletons::FontManager::getInstance().getFontMetrics(this->style, container.scale);
|
||||||
singletons::ThemeManager &themeManager = singletons::ThemeManager::ThemeManager::getInstance();
|
singletons::ThemeManager &themeManager =
|
||||||
|
singletons::ThemeManager::ThemeManager::getInstance();
|
||||||
|
|
||||||
for (Word &word : this->words) {
|
for (Word &word : this->words) {
|
||||||
auto getTextLayoutElement = [&](QString text, int width, bool trailingSpace) {
|
auto getTextLayoutElement = [&](QString text, int width, bool trailingSpace) {
|
||||||
|
@ -187,6 +209,7 @@ void TextElement::addToContainer(MessageLayoutContainer &container, MessageEleme
|
||||||
this->hasTrailingSpace()));
|
this->hasTrailingSpace()));
|
||||||
container.breakLine();
|
container.breakLine();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TIMESTAMP
|
// TIMESTAMP
|
||||||
|
@ -211,6 +234,7 @@ TimestampElement::~TimestampElement()
|
||||||
void TimestampElement::addToContainer(MessageLayoutContainer &container,
|
void TimestampElement::addToContainer(MessageLayoutContainer &container,
|
||||||
MessageElement::Flags _flags)
|
MessageElement::Flags _flags)
|
||||||
{
|
{
|
||||||
|
if (_flags & this->getFlags()) {
|
||||||
if (singletons::SettingManager::getInstance().timestampFormat != this->format) {
|
if (singletons::SettingManager::getInstance().timestampFormat != this->format) {
|
||||||
this->format = singletons::SettingManager::getInstance().timestampFormat.getValue();
|
this->format = singletons::SettingManager::getInstance().timestampFormat.getValue();
|
||||||
delete this->element;
|
delete this->element;
|
||||||
|
@ -218,6 +242,7 @@ void TimestampElement::addToContainer(MessageLayoutContainer &container,
|
||||||
}
|
}
|
||||||
|
|
||||||
this->element->addToContainer(container, _flags);
|
this->element->addToContainer(container, _flags);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextElement *TimestampElement::formatTime(const QTime &time)
|
TextElement *TimestampElement::formatTime(const QTime &time)
|
||||||
|
@ -239,8 +264,6 @@ TwitchModerationElement::TwitchModerationElement()
|
||||||
void TwitchModerationElement::addToContainer(MessageLayoutContainer &container,
|
void TwitchModerationElement::addToContainer(MessageLayoutContainer &container,
|
||||||
MessageElement::Flags _flags)
|
MessageElement::Flags _flags)
|
||||||
{
|
{
|
||||||
// qDebug() << _flags;
|
|
||||||
|
|
||||||
if (_flags & MessageElement::ModeratorTools) {
|
if (_flags & MessageElement::ModeratorTools) {
|
||||||
QSize size((int)(container.scale * 16), (int)(container.scale * 16));
|
QSize size((int)(container.scale * 16), (int)(container.scale * 16));
|
||||||
|
|
||||||
|
|
|
@ -145,20 +145,6 @@ public:
|
||||||
MessageElement::Flags flags) override;
|
MessageElement::Flags flags) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// contains emote data and will pick the emote based on :
|
|
||||||
// a) are images for the emote type enabled
|
|
||||||
// b) which size it wants
|
|
||||||
class EmoteElement : public MessageElement
|
|
||||||
{
|
|
||||||
const util::EmoteData data;
|
|
||||||
|
|
||||||
public:
|
|
||||||
EmoteElement(const util::EmoteData &data, MessageElement::Flags flags);
|
|
||||||
|
|
||||||
virtual void addToContainer(MessageLayoutContainer &container,
|
|
||||||
MessageElement::Flags flags) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
// contains a text, it will split it into words
|
// contains a text, it will split it into words
|
||||||
class TextElement : public MessageElement
|
class TextElement : public MessageElement
|
||||||
{
|
{
|
||||||
|
@ -180,6 +166,22 @@ public:
|
||||||
MessageElement::Flags flags) override;
|
MessageElement::Flags flags) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// contains emote data and will pick the emote based on :
|
||||||
|
// a) are images for the emote type enabled
|
||||||
|
// b) which size it wants
|
||||||
|
class EmoteElement : public MessageElement
|
||||||
|
{
|
||||||
|
const util::EmoteData data;
|
||||||
|
TextElement *textElement;
|
||||||
|
|
||||||
|
public:
|
||||||
|
EmoteElement(const util::EmoteData &data, MessageElement::Flags flags);
|
||||||
|
~EmoteElement();
|
||||||
|
|
||||||
|
virtual void addToContainer(MessageLayoutContainer &container,
|
||||||
|
MessageElement::Flags flags) override;
|
||||||
|
};
|
||||||
|
|
||||||
// contains a text, formated depending on the preferences
|
// contains a text, formated depending on the preferences
|
||||||
class TimestampElement : public MessageElement
|
class TimestampElement : public MessageElement
|
||||||
{
|
{
|
||||||
|
@ -208,12 +210,5 @@ public:
|
||||||
virtual void addToContainer(MessageLayoutContainer &container,
|
virtual void addToContainer(MessageLayoutContainer &container,
|
||||||
MessageElement::Flags flags) override;
|
MessageElement::Flags flags) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// adds bits as text, static image or animated image
|
|
||||||
// class BitsElement : public MessageElement
|
|
||||||
//{
|
|
||||||
// public:
|
|
||||||
// virtual void addToContainer(LayoutContainer &container) override;
|
|
||||||
//};
|
|
||||||
} // namespace messages
|
} // namespace messages
|
||||||
} // namespace chatterino
|
} // namespace chatterino
|
||||||
|
|
|
@ -450,36 +450,33 @@ bool TwitchMessageBuilder::tryAppendEmote(QString &emoteString)
|
||||||
singletons::EmoteManager &emoteManager = singletons::EmoteManager::getInstance();
|
singletons::EmoteManager &emoteManager = singletons::EmoteManager::getInstance();
|
||||||
util::EmoteData emoteData;
|
util::EmoteData emoteData;
|
||||||
|
|
||||||
|
auto appendEmote = [=](MessageElement::Flags flags) {
|
||||||
|
this->emplace<EmoteElement>(emoteData, flags);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
if (emoteManager.bttvGlobalEmotes.tryGet(emoteString, emoteData)) {
|
if (emoteManager.bttvGlobalEmotes.tryGet(emoteString, emoteData)) {
|
||||||
// BTTV Global Emote
|
// BTTV Global Emote
|
||||||
return this->appendEmote(emoteData);
|
return appendEmote(MessageElement::BttvEmote);
|
||||||
} else if (this->twitchChannel != nullptr &&
|
} else if (this->twitchChannel != nullptr &&
|
||||||
this->twitchChannel->bttvChannelEmotes->tryGet(emoteString, emoteData)) {
|
this->twitchChannel->bttvChannelEmotes->tryGet(emoteString, emoteData)) {
|
||||||
// BTTV Channel Emote
|
// BTTV Channel Emote
|
||||||
return this->appendEmote(emoteData);
|
return appendEmote(MessageElement::BttvEmote);
|
||||||
} else if (emoteManager.ffzGlobalEmotes.tryGet(emoteString, emoteData)) {
|
} else if (emoteManager.ffzGlobalEmotes.tryGet(emoteString, emoteData)) {
|
||||||
// FFZ Global Emote
|
// FFZ Global Emote
|
||||||
return this->appendEmote(emoteData);
|
return appendEmote(MessageElement::FfzEmote);
|
||||||
} else if (this->twitchChannel != nullptr &&
|
} else if (this->twitchChannel != nullptr &&
|
||||||
this->twitchChannel->ffzChannelEmotes->tryGet(emoteString, emoteData)) {
|
this->twitchChannel->ffzChannelEmotes->tryGet(emoteString, emoteData)) {
|
||||||
// FFZ Channel Emote
|
// FFZ Channel Emote
|
||||||
return this->appendEmote(emoteData);
|
return appendEmote(MessageElement::FfzEmote);
|
||||||
} else if (emoteManager.getChatterinoEmotes().tryGet(emoteString, emoteData)) {
|
} else if (emoteManager.getChatterinoEmotes().tryGet(emoteString, emoteData)) {
|
||||||
// Chatterino Emote
|
// Chatterino Emote
|
||||||
return this->appendEmote(emoteData);
|
return appendEmote(MessageElement::Misc);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TwitchMessageBuilder::appendEmote(const util::EmoteData &emoteData)
|
|
||||||
{
|
|
||||||
this->emplace<EmoteElement>(emoteData, MessageElement::BttvEmote);
|
|
||||||
|
|
||||||
// Perhaps check for ignored emotes here?
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// fourtf: this is ugly
|
// fourtf: this is ugly
|
||||||
// maybe put the individual badges into a map instead of this mess
|
// maybe put the individual badges into a map instead of this mess
|
||||||
void TwitchMessageBuilder::parseTwitchBadges()
|
void TwitchMessageBuilder::parseTwitchBadges()
|
||||||
|
|
|
@ -55,7 +55,6 @@ private:
|
||||||
void appendTwitchEmote(const Communi::IrcPrivateMessage *ircMessage, const QString &emote,
|
void appendTwitchEmote(const Communi::IrcPrivateMessage *ircMessage, const QString &emote,
|
||||||
std::vector<std::pair<long, util::EmoteData>> &vec);
|
std::vector<std::pair<long, util::EmoteData>> &vec);
|
||||||
bool tryAppendEmote(QString &emoteString);
|
bool tryAppendEmote(QString &emoteString);
|
||||||
bool appendEmote(const util::EmoteData &emoteData);
|
|
||||||
|
|
||||||
void parseTwitchBadges();
|
void parseTwitchBadges();
|
||||||
void addChatterinoBadges();
|
void addChatterinoBadges();
|
||||||
|
|
Loading…
Reference in a new issue