From efea01e03ea92860e57200ddc018f5ff01dc3b4f Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 1 May 2026 14:05:18 +0700 Subject: [PATCH] Improve send sticker from set box logic. --- .../info/settings/info_settings_widget.cpp | 7 +-- Telegram/SourceFiles/menu/menu_send.h | 40 +------------- Telegram/SourceFiles/menu/menu_send_details.h | 53 +++++++++++++++++++ .../business/settings_shortcut_messages.cpp | 6 --- .../SourceFiles/settings/settings_common.cpp | 5 ++ .../SourceFiles/settings/settings_common.h | 9 +--- Telegram/cmake/td_ui.cmake | 1 + 7 files changed, 62 insertions(+), 59 deletions(-) create mode 100644 Telegram/SourceFiles/menu/menu_send_details.h diff --git a/Telegram/SourceFiles/info/settings/info_settings_widget.cpp b/Telegram/SourceFiles/info/settings/info_settings_widget.cpp index 0cb5aa3161..fc5689aede 100644 --- a/Telegram/SourceFiles/info/settings/info_settings_widget.cpp +++ b/Telegram/SourceFiles/info/settings/info_settings_widget.cpp @@ -189,12 +189,7 @@ void Widget::saveChanges(FnMut done) { } SendMenu::Details Widget::sendMenuDetails() const { - if (const auto provider - = dynamic_cast( - _inner.get())) { - return provider->sendMenuDetails(); - } - return ContentWidget::sendMenuDetails(); + return _inner->sendMenuDetails(); } bool Widget::processChosenSticker(ChatHelpers::FileChosen &&chosen) { diff --git a/Telegram/SourceFiles/menu/menu_send.h b/Telegram/SourceFiles/menu/menu_send.h index d748a57523..81d107fe37 100644 --- a/Telegram/SourceFiles/menu/menu_send.h +++ b/Telegram/SourceFiles/menu/menu_send.h @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #pragma once #include "api/api_common.h" +#include "menu/menu_send_details.h" namespace style { struct ComposeIcons; @@ -30,45 +31,6 @@ class Thread; namespace SendMenu { -enum class Type : uchar { - Disabled, - SilentOnly, - Scheduled, - ScheduledToUser, // For "Send when online". - Reminder, - EditCommentPrice, -}; - -enum class SpoilerState : uchar { - None, - Enabled, - Possible, -}; - -enum class CaptionState : uchar { - None, - Below, - Above, -}; - -enum class PhotoQualityState : uchar { - None, - Standard, - High, -}; - -struct Details { - Type type = Type::Disabled; - SpoilerState spoiler = SpoilerState::None; - CaptionState caption = CaptionState::None; - PhotoQualityState photoQuality = PhotoQualityState::None; - TextWithTags commentPreview; - QString commentStreamerName; - std::optional price; - std::optional commentPriceMin; - bool effectAllowed = false; -}; - enum class FillMenuResult : uchar { Prepared, Skipped, diff --git a/Telegram/SourceFiles/menu/menu_send_details.h b/Telegram/SourceFiles/menu/menu_send_details.h new file mode 100644 index 0000000000..e30c7c2b05 --- /dev/null +++ b/Telegram/SourceFiles/menu/menu_send_details.h @@ -0,0 +1,53 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#pragma once + +#include "ui/text/text_entity.h" + +namespace SendMenu { + +enum class Type : uchar { + Disabled, + SilentOnly, + Scheduled, + ScheduledToUser, // For "Send when online". + Reminder, + EditCommentPrice, +}; + +enum class SpoilerState : uchar { + None, + Enabled, + Possible, +}; + +enum class CaptionState : uchar { + None, + Below, + Above, +}; + +enum class PhotoQualityState : uchar { + None, + Standard, + High, +}; + +struct Details { + Type type = Type::Disabled; + SpoilerState spoiler = SpoilerState::None; + CaptionState caption = CaptionState::None; + PhotoQualityState photoQuality = PhotoQualityState::None; + TextWithTags commentPreview; + QString commentStreamerName; + std::optional price; + std::optional commentPriceMin; + bool effectAllowed = false; +}; + +} // namespace SendMenu diff --git a/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp b/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp index 5e1ba123b0..2c5aef1083 100644 --- a/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp +++ b/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp @@ -74,7 +74,6 @@ using namespace HistoryView; class ShortcutMessages : public AbstractSection - , public SendMenuDetailsProvider , private WindowListDelegate , private CornerButtonsDelegate { public: @@ -94,7 +93,6 @@ public: [[nodiscard]] rpl::producer title() override; [[nodiscard]] rpl::producer<> sectionShowBack() override; - [[nodiscard]] SendMenu::Details sendMenuDetails() const override; bool processChosenSticker(ChatHelpers::FileChosen &&chosen) override; void setInnerFocus() override; @@ -1450,10 +1448,6 @@ void ShortcutMessages::finishSending() { showAtEnd(); } -SendMenu::Details ShortcutMessages::sendMenuDetails() const { - return {}; -} - bool ShortcutMessages::processChosenSticker(ChatHelpers::FileChosen &&chosen) { if (!_composeControls) { return false; diff --git a/Telegram/SourceFiles/settings/settings_common.cpp b/Telegram/SourceFiles/settings/settings_common.cpp index e1855d81b1..866acc33f1 100644 --- a/Telegram/SourceFiles/settings/settings_common.cpp +++ b/Telegram/SourceFiles/settings/settings_common.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "base/timer.h" #include "lottie/lottie_icon.h" +#include "menu/menu_send_details.h" #include "ui/effects/animations.h" #include "ui/effects/premium_graphics.h" #include "ui/effects/premium_top_bar.h" @@ -296,6 +297,10 @@ AbstractSection::AbstractSection( : _controller(controller) { } +SendMenu::Details AbstractSection::sendMenuDetails() const { + return {}; +} + bool AbstractSection::processChosenSticker(ChatHelpers::FileChosen &&) { return false; } diff --git a/Telegram/SourceFiles/settings/settings_common.h b/Telegram/SourceFiles/settings/settings_common.h index 9a62768575..3999fe9343 100644 --- a/Telegram/SourceFiles/settings/settings_common.h +++ b/Telegram/SourceFiles/settings/settings_common.h @@ -134,6 +134,7 @@ public: virtual void sectionSaveChanges(FnMut done) { done(); } + virtual SendMenu::Details sendMenuDetails() const; virtual bool processChosenSticker(ChatHelpers::FileChosen &&chosen); virtual void showFinished() { _showFinished.fire({}); @@ -204,14 +205,6 @@ private: }; -class SendMenuDetailsProvider { -public: - [[nodiscard]] virtual SendMenu::Details sendMenuDetails() const = 0; - - virtual ~SendMenuDetailsProvider() = default; - -}; - enum class IconType { Rounded, Round, diff --git a/Telegram/cmake/td_ui.cmake b/Telegram/cmake/td_ui.cmake index 6fdf4ec5f1..4bbff50520 100644 --- a/Telegram/cmake/td_ui.cmake +++ b/Telegram/cmake/td_ui.cmake @@ -231,6 +231,7 @@ PRIVATE menu/menu_check_item.h menu/menu_item_rate_transcribe.cpp menu/menu_item_rate_transcribe.h + menu/menu_send_details.h menu/menu_timecode_action.cpp menu/menu_timecode_action.h menu/menu_ttl.cpp