mirror of https://github.com/procxx/kepka.git
Fixed focus in EditPeerTypeBox. Slightly refactored code.
This commit is contained in:
parent
bd7ba3acb1
commit
5edf200157
|
@ -672,7 +672,10 @@ void Controller::fillManageSection() {
|
|||
if (canEditPreHistoryHidden) {
|
||||
fillHistoryVisibilityButton();
|
||||
}
|
||||
if (canEditPreHistoryHidden || canEditSignatures || canEditInviteLink) {
|
||||
if (canEditPreHistoryHidden
|
||||
|| canEditSignatures
|
||||
|| canEditInviteLink
|
||||
|| canEditUsername) {
|
||||
AddSkip(_controls.buttonsLayout,
|
||||
st::editPeerTopButtonsLayoutSkip,
|
||||
st::editPeerTopButtonsLayoutSkipCustomBottom);
|
||||
|
|
|
@ -52,8 +52,7 @@ 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();
|
||||
|
@ -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())
|
||||
|
@ -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,6 +708,10 @@ EditPeerTypeBox::EditPeerTypeBox(
|
|||
, _usernameError(usernameError) {
|
||||
}
|
||||
|
||||
void EditPeerTypeBox::setInnerFocus() {
|
||||
_focusRequests.fire({});
|
||||
}
|
||||
|
||||
void EditPeerTypeBox::prepare() {
|
||||
_peer->updateFull();
|
||||
|
||||
|
@ -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