/* 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 "base/timer.h" #include "base/unique_qptr.h" #include "dialogs/dialogs_key.h" namespace Ui { class PopupMenu; } // namespace Ui namespace Window { class SessionController; class ChatPreviewManager final { public: ChatPreviewManager(not_null controller); bool show( Dialogs::RowDescriptor row, Fn callback = nullptr, QPointer parentOverride = nullptr, std::optional positionOverride = {}); bool schedule( Dialogs::RowDescriptor row, Fn callback = nullptr, QPointer parentOverride = nullptr, std::optional positionOverride = {}); void cancelScheduled(); private: void showScheduled(); const not_null _controller; Dialogs::RowDescriptor _scheduled; Fn _scheduledCallback; QPointer _scheduledParentOverride; std::optional _scheduledPositionOverride; base::Timer _timer; rpl::lifetime _topicLifetime; base::unique_qptr _menu; }; } // namespace Window