From 7b858d20f2521f349b5472bcf8f3fe1f235310de Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 5 Jul 2024 13:24:29 +0300 Subject: [PATCH] Add BaseTheme.h. --- CMakeLists.txt | 2 ++ td/telegram/BaseTheme.cpp | 45 ++++++++++++++++++++++++++++++++++++ td/telegram/BaseTheme.h | 22 ++++++++++++++++++ td/telegram/ThemeManager.cpp | 35 ---------------------------- td/telegram/ThemeManager.h | 8 +------ 5 files changed, 70 insertions(+), 42 deletions(-) create mode 100644 td/telegram/BaseTheme.cpp create mode 100644 td/telegram/BaseTheme.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 419940f9e..586ca8c30 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -330,6 +330,7 @@ set(TDLIB_SOURCE_PART1 td/telegram/BackgroundInfo.cpp td/telegram/BackgroundManager.cpp td/telegram/BackgroundType.cpp + td/telegram/BaseTheme.cpp td/telegram/Birthdate.cpp td/telegram/BoostManager.cpp td/telegram/BotCommand.cpp @@ -606,6 +607,7 @@ set(TDLIB_SOURCE_PART2 td/telegram/BackgroundInfo.h td/telegram/BackgroundManager.h td/telegram/BackgroundType.h + td/telegram/BaseTheme.h td/telegram/Birthdate.h td/telegram/BlockListId.h td/telegram/BoostManager.h diff --git a/td/telegram/BaseTheme.cpp b/td/telegram/BaseTheme.cpp new file mode 100644 index 000000000..ee4844f9b --- /dev/null +++ b/td/telegram/BaseTheme.cpp @@ -0,0 +1,45 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2024 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +#include "td/telegram/BaseTheme.h" + +namespace td { + +bool is_dark_base_theme(BaseTheme base_theme) { + switch (base_theme) { + case BaseTheme::Classic: + case BaseTheme::Day: + case BaseTheme::Arctic: + return false; + case BaseTheme::Night: + case BaseTheme::Tinted: + return true; + default: + UNREACHABLE(); + return false; + } +} + +BaseTheme get_base_theme(const telegram_api::object_ptr &base_theme) { + CHECK(base_theme != nullptr); + switch (base_theme->get_id()) { + case telegram_api::baseThemeClassic::ID: + return BaseTheme::Classic; + case telegram_api::baseThemeDay::ID: + return BaseTheme::Day; + case telegram_api::baseThemeNight::ID: + return BaseTheme::Night; + case telegram_api::baseThemeTinted::ID: + return BaseTheme::Tinted; + case telegram_api::baseThemeArctic::ID: + return BaseTheme::Arctic; + default: + UNREACHABLE(); + return BaseTheme::Classic; + } +} + +} // namespace td diff --git a/td/telegram/BaseTheme.h b/td/telegram/BaseTheme.h new file mode 100644 index 000000000..3063d98da --- /dev/null +++ b/td/telegram/BaseTheme.h @@ -0,0 +1,22 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2024 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +#pragma once + +#include "td/telegram/telegram_api.h" + +#include "td/utils/common.h" + +namespace td { + +// append-only +enum class BaseTheme : int32 { Classic, Day, Night, Tinted, Arctic }; + +bool is_dark_base_theme(BaseTheme base_theme); + +BaseTheme get_base_theme(const telegram_api::object_ptr &base_theme); + +} // namespace td diff --git a/td/telegram/ThemeManager.cpp b/td/telegram/ThemeManager.cpp index 3456c6b5a..6366de2fa 100644 --- a/td/telegram/ThemeManager.cpp +++ b/td/telegram/ThemeManager.cpp @@ -495,21 +495,6 @@ ThemeManager::DialogBoostAvailableCounts ThemeManager::get_dialog_boost_availabl return result; } -bool ThemeManager::is_dark_base_theme(BaseTheme base_theme) { - switch (base_theme) { - case BaseTheme::Classic: - case BaseTheme::Day: - case BaseTheme::Arctic: - return false; - case BaseTheme::Night: - case BaseTheme::Tinted: - return true; - default: - UNREACHABLE(); - return false; - } -} - void ThemeManager::on_update_theme(telegram_api::object_ptr &&theme, Promise &&promise) { CHECK(theme != nullptr); bool is_changed = false; @@ -1053,26 +1038,6 @@ void ThemeManager::on_get_profile_accent_colors( } } -ThemeManager::BaseTheme ThemeManager::get_base_theme( - const telegram_api::object_ptr &base_theme) { - CHECK(base_theme != nullptr); - switch (base_theme->get_id()) { - case telegram_api::baseThemeClassic::ID: - return BaseTheme::Classic; - case telegram_api::baseThemeDay::ID: - return BaseTheme::Day; - case telegram_api::baseThemeNight::ID: - return BaseTheme::Night; - case telegram_api::baseThemeTinted::ID: - return BaseTheme::Tinted; - case telegram_api::baseThemeArctic::ID: - return BaseTheme::Arctic; - default: - UNREACHABLE(); - return BaseTheme::Classic; - } -} - ThemeManager::ThemeSettings ThemeManager::get_chat_theme_settings( telegram_api::object_ptr settings) { ThemeSettings result; diff --git a/td/telegram/ThemeManager.h b/td/telegram/ThemeManager.h index a6f23699a..9c4641a70 100644 --- a/td/telegram/ThemeManager.h +++ b/td/telegram/ThemeManager.h @@ -8,6 +8,7 @@ #include "td/telegram/AccentColorId.h" #include "td/telegram/BackgroundInfo.h" +#include "td/telegram/BaseTheme.h" #include "td/telegram/td_api.h" #include "td/telegram/telegram_api.h" @@ -54,9 +55,6 @@ class ThemeManager final : public Actor { void get_current_state(vector> &updates) const; private: - // append-only - enum class BaseTheme : int32 { Classic, Day, Night, Tinted, Arctic }; - struct ThemeSettings { int32 accent_color = 0; int32 message_accent_color = 0; @@ -164,8 +162,6 @@ class ThemeManager final : public Actor { void load_profile_accent_colors(); - static bool is_dark_base_theme(BaseTheme base_theme); - void on_get_chat_themes(Result> result); bool on_update_accent_colors(FlatHashMap, AccentColorIdHash> light_colors, @@ -205,8 +201,6 @@ class ThemeManager final : public Actor { void send_update_chat_themes() const; - static BaseTheme get_base_theme(const telegram_api::object_ptr &base_theme); - ThemeSettings get_chat_theme_settings(telegram_api::object_ptr settings); td_api::object_ptr get_update_accent_colors_object() const;