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) {
|
if (canEditPreHistoryHidden) {
|
||||||
fillHistoryVisibilityButton();
|
fillHistoryVisibilityButton();
|
||||||
}
|
}
|
||||||
if (canEditPreHistoryHidden || canEditSignatures || canEditInviteLink) {
|
if (canEditPreHistoryHidden
|
||||||
|
|| canEditSignatures
|
||||||
|
|| canEditInviteLink
|
||||||
|
|| canEditUsername) {
|
||||||
AddSkip(_controls.buttonsLayout,
|
AddSkip(_controls.buttonsLayout,
|
||||||
st::editPeerTopButtonsLayoutSkip,
|
st::editPeerTopButtonsLayoutSkip,
|
||||||
st::editPeerTopButtonsLayoutSkipCustomBottom);
|
st::editPeerTopButtonsLayoutSkipCustomBottom);
|
||||||
|
|
|
@ -52,8 +52,7 @@ public:
|
||||||
not_null<Ui::VerticalLayout*> container,
|
not_null<Ui::VerticalLayout*> container,
|
||||||
not_null<PeerData*> peer,
|
not_null<PeerData*> peer,
|
||||||
std::optional<Privacy> privacySavedValue,
|
std::optional<Privacy> privacySavedValue,
|
||||||
std::optional<QString> usernameSavedValue,
|
std::optional<QString> usernameSavedValue);
|
||||||
std::optional<LangKey> usernameError);
|
|
||||||
|
|
||||||
void createContent();
|
void createContent();
|
||||||
QString getUsernameInput();
|
QString getUsernameInput();
|
||||||
|
@ -79,6 +78,11 @@ public:
|
||||||
return _controls.privacy->value();
|
return _controls.privacy->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void showError(LangKey key) {
|
||||||
|
_controls.usernameInput->showError();
|
||||||
|
showUsernameError(Lang::Viewer(key));
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
struct Controls {
|
struct Controls {
|
||||||
|
@ -137,7 +141,6 @@ private:
|
||||||
not_null<PeerData*> _peer;
|
not_null<PeerData*> _peer;
|
||||||
std::optional<Privacy> _privacySavedValue = std::nullopt;
|
std::optional<Privacy> _privacySavedValue = std::nullopt;
|
||||||
std::optional<QString> _usernameSavedValue = std::nullopt;
|
std::optional<QString> _usernameSavedValue = std::nullopt;
|
||||||
std::optional<LangKey> _usernameError = std::nullopt;
|
|
||||||
|
|
||||||
bool _isGroup = false;
|
bool _isGroup = false;
|
||||||
bool _isInviteLink = false;
|
bool _isInviteLink = false;
|
||||||
|
@ -157,12 +160,10 @@ Controller::Controller(
|
||||||
not_null<Ui::VerticalLayout*> container,
|
not_null<Ui::VerticalLayout*> container,
|
||||||
not_null<PeerData*> peer,
|
not_null<PeerData*> peer,
|
||||||
std::optional<Privacy> privacySavedValue,
|
std::optional<Privacy> privacySavedValue,
|
||||||
std::optional<QString> usernameSavedValue,
|
std::optional<QString> usernameSavedValue)
|
||||||
std::optional<LangKey> usernameError)
|
|
||||||
: _peer(peer)
|
: _peer(peer)
|
||||||
, _privacySavedValue(privacySavedValue)
|
, _privacySavedValue(privacySavedValue)
|
||||||
, _usernameSavedValue(usernameSavedValue)
|
, _usernameSavedValue(usernameSavedValue)
|
||||||
, _usernameError(usernameError)
|
|
||||||
, _isGroup(_peer->isChat() || _peer->isMegagroup())
|
, _isGroup(_peer->isChat() || _peer->isMegagroup())
|
||||||
, _isInviteLink(!_privacySavedValue.has_value() && !_usernameSavedValue.has_value())
|
, _isInviteLink(!_privacySavedValue.has_value() && !_usernameSavedValue.has_value())
|
||||||
, _isAllowSave(!_usernameSavedValue.value_or(QString()).isEmpty())
|
, _isAllowSave(!_usernameSavedValue.value_or(QString()).isEmpty())
|
||||||
|
@ -191,12 +192,6 @@ void Controller::createContent() {
|
||||||
if (_controls.privacy->value() == Privacy::Private) {
|
if (_controls.privacy->value() == Privacy::Private) {
|
||||||
checkUsernameAvailability();
|
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();
|
refreshVisibilities();
|
||||||
_controls.usernameInput->setDisplayFocused(true);
|
_controls.usernameInput->setDisplayFocused(true);
|
||||||
setFocusUsername();
|
|
||||||
// _box->scrollToWidget(_controls.usernameInput);
|
|
||||||
} else {
|
} else {
|
||||||
request(base::take(_checkUsernameRequestId)).cancel();
|
request(base::take(_checkUsernameRequestId)).cancel();
|
||||||
_checkUsernameTimer.cancel();
|
_checkUsernameTimer.cancel();
|
||||||
refreshVisibilities();
|
refreshVisibilities();
|
||||||
setFocusUsername();
|
|
||||||
}
|
}
|
||||||
|
setFocusUsername();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller::checkUsernameAvailability() {
|
void Controller::checkUsernameAvailability() {
|
||||||
|
@ -443,7 +436,6 @@ void Controller::checkUsernameAvailability() {
|
||||||
if (_controls.privacy->value() == Privacy::Public) {
|
if (_controls.privacy->value() == Privacy::Public) {
|
||||||
_controls.usernameResult = nullptr;
|
_controls.usernameResult = nullptr;
|
||||||
setFocusUsername();
|
setFocusUsername();
|
||||||
// _box->scrollToWidget(_controls.usernameInput);
|
|
||||||
}
|
}
|
||||||
} else if (type == qstr("USERNAME_INVALID")) {
|
} else if (type == qstr("USERNAME_INVALID")) {
|
||||||
showUsernameError(
|
showUsernameError(
|
||||||
|
@ -716,6 +708,10 @@ EditPeerTypeBox::EditPeerTypeBox(
|
||||||
, _usernameError(usernameError) {
|
, _usernameError(usernameError) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditPeerTypeBox::setInnerFocus() {
|
||||||
|
_focusRequests.fire({});
|
||||||
|
}
|
||||||
|
|
||||||
void EditPeerTypeBox::prepare() {
|
void EditPeerTypeBox::prepare() {
|
||||||
_peer->updateFull();
|
_peer->updateFull();
|
||||||
|
|
||||||
|
@ -726,11 +722,16 @@ void EditPeerTypeBox::prepare() {
|
||||||
content,
|
content,
|
||||||
_peer,
|
_peer,
|
||||||
_privacySavedValue,
|
_privacySavedValue,
|
||||||
_usernameSavedValue,
|
_usernameSavedValue);
|
||||||
_usernameError);
|
|
||||||
_focusRequests.events(
|
_focusRequests.events(
|
||||||
) | rpl::start_with_next(
|
) | rpl::start_with_next(
|
||||||
[=] { controller->setFocusUsername(); },
|
[=] {
|
||||||
|
controller->setFocusUsername();
|
||||||
|
if (_usernameError.has_value()) {
|
||||||
|
controller->showError(_usernameError.value());
|
||||||
|
_usernameError = std::nullopt;
|
||||||
|
}
|
||||||
|
},
|
||||||
lifetime());
|
lifetime());
|
||||||
controller->createContent();
|
controller->createContent();
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void prepare() override;
|
void prepare() override;
|
||||||
|
void setInnerFocus() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
not_null<PeerData*> _peer;
|
not_null<PeerData*> _peer;
|
||||||
|
|
Loading…
Reference in New Issue