Implement preferred emote quality setting.
This doesn't work super well for Twitch emotes because they don't conform to a proper emote scaling standard Fixes #150
This commit is contained in:
@@ -59,8 +59,11 @@ void EmotePopup::loadChannel(std::shared_ptr<Channel> _channel)
|
||||
builder2.getMessage()->centered = true;
|
||||
builder2.getMessage()->setDisableCompactEmotes(true);
|
||||
|
||||
int preferredEmoteSize = singletons::SettingManager::getInstance().preferredEmoteQuality;
|
||||
|
||||
map.each([&](const QString &key, const util::EmoteData &value) {
|
||||
builder2.appendWord(Word(value.image, Word::Flags::AlwaysShow, key, emoteDesc,
|
||||
builder2.appendWord(Word(value.getImageForSize(preferredEmoteSize),
|
||||
Word::Flags::AlwaysShow, key, emoteDesc,
|
||||
Link(Link::Type::InsertText, key)));
|
||||
});
|
||||
|
||||
@@ -82,6 +85,7 @@ void EmotePopup::loadChannel(std::shared_ptr<Channel> _channel)
|
||||
|
||||
void EmotePopup::loadEmojis()
|
||||
{
|
||||
int preferredEmoteSize = singletons::SettingManager::getInstance().preferredEmoteQuality;
|
||||
util::EmoteMap &emojis = singletons::EmoteManager::getInstance().getEmojis();
|
||||
|
||||
std::shared_ptr<Channel> emojiChannel(new Channel(""));
|
||||
@@ -99,10 +103,13 @@ void EmotePopup::loadEmojis()
|
||||
messages::MessageBuilder builder;
|
||||
builder.getMessage()->centered = true;
|
||||
builder.getMessage()->setDisableCompactEmotes(true);
|
||||
emojis.each([this, &builder](const QString &key, const util::EmoteData &value) {
|
||||
builder.appendWord(Word(value.image, Word::Flags::AlwaysShow, key, "emoji",
|
||||
Link(Link::Type::InsertText, key)));
|
||||
});
|
||||
|
||||
emojis.each(
|
||||
[this, &builder, preferredEmoteSize](const QString &key, const util::EmoteData &value) {
|
||||
auto emoteImage = value.getImageForSize(preferredEmoteSize);
|
||||
builder.appendWord(Word(emoteImage, Word::Flags::AlwaysShow, key, "emoji",
|
||||
Link(Link::Type::InsertText, key)));
|
||||
});
|
||||
emojiChannel->addMessage(builder.getMessage());
|
||||
|
||||
this->viewEmojis->setChannel(emojiChannel);
|
||||
|
||||
@@ -426,6 +426,29 @@ QVBoxLayout *SettingsDialog::createEmotesTab()
|
||||
|
||||
layout->addWidget(createCheckbox("Enable Twitch Emotes", settings.enableTwitchEmotes));
|
||||
|
||||
// Preferred emote quality
|
||||
{
|
||||
auto box = new QHBoxLayout();
|
||||
auto label = new QLabel("Preferred emote quality");
|
||||
label->setToolTip("Select which emote quality you prefer to download");
|
||||
auto widget = new QComboBox();
|
||||
widget->addItems({"1x", "2x", "4x"});
|
||||
box->addWidget(label);
|
||||
box->addWidget(widget);
|
||||
|
||||
settings.preferredEmoteQuality.connect([widget](int newIndex, auto) {
|
||||
widget->setCurrentIndex(newIndex); //
|
||||
});
|
||||
|
||||
QObject::connect(
|
||||
widget, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [](int index) {
|
||||
singletons::SettingManager &settings = singletons::SettingManager::getInstance();
|
||||
settings.preferredEmoteQuality = index; //
|
||||
});
|
||||
|
||||
layout->addLayout(box);
|
||||
}
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user