Replaced float labels with text in dividers in EditAdminBox.

This commit is contained in:
23rd 2024-09-09 15:47:12 +03:00
parent edf1417bbb
commit 521f991167
2 changed files with 50 additions and 38 deletions

View file

@ -356,17 +356,47 @@ void EditAdminBox::prepare() {
) | rpl::then(std::move( ) | rpl::then(std::move(
changes changes
)); ));
_aboutAddAdmins = inner->add(
object_ptr<Ui::FlatLabel>(inner, st::boxDividerLabel), const auto hasRank = canSave() && (chat || channel->isMegagroup());
st::rightsAboutMargin);
rpl::duplicate( {
selectedFlags const auto aboutAddAdminsInner = inner->add(
) | rpl::map( object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
(_1 & Flag::AddAdmins) != 0 inner,
) | rpl::distinct_until_changed( object_ptr<Ui::VerticalLayout>(inner)));
) | rpl::start_with_next([=](bool checked) { const auto emptyAboutAddAdminsInner = inner->add(
refreshAboutAddAdminsText(checked); object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
}, lifetime()); inner,
object_ptr<Ui::VerticalLayout>(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()) { if (canTransferOwnership()) {
const auto allFlags = AdminRightsForOwnershipTransfer(options); const auto allFlags = AdminRightsForOwnershipTransfer(options);
@ -381,9 +411,7 @@ void EditAdminBox::prepare() {
} }
if (canSave()) { if (canSave()) {
_rank = (chat || channel->isMegagroup()) _rank = hasRank ? addRankInput(inner).get() : nullptr;
? addRankInput(inner).get()
: nullptr;
_finishSave = [=, value = getChecked] { _finishSave = [=, value = getChecked] {
const auto newFlags = (value() | ChatAdminRight::Other) const auto newFlags = (value() | ChatAdminRight::Other)
& ((!channel || channel->amCreator()) & ((!channel || channel->amCreator())
@ -449,7 +477,7 @@ void EditAdminBox::refreshButtons() {
not_null<Ui::InputField*> EditAdminBox::addRankInput( not_null<Ui::InputField*> EditAdminBox::addRankInput(
not_null<Ui::VerticalLayout*> container) { not_null<Ui::VerticalLayout*> container) {
Ui::AddDivider(container); // Ui::AddDivider(container);
container->add( container->add(
object_ptr<Ui::FlatLabel>( object_ptr<Ui::FlatLabel>(
@ -486,14 +514,13 @@ not_null<Ui::InputField*> EditAdminBox::addRankInput(
} }
}, result->lifetime()); }, result->lifetime());
container->add( Ui::AddSkip(container);
object_ptr<Ui::FlatLabel>( Ui::AddDividerText(
container, container,
tr::lng_rights_edit_admin_rank_about( tr::lng_rights_edit_admin_rank_about(
lt_title, lt_title,
(isOwner ? tr::lng_owner_badge : tr::lng_admin_badge)()), (isOwner ? tr::lng_owner_badge : tr::lng_admin_badge)()));
st::boxDividerLabel), Ui::AddSkip(container);
st::rightsAboutMargin);
return result; return result;
} }
@ -687,19 +714,6 @@ void EditAdminBox::sendTransferRequestFrom(
})).handleFloodErrors().send(); })).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( EditRestrictedBox::EditRestrictedBox(
QWidget*, QWidget*,
not_null<PeerData*> peer, not_null<PeerData*> peer,

View file

@ -110,7 +110,6 @@ private:
} }
void finishAddAdmin(); void finishAddAdmin();
void refreshButtons(); void refreshButtons();
void refreshAboutAddAdminsText(bool canAddAdmins);
bool canTransferOwnership() const; bool canTransferOwnership() const;
not_null<Ui::SlideWrap<Ui::RpWidget>*> setupTransferButton( not_null<Ui::SlideWrap<Ui::RpWidget>*> setupTransferButton(
not_null<Ui::VerticalLayout*> container, not_null<Ui::VerticalLayout*> container,
@ -127,7 +126,6 @@ private:
Ui::Checkbox *_addAsAdmin = nullptr; Ui::Checkbox *_addAsAdmin = nullptr;
Ui::SlideWrap<Ui::VerticalLayout> *_adminControlsWrap = nullptr; Ui::SlideWrap<Ui::VerticalLayout> *_adminControlsWrap = nullptr;
Ui::InputField *_rank = nullptr; Ui::InputField *_rank = nullptr;
QPointer<Ui::FlatLabel> _aboutAddAdmins;
mtpRequestId _checkTransferRequestId = 0; mtpRequestId _checkTransferRequestId = 0;
mtpRequestId _transferRequestId = 0; mtpRequestId _transferRequestId = 0;
Fn<void()> _save, _finishSave; Fn<void()> _save, _finishSave;