From 9130735ed67ab814a4bf6e22d628986a2fbff25c Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 18 Apr 2023 22:07:12 +0400 Subject: [PATCH] Add a 'Choose from file' button in wallpapers gallery. --- Telegram/SourceFiles/boxes/background_box.cpp | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/boxes/background_box.cpp b/Telegram/SourceFiles/boxes/background_box.cpp index c5d15e377..0aefa881f 100644 --- a/Telegram/SourceFiles/boxes/background_box.cpp +++ b/Telegram/SourceFiles/boxes/background_box.cpp @@ -21,13 +21,17 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_document.h" #include "data/data_document_media.h" #include "boxes/background_preview_box.h" +#include "info/profile/info_profile_icon.h" +#include "settings/settings_common.h" #include "ui/boxes/confirm_box.h" +#include "ui/widgets/buttons.h" #include "window/window_session_controller.h" #include "window/themes/window_theme.h" #include "styles/style_overview.h" #include "styles/style_layers.h" #include "styles/style_boxes.h" #include "styles/style_chat_helpers.h" +#include "styles/style_info.h" namespace { @@ -156,9 +160,30 @@ void BackgroundBox::prepare() { setDimensions(st::boxWideWidth, st::boxMaxListHeight); - _inner = setInnerWidget( - object_ptr(this, &_controller->session(), _forPeer), - st::backgroundScroll); + auto wrap = object_ptr(this); + const auto container = wrap.data(); + + Settings::AddSkip(container); + + const auto button = container->add(Settings::CreateButton( + container, + tr::lng_settings_bg_from_file(), + st::infoProfileButton)); + object_ptr( + button, + st::infoIconMediaPhoto, + st::infoSharedMediaButtonIconPosition); + + Settings::AddSkip(container); + Settings::AddDivider(container); + + _inner = container->add( + object_ptr(this, &_controller->session(), _forPeer)); + + container->resizeToWidth(st::boxWideWidth); + + setInnerWidget(std::move(wrap), st::backgroundScroll); + setInnerTopSkip(st::lineWidth); _inner->chooseEvents( ) | rpl::start_with_next([=](const Data::WallPaper &paper) {