mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-02-20 23:27:23 +00:00
Fixed focus in EditPeerTypeBox. Slightly refactored code.
This commit is contained in:
parent
bd7ba3acb1
commit
5edf200157
@ -74,7 +74,7 @@ void FillContent(
|
||||
);
|
||||
|
||||
historyVisibility->setValue(defaultValue);
|
||||
|
||||
|
||||
const auto result = parent->add(object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
|
||||
parent,
|
||||
object_ptr<Ui::VerticalLayout>(parent),
|
||||
|
@ -672,8 +672,11 @@ void Controller::fillManageSection() {
|
||||
if (canEditPreHistoryHidden) {
|
||||
fillHistoryVisibilityButton();
|
||||
}
|
||||
if (canEditPreHistoryHidden || canEditSignatures || canEditInviteLink) {
|
||||
AddSkip(_controls.buttonsLayout,
|
||||
if (canEditPreHistoryHidden
|
||||
|| canEditSignatures
|
||||
|| canEditInviteLink
|
||||
|| canEditUsername) {
|
||||
AddSkip(_controls.buttonsLayout,
|
||||
st::editPeerTopButtonsLayoutSkip,
|
||||
st::editPeerTopButtonsLayoutSkipCustomBottom);
|
||||
}
|
||||
@ -698,7 +701,7 @@ void Controller::fillManageSection() {
|
||||
navigation,
|
||||
_peer,
|
||||
ParticipantsBoxController::Role::Admins);
|
||||
},
|
||||
},
|
||||
st::infoIconAdministrators);
|
||||
}
|
||||
if (canViewMembers) {
|
||||
@ -821,7 +824,7 @@ bool Controller::validateDescription(Saving &to) const {
|
||||
|
||||
bool Controller::validateHistoryVisibility(Saving &to) const {
|
||||
if (!_controls.historyVisibilityWrap) return true;
|
||||
|
||||
|
||||
if (!_controls.historyVisibilityWrap->toggled()
|
||||
|| (_privacySavedValue == Privacy::Public)) {
|
||||
return true;
|
||||
@ -1185,4 +1188,4 @@ bool EditPeerInfoBox::Available(not_null<PeerData*> peer) {
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -52,15 +52,14 @@ public:
|
||||
not_null<Ui::VerticalLayout*> container,
|
||||
not_null<PeerData*> peer,
|
||||
std::optional<Privacy> privacySavedValue,
|
||||
std::optional<QString> usernameSavedValue,
|
||||
std::optional<LangKey> usernameError);
|
||||
std::optional<QString> usernameSavedValue);
|
||||
|
||||
void createContent();
|
||||
QString getUsernameInput();
|
||||
void setFocusUsername();
|
||||
|
||||
LangKey getTitle() {
|
||||
return _isInviteLink
|
||||
return _isInviteLink
|
||||
? lng_profile_invite_link_section
|
||||
: _isGroup
|
||||
? lng_manage_peer_group_type
|
||||
@ -79,6 +78,11 @@ public:
|
||||
return _controls.privacy->value();
|
||||
}
|
||||
|
||||
void showError(LangKey key) {
|
||||
_controls.usernameInput->showError();
|
||||
showUsernameError(Lang::Viewer(key));
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
struct Controls {
|
||||
@ -137,7 +141,6 @@ private:
|
||||
not_null<PeerData*> _peer;
|
||||
std::optional<Privacy> _privacySavedValue = std::nullopt;
|
||||
std::optional<QString> _usernameSavedValue = std::nullopt;
|
||||
std::optional<LangKey> _usernameError = std::nullopt;
|
||||
|
||||
bool _isGroup = false;
|
||||
bool _isInviteLink = false;
|
||||
@ -157,12 +160,10 @@ Controller::Controller(
|
||||
not_null<Ui::VerticalLayout*> container,
|
||||
not_null<PeerData*> peer,
|
||||
std::optional<Privacy> privacySavedValue,
|
||||
std::optional<QString> usernameSavedValue,
|
||||
std::optional<LangKey> usernameError)
|
||||
std::optional<QString> usernameSavedValue)
|
||||
: _peer(peer)
|
||||
, _privacySavedValue(privacySavedValue)
|
||||
, _usernameSavedValue(usernameSavedValue)
|
||||
, _usernameError(usernameError)
|
||||
, _isGroup(_peer->isChat() || _peer->isMegagroup())
|
||||
, _isInviteLink(!_privacySavedValue.has_value() && !_usernameSavedValue.has_value())
|
||||
, _isAllowSave(!_usernameSavedValue.value_or(QString()).isEmpty())
|
||||
@ -173,7 +174,7 @@ Controller::Controller(
|
||||
|
||||
void Controller::createContent() {
|
||||
_controls = Controls();
|
||||
|
||||
|
||||
if (_isInviteLink) {
|
||||
_wrap->add(createInviteLinkCreate());
|
||||
_wrap->add(createInviteLinkEdit());
|
||||
@ -191,12 +192,6 @@ void Controller::createContent() {
|
||||
if (_controls.privacy->value() == Privacy::Private) {
|
||||
checkUsernameAvailability();
|
||||
}
|
||||
if (_usernameError.has_value()) {
|
||||
showUsernameError(Lang::Viewer(_usernameError.value()));
|
||||
// Not focused actually.
|
||||
_controls.usernameInput->setDisplayFocused(true);
|
||||
setFocusUsername();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -387,14 +382,12 @@ void Controller::privacyChanged(Privacy value) {
|
||||
}
|
||||
refreshVisibilities();
|
||||
_controls.usernameInput->setDisplayFocused(true);
|
||||
setFocusUsername();
|
||||
// _box->scrollToWidget(_controls.usernameInput);
|
||||
} else {
|
||||
request(base::take(_checkUsernameRequestId)).cancel();
|
||||
_checkUsernameTimer.cancel();
|
||||
refreshVisibilities();
|
||||
setFocusUsername();
|
||||
}
|
||||
setFocusUsername();
|
||||
}
|
||||
|
||||
void Controller::checkUsernameAvailability() {
|
||||
@ -443,7 +436,6 @@ void Controller::checkUsernameAvailability() {
|
||||
if (_controls.privacy->value() == Privacy::Public) {
|
||||
_controls.usernameResult = nullptr;
|
||||
setFocusUsername();
|
||||
// _box->scrollToWidget(_controls.usernameInput);
|
||||
}
|
||||
} else if (type == qstr("USERNAME_INVALID")) {
|
||||
showUsernameError(
|
||||
@ -716,9 +708,13 @@ EditPeerTypeBox::EditPeerTypeBox(
|
||||
, _usernameError(usernameError) {
|
||||
}
|
||||
|
||||
void EditPeerTypeBox::setInnerFocus() {
|
||||
_focusRequests.fire({});
|
||||
}
|
||||
|
||||
void EditPeerTypeBox::prepare() {
|
||||
_peer->updateFull();
|
||||
|
||||
|
||||
const auto content = Ui::CreateChild<Ui::VerticalLayout>(this);
|
||||
|
||||
const auto controller = Ui::CreateChild<Controller>(
|
||||
@ -726,11 +722,16 @@ void EditPeerTypeBox::prepare() {
|
||||
content,
|
||||
_peer,
|
||||
_privacySavedValue,
|
||||
_usernameSavedValue,
|
||||
_usernameError);
|
||||
_usernameSavedValue);
|
||||
_focusRequests.events(
|
||||
) | rpl::start_with_next(
|
||||
[=] { controller->setFocusUsername(); },
|
||||
[=] {
|
||||
controller->setFocusUsername();
|
||||
if (_usernameError.has_value()) {
|
||||
controller->showError(_usernameError.value());
|
||||
_usernameError = std::nullopt;
|
||||
}
|
||||
},
|
||||
lifetime());
|
||||
controller->createContent();
|
||||
|
||||
|
@ -50,6 +50,7 @@ public:
|
||||
|
||||
protected:
|
||||
void prepare() override;
|
||||
void setInnerFocus() override;
|
||||
|
||||
private:
|
||||
not_null<PeerData*> _peer;
|
||||
|
Loading…
Reference in New Issue
Block a user