From aed55ac1ba765aa21a74c79d7493fdd3fd79a657 Mon Sep 17 00:00:00 2001 From: nerix Date: Sat, 3 Aug 2024 12:00:58 +0200 Subject: [PATCH] fix: replace defines with constexpr/const and use more absolute paths for includes (#5527) bye bye nuuls --- CHANGELOG.md | 1 + src/common/ChannelChatters.cpp | 2 +- src/common/Common.hpp | 33 ++-- src/common/Credentials.cpp | 19 ++- src/common/Modes.cpp | 2 +- src/common/Version.hpp | 19 +-- src/controllers/accounts/Account.cpp | 2 +- src/controllers/accounts/AccountModel.cpp | 2 +- src/controllers/commands/Command.cpp | 2 +- src/controllers/highlights/HighlightBadge.cpp | 2 +- .../notifications/NotificationModel.cpp | 2 +- src/controllers/pings/MutedChannelModel.cpp | 2 +- src/debug/Benchmark.cpp | 2 +- src/messages/Emote.cpp | 2 +- src/messages/MessageBuilder.cpp | 2 +- src/messages/MessageColor.cpp | 2 +- src/messages/layouts/MessageLayout.cpp | 6 - .../layouts/MessageLayoutContainer.cpp | 21 ++- src/messages/search/RegexPredicate.cpp | 2 +- src/messages/search/RegexPredicate.hpp | 2 +- src/providers/IvrApi.cpp | 2 +- src/providers/IvrApi.hpp | 4 +- src/providers/irc/AbstractIrcServer.cpp | 2 +- src/providers/irc/Irc2.cpp | 2 +- src/providers/irc/IrcAccount.cpp | 2 +- src/providers/irc/IrcChannel2.cpp | 2 +- src/providers/irc/IrcCommands.cpp | 2 +- src/providers/irc/IrcConnection2.cpp | 4 +- src/providers/irc/IrcServer.cpp | 2 +- src/providers/twitch/ChannelPointReward.cpp | 21 ++- src/providers/twitch/ChannelPointReward.hpp | 6 +- src/providers/twitch/TwitchEmotes.cpp | 4 +- src/providers/twitch/TwitchEmotes.hpp | 9 +- src/providers/twitch/api/Helix.hpp | 4 +- src/singletons/ImageUploader.cpp | 6 +- src/singletons/Theme.cpp | 1 - src/singletons/Toasts.cpp | 12 +- src/singletons/Updates.cpp | 38 +++-- src/util/DisplayBadge.cpp | 2 +- src/util/FunctionEventFilter.cpp | 2 +- src/util/FuzzyConvert.cpp | 2 +- src/util/Helpers.cpp | 2 +- src/util/RatelimitBucket.cpp | 2 +- src/util/SampleData.cpp | 2 +- src/widgets/AccountSwitchWidget.cpp | 2 +- src/widgets/TooltipWidget.cpp | 6 +- src/widgets/Window.cpp | 6 +- src/widgets/dialogs/BadgePickerDialog.cpp | 2 +- src/widgets/dialogs/EmotePopup.cpp | 2 +- src/widgets/dialogs/IrcConnectionEditor.cpp | 2 +- src/widgets/dialogs/QualityPopup.cpp | 2 +- src/widgets/dialogs/SelectChannelDialog.cpp | 8 +- .../dialogs/SelectChannelFiltersDialog.cpp | 2 +- src/widgets/dialogs/UserInfoPopup.cpp | 154 +++++++++--------- src/widgets/dialogs/WelcomeDialog.cpp | 2 +- src/widgets/helper/Button.cpp | 2 +- src/widgets/helper/ChannelView.cpp | 6 +- src/widgets/helper/ComboBoxItemDelegate.cpp | 2 +- src/widgets/helper/CommonTexts.hpp | 21 ++- src/widgets/helper/EditableModelView.cpp | 2 +- src/widgets/helper/NotebookButton.cpp | 2 - src/widgets/helper/NotebookTab.hpp | 2 +- src/widgets/helper/SearchPopup.cpp | 2 +- src/widgets/helper/TitlebarButton.cpp | 2 +- src/widgets/listview/GenericListItem.cpp | 2 +- src/widgets/listview/GenericListModel.cpp | 2 +- src/widgets/settingspages/AboutPage.cpp | 19 +-- src/widgets/settingspages/AccountsPage.cpp | 2 +- src/widgets/settingspages/CommandPage.cpp | 16 +- .../settingspages/ExternalToolsPage.cpp | 8 +- src/widgets/settingspages/FiltersPage.cpp | 12 +- src/widgets/settingspages/GeneralPage.cpp | 101 ++++++------ .../settingspages/HighlightingPage.cpp | 10 +- src/widgets/settingspages/IgnoresPage.cpp | 10 +- src/widgets/settingspages/ModerationPage.cpp | 2 +- src/widgets/settingspages/NicknamesPage.cpp | 2 +- .../settingspages/NotificationPage.cpp | 2 +- src/widgets/settingspages/SettingsPage.cpp | 2 +- src/widgets/splits/ClosedSplits.cpp | 2 +- src/widgets/splits/Split.cpp | 47 +++--- src/widgets/splits/SplitContainer.cpp | 10 +- src/widgets/splits/SplitOverlay.cpp | 2 +- tests/src/Updates.cpp | 4 +- 83 files changed, 376 insertions(+), 370 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe4463eb38d..d9abb6df1cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,7 @@ - Dev: The running Qt version is now shown in the about page if it differs from the compiled version. (#5501) - Dev: `FlagsEnum` is now `constexpr`. (#5510) - Dev: Documented and added tests to RTL handling. (#5473) +- Dev: Refactored a few `#define`s into `const(expr)` and cleaned includes. (#5527) ## 2.5.1 diff --git a/src/common/ChannelChatters.cpp b/src/common/ChannelChatters.cpp index 3bb785a0ae2..b66a3cc4598 100644 --- a/src/common/ChannelChatters.cpp +++ b/src/common/ChannelChatters.cpp @@ -1,4 +1,4 @@ -#include "ChannelChatters.hpp" +#include "common/ChannelChatters.hpp" #include "common/Channel.hpp" #include "messages/Message.hpp" diff --git a/src/common/Common.hpp b/src/common/Common.hpp index 8d6097473bc..f1ce967549f 100644 --- a/src/common/Common.hpp +++ b/src/common/Common.hpp @@ -5,17 +5,17 @@ #include #include -#include -#include - -#define LINK_CHATTERINO_WIKI "https://wiki.chatterino.com" -#define LINK_CHATTERINO_DISCORD "https://discord.gg/7Y5AYhAK4z" -#define LINK_CHATTERINO_SOURCE "https://github.com/Chatterino/chatterino2" namespace chatterino { -const inline auto TWITCH_PLAYER_URL = - QStringLiteral("https://player.twitch.tv/?channel=%1&parent=twitch.tv"); +constexpr QStringView LINK_CHATTERINO_WIKI = u"https://wiki.chatterino.com"; +constexpr QStringView LINK_CHATTERINO_DISCORD = + u"https://discord.gg/7Y5AYhAK4z"; +constexpr QStringView LINK_CHATTERINO_SOURCE = + u"https://github.com/Chatterino/chatterino2"; + +constexpr QStringView TWITCH_PLAYER_URL = + u"https://player.twitch.tv/?channel=%1&parent=twitch.tv"; enum class HighlightState { None, @@ -23,21 +23,14 @@ enum class HighlightState { NewMessage, }; -const Qt::KeyboardModifiers showSplitOverlayModifiers = +constexpr Qt::KeyboardModifiers SHOW_SPLIT_OVERLAY_MODIFIERS = Qt::ControlModifier | Qt::AltModifier; -const Qt::KeyboardModifiers showAddSplitRegions = +constexpr Qt::KeyboardModifiers SHOW_ADD_SPLIT_REGIONS = Qt::ControlModifier | Qt::AltModifier; -const Qt::KeyboardModifiers showResizeHandlesModifiers = Qt::ControlModifier; - -#ifndef ATTR_UNUSED -# ifdef Q_OS_WIN -# define ATTR_UNUSED -# else -# define ATTR_UNUSED __attribute__((unused)) -# endif -#endif +constexpr Qt::KeyboardModifiers SHOW_RESIZE_HANDLES_MODIFIERS = + Qt::ControlModifier; -static const char *ANONYMOUS_USERNAME_LABEL ATTR_UNUSED = " - anonymous - "; +constexpr const char *ANONYMOUS_USERNAME_LABEL = " - anonymous - "; template std::weak_ptr weakOf(T *element) diff --git a/src/common/Credentials.cpp b/src/common/Credentials.cpp index 68c9cdd5989..3c1c0ce043f 100644 --- a/src/common/Credentials.cpp +++ b/src/common/Credentials.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -26,16 +27,16 @@ # endif #endif -#define FORMAT_NAME \ - ([&] { \ - assert(!provider.contains(":")); \ - return QString("chatterino:%1:%2").arg(provider).arg(name_); \ - })() - namespace { using namespace chatterino; +QString formatName(const QString &provider, const QString &name) +{ + assert(!provider.contains(":")); + return u"chatterino:" % provider % u':' % name; +} + bool useKeyring() { #ifdef NO_QTKEYCHAIN @@ -184,7 +185,7 @@ void Credentials::get(const QString &provider, const QString &name_, { assertInGuiThread(); - auto name = FORMAT_NAME; + auto name = formatName(provider, name_); if (useKeyring()) { @@ -219,7 +220,7 @@ void Credentials::set(const QString &provider, const QString &name_, /// On linux, we try to use a keychain but show a message to disable it when it fails. /// XXX: add said message - auto name = FORMAT_NAME; + auto name = formatName(provider, name_); if (useKeyring()) { @@ -242,7 +243,7 @@ void Credentials::erase(const QString &provider, const QString &name_) { assertInGuiThread(); - auto name = FORMAT_NAME; + auto name = formatName(provider, name_); if (useKeyring()) { diff --git a/src/common/Modes.cpp b/src/common/Modes.cpp index ead79dea942..588a304f10a 100644 --- a/src/common/Modes.cpp +++ b/src/common/Modes.cpp @@ -1,4 +1,4 @@ -#include "Modes.hpp" +#include "common/Modes.hpp" #include "util/CombinePath.hpp" diff --git a/src/common/Version.hpp b/src/common/Version.hpp index fbe536a69b8..8d9ef54a0d4 100644 --- a/src/common/Version.hpp +++ b/src/common/Version.hpp @@ -1,7 +1,8 @@ #pragma once #include -#include + +namespace chatterino { /** * Valid version formats, in order of latest to oldest @@ -24,21 +25,7 @@ * - 2.4.0-alpha.2 * - 2.4.0-alpha **/ -#define CHATTERINO_VERSION "2.5.1" - -#if defined(Q_OS_WIN) -# define CHATTERINO_OS "win" -#elif defined(Q_OS_MACOS) -# define CHATTERINO_OS "macos" -#elif defined(Q_OS_LINUX) -# define CHATTERINO_OS "linux" -#elif defined(Q_OS_FREEBSD) -# define CHATTERINO_OS "freebsd" -#else -# define CHATTERINO_OS "unknown" -#endif - -namespace chatterino { +inline const QString CHATTERINO_VERSION = QStringLiteral("2.5.1"); class Version { diff --git a/src/controllers/accounts/Account.cpp b/src/controllers/accounts/Account.cpp index 9cf9ceefa9f..1d9f0ab1ca9 100644 --- a/src/controllers/accounts/Account.cpp +++ b/src/controllers/accounts/Account.cpp @@ -1,4 +1,4 @@ -#include "Account.hpp" +#include "controllers/accounts/Account.hpp" #include diff --git a/src/controllers/accounts/AccountModel.cpp b/src/controllers/accounts/AccountModel.cpp index cf2b1c79f21..f0598318c42 100644 --- a/src/controllers/accounts/AccountModel.cpp +++ b/src/controllers/accounts/AccountModel.cpp @@ -1,4 +1,4 @@ -#include "AccountModel.hpp" +#include "controllers/accounts/AccountModel.hpp" #include "controllers/accounts/Account.hpp" #include "util/StandardItemHelper.hpp" diff --git a/src/controllers/commands/Command.cpp b/src/controllers/commands/Command.cpp index e7113db9c21..5ac0feb5cbf 100644 --- a/src/controllers/commands/Command.cpp +++ b/src/controllers/commands/Command.cpp @@ -1,4 +1,4 @@ -#include "Command.hpp" +#include "controllers/commands/Command.hpp" namespace chatterino { diff --git a/src/controllers/highlights/HighlightBadge.cpp b/src/controllers/highlights/HighlightBadge.cpp index b4452a22b14..7958c8faaba 100644 --- a/src/controllers/highlights/HighlightBadge.cpp +++ b/src/controllers/highlights/HighlightBadge.cpp @@ -1,4 +1,4 @@ -#include "HighlightBadge.hpp" +#include "controllers/highlights/HighlightBadge.hpp" #include "messages/SharedMessageBuilder.hpp" #include "providers/twitch/TwitchBadge.hpp" diff --git a/src/controllers/notifications/NotificationModel.cpp b/src/controllers/notifications/NotificationModel.cpp index 5de8bc903e7..b68a50441fc 100644 --- a/src/controllers/notifications/NotificationModel.cpp +++ b/src/controllers/notifications/NotificationModel.cpp @@ -1,4 +1,4 @@ -#include "NotificationModel.hpp" +#include "controllers/notifications/NotificationModel.hpp" #include "Application.hpp" #include "singletons/Settings.hpp" diff --git a/src/controllers/pings/MutedChannelModel.cpp b/src/controllers/pings/MutedChannelModel.cpp index fc14735069d..df32f53d548 100644 --- a/src/controllers/pings/MutedChannelModel.cpp +++ b/src/controllers/pings/MutedChannelModel.cpp @@ -1,4 +1,4 @@ -#include "MutedChannelModel.hpp" +#include "controllers/pings/MutedChannelModel.hpp" #include "Application.hpp" #include "singletons/Settings.hpp" diff --git a/src/debug/Benchmark.cpp b/src/debug/Benchmark.cpp index 5c93ac8e62f..0aca0a61de3 100644 --- a/src/debug/Benchmark.cpp +++ b/src/debug/Benchmark.cpp @@ -1,4 +1,4 @@ -#include "Benchmark.hpp" +#include "debug/Benchmark.hpp" #include "common/QLogging.hpp" diff --git a/src/messages/Emote.cpp b/src/messages/Emote.cpp index 6281277fcc3..f19fc3027b5 100644 --- a/src/messages/Emote.cpp +++ b/src/messages/Emote.cpp @@ -1,4 +1,4 @@ -#include "Emote.hpp" +#include "messages/Emote.hpp" #include diff --git a/src/messages/MessageBuilder.cpp b/src/messages/MessageBuilder.cpp index 3e91d04dd67..ae78ab71120 100644 --- a/src/messages/MessageBuilder.cpp +++ b/src/messages/MessageBuilder.cpp @@ -1,4 +1,4 @@ -#include "MessageBuilder.hpp" +#include "messages/MessageBuilder.hpp" #include "Application.hpp" #include "common/IrcColors.hpp" diff --git a/src/messages/MessageColor.cpp b/src/messages/MessageColor.cpp index bd784197aaf..6e2f01c6737 100644 --- a/src/messages/MessageColor.cpp +++ b/src/messages/MessageColor.cpp @@ -1,4 +1,4 @@ -#include "MessageColor.hpp" +#include "messages/MessageColor.hpp" #include "singletons/Theme.hpp" diff --git a/src/messages/layouts/MessageLayout.cpp b/src/messages/layouts/MessageLayout.cpp index 10397d93c5f..e1a3d8a3c48 100644 --- a/src/messages/layouts/MessageLayout.cpp +++ b/src/messages/layouts/MessageLayout.cpp @@ -19,12 +19,6 @@ #include #include -#define MARGIN_LEFT (int)(8 * this->scale) -#define MARGIN_RIGHT (int)(8 * this->scale) -#define MARGIN_TOP (int)(4 * this->scale) -#define MARGIN_BOTTOM (int)(4 * this->scale) -#define COMPACT_EMOTES_OFFSET 6 - namespace chatterino { namespace { diff --git a/src/messages/layouts/MessageLayoutContainer.cpp b/src/messages/layouts/MessageLayoutContainer.cpp index 0f8aa498f99..0e84d325201 100644 --- a/src/messages/layouts/MessageLayoutContainer.cpp +++ b/src/messages/layouts/MessageLayoutContainer.cpp @@ -18,13 +18,17 @@ #include -#define COMPACT_EMOTES_OFFSET 4 -#define MAX_UNCOLLAPSED_LINES \ - (getSettings()->collpseMessagesMinLines.getValue()) - namespace { -constexpr const QMargins MARGIN{8, 4, 8, 4}; +using namespace chatterino; + +constexpr QMargins MARGIN{8, 4, 8, 4}; +constexpr int COMPACT_EMOTES_OFFSET = 4; + +int maxUncollapsedLines() +{ + return getSettings()->collpseMessagesMinLines.getValue(); +} } // namespace @@ -208,7 +212,7 @@ void MessageLayoutContainer::breakLine() this->lineStart_ = this->elements_.size(); // this->currentX = (int)(this->scale * 8); - if (this->canCollapse() && this->line_ + 1 >= MAX_UNCOLLAPSED_LINES) + if (this->canCollapse() && this->line_ + 1 >= maxUncollapsedLines()) { this->canAddMessages_ = false; return; @@ -568,8 +572,9 @@ int MessageLayoutContainer::remainingWidth() const { return (this->width_ - int(MARGIN.left() * this->scale_) - int(MARGIN.right() * this->scale_) - - (this->line_ + 1 == MAX_UNCOLLAPSED_LINES ? this->dotdotdotWidth_ - : 0)) - + (static_cast(this->line_ + 1) == maxUncollapsedLines() + ? this->dotdotdotWidth_ + : 0)) - this->currentX_; } diff --git a/src/messages/search/RegexPredicate.cpp b/src/messages/search/RegexPredicate.cpp index 02eeec6c849..733949afa9e 100644 --- a/src/messages/search/RegexPredicate.cpp +++ b/src/messages/search/RegexPredicate.cpp @@ -1,4 +1,4 @@ -#include "RegexPredicate.hpp" +#include "messages/search/RegexPredicate.hpp" #include "messages/Message.hpp" diff --git a/src/messages/search/RegexPredicate.hpp b/src/messages/search/RegexPredicate.hpp index 63e68cabd68..e1cc6e15e25 100644 --- a/src/messages/search/RegexPredicate.hpp +++ b/src/messages/search/RegexPredicate.hpp @@ -1,8 +1,8 @@ #pragma once #include "messages/search/MessagePredicate.hpp" -#include "QRegularExpression" +#include #include namespace chatterino { diff --git a/src/providers/IvrApi.cpp b/src/providers/IvrApi.cpp index 9991661b7b8..02d733b18bd 100644 --- a/src/providers/IvrApi.cpp +++ b/src/providers/IvrApi.cpp @@ -1,4 +1,4 @@ -#include "IvrApi.hpp" +#include "providers/IvrApi.hpp" #include "common/network/NetworkResult.hpp" #include "common/QLogging.hpp" diff --git a/src/providers/IvrApi.hpp b/src/providers/IvrApi.hpp index f8cc72b76a1..8084718971a 100644 --- a/src/providers/IvrApi.hpp +++ b/src/providers/IvrApi.hpp @@ -64,9 +64,7 @@ struct IvrEmote { : code(root.value("code").toString()) , id(root.value("id").toString()) , setId(root.value("setID").toString()) - , url(QString(TWITCH_EMOTE_TEMPLATE) - .replace("{id}", this->id) - .replace("{scale}", "3.0")) + , url(TWITCH_EMOTE_TEMPLATE.arg(this->id, u"3.0")) , emoteType(root.value("type").toString()) , imageType(root.value("assetType").toString()) { diff --git a/src/providers/irc/AbstractIrcServer.cpp b/src/providers/irc/AbstractIrcServer.cpp index 948a2962db6..599a8e0551c 100644 --- a/src/providers/irc/AbstractIrcServer.cpp +++ b/src/providers/irc/AbstractIrcServer.cpp @@ -1,4 +1,4 @@ -#include "AbstractIrcServer.hpp" +#include "providers/irc/AbstractIrcServer.hpp" #include "common/Channel.hpp" #include "common/QLogging.hpp" diff --git a/src/providers/irc/Irc2.cpp b/src/providers/irc/Irc2.cpp index c51a5f32340..48b3cd0a130 100644 --- a/src/providers/irc/Irc2.cpp +++ b/src/providers/irc/Irc2.cpp @@ -1,4 +1,4 @@ -#include "Irc2.hpp" +#include "providers/irc/Irc2.hpp" #include "Application.hpp" #include "common/Credentials.hpp" diff --git a/src/providers/irc/IrcAccount.cpp b/src/providers/irc/IrcAccount.cpp index 96486b7eac3..53030252154 100644 --- a/src/providers/irc/IrcAccount.cpp +++ b/src/providers/irc/IrcAccount.cpp @@ -1,4 +1,4 @@ -#include "IrcAccount.hpp" +#include "providers/irc/IrcAccount.hpp" // namespace chatterino { // diff --git a/src/providers/irc/IrcChannel2.cpp b/src/providers/irc/IrcChannel2.cpp index 2a2a3be93e7..76feb901b16 100644 --- a/src/providers/irc/IrcChannel2.cpp +++ b/src/providers/irc/IrcChannel2.cpp @@ -1,4 +1,4 @@ -#include "IrcChannel2.hpp" +#include "providers/irc/IrcChannel2.hpp" #include "common/Channel.hpp" #include "debug/AssertInGuiThread.hpp" diff --git a/src/providers/irc/IrcCommands.cpp b/src/providers/irc/IrcCommands.cpp index cd5f7d5e628..b1b2e8fc3c2 100644 --- a/src/providers/irc/IrcCommands.cpp +++ b/src/providers/irc/IrcCommands.cpp @@ -1,4 +1,4 @@ -#include "IrcCommands.hpp" +#include "providers/irc/IrcCommands.hpp" #include "messages/MessageBuilder.hpp" #include "providers/irc/IrcChannel2.hpp" diff --git a/src/providers/irc/IrcConnection2.cpp b/src/providers/irc/IrcConnection2.cpp index 19f327c24d0..3f9d57c97be 100644 --- a/src/providers/irc/IrcConnection2.cpp +++ b/src/providers/irc/IrcConnection2.cpp @@ -1,4 +1,4 @@ -#include "IrcConnection2.hpp" +#include "providers/irc/IrcConnection2.hpp" #include "common/QLogging.hpp" #include "common/Version.hpp" @@ -11,7 +11,7 @@ namespace chatterino { namespace { - const auto payload = QString("chatterino/" CHATTERINO_VERSION); + const auto payload = "chatterino/" + CHATTERINO_VERSION; } // namespace diff --git a/src/providers/irc/IrcServer.cpp b/src/providers/irc/IrcServer.cpp index a5148c9c763..c88109ad439 100644 --- a/src/providers/irc/IrcServer.cpp +++ b/src/providers/irc/IrcServer.cpp @@ -1,4 +1,4 @@ -#include "IrcServer.hpp" +#include "providers/irc/IrcServer.hpp" #include "Application.hpp" #include "common/QLogging.hpp" diff --git a/src/providers/twitch/ChannelPointReward.cpp b/src/providers/twitch/ChannelPointReward.cpp index 658d498ff68..8849b8b62a0 100644 --- a/src/providers/twitch/ChannelPointReward.cpp +++ b/src/providers/twitch/ChannelPointReward.cpp @@ -1,8 +1,18 @@ -#include "ChannelPointReward.hpp" +#include "providers/twitch/ChannelPointReward.hpp" -#include "common/QLogging.hpp" #include "messages/Image.hpp" +#include + +namespace { + +QString twitchChannelPointRewardUrl(const QString &file) +{ + return u"https://static-cdn.jtvnw.net/custom-reward-images/default-" % file; +} + +} // namespace + namespace chatterino { ChannelPointReward::ChannelPointReward(const QJsonObject &redemption) @@ -94,11 +104,10 @@ ChannelPointReward::ChannelPointReward(const QJsonObject &redemption) else { static const ImageSet defaultImage{ - Image::fromUrl({TWITCH_CHANNEL_POINT_REWARD_URL("1.png")}, 1, - baseSize), - Image::fromUrl({TWITCH_CHANNEL_POINT_REWARD_URL("2.png")}, 0.5, + Image::fromUrl({twitchChannelPointRewardUrl("1.png")}, 1, baseSize), + Image::fromUrl({twitchChannelPointRewardUrl("2.png")}, 0.5, baseSize * 2), - Image::fromUrl({TWITCH_CHANNEL_POINT_REWARD_URL("4.png")}, 0.25, + Image::fromUrl({twitchChannelPointRewardUrl("4.png")}, 0.25, baseSize * 4)}; this->image = defaultImage; } diff --git a/src/providers/twitch/ChannelPointReward.hpp b/src/providers/twitch/ChannelPointReward.hpp index d4f428e92f5..6fdd985b6e7 100644 --- a/src/providers/twitch/ChannelPointReward.hpp +++ b/src/providers/twitch/ChannelPointReward.hpp @@ -1,15 +1,11 @@ #pragma once -#include "common/Aliases.hpp" #include "messages/ImageSet.hpp" #include -#define TWITCH_CHANNEL_POINT_REWARD_URL(x) \ - QString("https://static-cdn.jtvnw.net/custom-reward-images/default-%1") \ - .arg(x) - namespace chatterino { + struct ChannelPointReward { ChannelPointReward(const QJsonObject &redemption); ChannelPointReward() = delete; diff --git a/src/providers/twitch/TwitchEmotes.cpp b/src/providers/twitch/TwitchEmotes.cpp index 4baa13f2027..b7ba9f54a00 100644 --- a/src/providers/twitch/TwitchEmotes.cpp +++ b/src/providers/twitch/TwitchEmotes.cpp @@ -11,9 +11,7 @@ using namespace chatterino; Url getEmoteLink(const EmoteId &id, const QString &emoteScale) { - return {QString(TWITCH_EMOTE_TEMPLATE) - .replace("{id}", id.string) - .replace("{scale}", emoteScale)}; + return {TWITCH_EMOTE_TEMPLATE.arg(id.string, emoteScale)}; } QSize getEmoteExpectedBaseSize(const EmoteId &id) diff --git a/src/providers/twitch/TwitchEmotes.hpp b/src/providers/twitch/TwitchEmotes.hpp index 17e50b11fcb..f7691131cbc 100644 --- a/src/providers/twitch/TwitchEmotes.hpp +++ b/src/providers/twitch/TwitchEmotes.hpp @@ -10,12 +10,15 @@ #include #include +namespace chatterino { + // NB: "default" can be replaced with "static" to always get a non-animated // variant -#define TWITCH_EMOTE_TEMPLATE \ - "https://static-cdn.jtvnw.net/emoticons/v2/{id}/default/dark/{scale}" +/// %1 <-> {id} +/// %2 <-> {scale} (1.0, 2.0, 3.0) +constexpr QStringView TWITCH_EMOTE_TEMPLATE = + u"https://static-cdn.jtvnw.net/emoticons/v2/%1/default/dark/%2"; -namespace chatterino { struct Emote; using EmotePtr = std::shared_ptr; diff --git a/src/providers/twitch/api/Helix.hpp b/src/providers/twitch/api/Helix.hpp index 346c9f3c375..aa95f1e32d1 100644 --- a/src/providers/twitch/api/Helix.hpp +++ b/src/providers/twitch/api/Helix.hpp @@ -276,9 +276,7 @@ struct HelixChannelEmote { , name(jsonObject.value("name").toString()) , type(jsonObject.value("emote_type").toString()) , setId(jsonObject.value("emote_set_id").toString()) - , url(QString(TWITCH_EMOTE_TEMPLATE) - .replace("{id}", this->emoteId) - .replace("{scale}", "3.0")) + , url(TWITCH_EMOTE_TEMPLATE.arg(this->emoteId, u"3.0")) { } }; diff --git a/src/singletons/ImageUploader.cpp b/src/singletons/ImageUploader.cpp index b5fe9c43a95..ebf39a958ba 100644 --- a/src/singletons/ImageUploader.cpp +++ b/src/singletons/ImageUploader.cpp @@ -24,11 +24,11 @@ #include -#define UPLOAD_DELAY 2000 -// Delay between uploads in milliseconds - namespace { +// Delay between uploads in milliseconds +constexpr int UPLOAD_DELAY = 2000; + std::optional convertToPng(const QImage &image) { QByteArray imageData; diff --git a/src/singletons/Theme.cpp b/src/singletons/Theme.cpp index bbd29abf948..8f1045e0ca2 100644 --- a/src/singletons/Theme.cpp +++ b/src/singletons/Theme.cpp @@ -1,4 +1,3 @@ - #include "singletons/Theme.hpp" #include "Application.hpp" diff --git a/src/singletons/Toasts.cpp b/src/singletons/Toasts.cpp index 26a82543a43..7e21dc2c315 100644 --- a/src/singletons/Toasts.cpp +++ b/src/singletons/Toasts.cpp @@ -1,4 +1,4 @@ -#include "Toasts.hpp" +#include "singletons/Toasts.hpp" #include "Application.hpp" #include "common/Common.hpp" @@ -83,19 +83,17 @@ bool Toasts::isEnabled() QString Toasts::findStringFromReaction(const ToastReaction &reaction) { - // The constants are macros right now, but we want to avoid ASCII casts, - // so we're concatenating them with a QString literal - effectively making them part of it. switch (reaction) { case ToastReaction::OpenInBrowser: - return OPEN_IN_BROWSER u""_s; + return OPEN_IN_BROWSER; case ToastReaction::OpenInPlayer: - return OPEN_PLAYER_IN_BROWSER u""_s; + return OPEN_PLAYER_IN_BROWSER; case ToastReaction::OpenInStreamlink: - return OPEN_IN_STREAMLINK u""_s; + return OPEN_IN_STREAMLINK; case ToastReaction::DontOpen: default: - return DONT_OPEN u""_s; + return DONT_OPEN; } } diff --git a/src/singletons/Updates.cpp b/src/singletons/Updates.cpp index 0a7351491b1..35b625659fe 100644 --- a/src/singletons/Updates.cpp +++ b/src/singletons/Updates.cpp @@ -1,12 +1,13 @@ -#include "Updates.hpp" +#include "singletons/Updates.hpp" +#include "common/Literals.hpp" #include "common/Modes.hpp" #include "common/network/NetworkRequest.hpp" #include "common/network/NetworkResult.hpp" #include "common/QLogging.hpp" #include "common/Version.hpp" -#include "Settings.hpp" #include "singletons/Paths.hpp" +#include "singletons/Settings.hpp" #include "util/CombinePath.hpp" #include "util/PostToThread.hpp" @@ -15,16 +16,34 @@ #include #include #include +#include #include -namespace chatterino { namespace { - QString currentBranch() - { - return getSettings()->betaUpdates ? "beta" : "stable"; - } + +using namespace chatterino; +using namespace literals; + +QString currentBranch() +{ + return getSettings()->betaUpdates ? "beta" : "stable"; +} + +#if defined(Q_OS_WIN) +const QString CHATTERINO_OS = u"win"_s; +#elif defined(Q_OS_MACOS) +const QString CHATTERINO_OS = u"macos"_s; +#elif defined(Q_OS_LINUX) +const QString CHATTERINO_OS = u"linux"_s; +#elif defined(Q_OS_FREEBSD) +const QString CHATTERINO_OS = u"freebsd"_s; +#else +const QString CHATTERINO_OS = u"unknown"_s; +#endif +; } // namespace +namespace chatterino { Updates::Updates(const Paths &paths_) : paths(paths_) @@ -262,9 +281,8 @@ void Updates::checkForUpdates() return; } - QString url = - "https://notitia.chatterino.com/version/chatterino/" CHATTERINO_OS "/" + - currentBranch(); + QString url = "https://notitia.chatterino.com/version/chatterino/" % + CHATTERINO_OS % "/" % currentBranch(); NetworkRequest(url) .timeout(60000) diff --git a/src/util/DisplayBadge.cpp b/src/util/DisplayBadge.cpp index cf56634fa95..73363333987 100644 --- a/src/util/DisplayBadge.cpp +++ b/src/util/DisplayBadge.cpp @@ -1,4 +1,4 @@ -#include "DisplayBadge.hpp" +#include "util/DisplayBadge.hpp" namespace chatterino { DisplayBadge::DisplayBadge(QString displayName, QString badgeName) diff --git a/src/util/FunctionEventFilter.cpp b/src/util/FunctionEventFilter.cpp index 5071e6e9b87..33a41a2c6fd 100644 --- a/src/util/FunctionEventFilter.cpp +++ b/src/util/FunctionEventFilter.cpp @@ -1,4 +1,4 @@ -#include "FunctionEventFilter.hpp" +#include "util/FunctionEventFilter.hpp" namespace chatterino { diff --git a/src/util/FuzzyConvert.cpp b/src/util/FuzzyConvert.cpp index 2d62e5648bc..0870b711a1b 100644 --- a/src/util/FuzzyConvert.cpp +++ b/src/util/FuzzyConvert.cpp @@ -1,4 +1,4 @@ -#include "FuzzyConvert.hpp" +#include "util/FuzzyConvert.hpp" #include diff --git a/src/util/Helpers.cpp b/src/util/Helpers.cpp index 836214d05a9..88ba17fe1c9 100644 --- a/src/util/Helpers.cpp +++ b/src/util/Helpers.cpp @@ -1,4 +1,4 @@ -#include "Helpers.hpp" +#include "util/Helpers.hpp" #include "providers/twitch/TwitchCommon.hpp" diff --git a/src/util/RatelimitBucket.cpp b/src/util/RatelimitBucket.cpp index c33f3a30a18..75bf8e344ef 100644 --- a/src/util/RatelimitBucket.cpp +++ b/src/util/RatelimitBucket.cpp @@ -1,4 +1,4 @@ -#include "RatelimitBucket.hpp" +#include "util/RatelimitBucket.hpp" #include diff --git a/src/util/SampleData.cpp b/src/util/SampleData.cpp index 0b976f1900c..7b12cd31cba 100644 --- a/src/util/SampleData.cpp +++ b/src/util/SampleData.cpp @@ -1,4 +1,4 @@ -#include "SampleData.hpp" +#include "util/SampleData.hpp" namespace chatterino { diff --git a/src/widgets/AccountSwitchWidget.cpp b/src/widgets/AccountSwitchWidget.cpp index 19dbc678b50..01fc161bc39 100644 --- a/src/widgets/AccountSwitchWidget.cpp +++ b/src/widgets/AccountSwitchWidget.cpp @@ -1,4 +1,4 @@ -#include "AccountSwitchWidget.hpp" +#include "widgets/AccountSwitchWidget.hpp" #include "Application.hpp" #include "common/Common.hpp" diff --git a/src/widgets/TooltipWidget.cpp b/src/widgets/TooltipWidget.cpp index 14328e91f54..64b3bec8218 100644 --- a/src/widgets/TooltipWidget.cpp +++ b/src/widgets/TooltipWidget.cpp @@ -7,11 +7,11 @@ #include -// number of columns in grid mode -#define GRID_NUM_COLS 3 - namespace { +// number of columns in grid mode +constexpr int GRID_NUM_COLS = 3; + #ifdef Q_OS_WIN template inline constexpr T *tooltipParentFor(T * /*desiredParent*/) diff --git a/src/widgets/Window.cpp b/src/widgets/Window.cpp index ee836d1857e..4374881fdb2 100644 --- a/src/widgets/Window.cpp +++ b/src/widgets/Window.cpp @@ -737,19 +737,19 @@ void Window::addMenuBar() // Help->Chatterino Wiki item QAction *helpWiki = helpMenu->addAction(QString("Chatterino Wiki")); connect(helpWiki, &QAction::triggered, this, []() { - QDesktopServices::openUrl(QUrl(LINK_CHATTERINO_WIKI)); + QDesktopServices::openUrl(QUrl(LINK_CHATTERINO_WIKI.toString())); }); // Help->Chatterino Github QAction *helpGithub = helpMenu->addAction(QString("Chatterino GitHub")); connect(helpGithub, &QAction::triggered, this, []() { - QDesktopServices::openUrl(QUrl(LINK_CHATTERINO_SOURCE)); + QDesktopServices::openUrl(QUrl(LINK_CHATTERINO_SOURCE.toString())); }); // Help->Chatterino Discord QAction *helpDiscord = helpMenu->addAction(QString("Chatterino Discord")); connect(helpDiscord, &QAction::triggered, this, []() { - QDesktopServices::openUrl(QUrl(LINK_CHATTERINO_DISCORD)); + QDesktopServices::openUrl(QUrl(LINK_CHATTERINO_DISCORD.toString())); }); } diff --git a/src/widgets/dialogs/BadgePickerDialog.cpp b/src/widgets/dialogs/BadgePickerDialog.cpp index f45dbbbf158..e90c66b5155 100644 --- a/src/widgets/dialogs/BadgePickerDialog.cpp +++ b/src/widgets/dialogs/BadgePickerDialog.cpp @@ -1,4 +1,4 @@ -#include "BadgePickerDialog.hpp" +#include "widgets/dialogs/BadgePickerDialog.hpp" #include "Application.hpp" #include "providers/twitch/TwitchBadges.hpp" diff --git a/src/widgets/dialogs/EmotePopup.cpp b/src/widgets/dialogs/EmotePopup.cpp index eb789249a2a..8936549e6eb 100644 --- a/src/widgets/dialogs/EmotePopup.cpp +++ b/src/widgets/dialogs/EmotePopup.cpp @@ -1,4 +1,4 @@ -#include "EmotePopup.hpp" +#include "widgets/dialogs/EmotePopup.hpp" #include "Application.hpp" #include "common/QLogging.hpp" diff --git a/src/widgets/dialogs/IrcConnectionEditor.cpp b/src/widgets/dialogs/IrcConnectionEditor.cpp index 63e6bfa2d19..8ebfd8f9552 100644 --- a/src/widgets/dialogs/IrcConnectionEditor.cpp +++ b/src/widgets/dialogs/IrcConnectionEditor.cpp @@ -1,4 +1,4 @@ -#include "IrcConnectionEditor.hpp" +#include "widgets/dialogs/IrcConnectionEditor.hpp" #include "ui_IrcConnectionEditor.h" diff --git a/src/widgets/dialogs/QualityPopup.cpp b/src/widgets/dialogs/QualityPopup.cpp index e08d25208b5..9feec4f3370 100644 --- a/src/widgets/dialogs/QualityPopup.cpp +++ b/src/widgets/dialogs/QualityPopup.cpp @@ -1,4 +1,4 @@ -#include "QualityPopup.hpp" +#include "widgets/dialogs/QualityPopup.hpp" #include "Application.hpp" #include "common/QLogging.hpp" diff --git a/src/widgets/dialogs/SelectChannelDialog.cpp b/src/widgets/dialogs/SelectChannelDialog.cpp index 1eb33c17276..728caac8b3f 100644 --- a/src/widgets/dialogs/SelectChannelDialog.cpp +++ b/src/widgets/dialogs/SelectChannelDialog.cpp @@ -1,4 +1,4 @@ -#include "SelectChannelDialog.hpp" +#include "widgets/dialogs/SelectChannelDialog.hpp" #include "Application.hpp" #include "common/QLogging.hpp" @@ -25,11 +25,11 @@ #include #include -#define TAB_TWITCH 0 -#define TAB_IRC 1 - namespace chatterino { +constexpr int TAB_TWITCH = 0; +constexpr int TAB_IRC = 1; + SelectChannelDialog::SelectChannelDialog(QWidget *parent) : BaseWindow( { diff --git a/src/widgets/dialogs/SelectChannelFiltersDialog.cpp b/src/widgets/dialogs/SelectChannelFiltersDialog.cpp index 78c597c02ba..e0acb8523f7 100644 --- a/src/widgets/dialogs/SelectChannelFiltersDialog.cpp +++ b/src/widgets/dialogs/SelectChannelFiltersDialog.cpp @@ -1,4 +1,4 @@ -#include "SelectChannelFiltersDialog.hpp" +#include "widgets/dialogs/SelectChannelFiltersDialog.hpp" #include "controllers/filters/FilterRecord.hpp" #include "singletons/Settings.hpp" diff --git a/src/widgets/dialogs/UserInfoPopup.cpp b/src/widgets/dialogs/UserInfoPopup.cpp index 89d43da3798..a25cf7633a2 100644 --- a/src/widgets/dialogs/UserInfoPopup.cpp +++ b/src/widgets/dialogs/UserInfoPopup.cpp @@ -38,101 +38,104 @@ #include #include #include +#include -const QString TEXT_FOLLOWERS("Followers: %1"); -const QString TEXT_CREATED("Created: %1"); -const QString TEXT_TITLE("%1's Usercard - #%2"); -#define TEXT_USER_ID "ID: " -#define TEXT_UNAVAILABLE "(not available)" - -namespace chatterino { namespace { - Label *addCopyableLabel(LayoutCreator box, const char *tooltip, - Button **copyButton = nullptr) + +constexpr QStringView TEXT_FOLLOWERS = u"Followers: %1"; +constexpr QStringView TEXT_CREATED = u"Created: %1"; +constexpr QStringView TEXT_TITLE = u"%1's Usercard - #%2"; +constexpr QStringView TEXT_USER_ID = u"ID: "; +constexpr QStringView TEXT_UNAVAILABLE = u"(not available)"; + +using namespace chatterino; + +Label *addCopyableLabel(LayoutCreator box, const char *tooltip, + Button **copyButton = nullptr) +{ + auto label = box.emplace