diff options
-rw-r--r-- | src/gui/login.cpp | 30 | ||||
-rw-r--r-- | src/gui/login.h | 1 |
2 files changed, 29 insertions, 2 deletions
diff --git a/src/gui/login.cpp b/src/gui/login.cpp index bedc1e5d..758bd9bc 100644 --- a/src/gui/login.cpp +++ b/src/gui/login.cpp @@ -31,6 +31,7 @@ #include "../graphics.h" #include "../main.h" #include "../net/network.h" +#include <string> LoginDialog::LoginDialog(): Window("Login") @@ -42,6 +43,7 @@ LoginDialog::LoginDialog(): keepCheck = new CheckBox("Keep", false); okButton = new Button("OK"); cancelButton = new Button("Cancel"); + registerButton = new Button("Register"); setContentSize(200, 75); @@ -59,17 +61,21 @@ LoginDialog::LoginDialog(): okButton->setPosition( cancelButton->getX() - okButton->getWidth() - 5, 75 - okButton->getHeight() - 5); + registerButton->setPosition(keepCheck->getX() + keepCheck->getWidth() + 10, + 75 - registerButton->getHeight() - 5); userField->setEventId("ok"); passField->setEventId("ok"); okButton->setEventId("ok"); cancelButton->setEventId("cancel"); + registerButton->setEventId("register"); userField->addActionListener(this); passField->addActionListener(this); keepCheck->addActionListener(this); okButton->addActionListener(this); cancelButton->addActionListener(this); + registerButton->addActionListener(this); add(userLabel); add(passLabel); @@ -78,6 +84,7 @@ LoginDialog::LoginDialog(): add(keepCheck); add(okButton); add(cancelButton); + add(registerButton); setLocationRelativeTo(getParent()); userField->requestFocus(); @@ -119,14 +126,33 @@ void LoginDialog::action(const std::string& eventId) // Check login if (user.length() == 0) { new OkDialog("Error", "Enter your username first"); - } else if (user.length() < 4) { - new OkDialog("Error", "The username needs to be at least 4 characters"); } else { server_login(user, passField->getText()); close_session(); } } else if (eventId == "cancel") { state = EXIT; + } else if (eventId == "register") { + const std::string user = userField->getText(); + logger.log("LoginDialog::register Username is %s", user.c_str()); + + // Store config settings + config.setValue("remember", keepCheck->isMarked()); + if (keepCheck->isMarked()) { + config.setValue("username", user); + } else { + config.setValue("username", ""); + } + + // Check login + if (user.length() == 0) { + new OkDialog("Error", "Enter a username first"); + } else if (user.length() < 4) { + new OkDialog("Error", "The username needs to be at least 4 characters"); + } else { + server_login(user + "_M", passField->getText()); + close_session(); + } } } diff --git a/src/gui/login.h b/src/gui/login.h index 43c9d23a..cc1fae06 100644 --- a/src/gui/login.h +++ b/src/gui/login.h @@ -60,6 +60,7 @@ class LoginDialog : public Window, public gcn::ActionListener { gcn::CheckBox *keepCheck; gcn::Button *okButton; gcn::Button *cancelButton; + gcn::Button *registerButton; }; /** |