00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "gui/unregisterdialog.h"
00023
00024 #include "main.h"
00025 #include "log.h"
00026 #include "logindata.h"
00027
00028 #include "gui/ok_dialog.h"
00029 #include "gui/register.h"
00030
00031 #include "gui/widgets/button.h"
00032 #include "gui/widgets/checkbox.h"
00033 #include "gui/widgets/label.h"
00034 #include "gui/widgets/passwordfield.h"
00035 #include "gui/widgets/textfield.h"
00036
00037 #include "utils/gettext.h"
00038 #include "utils/strprintf.h"
00039
00040 #include <string>
00041 #include <sstream>
00042
00043 UnRegisterDialog::UnRegisterDialog(Window *parent, LoginData *loginData):
00044 Window("Unregister", true, parent),
00045 mWrongDataNoticeListener(new WrongDataNoticeListener),
00046 mLoginData(loginData)
00047 {
00048 gcn::Label *userLabel = new Label(strprintf(_("Name: %s"), mLoginData->username.c_str()));
00049 gcn::Label *passwordLabel = new Label(_("Password:"));
00050 mPasswordField = new PasswordField(mLoginData->password);
00051 mUnRegisterButton = new Button(_("Unregister"), "unregister", this);
00052 mCancelButton = new Button(_("Cancel"), "cancel", this);
00053
00054 const int width = 210;
00055 const int height = 80;
00056 setContentSize(width, height);
00057
00058 userLabel->setPosition(5, 5);
00059 userLabel->setWidth(width - 5);
00060 mPasswordField->setPosition(
00061 68, userLabel->getY() + userLabel->getHeight() + 7);
00062 mPasswordField->setWidth(130);
00063
00064 passwordLabel->setPosition(5, mPasswordField->getY() + 1);
00065
00066 mCancelButton->setPosition(
00067 width - 5 - mCancelButton->getWidth(),
00068 height - 5 - mCancelButton->getHeight());
00069 mUnRegisterButton->setPosition(
00070 mCancelButton->getX() - 5 - mUnRegisterButton->getWidth(),
00071 mCancelButton->getY());
00072
00073 add(userLabel);
00074 add(passwordLabel);
00075 add(mPasswordField);
00076 add(mUnRegisterButton);
00077 add(mCancelButton);
00078
00079 setLocationRelativeTo(getParent());
00080 setVisible(true);
00081 mPasswordField->requestFocus();
00082 mPasswordField->setActionEventId("cancel");
00083 }
00084
00085 UnRegisterDialog::~UnRegisterDialog()
00086 {
00087 delete mWrongDataNoticeListener;
00088 }
00089
00090 void
00091 UnRegisterDialog::action(const gcn::ActionEvent &event)
00092 {
00093 if (event.getId() == "cancel")
00094 {
00095 scheduleDelete();
00096 }
00097 else if (event.getId() == "unregister")
00098 {
00099 const std::string username = mLoginData->username.c_str();
00100 const std::string password = mPasswordField->getText();
00101 logger->log("UnregisterDialog::unregistered, Username is %s",
00102 username.c_str());
00103
00104 std::stringstream errorMsg;
00105 bool error = false;
00106
00107
00108 if (password.length() < LEN_MIN_PASSWORD)
00109 {
00110
00111 errorMsg << "The password needs to be at least "
00112 << LEN_MIN_PASSWORD
00113 << " characters long.";
00114 error = true;
00115 }
00116 else if (password.length() > LEN_MAX_PASSWORD - 1 )
00117 {
00118
00119 errorMsg << "The password needs to be less than "
00120 << LEN_MAX_PASSWORD
00121 << " characters long.";
00122 error = true;
00123 }
00124
00125 if (error)
00126 {
00127 mWrongDataNoticeListener->setTarget(this->mPasswordField);
00128
00129 OkDialog *dlg = new OkDialog("Error", errorMsg.str());
00130 dlg->addActionListener(mWrongDataNoticeListener);
00131 }
00132 else
00133 {
00134
00135 mUnRegisterButton->setEnabled(false);
00136 mLoginData->password = password;
00137 state = STATE_UNREGISTER_ATTEMPT;
00138 scheduleDelete();
00139 }
00140 }
00141 }