From c02fe1cd8ddf9a34c5c8d60787deba970a5337eb Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 25 Jan 2023 20:48:43 +0300 Subject: [PATCH] Added entry point for gradient color editor as layer. --- .../info_userpic_emoji_builder_widget.cpp | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp index 1735b05043..fdca30ba1f 100644 --- a/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp +++ b/Telegram/SourceFiles/info/userpic/info_userpic_emoji_builder_widget.cpp @@ -17,6 +17,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "editor/photo_editor_layer_widget.h" // Editor::kProfilePhotoSize. #include "info/userpic/info_userpic_bubble_wrap.h" #include "info/userpic/info_userpic_color_circle_button.h" +#include "info/userpic/info_userpic_colors_editor.h" #include "info/userpic/info_userpic_emoji_builder_common.h" #include "info/userpic/info_userpic_emoji_builder_preview.h" #include "lang/lang_keys.h" @@ -24,6 +25,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "settings/settings_common.h" #include "ui/controls/emoji_button.h" #include "ui/empty_userpic.h" +#include "ui/layers/generic_box.h" #include "ui/painter.h" #include "ui/rect.h" #include "ui/widgets/labels.h" @@ -66,6 +68,40 @@ void AlignChildren(not_null widget, int fullWidth) { return { c.color1->c, c.color2->c }; } +void ShowGradientEditor( + not_null controller, + StartData data, + Fn)> &&doneCallback) { + Window::Show(controller).showBox(Box([=](not_null box) { + struct State { + rpl::event_stream<> saveRequests; + }; + const auto state = box->lifetime().make_state(); + box->setTitle(tr::lng_chat_theme_change()); + box->addButton(tr::lng_settings_save(), [=] { + state->saveRequests.fire({}); + }); + box->addButton(tr::lng_cancel(), [=] { box->closeBox(); }); + + auto content = CreateGradientEditor( + box, + data.documentId + ? controller->session().data().document(data.documentId) + : nullptr, + data.gradientEditorColors, + BothWayCommunication>{ + state->saveRequests.events(), + [=](std::vector colors) { + box->closeBox(); + doneCallback(std::move(colors)); + }, + }); + box->setWidth(content->width()); + box->addRow(std::move(content), {}); + + })); +} + class EmojiSelector final : public Ui::RpWidget { public: EmojiSelector(