From 521f991167970fdf277c24ad04598f07a96cd1ce Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 9 Sep 2024 15:47:12 +0300 Subject: [PATCH] Replaced float labels with text in dividers in EditAdminBox. --- .../boxes/peers/edit_participant_box.cpp | 86 +++++++++++-------- .../boxes/peers/edit_participant_box.h | 2 - 2 files changed, 50 insertions(+), 38 deletions(-) diff --git a/Telegram/SourceFiles/boxes/peers/edit_participant_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_participant_box.cpp index af223ff71..f72ddcc6d 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_participant_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_participant_box.cpp @@ -356,17 +356,47 @@ void EditAdminBox::prepare() { ) | rpl::then(std::move( changes )); - _aboutAddAdmins = inner->add( - object_ptr(inner, st::boxDividerLabel), - st::rightsAboutMargin); - rpl::duplicate( - selectedFlags - ) | rpl::map( - (_1 & Flag::AddAdmins) != 0 - ) | rpl::distinct_until_changed( - ) | rpl::start_with_next([=](bool checked) { - refreshAboutAddAdminsText(checked); - }, lifetime()); + + const auto hasRank = canSave() && (chat || channel->isMegagroup()); + + { + const auto aboutAddAdminsInner = inner->add( + object_ptr>( + inner, + object_ptr(inner))); + const auto emptyAboutAddAdminsInner = inner->add( + object_ptr>( + inner, + object_ptr(inner))); + aboutAddAdminsInner->toggle(false, anim::type::instant); + emptyAboutAddAdminsInner->toggle(false, anim::type::instant); + Ui::AddSkip(emptyAboutAddAdminsInner->entity()); + if (hasRank) { + Ui::AddDivider(emptyAboutAddAdminsInner->entity()); + Ui::AddSkip(emptyAboutAddAdminsInner->entity()); + } + Ui::AddSkip(aboutAddAdminsInner->entity()); + Ui::AddDividerText( + aboutAddAdminsInner->entity(), + rpl::duplicate( + selectedFlags + ) | rpl::map( + (_1 & Flag::AddAdmins) != 0 + ) | rpl::distinct_until_changed( + ) | rpl::map([=](bool canAddAdmins) { + const auto empty = (amCreator() && user()->isSelf()); + aboutAddAdminsInner->toggle(!empty, anim::type::instant); + emptyAboutAddAdminsInner->toggle(empty, anim::type::instant); + if (empty) { + return rpl::single(QString()); + } else if (!canSave()) { + return tr::lng_rights_about_admin_cant_edit(); + } else if (canAddAdmins) { + return tr::lng_rights_about_add_admins_yes(); + } + return tr::lng_rights_about_add_admins_no(); + }) | rpl::flatten_latest()); + } if (canTransferOwnership()) { const auto allFlags = AdminRightsForOwnershipTransfer(options); @@ -381,9 +411,7 @@ void EditAdminBox::prepare() { } if (canSave()) { - _rank = (chat || channel->isMegagroup()) - ? addRankInput(inner).get() - : nullptr; + _rank = hasRank ? addRankInput(inner).get() : nullptr; _finishSave = [=, value = getChecked] { const auto newFlags = (value() | ChatAdminRight::Other) & ((!channel || channel->amCreator()) @@ -449,7 +477,7 @@ void EditAdminBox::refreshButtons() { not_null EditAdminBox::addRankInput( not_null container) { - Ui::AddDivider(container); + // Ui::AddDivider(container); container->add( object_ptr( @@ -486,14 +514,13 @@ not_null EditAdminBox::addRankInput( } }, result->lifetime()); - container->add( - object_ptr( - container, - tr::lng_rights_edit_admin_rank_about( - lt_title, - (isOwner ? tr::lng_owner_badge : tr::lng_admin_badge)()), - st::boxDividerLabel), - st::rightsAboutMargin); + Ui::AddSkip(container); + Ui::AddDividerText( + container, + tr::lng_rights_edit_admin_rank_about( + lt_title, + (isOwner ? tr::lng_owner_badge : tr::lng_admin_badge)())); + Ui::AddSkip(container); return result; } @@ -687,19 +714,6 @@ void EditAdminBox::sendTransferRequestFrom( })).handleFloodErrors().send(); } -void EditAdminBox::refreshAboutAddAdminsText(bool canAddAdmins) { - _aboutAddAdmins->setText([&] { - if (amCreator() && user()->isSelf()) { - return QString(); - } else if (!canSave()) { - return tr::lng_rights_about_admin_cant_edit(tr::now); - } else if (canAddAdmins) { - return tr::lng_rights_about_add_admins_yes(tr::now); - } - return tr::lng_rights_about_add_admins_no(tr::now); - }()); -} - EditRestrictedBox::EditRestrictedBox( QWidget*, not_null peer, diff --git a/Telegram/SourceFiles/boxes/peers/edit_participant_box.h b/Telegram/SourceFiles/boxes/peers/edit_participant_box.h index 1385a1756..e9a80c0ae 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_participant_box.h +++ b/Telegram/SourceFiles/boxes/peers/edit_participant_box.h @@ -110,7 +110,6 @@ private: } void finishAddAdmin(); void refreshButtons(); - void refreshAboutAddAdminsText(bool canAddAdmins); bool canTransferOwnership() const; not_null*> setupTransferButton( not_null container, @@ -127,7 +126,6 @@ private: Ui::Checkbox *_addAsAdmin = nullptr; Ui::SlideWrap *_adminControlsWrap = nullptr; Ui::InputField *_rank = nullptr; - QPointer _aboutAddAdmins; mtpRequestId _checkTransferRequestId = 0; mtpRequestId _transferRequestId = 0; Fn _save, _finishSave;