/* 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 style { struct ComposeIcons; } // namespace style namespace Api { struct SendOptions; } // namespace Api namespace Ui { class PopupMenu; class RpWidget; } // namespace Ui namespace Data { class Thread; } // namespace Data namespace SendMenu { enum class Type { Disabled, SilentOnly, Scheduled, ScheduledToUser, // For "Send when online". Reminder, }; enum class FillMenuResult { Success, None, }; Fn DefaultSilentCallback(Fn send); Fn DefaultScheduleCallback( not_null parent, Type type, Fn send); Fn DefaultWhenOnlineCallback(Fn send); FillMenuResult FillSendMenu( not_null menu, Type type, Fn silent, Fn schedule, Fn whenOnline, const style::ComposeIcons *iconsOverride = nullptr); void SetupMenuAndShortcuts( not_null button, Fn type, Fn silent, Fn schedule, Fn whenOnline); void SetupUnreadMentionsMenu( not_null button, Fn currentThread); void SetupUnreadReactionsMenu( not_null button, Fn currentThread); } // namespace SendMenu