From 1f816c249bca8adc8abae0e15efd888b22e8dfdb Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 17 Jun 2021 00:33:51 +0300 Subject: [PATCH] Replaced DocumentOpenClickHandler. --- Telegram/SourceFiles/core/local_url_handlers.cpp | 4 +--- Telegram/SourceFiles/data/data_document.cpp | 7 ------- Telegram/SourceFiles/data/data_document.h | 4 ---- .../SourceFiles/data/data_document_resolver.cpp | 13 ++++++------- Telegram/SourceFiles/data/data_document_resolver.h | 4 ++-- Telegram/SourceFiles/data/data_types.h | 1 - .../history/admin_log/history_admin_log_inner.cpp | 2 +- .../SourceFiles/history/history_inner_widget.cpp | 2 +- .../history/view/history_view_context_menu.cpp | 10 ++++++---- .../history/view/media/history_view_gif.cpp | 5 ++++- .../media/view/media_view_overlay_widget.cpp | 8 ++++++-- .../window/window_session_controller.cpp | 6 ++++-- 12 files changed, 31 insertions(+), 35 deletions(-) diff --git a/Telegram/SourceFiles/core/local_url_handlers.cpp b/Telegram/SourceFiles/core/local_url_handlers.cpp index 677ea8a8e..411a6ff73 100644 --- a/Telegram/SourceFiles/core/local_url_handlers.cpp +++ b/Telegram/SourceFiles/core/local_url_handlers.cpp @@ -437,9 +437,7 @@ bool OpenMediaTimestamp( documentId, time * crl::time(1000)); if (document->isVideoFile()) { - Core::App().showDocument( - document, - session->data().message(itemId)); + controller->openDocument(document, itemId, true); } else if (document->isSong() || document->isVoiceMessage()) { Media::Player::instance()->play({ document, itemId }); } diff --git a/Telegram/SourceFiles/data/data_document.cpp b/Telegram/SourceFiles/data/data_document.cpp index b26c83310..c5bef87ea 100644 --- a/Telegram/SourceFiles/data/data_document.cpp +++ b/Telegram/SourceFiles/data/data_document.cpp @@ -329,13 +329,6 @@ void DocumentOpenClickHandler::onClickImpl() const { } } -void DocumentOpenClickHandler::Open( - Data::FileOrigin origin, - not_null data, - HistoryItem *context) { - Data::ResolveDocument(data, context); -} - void DocumentSaveClickHandler::Save( Data::FileOrigin origin, not_null data, diff --git a/Telegram/SourceFiles/data/data_document.h b/Telegram/SourceFiles/data/data_document.h index 9cd08a313..510df4c77 100644 --- a/Telegram/SourceFiles/data/data_document.h +++ b/Telegram/SourceFiles/data/data_document.h @@ -365,10 +365,6 @@ public: DocumentOpenClickHandler( not_null document, Fn &&callback); - static void Open( - Data::FileOrigin origin, - not_null document, - HistoryItem *context); protected: void onClickImpl() const override; diff --git a/Telegram/SourceFiles/data/data_document_resolver.cpp b/Telegram/SourceFiles/data/data_document_resolver.cpp index 720c4ecf6..22f06be46 100644 --- a/Telegram/SourceFiles/data/data_document_resolver.cpp +++ b/Telegram/SourceFiles/data/data_document_resolver.cpp @@ -24,7 +24,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "media/player/media_player_instance.h" #include "platform/platform_file_utilities.h" #include "ui/text/text_utilities.h" -#include "window/window_controller.h" #include "window/window_session_controller.h" #include @@ -209,12 +208,13 @@ base::binary_guard ReadImageAsync( } void ResolveDocument( - // not_null controller, + not_null controller, not_null document, HistoryItem *item) { if (!document->date) { return; } + const auto msgId = item ? item->fullId() : FullMsgId(); const auto media = document->createMediaView(); const auto openImageInApp = [&] { @@ -229,7 +229,7 @@ void ResolveDocument( const auto path = location.name(); if (Core::MimeTypeForFile(path).name().startsWith("image/") && QImageReader(path).canRead()) { - Core::App().showDocument(document, item); + controller->openDocument(document, msgId, true); return true; } } else if (document->mimeString().startsWith("image/") @@ -237,7 +237,7 @@ void ResolveDocument( auto bytes = media->bytes(); auto buffer = QBuffer(&bytes); if (QImageReader(&buffer).canRead()) { - Core::App().showDocument(document, item); + controller->openDocument(document, msgId, true); return true; } } @@ -245,20 +245,19 @@ void ResolveDocument( }; const auto &location = document->location(true); if (document->isTheme() && media->loaded(true)) { - Core::App().showDocument(document, item); + controller->openDocument(document, msgId, true); location.accessDisable(); } else if (media->canBePlayed()) { if (document->isAudioFile() || document->isVoiceMessage() || document->isVideoMessage()) { - const auto msgId = item ? item->fullId() : FullMsgId(); ::Media::Player::instance()->playPause({ document, msgId }); } else if (item && document->isAnimation() && HistoryView::Gif::CanPlayInline(document)) { document->owner().requestAnimationPlayInline(item); } else { - Core::App().showDocument(document, item); + controller->openDocument(document, msgId, true); } } else { document->saveFromDataSilent(); diff --git a/Telegram/SourceFiles/data/data_document_resolver.h b/Telegram/SourceFiles/data/data_document_resolver.h index d52c50eb0..03a689947 100644 --- a/Telegram/SourceFiles/data/data_document_resolver.h +++ b/Telegram/SourceFiles/data/data_document_resolver.h @@ -13,7 +13,7 @@ class DocumentData; class HistoryItem; namespace Window { -class Controller; +class SessionController; } // namespace Window namespace Data { @@ -30,7 +30,7 @@ base::binary_guard ReadImageAsync( FnMut done); void ResolveDocument( - // not_null controller, + not_null controller, not_null document, HistoryItem *item); diff --git a/Telegram/SourceFiles/data/data_types.h b/Telegram/SourceFiles/data/data_types.h index 2009e1a6f..b2ea50194 100644 --- a/Telegram/SourceFiles/data/data_types.h +++ b/Telegram/SourceFiles/data/data_types.h @@ -199,7 +199,6 @@ class PhotoSaveClickHandler; class PhotoCancelClickHandler; class DocumentClickHandler; class DocumentSaveClickHandler; -class DocumentOpenClickHandler; class DocumentCancelClickHandler; class DocumentWrappedClickHandler; class VoiceSeekClickHandler; diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp index 094e4e527..a9b9008fe 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp @@ -1293,7 +1293,7 @@ void InnerWidget::openContextGif(FullMsgId itemId) { if (const auto item = session().data().message(itemId)) { if (const auto media = item->media()) { if (const auto document = media->document()) { - Core::App().showDocument(document, item); + _controller->openDocument(document, itemId, true); } } } diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp index 5a08d51be..ba8cf49be 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.cpp +++ b/Telegram/SourceFiles/history/history_inner_widget.cpp @@ -1957,7 +1957,7 @@ void HistoryInner::openContextGif(FullMsgId itemId) { if (const auto item = session().data().message(itemId)) { if (const auto media = item->media()) { if (const auto document = media->document()) { - Core::App().showDocument(document, item); + _controller->openDocument(document, itemId, true); } } } diff --git a/Telegram/SourceFiles/history/view/history_view_context_menu.cpp b/Telegram/SourceFiles/history/view/history_view_context_menu.cpp index 4129a9dad..f5446a477 100644 --- a/Telegram/SourceFiles/history/view/history_view_context_menu.cpp +++ b/Telegram/SourceFiles/history/view/history_view_context_menu.cpp @@ -157,11 +157,13 @@ void AddPhotoActions( } } -void OpenGif(not_null session, FullMsgId itemId) { - if (const auto item = session->data().message(itemId)) { +void OpenGif( + not_null controller, + FullMsgId itemId) { + if (const auto item = controller->session().data().message(itemId)) { if (const auto media = item->media()) { if (const auto document = media->document()) { - Core::App().showDocument(document, item); + controller->openDocument(document, itemId, true); } } } @@ -223,7 +225,7 @@ void AddDocumentActions( }(); if (notAutoplayedGif) { menu->addAction(tr::lng_context_open_gif(tr::now), [=] { - OpenGif(session, contextId); + OpenGif(list->controller(), contextId); }); } } diff --git a/Telegram/SourceFiles/history/view/media/history_view_gif.cpp b/Telegram/SourceFiles/history/view/media/history_view_gif.cpp index a6823b06b..43a80eb82 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_gif.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_gif.cpp @@ -1387,7 +1387,10 @@ void Gif::playAnimation(bool autoplay) { return; } else if ((_streamed && autoplayEnabled()) || (!autoplay && _data->isVideoFile())) { - Core::App().showDocument(_data, _parent->data()); + _parent->delegate()->elementOpenDocument( + _data, + _parent->data()->fullId(), + true); return; } if (_streamed) { diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index 547c787d1..fe89f6a66 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -49,6 +49,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_media_rotation.h" #include "data/data_photo_media.h" #include "data/data_document_media.h" +#include "data/data_document_resolver.h" #include "window/themes/window_theme_preview.h" #include "window/window_peer_menu.h" #include "window/window_session_controller.h" @@ -1554,8 +1555,11 @@ void OverlayWidget::handleDocumentClick() { if (_document->loading()) { saveCancel(); } else { - DocumentOpenClickHandler::Open( - fileOrigin(), + if (!_controller) { + return; + } + Data::ResolveDocument( + _controller, _document, _document->owner().message(_msgid)); if (_document->loading() && !_radial.animating()) { diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index de01b9f12..32d36724a 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -1238,7 +1238,6 @@ void SessionController::openDocument( not_null document, FullMsgId contextId, bool showInMediaView) { - // TEMP. if (showInMediaView) { _window->openInMediaView(Media::View::OpenRequest( this, @@ -1246,7 +1245,10 @@ void SessionController::openDocument( session().data().message(contextId))); return; } - Data::ResolveDocument(document, session().data().message(contextId)); + Data::ResolveDocument( + this, + document, + session().data().message(contextId)); } SessionController::~SessionController() = default;