From b5a95c2e1151ce61a2615cffcbb6821c150f40fd Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sat, 24 Mar 2007 13:05:27 +0000 Subject: Make sure that when a network error occurs, the error message is available and shown to the user. Also, only enable Register button when all necessary fields are filled in. --- src/gui/register.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/gui/register.cpp') diff --git a/src/gui/register.cpp b/src/gui/register.cpp index ad3a6388..b42a7af8 100644 --- a/src/gui/register.cpp +++ b/src/gui/register.cpp @@ -108,6 +108,11 @@ RegisterDialog::RegisterDialog(LoginData *loginData): mCancelButton->getX() - mRegisterButton->getWidth() - 5, height - mRegisterButton->getHeight() - 5); + mUserField->addKeyListener(this); + mPasswordField->addKeyListener(this); + mConfirmField->addKeyListener(this); + mServerField->addKeyListener(this); + /* TODO: * This is a quick and dirty way to respond to the ENTER key, regardless of * which text field is selected. There may be a better way now with the new @@ -139,6 +144,8 @@ RegisterDialog::RegisterDialog(LoginData *loginData): setVisible(true); mUserField->requestFocus(); mUserField->setCaretPosition(mUserField->getText().length()); + + mRegisterButton->setEnabled(canSubmit()); } RegisterDialog::~RegisterDialog() @@ -153,7 +160,7 @@ RegisterDialog::action(const gcn::ActionEvent &event) { state = LOGIN_STATE; } - else if (event.getId() == "register") + else if (event.getId() == "register" && canSubmit()) { const std::string user = mUserField->getText(); logger->log("RegisterDialog::register Username is %s", user.c_str()); @@ -235,3 +242,19 @@ RegisterDialog::action(const gcn::ActionEvent &event) } } } + +void +RegisterDialog::keyPressed(gcn::KeyEvent &keyEvent) +{ + mRegisterButton->setEnabled(canSubmit()); +} + +bool +RegisterDialog::canSubmit() +{ + return !mUserField->getText().empty() && + !mPasswordField->getText().empty() && + !mConfirmField->getText().empty() && + !mServerField->getText().empty() && + state == REGISTER_STATE; +} -- cgit v1.2.3-70-g09d2