summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <bjorn@lindeijer.nl>2009-10-04 00:36:46 +0200
committerThorbjørn Lindeijer <bjorn@lindeijer.nl>2009-10-04 00:36:46 +0200
commiteb22b66b0821e49ed550d30d20d9db5af535e6a3 (patch)
treea54ee9996bf235741f95945fd81be99a6e686eca
parent076bcc1f8361c705d7dbe9088b18cca7d7fe21de (diff)
downloadmana-eb22b66b0821e49ed550d30d20d9db5af535e6a3.tar.gz
mana-eb22b66b0821e49ed550d30d20d9db5af535e6a3.tar.bz2
mana-eb22b66b0821e49ed550d30d20d9db5af535e6a3.tar.xz
mana-eb22b66b0821e49ed550d30d20d9db5af535e6a3.zip
Replaced setNetworkOptions with LoginHandler::supportedOptionalActions
Better to ask when needed that rely on static booleans to be set from somewhere. Also tried to fix the layouting a bit, but it's still not perfect.
-rw-r--r--src/gui/changeemaildialog.cpp3
-rw-r--r--src/gui/changepassworddialog.cpp1
-rw-r--r--src/gui/changepassworddialog.h3
-rw-r--r--src/gui/charselectdialog.cpp65
-rw-r--r--src/gui/charselectdialog.h31
-rw-r--r--src/gui/widgets/layout.h8
-rw-r--r--src/net/charhandler.h4
-rw-r--r--src/net/ea/generalhandler.cpp1
-rw-r--r--src/net/ea/loginhandler.h3
-rw-r--r--src/net/loginhandler.h7
-rw-r--r--src/net/tmwserv/generalhandler.cpp3
-rw-r--r--src/net/tmwserv/loginhandler.h3
12 files changed, 63 insertions, 69 deletions
diff --git a/src/gui/changeemaildialog.cpp b/src/gui/changeemaildialog.cpp
index 62d2a3f7..15e54895 100644
--- a/src/gui/changeemaildialog.cpp
+++ b/src/gui/changeemaildialog.cpp
@@ -99,8 +99,7 @@ ChangeEmailDialog::~ChangeEmailDialog()
delete mWrongDataNoticeListener;
}
-void
-ChangeEmailDialog::action(const gcn::ActionEvent &event)
+void ChangeEmailDialog::action(const gcn::ActionEvent &event)
{
if (event.getId() == "cancel")
{
diff --git a/src/gui/changepassworddialog.cpp b/src/gui/changepassworddialog.cpp
index 9d66d13a..cabccc8f 100644
--- a/src/gui/changepassworddialog.cpp
+++ b/src/gui/changepassworddialog.cpp
@@ -156,6 +156,5 @@ void ChangePasswordDialog::action(const gcn::ActionEvent &event)
state = STATE_CHANGEPASSWORD_ATTEMPT;
scheduleDelete();
}
-
}
}
diff --git a/src/gui/changepassworddialog.h b/src/gui/changepassworddialog.h
index 18c13606..17c628db 100644
--- a/src/gui/changepassworddialog.h
+++ b/src/gui/changepassworddialog.h
@@ -37,7 +37,8 @@ class WrongDataNoticeListener;
*
* \ingroup Interface
*/
-class ChangePasswordDialog : public Window, public gcn::ActionListener {
+class ChangePasswordDialog : public Window, public gcn::ActionListener
+{
public:
/**
* Constructor
diff --git a/src/gui/charselectdialog.cpp b/src/gui/charselectdialog.cpp
index 6407e05e..13dc8dd6 100644
--- a/src/gui/charselectdialog.cpp
+++ b/src/gui/charselectdialog.cpp
@@ -49,6 +49,7 @@
#include "net/charhandler.h"
#include "net/logindata.h"
+#include "net/loginhandler.h"
#include "net/messageout.h"
#include "net/net.h"
@@ -112,25 +113,19 @@ class CharEntry : public Container
Button *mButton;
};
-bool CharSelectDialog::doAllowUnregister = true;
-bool CharSelectDialog::doAllowChangeEmail = true;
-
CharSelectDialog::CharSelectDialog(LockedArray<LocalPlayer*> *charInfo,
LoginData *loginData):
Window(_("Account and Character Management")),
mCharInfo(charInfo),
- mLoginData(loginData)
+ mLoginData(loginData),
+ mCharHandler(Net::getCharHandler())
{
setCloseButton(false);
mAccountNameLabel = new Label(loginData->username);
-
mSwitchLoginButton = new Button(_("Switch Login"), "switch", this);
- mUnregisterButton = new Button(_("Unregister"), "unregister", this);
-
mChangePasswordButton = new Button(_("Change Password"), "change_password",
this);
- mChangeEmailButton = new Button(_("Change Email"), "change_email", this);
for (int i = 0; i < MAX_CHARACTER_COUNT; i++)
{
@@ -138,33 +133,34 @@ CharSelectDialog::CharSelectDialog(LockedArray<LocalPlayer*> *charInfo,
mCharEntries[i] = new CharEntry(this, i, charInfo->getEntry());
}
- place(0, 0, mAccountNameLabel, 6);
+ int optionalActions = Net::getLoginHandler()->supportedOptionalActions();
- place(0, 1, mSwitchLoginButton, 3);
+ ContainerPlacer place;
+ place = getPlacer(0, 0);
- if (doAllowUnregister)
- place(3, 1, mUnregisterButton, 3);
+ place(0, 0, mAccountNameLabel, 2);
+ place(0, 1, mSwitchLoginButton);
- place(0, 2, mChangePasswordButton, 3);
+ if (optionalActions & Net::LoginHandler::Unregister) {
+ gcn::Button *unregisterButton = new Button(_("Unregister"),
+ "unregister", this);
+ place(3, 1, unregisterButton);
+ }
- if (doAllowChangeEmail)
- place(3, 2, mChangeEmailButton, 3);
+ place(0, 2, mChangePasswordButton);
- place(0, 3, mCharEntries[0], 2, 3);
- place(2, 3, mCharEntries[1], 2, 3);
- place(4, 3, mCharEntries[2], 2, 3);
+ if (optionalActions & Net::LoginHandler::ChangeEmail) {
+ gcn::Button *changeEmailButton = new Button(_("Change Email"),
+ "change_email", this);
+ place(3, 2, changeEmailButton);
+ }
- int width = mAccountNameLabel->getWidth();
- width = std::max(width, mSwitchLoginButton->getWidth() +
- mUnregisterButton->getWidth());
- width = std::max(width, mChangePasswordButton->getWidth() +
- mChangeEmailButton->getWidth());
- width = std::max(width, 3 * mCharEntries[0]->getWidth());
+ place = getPlacer(0, 1);
+ place(0, 0, mCharEntries[0]);
+ place(1, 0, mCharEntries[1]);
+ place(2, 0, mCharEntries[2]);
- reflowLayout(width + 10, mAccountNameLabel->getHeight() +
- mSwitchLoginButton->getHeight() +
- mChangePasswordButton->getHeight() +
- mCharEntries[0]->getHeight() + 20);
+ reflowLayout();
center();
mCharEntries[0]->requestFocus();
@@ -195,7 +191,7 @@ void CharSelectDialog::action(const gcn::ActionEvent &event)
// Start new character dialog
CharCreateDialog *charCreateDialog =
new CharCreateDialog(this, mCharInfo->getPos());
- Net::getCharHandler()->setCharCreateDialog(charCreateDialog);
+ mCharHandler->setCharCreateDialog(charCreateDialog);
}
}
else if (event.getId() == "delete")
@@ -221,13 +217,13 @@ void CharSelectDialog::action(const gcn::ActionEvent &event)
void CharSelectDialog::attemptCharDelete()
{
- Net::getCharHandler()->deleteCharacter(mCharInfo->getPos(), mCharInfo->getEntry());
+ mCharHandler->deleteCharacter(mCharInfo->getPos(), mCharInfo->getEntry());
mCharInfo->lock();
}
void CharSelectDialog::attemptCharSelect()
{
- Net::getCharHandler()->chooseCharacter(mCharInfo->getPos(), mCharInfo->getEntry());
+ mCharHandler->chooseCharacter(mCharInfo->getPos(), mCharInfo->getEntry());
mCharInfo->lock();
}
@@ -266,13 +262,6 @@ void CharSelectDialog::chooseSelected()
attemptCharSelect();
}
-void CharSelectDialog::setNetworkOptions(bool allowUnregister,
- bool allowChangeEmail)
-{
- doAllowUnregister = allowUnregister;
- doAllowChangeEmail = allowChangeEmail;
-}
-
CharEntry::CharEntry(CharSelectDialog *m, char slot, LocalPlayer *chr):
mSlot(slot),
mCharacter(chr),
diff --git a/src/gui/charselectdialog.h b/src/gui/charselectdialog.h
index e1c8071e..0bb8e27f 100644
--- a/src/gui/charselectdialog.h
+++ b/src/gui/charselectdialog.h
@@ -36,6 +36,10 @@ class LocalPlayer;
class LoginData;
class PlayerBox;
+namespace Net {
+class CharHandler;
+}
+
/**
* Character selection dialog.
*
@@ -58,34 +62,29 @@ class CharSelectDialog : public Window, public gcn::ActionListener
void chooseSelected();
- static void setNetworkOptions(bool allowUnregister,
- bool allowChangeEmail);
-
private:
+ /**
+ * Communicate character deletion to the server.
+ */
+ void attemptCharDelete();
+
+ /**
+ * Communicate character selection to the server.
+ */
+ void attemptCharSelect();
+
LockedArray<LocalPlayer*> *mCharInfo;
gcn::Label *mAccountNameLabel;
gcn::Button *mSwitchLoginButton;
gcn::Button *mChangePasswordButton;
- gcn::Button *mChangeEmailButton;
- gcn::Button *mUnregisterButton;
CharEntry *mCharEntries[MAX_CHARACTER_COUNT];
LoginData *mLoginData;
- /**
- * Communicate character deletion to the server.
- */
- void attemptCharDelete();
-
- /**
- * Communicate character selection to the server.
- */
- void attemptCharSelect();
-
- static bool doAllowUnregister, doAllowChangeEmail;
+ Net::CharHandler *mCharHandler;
};
#endif
diff --git a/src/gui/widgets/layout.h b/src/gui/widgets/layout.h
index b9359e91..994c25fe 100644
--- a/src/gui/widgets/layout.h
+++ b/src/gui/widgets/layout.h
@@ -34,7 +34,6 @@ class LayoutCell;
class ContainerPlacer
{
public:
-
ContainerPlacer(gcn::Container *c = NULL, LayoutCell *l = NULL):
mContainer(c), mCell(l)
{}
@@ -58,7 +57,6 @@ class ContainerPlacer
(int x, int y, gcn::Widget *, int w = 1, int h = 1);
private:
-
gcn::Container *mContainer;
LayoutCell *mCell;
};
@@ -164,7 +162,6 @@ class LayoutCell
friend class LayoutArray;
public:
-
enum Alignment
{
LEFT, RIGHT, CENTER, FILL
@@ -235,7 +232,6 @@ class LayoutCell
void computeSizes();
private:
-
// Copy not allowed, as the cell may own an array.
LayoutCell(LayoutCell const &);
LayoutCell &operator=(LayoutCell const &);
@@ -283,10 +279,9 @@ class LayoutCell
* pixels between rows and between columns, and a margin of 6 pixels around the
* whole layout.
*/
-class Layout: public LayoutCell
+class Layout : public LayoutCell
{
public:
-
Layout();
/**
@@ -313,7 +308,6 @@ class Layout: public LayoutCell
};
private:
-
bool mComputed;
};
diff --git a/src/net/charhandler.h b/src/net/charhandler.h
index 9ca36a9f..ac235df5 100644
--- a/src/net/charhandler.h
+++ b/src/net/charhandler.h
@@ -33,6 +33,7 @@ class CharCreateDialog;
class LocalPlayer;
namespace Net {
+
class CharHandler
{
public:
@@ -50,6 +51,7 @@ class CharHandler
virtual void deleteCharacter(int slot, LocalPlayer* character) = 0;
};
-}
+
+} // namespace Net
#endif // CHARHANDLER_H
diff --git a/src/net/ea/generalhandler.cpp b/src/net/ea/generalhandler.cpp
index 46a115ff..692ebec0 100644
--- a/src/net/ea/generalhandler.cpp
+++ b/src/net/ea/generalhandler.cpp
@@ -103,7 +103,6 @@ GeneralHandler::GeneralHandler():
ItemDB::setStatsList(stats);
- CharSelectDialog::setNetworkOptions(false, false);
RegisterDialog::setEmail(NULL);
RegisterDialog::setGender(&netToken.sex);
}
diff --git a/src/net/ea/loginhandler.h b/src/net/ea/loginhandler.h
index bc1aa816..780aa832 100644
--- a/src/net/ea/loginhandler.h
+++ b/src/net/ea/loginhandler.h
@@ -46,6 +46,9 @@ class LoginHandler : public MessageHandler, public Net::LoginHandler
void disconnect();
+ int supportedOptionalActions() const
+ { return 0; }
+
void loginAccount(LoginData *loginData);
void changeEmail(const std::string &email);
diff --git a/src/net/loginhandler.h b/src/net/loginhandler.h
index 26dfb53b..5274bbea 100644
--- a/src/net/loginhandler.h
+++ b/src/net/loginhandler.h
@@ -35,6 +35,11 @@ namespace Net {
class LoginHandler
{
public:
+ enum OptionalAction {
+ Unregister = 0x1,
+ ChangeEmail = 0x2
+ };
+
virtual void setServer(const ServerInfo &server)
{ mServer = server; }
@@ -47,6 +52,8 @@ class LoginHandler
virtual void disconnect() = 0;
+ virtual int supportedOptionalActions() const = 0;
+
virtual void loginAccount(LoginData *loginData) = 0;
virtual void changeEmail(const std::string &email) = 0;
diff --git a/src/net/tmwserv/generalhandler.cpp b/src/net/tmwserv/generalhandler.cpp
index ede20ff0..0f4b5109 100644
--- a/src/net/tmwserv/generalhandler.cpp
+++ b/src/net/tmwserv/generalhandler.cpp
@@ -102,9 +102,8 @@ GeneralHandler::GeneralHandler():
stats.push_back(ItemDB::Stat("will", N_("Willpower %+d")));
ItemDB::setStatsList(stats);
-
+
ChangeEmailDialog::setEmail(&userEmail);
- CharSelectDialog::setNetworkOptions(true, true);
RegisterDialog::setEmail(&userEmail);
RegisterDialog::setGender(NULL);
}
diff --git a/src/net/tmwserv/loginhandler.h b/src/net/tmwserv/loginhandler.h
index 50b3d8c7..754fa71b 100644
--- a/src/net/tmwserv/loginhandler.h
+++ b/src/net/tmwserv/loginhandler.h
@@ -44,6 +44,9 @@ class LoginHandler : public MessageHandler, public Net::LoginHandler
void disconnect();
+ int supportedOptionalActions() const
+ { return Unregister | ChangeEmail; }
+
void loginAccount(LoginData *loginData);
void changeEmail(const std::string &email);