From dd6501ef8f916692b5f0b1149182a5a8410ce288 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 6 Mar 2022 12:31:28 +0300 Subject: [PATCH] Added ability to provide style to schedule box. --- .../view/history_view_schedule_box.cpp | 21 ++++++++++++----- .../history/view/history_view_schedule_box.h | 23 +++++++++++++++---- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/Telegram/SourceFiles/history/view/history_view_schedule_box.cpp b/Telegram/SourceFiles/history/view/history_view_schedule_box.cpp index 08dcf39c03..7671222966 100644 --- a/Telegram/SourceFiles/history/view/history_view_schedule_box.cpp +++ b/Telegram/SourceFiles/history/view/history_view_schedule_box.cpp @@ -20,7 +20,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/buttons.h" #include "ui/widgets/popup_menu.h" #include "ui/wrap/padding_wrap.h" -#include "ui/boxes/choose_date_time.h" #include "chat_helpers/send_context_menu.h" #include "styles/style_info.h" #include "styles/style_layers.h" @@ -32,12 +31,13 @@ namespace { void FillSendUntilOnlineMenu( not_null button, - Fn callback) { + Fn callback, + const ScheduleBoxStyleArgs &style) { const auto menu = std::make_shared>(); button->setClickedCallback([=] { *menu = base::make_unique_q( button, - st::popupMenuWithIcons); + *style.popupMenuStyle); (*menu)->addAction( tr::lng_scheduled_send_until_online(tr::now), std::move(callback), @@ -49,6 +49,12 @@ void FillSendUntilOnlineMenu( } // namespace +ScheduleBoxStyleArgs::ScheduleBoxStyleArgs() +: topButtonStyle(&st::infoTopBarMenu) +, popupMenuStyle(&st::popupMenuWithIcons) +, chooseDateTimeArgs({}) { +} + TimeId DefaultScheduleTime() { return base::unixtime::now() + 600; } @@ -64,7 +70,8 @@ void ScheduleBox( not_null box, SendMenu::Type type, Fn done, - TimeId time) { + TimeId time, + ScheduleBoxStyleArgs style) { const auto save = [=](bool silent, TimeId scheduleDate) { if (!scheduleDate) { return; @@ -84,6 +91,7 @@ void ScheduleBox( .submit = tr::lng_schedule_button(), .done = [=](TimeId result) { save(false, result); }, .time = time, + .style = style.chooseDateTimeArgs, }); SendMenu::SetupMenuAndShortcuts( @@ -93,12 +101,13 @@ void ScheduleBox( nullptr); if (type == SendMenu::Type::ScheduledToUser) { - const auto sendUntilOnline = box->addTopButton(st::infoTopBarMenu); + const auto sendUntilOnline = box->addTopButton(*style.topButtonStyle); const auto timestamp = Data::ScheduledMessages::kScheduledUntilOnlineTimestamp; FillSendUntilOnlineMenu( sendUntilOnline.data(), - [=] { save(false, timestamp); }); + [=] { save(false, timestamp); }, + style); } } diff --git a/Telegram/SourceFiles/history/view/history_view_schedule_box.h b/Telegram/SourceFiles/history/view/history_view_schedule_box.h index 30ee8bd49d..5d72ed05f5 100644 --- a/Telegram/SourceFiles/history/view/history_view_schedule_box.h +++ b/Telegram/SourceFiles/history/view/history_view_schedule_box.h @@ -7,7 +7,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "ui/layers/generic_box.h" +#include "ui/boxes/choose_date_time.h" + +namespace style { +struct IconButton; +struct PopupMenu; +} // namespace style namespace Api { struct SendOptions; @@ -22,23 +27,33 @@ namespace HistoryView { [[nodiscard]] TimeId DefaultScheduleTime(); [[nodiscard]] bool CanScheduleUntilOnline(not_null peer); +struct ScheduleBoxStyleArgs { + ScheduleBoxStyleArgs(); + const style::IconButton *topButtonStyle; + const style::PopupMenu *popupMenuStyle; + Ui::ChooseDateTimeStyleArgs chooseDateTimeArgs; +}; + void ScheduleBox( not_null box, SendMenu::Type type, Fn done, - TimeId time); + TimeId time, + ScheduleBoxStyleArgs style); template [[nodiscard]] object_ptr PrepareScheduleBox( Guard &&guard, SendMenu::Type type, Submit &&submit, - TimeId scheduleTime = DefaultScheduleTime()) { + TimeId scheduleTime = DefaultScheduleTime(), + ScheduleBoxStyleArgs style = ScheduleBoxStyleArgs()) { return Box( ScheduleBox, type, crl::guard(std::forward(guard), std::forward(submit)), - scheduleTime); + scheduleTime, + std::move(style)); } } // namespace HistoryView