refactor: use SettingWidget::dropdown for emoji style (#6300)
This commit is contained in:
@@ -62,6 +62,7 @@
|
|||||||
- Dev: Merged top/bottom and left/right notebook layouts. (#6215)
|
- Dev: Merged top/bottom and left/right notebook layouts. (#6215)
|
||||||
- Dev: Refactored `Button` and friends. (#6102, #6255, #6266)
|
- Dev: Refactored `Button` and friends. (#6102, #6255, #6266)
|
||||||
- Dev: Made Settings & Account button on Linux/macOS SVGs. (#6267)
|
- Dev: Made Settings & Account button on Linux/macOS SVGs. (#6267)
|
||||||
|
- Dev: Emoji style / set is now stored lowercase (and matched case-insensitively). Changing emoji style from this point on and then running an old version might mean you will use the Twitter emoji style by default. (#6300)
|
||||||
- Dev: `OnceFlag`'s internal flag is now atomic. (#6237)
|
- Dev: `OnceFlag`'s internal flag is now atomic. (#6237)
|
||||||
- Dev: Bumped clang-format requirement to 19. (#6236)
|
- Dev: Bumped clang-format requirement to 19. (#6236)
|
||||||
|
|
||||||
|
|||||||
@@ -350,6 +350,7 @@ set(SOURCE_FILES
|
|||||||
|
|
||||||
providers/emoji/Emojis.cpp
|
providers/emoji/Emojis.cpp
|
||||||
providers/emoji/Emojis.hpp
|
providers/emoji/Emojis.hpp
|
||||||
|
providers/emoji/EmojiStyle.hpp
|
||||||
|
|
||||||
providers/ffz/FfzBadges.cpp
|
providers/ffz/FfzBadges.cpp
|
||||||
providers/ffz/FfzBadges.hpp
|
providers/ffz/FfzBadges.hpp
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace chatterino {
|
||||||
|
|
||||||
|
/// The available emoji styles in Chatterino
|
||||||
|
///
|
||||||
|
/// Each enum value has a "bitset value" defined so it can be used in a FlagsEnum to figure out
|
||||||
|
/// which emojis support which emoji style / set
|
||||||
|
enum class EmojiStyle : std::uint8_t {
|
||||||
|
Twitter = 1 << 0,
|
||||||
|
Facebook = 1 << 1,
|
||||||
|
Apple = 1 << 2,
|
||||||
|
Google = 1 << 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace chatterino
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "messages/Emote.hpp"
|
#include "messages/Emote.hpp"
|
||||||
#include "messages/Image.hpp"
|
#include "messages/Image.hpp"
|
||||||
#include "singletons/Settings.hpp"
|
#include "singletons/Settings.hpp"
|
||||||
|
#include "util/QCompareTransparent.hpp"
|
||||||
#include "util/QMagicEnum.hpp"
|
#include "util/QMagicEnum.hpp"
|
||||||
#include "util/RapidjsonHelpers.hpp"
|
#include "util/RapidjsonHelpers.hpp"
|
||||||
|
|
||||||
@@ -245,15 +246,15 @@ void Emojis::sortEmojis()
|
|||||||
void Emojis::loadEmojiSet()
|
void Emojis::loadEmojiSet()
|
||||||
{
|
{
|
||||||
getSettings()->emojiSet.connect([this](const auto &emojiSet) {
|
getSettings()->emojiSet.connect([this](const auto &emojiSet) {
|
||||||
EmojiData::Capability setCapability =
|
auto setCapability = qmagicenum::enumCast<EmojiData::Capability>(
|
||||||
qmagicenum::enumCast<EmojiData::Capability>(emojiSet).value_or(
|
emojiSet, qmagicenum::CASE_INSENSITIVE)
|
||||||
EmojiData::Capability::Google);
|
.value_or(EmojiData::Capability::Google);
|
||||||
|
|
||||||
for (const auto &emoji : this->emojis)
|
for (const auto &emoji : this->emojis)
|
||||||
{
|
{
|
||||||
QString emojiSetToUse = emojiSet;
|
QString emojiSetToUse = emojiSet;
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static std::map<QString, QString> emojiSets = {
|
static std::map<QString, QString, QCompareCaseInsensitive> emojiSets = {
|
||||||
// JSDELIVR
|
// JSDELIVR
|
||||||
// {"Twitter", "https://cdn.jsdelivr.net/npm/emoji-datasource-twitter@4.0.4/img/twitter/64/"},
|
// {"Twitter", "https://cdn.jsdelivr.net/npm/emoji-datasource-twitter@4.0.4/img/twitter/64/"},
|
||||||
// {"Facebook", "https://cdn.jsdelivr.net/npm/emoji-datasource-facebook@4.0.4/img/facebook/64/"},
|
// {"Facebook", "https://cdn.jsdelivr.net/npm/emoji-datasource-facebook@4.0.4/img/facebook/64/"},
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "common/FlagsEnum.hpp"
|
#include "common/FlagsEnum.hpp"
|
||||||
|
#include "providers/emoji/EmojiStyle.hpp"
|
||||||
|
|
||||||
#include <boost/variant.hpp>
|
#include <boost/variant.hpp>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
@@ -30,12 +31,7 @@ struct EmojiData {
|
|||||||
// i.e. thinking
|
// i.e. thinking
|
||||||
std::vector<QString> shortCodes;
|
std::vector<QString> shortCodes;
|
||||||
|
|
||||||
enum class Capability : uint8_t {
|
using Capability = EmojiStyle;
|
||||||
Apple = 1 << 0,
|
|
||||||
Google = 1 << 1,
|
|
||||||
Twitter = 1 << 2,
|
|
||||||
Facebook = 1 << 3,
|
|
||||||
};
|
|
||||||
using Capabilities = FlagsEnum<Capability>;
|
using Capabilities = FlagsEnum<Capability>;
|
||||||
|
|
||||||
Capabilities capabilities;
|
Capabilities capabilities;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#include "controllers/moderationactions/ModerationAction.hpp"
|
#include "controllers/moderationactions/ModerationAction.hpp"
|
||||||
#include "controllers/nicknames/Nickname.hpp"
|
#include "controllers/nicknames/Nickname.hpp"
|
||||||
#include "controllers/sound/ISoundController.hpp"
|
#include "controllers/sound/ISoundController.hpp"
|
||||||
|
#include "providers/emoji/EmojiStyle.hpp"
|
||||||
#include "singletons/Toasts.hpp"
|
#include "singletons/Toasts.hpp"
|
||||||
#include "util/QMagicEnumTagged.hpp"
|
#include "util/QMagicEnumTagged.hpp"
|
||||||
#include "util/RapidJsonSerializeQString.hpp" // IWYU pragma: keep
|
#include "util/RapidJsonSerializeQString.hpp" // IWYU pragma: keep
|
||||||
@@ -368,7 +369,10 @@ public:
|
|||||||
};
|
};
|
||||||
BoolSetting showUnlistedSevenTVEmotes = {
|
BoolSetting showUnlistedSevenTVEmotes = {
|
||||||
"/emotes/showUnlistedSevenTVEmotes", false};
|
"/emotes/showUnlistedSevenTVEmotes", false};
|
||||||
QStringSetting emojiSet = {"/emotes/emojiSet", "Twitter"};
|
EnumStringSetting<EmojiStyle> emojiSet = {
|
||||||
|
"/emotes/emojiSet",
|
||||||
|
EmojiStyle::Twitter,
|
||||||
|
};
|
||||||
|
|
||||||
BoolSetting stackBits = {"/emotes/stackBits", false};
|
BoolSetting stackBits = {"/emotes/stackBits", false};
|
||||||
BoolSetting removeSpacesBetweenEmotes = {
|
BoolSetting removeSpacesBetweenEmotes = {
|
||||||
|
|||||||
@@ -661,14 +661,9 @@ void GeneralPage::initLayout(GeneralPageView &layout)
|
|||||||
SettingWidget::dropdown("Emote & badge thumbnail size on hover",
|
SettingWidget::dropdown("Emote & badge thumbnail size on hover",
|
||||||
s.emoteTooltipScale)
|
s.emoteTooltipScale)
|
||||||
->addTo(layout);
|
->addTo(layout);
|
||||||
layout.addDropdown("Emoji style",
|
|
||||||
{
|
SettingWidget::dropdown("Emoji style", s.emojiSet)->addTo(layout);
|
||||||
"Twitter",
|
|
||||||
"Facebook",
|
|
||||||
"Apple",
|
|
||||||
"Google",
|
|
||||||
},
|
|
||||||
s.emojiSet);
|
|
||||||
SettingWidget::checkbox("Show BetterTTV global emotes",
|
SettingWidget::checkbox("Show BetterTTV global emotes",
|
||||||
s.enableBTTVGlobalEmotes)
|
s.enableBTTVGlobalEmotes)
|
||||||
->addKeywords({"bttv"})
|
->addKeywords({"bttv"})
|
||||||
|
|||||||
@@ -227,6 +227,8 @@ template SettingWidget *SettingWidget::dropdown<TabStyle>(
|
|||||||
const QString &label, EnumStringSetting<TabStyle> &setting);
|
const QString &label, EnumStringSetting<TabStyle> &setting);
|
||||||
template SettingWidget *SettingWidget::dropdown<ShowModerationState>(
|
template SettingWidget *SettingWidget::dropdown<ShowModerationState>(
|
||||||
const QString &label, EnumStringSetting<ShowModerationState> &setting);
|
const QString &label, EnumStringSetting<ShowModerationState> &setting);
|
||||||
|
template SettingWidget *SettingWidget::dropdown<EmojiStyle>(
|
||||||
|
const QString &label, EnumStringSetting<EmojiStyle> &setting);
|
||||||
|
|
||||||
SettingWidget *SettingWidget::colorButton(const QString &label,
|
SettingWidget *SettingWidget::colorButton(const QString &label,
|
||||||
QStringSetting &setting)
|
QStringSetting &setting)
|
||||||
|
|||||||
Reference in New Issue
Block a user