diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_history_visibility_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_history_visibility_box.cpp index 075356335f..338e1f724d 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_history_visibility_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_history_visibility_box.cpp @@ -7,51 +7,33 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "boxes/peers/edit_peer_history_visibility_box.h" -#include "boxes/peers/edit_peer_permissions_box.h" -#include "boxes/peers/edit_participants_box.h" #include "data/data_channel.h" #include "data/data_chat.h" #include "data/data_peer.h" #include "lang/lang_keys.h" +#include "ui/layers/generic_box.h" #include "ui/widgets/checkbox.h" #include "ui/widgets/labels.h" -#include "ui/wrap/padding_wrap.h" -#include "ui/wrap/slide_wrap.h" -#include "ui/wrap/vertical_layout.h" #include "styles/style_layers.h" #include "styles/style_info.h" -namespace { - -void AddRadioButton( - not_null container, - HistoryVisibility value, - const QString &groupText, - rpl::producer groupAbout, - std::shared_ptr> historyVisibility) { - container->add(object_ptr( - container, - st::editPeerHistoryVisibilityTopSkip)); - container->add(object_ptr>( - container, - historyVisibility, - value, - groupText, - st::defaultBoxCheckbox)); - container->add(object_ptr>( - container, - object_ptr( - container, - std::move(groupAbout), - st::editPeerPrivacyLabel), - st::editPeerPreHistoryLabelMargins)); -} - -void FillContent( - not_null parent, +void EditPeerHistoryVisibilityBox( + not_null box, not_null peer, - std::shared_ptr> historyVisibility, - HistoryVisibility savedValue) { + Fn savedCallback, + HistoryVisibility historyVisibilitySavedValue) { + const auto historyVisibility = std::make_shared< + Ui::RadioenumGroup + >(historyVisibilitySavedValue); + peer->updateFull(); + + box->setTitle(tr::lng_manage_history_visibility_title()); + box->addButton(tr::lng_settings_save(), [=] { + savedCallback(historyVisibility->value()); + box->closeBox(); + }); + box->addButton(tr::lng_cancel(), [=] { box->closeBox(); }); + const auto canEdit = [&] { if (const auto chat = peer->asChat()) { return chat->canEditPreHistoryHidden(); @@ -64,68 +46,33 @@ void FillContent( return; } - historyVisibility->setValue(savedValue); - - const auto result = parent->add( - object_ptr>( - parent, - object_ptr(parent), - st::editPeerHistoryVisibilityMargins)); - const auto container = result->entity(); - - Assert(historyVisibility != nullptr); - - AddRadioButton( - container, + box->addSkip(st::editPeerHistoryVisibilityTopSkip); + box->addRow(object_ptr>( + box, + historyVisibility, HistoryVisibility::Visible, tr::lng_manage_history_visibility_shown(tr::now), - tr::lng_manage_history_visibility_shown_about(), - historyVisibility); - AddRadioButton( - container, + st::defaultBoxCheckbox)); + box->addRow( + object_ptr( + box, + tr::lng_manage_history_visibility_shown_about(), + st::editPeerPrivacyLabel), + st::editPeerPreHistoryLabelMargins + st::boxRowPadding); + + box->addSkip(st::editPeerHistoryVisibilityTopSkip); + box->addRow(object_ptr>( + box, + historyVisibility, HistoryVisibility::Hidden, tr::lng_manage_history_visibility_hidden(tr::now), - (peer->isChat() - ? tr::lng_manage_history_visibility_hidden_legacy - : tr::lng_manage_history_visibility_hidden_about)(), - historyVisibility); -} - -} // namespace - -EditPeerHistoryVisibilityBox::EditPeerHistoryVisibilityBox( - QWidget*, - not_null peer, - FnMut savedCallback, - HistoryVisibility historyVisibilitySavedValue) -: _peer(peer) -, _savedCallback(std::move(savedCallback)) -, _historyVisibilitySavedValue(historyVisibilitySavedValue) -, _historyVisibility( - std::make_shared>( - _historyVisibilitySavedValue)) { -} - -void EditPeerHistoryVisibilityBox::prepare() { - _peer->updateFull(); - - setTitle(tr::lng_manage_history_visibility_title()); - addButton(tr::lng_settings_save(), [=] { - auto local = std::move(_savedCallback); - local(_historyVisibility->value()); - closeBox(); - }); - addButton(tr::lng_cancel(), [=] { closeBox(); }); - - setupContent(); -} - -void EditPeerHistoryVisibilityBox::setupContent() { - const auto content = Ui::CreateChild(this); - FillContent( - content, - _peer, - _historyVisibility, - _historyVisibilitySavedValue); - setDimensionsToContent(st::boxWidth, content); + st::defaultBoxCheckbox)); + box->addRow( + object_ptr( + box, + (peer->isChat() + ? tr::lng_manage_history_visibility_hidden_legacy + : tr::lng_manage_history_visibility_hidden_about)(), + st::editPeerPrivacyLabel), + st::editPeerPreHistoryLabelMargins + st::boxRowPadding); } diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_history_visibility_box.h b/Telegram/SourceFiles/boxes/peers/edit_peer_history_visibility_box.h index a66065340e..5dcd1f7947 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_history_visibility_box.h +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_history_visibility_box.h @@ -7,32 +7,17 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once -#include "boxes/abstract_box.h" -#include "ui/widgets/checkbox.h" +namespace Ui { +class GenericBox; +} // namespace Ui enum class HistoryVisibility { Visible, Hidden, }; -class EditPeerHistoryVisibilityBox : public Ui::BoxContent { -public: - EditPeerHistoryVisibilityBox( - QWidget*, - not_null peer, - FnMut savedCallback, - HistoryVisibility historyVisibilitySavedValue); - -protected: - void prepare() override; - -private: - void setupContent(); - - not_null _peer; - FnMut _savedCallback; - - HistoryVisibility _historyVisibilitySavedValue; - std::shared_ptr> _historyVisibility; - -}; +void EditPeerHistoryVisibilityBox( + not_null box, + not_null peer, + Fn savedCallback, + HistoryVisibility historyVisibilitySavedValue); diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp index 6df4e6730e..fe1f5d4520 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_info_box.cpp @@ -837,12 +837,11 @@ void Controller::fillHistoryVisibilityButton() { _historyVisibilitySavedValue = checked; }); const auto buttonCallback = [=] { - _navigation->parentController()->show( - Box( - _peer, - boxCallback, - *_historyVisibilitySavedValue), - Ui::LayerOption::KeepOther); + _navigation->parentController()->show(Box( + EditPeerHistoryVisibilityBox, + _peer, + boxCallback, + *_historyVisibilitySavedValue)); }; AddButtonWithText( container,