diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index ee60cd5dc..23f8dac4e 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -643,6 +643,7 @@ PRIVATE history/view/history_view_empty_list_bubble.h history/view/history_view_group_call_bar.cpp history/view/history_view_group_call_bar.h + history/view/history_view_item_preview.h history/view/history_view_list_widget.cpp history/view/history_view_list_widget.h history/view/history_view_message.cpp diff --git a/Telegram/SourceFiles/data/data_media_types.cpp b/Telegram/SourceFiles/data/data_media_types.cpp index 4be34f0f0..0c8120498 100644 --- a/Telegram/SourceFiles/data/data_media_types.cpp +++ b/Telegram/SourceFiles/data/data_media_types.cpp @@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/history_item.h" #include "history/history_location_manager.h" #include "history/view/history_view_element.h" +#include "history/view/history_view_item_preview.h" #include "history/view/media/history_view_photo.h" #include "history/view/media/history_view_sticker.h" #include "history/view/media/history_view_gif.h" diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp index f7f024af7..01f38a6c6 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_layout.cpp @@ -22,6 +22,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "support/support_helper.h" #include "main/main_session.h" #include "history/view/history_view_send_action.h" +#include "history/view/history_view_item_preview.h" #include "history/history_item_components.h" #include "history/history_item.h" #include "history/history.h" diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp index c451f51b5..06c9998c4 100644 --- a/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp +++ b/Telegram/SourceFiles/dialogs/ui/dialogs_message_view.cpp @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/history.h" #include "history/history_item.h" +#include "history/view/history_view_item_preview.h" #include "main/main_session.h" #include "ui/text/text_options.h" #include "ui/image/image.h" diff --git a/Telegram/SourceFiles/history/history.cpp b/Telegram/SourceFiles/history/history.cpp index 3651a796d..6c9dae37b 100644 --- a/Telegram/SourceFiles/history/history.cpp +++ b/Telegram/SourceFiles/history/history.cpp @@ -8,6 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/history.h" #include "history/view/history_view_element.h" +#include "history/view/history_view_item_preview.h" #include "history/history_message.h" #include "history/history_service.h" #include "history/history_item_components.h" diff --git a/Telegram/SourceFiles/history/history_item.cpp b/Telegram/SourceFiles/history/history_item.cpp index c4a31b439..a3675ec9b 100644 --- a/Telegram/SourceFiles/history/history_item.cpp +++ b/Telegram/SourceFiles/history/history_item.cpp @@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "mainwidget.h" #include "history/view/history_view_element.h" +#include "history/view/history_view_item_preview.h" #include "history/view/history_view_service_message.h" #include "history/history_item_components.h" #include "history/view/media/history_view_media_grouped.h" @@ -1077,6 +1078,13 @@ ItemPreview HistoryItem::toPreview(ToPreviewOptions options) const { return Dialogs::Ui::PreviewWithSender(std::move(result), fromWrapped); } +QString HistoryItem::inReplyText() const { + return toPreview({ + .hideSender = true, + .generateImages = false, + }).text; +} + Ui::Text::IsolatedEmoji HistoryItem::isolatedEmoji() const { return Ui::Text::IsolatedEmoji(); } diff --git a/Telegram/SourceFiles/history/history_item.h b/Telegram/SourceFiles/history/history_item.h index 345f9eada..e49740381 100644 --- a/Telegram/SourceFiles/history/history_item.h +++ b/Telegram/SourceFiles/history/history_item.h @@ -51,38 +51,12 @@ class SessionController; } // namespace Window namespace HistoryView { - struct TextState; struct StateRequest; enum class CursorState : char; enum class PointState : char; enum class Context : char; class ElementDelegate; - -struct ItemPreviewImage { - QImage data; - uint64 cacheKey = 0; - - explicit operator bool() const { - return !data.isNull(); - } -}; - -struct ItemPreview { - QString text; - std::vector images; - int imagesInTextPosition = 0; - std::any loadingContext; -}; - -struct ToPreviewOptions { - const std::vector *existing = nullptr; - bool hideSender = false; - bool hideCaption = false; - bool generateImages = true; - bool ignoreGroup = false; -}; - } // namespace HistoryView struct HiddenSenderInfo; @@ -334,12 +308,7 @@ public: // Example: "[link1-start]You:[link1-end] [link1-start]Photo,[link1-end] caption text" [[nodiscard]] virtual ItemPreview toPreview( ToPreviewOptions options) const; - [[nodiscard]] virtual QString inReplyText() const { - return toPreview({ - .hideSender = true, - .generateImages = false, - }).text; - } + [[nodiscard]] virtual QString inReplyText() const; [[nodiscard]] virtual Ui::Text::IsolatedEmoji isolatedEmoji() const; [[nodiscard]] virtual TextWithEntities originalText() const { return TextWithEntities(); diff --git a/Telegram/SourceFiles/history/history_service.cpp b/Telegram/SourceFiles/history/history_service.cpp index fb10ae3e2..83a8144b5 100644 --- a/Telegram/SourceFiles/history/history_service.cpp +++ b/Telegram/SourceFiles/history/history_service.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/history_message.h" #include "history/history_item_components.h" #include "history/view/history_view_service_message.h" +#include "history/view/history_view_item_preview.h" #include "data/data_folder.h" #include "data/data_session.h" #include "data/data_media_types.h" diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 71819e4ad..67248d59f 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -86,6 +86,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/history_view_pinned_section.h" #include "history/view/history_view_pinned_bar.h" #include "history/view/history_view_group_call_bar.h" +#include "history/view/history_view_item_preview.h" #include "history/view/history_view_requests_bar.h" #include "history/view/media/history_view_media.h" #include "profile/profile_block_group_members.h" diff --git a/Telegram/SourceFiles/history/view/history_view_item_preview.h b/Telegram/SourceFiles/history/view/history_view_item_preview.h new file mode 100644 index 000000000..7b77ece94 --- /dev/null +++ b/Telegram/SourceFiles/history/view/history_view_item_preview.h @@ -0,0 +1,36 @@ +/* +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 + +namespace HistoryView { + +struct ItemPreviewImage { + QImage data; + uint64 cacheKey = 0; + + explicit operator bool() const { + return !data.isNull(); + } +}; + +struct ItemPreview { + QString text; + std::vector images; + int imagesInTextPosition = 0; + std::any loadingContext; +}; + +struct ToPreviewOptions { + const std::vector *existing = nullptr; + bool hideSender = false; + bool hideCaption = false; + bool generateImages = true; + bool ignoreGroup = false; +}; + +} // namespace HistoryView diff --git a/Telegram/SourceFiles/window/notifications_manager_default.cpp b/Telegram/SourceFiles/window/notifications_manager_default.cpp index 7b612bf7c..463e4f3bb 100644 --- a/Telegram/SourceFiles/window/notifications_manager_default.cpp +++ b/Telegram/SourceFiles/window/notifications_manager_default.cpp @@ -25,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "main/main_account.h" #include "history/history.h" #include "history/history_item.h" +#include "history/view/history_view_item_preview.h" #include "base/platform/base_platform_last_input.h" #include "base/call_delayed.h" #include "facades.h"