00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "gui/quitdialog.h"
00023
00024 #include "main.h"
00025
00026 #include "gui/widgets/button.h"
00027 #include "gui/widgets/radiobutton.h"
00028
00029 #include "utils/gettext.h"
00030
00031 QuitDialog::QuitDialog(bool* quitGame, QuitDialog** pointerToMe):
00032 Window(_("Quit"), true, NULL), mQuitGame(quitGame), mMyPointer(pointerToMe)
00033 {
00034
00035 mLogoutQuit = new RadioButton(_("Quit"), "quitdialog");
00036 mForceQuit = new RadioButton(_("Quit"), "quitdialog");
00037 mSwitchAccountServer = new RadioButton(_("Switch server"), "quitdialog");
00038 mSwitchCharacter = new RadioButton(_("Switch character"), "quitdialog");
00039 mOkButton = new Button(_("Ok"), "ok", this);
00040 mCancelButton = new Button(_("Cancel"), "cancel", this);
00041
00042 setContentSize(200, 91);
00043
00044 mLogoutQuit->setPosition(5, 5);
00045 mForceQuit->setPosition(5, 5);
00046 mSwitchAccountServer->setPosition(5, 14 + mLogoutQuit->getHeight());
00047 mSwitchCharacter->setPosition(5,
00048 23 + mLogoutQuit->getHeight() + mSwitchAccountServer->getHeight());
00049 mCancelButton->setPosition(
00050 200 - mCancelButton->getWidth() - 5,
00051 91 - mCancelButton->getHeight() - 5);
00052 mOkButton->setPosition(
00053 mCancelButton->getX() - mOkButton->getWidth() - 5,
00054 91 - mOkButton->getHeight() - 5);
00055
00056
00057 if (state == STATE_CHOOSE_SERVER ||
00058 state == STATE_CONNECT_ACCOUNT ||
00059 state == STATE_LOGIN ||
00060 state == STATE_LOGIN_ATTEMPT ||
00061 state == STATE_UPDATE)
00062 {
00063 mForceQuit->setSelected(true);
00064 add(mForceQuit);
00065 }
00066 else
00067 {
00068
00069 mLogoutQuit->setSelected(true);
00070 add(mLogoutQuit);
00071 add(mSwitchAccountServer);
00072
00073
00074 if (state == STATE_GAME) add(mSwitchCharacter);
00075 }
00076
00077 add(mOkButton);
00078 add(mCancelButton);
00079
00080 setLocationRelativeTo(getParent());
00081 setVisible(true);
00082
00083 mOkButton->requestFocus();
00084 }
00085
00086 QuitDialog::~QuitDialog()
00087 {
00088 if (mMyPointer) *mMyPointer = NULL;
00089
00090 delete mForceQuit;
00091 delete mLogoutQuit;
00092 delete mSwitchAccountServer;
00093 delete mSwitchCharacter;
00094 }
00095
00096 void QuitDialog::action(const gcn::ActionEvent &event)
00097 {
00098 if (event.getId() == "ok")
00099 {
00100 if (mForceQuit->isSelected())
00101 {
00102 state = STATE_FORCE_QUIT;
00103 }
00104 else if (mLogoutQuit->isSelected())
00105 {
00106 if ((state == STATE_GAME) && (mQuitGame))
00107 {
00108 *mQuitGame = true;
00109 }
00110 state = STATE_EXIT;
00111 }
00112 else if (mSwitchAccountServer->isSelected())
00113 {
00114 if ((state == STATE_GAME) && (mQuitGame))
00115 {
00116 *mQuitGame = true;
00117 }
00118 state = STATE_SWITCH_ACCOUNTSERVER_ATTEMPT;
00119 }
00120 else if (mSwitchCharacter->isSelected())
00121 {
00122 if (mQuitGame) *mQuitGame = true;
00123
00124 state = STATE_SWITCH_CHARACTER;
00125 }
00126
00127 }
00128 scheduleDelete();
00129 }