From d1a913450a08d73d3a2e3f9d3d85da51432d2aac Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 14 Mar 2022 10:20:36 +0400 Subject: [PATCH] Allow using mono icons in experimental settings. --- .../SourceFiles/settings/settings_common.cpp | 21 ++++++++++++++++++- .../SourceFiles/settings/settings_common.h | 2 ++ .../settings/settings_experimental.cpp | 2 ++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/settings/settings_common.cpp b/Telegram/SourceFiles/settings/settings_common.cpp index 7904a9797..4aba174cc 100644 --- a/Telegram/SourceFiles/settings/settings_common.cpp +++ b/Telegram/SourceFiles/settings/settings_common.cpp @@ -31,14 +31,29 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "mainwindow.h" #include "main/main_session.h" #include "main/main_domain.h" +#include "base/options.h" #include "styles/style_layers.h" #include "styles/style_settings.h" #include "styles/style_menu_icons.h" namespace Settings { +namespace { + +base::options::toggle OptionMonoSettingsIcons({ + .id = kOptionMonoSettingsIcons, + .name = "Mono settings and menu icons", + .description = "Use a single color for settings and main menu icons.", +}); + +} // namespace + +const char kOptionMonoSettingsIcons[] = "mono-settings-icons"; Icon::Icon(IconDescriptor descriptor) : _icon(descriptor.icon) { const auto background = [&] { + if (OptionMonoSettingsIcons.value()) { + return &st::transparent; + } if (descriptor.color > 0) { const auto list = std::array{ &st::settingsIconBg1, @@ -72,7 +87,11 @@ void Icon::paint(QPainter &p, int x, int y) const { if (_background) { _background->paint(p, { { x, y }, _icon->size() }); } - _icon->paint(p, { x, y }, 2 * x + _icon->width()); + if (OptionMonoSettingsIcons.value()) { + _icon->paint(p, { x, y }, 2 * x + _icon->width(), st::menuIconFg->c); + } else { + _icon->paint(p, { x, y }, 2 * x + _icon->width()); + } } int Icon::width() const { diff --git a/Telegram/SourceFiles/settings/settings_common.h b/Telegram/SourceFiles/settings/settings_common.h index 786f3f038..03108a47b 100644 --- a/Telegram/SourceFiles/settings/settings_common.h +++ b/Telegram/SourceFiles/settings/settings_common.h @@ -33,6 +33,8 @@ struct SettingsButton; namespace Settings { +extern const char kOptionMonoSettingsIcons[]; + enum class Type { Main, Information, diff --git a/Telegram/SourceFiles/settings/settings_experimental.cpp b/Telegram/SourceFiles/settings/settings_experimental.cpp index e8b5bc3f4..b07e549f4 100644 --- a/Telegram/SourceFiles/settings/settings_experimental.cpp +++ b/Telegram/SourceFiles/settings/settings_experimental.cpp @@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "window/window_peer_menu.h" #include "window/window_session_controller.h" #include "window/window_controller.h" +#include "settings/settings_common.h" #include "styles/style_settings.h" #include "styles/style_layers.h" @@ -133,6 +134,7 @@ void SetupExperimental( addToggle(Window::kOptionViewProfileInChatsListContextMenu); addToggle(Ui::GL::kOptionAllowLinuxNvidiaOpenGL); addToggle(Media::Player::kOptionDisableAutoplayNext); + addToggle(Settings::kOptionMonoSettingsIcons); } } // namespace