Moved recovery request into recovery dialog. Fixed recovery dialog to

work now (except the URL sent from the server is still wrong).
This commit is contained in:
hiker 2014-03-14 16:44:58 +11:00
parent 7e1a59fe99
commit 6afc12c866
5 changed files with 54 additions and 45 deletions

View File

@ -88,19 +88,6 @@ namespace Online
m_profile = NULL;
} // CurrentUser
// ------------------------------------------------------------------------
const XMLRequest * CurrentUser::requestRecovery(const core::stringw &username,
const core::stringw &email)
{
assert(m_state == US_SIGNED_OUT || m_state == US_GUEST);
XMLRequest * request = new XMLRequest();
request->setServerURL("client-user.php");
request->addParameter("action", "recovery");
request->addParameter("username", username);
request->addParameter("email", email);
request->queue();
return request;
} // requestRecovery
// ------------------------------------------------------------------------
const XMLRequest * CurrentUser::requestSignUp(const core::stringw &username,

View File

@ -168,7 +168,7 @@ namespace Online
/**Singleton */
static CurrentUser * get();
static void deallocate();
static void setUserDetails(HTTPRequest *html);
static void setUserDetails(HTTPRequest *request);
void requestSavedSession();
SignInRequest * requestSignIn( const irr::core::stringw &username,
@ -186,9 +186,6 @@ namespace Online
const irr::core::stringw &password_ver,
const irr::core::stringw &email);
const XMLRequest * requestRecovery(const irr::core::stringw &username,
const irr::core::stringw &email);
const XMLRequest * requestGetAddonVote(const std::string & addon_id) const;
const SetAddonVoteRequest * requestSetAddonVote(const std::string & addon_id, float rating) const;
void requestFriendRequest(const uint32_t friend_id) const;

View File

@ -32,25 +32,30 @@ using namespace irr::gui;
using namespace Online;
// -----------------------------------------------------------------------------
RecoveryDialog::RecoveryDialog() :
ModalDialog(0.8f,0.8f)
/** Constructor for the recovery dialog.
*/
RecoveryDialog::RecoveryDialog() : ModalDialog(0.8f,0.8f)
{
m_recovery_request = NULL;
m_self_destroy = false;
m_recovery_request = NULL;
m_self_destroy = false;
m_show_recovery_input = true;
}
m_show_recovery_info = false;
showRecoveryInput();
} // RecoveryDialog
// -----------------------------------------------------------------------------
/** Destructor, destroys the recovery request.
*/
RecoveryDialog::~RecoveryDialog()
{
delete m_recovery_request;
}
} //~RecoverDialog
// -----------------------------------------------------------------------------
void RecoveryDialog::showRecoveryInput(){
/** Shows the input screen to get the account name and email address.
*/
void RecoveryDialog::showRecoveryInput()
{
m_show_recovery_input = false;
clearWindow();
m_phase = Input;
@ -72,11 +77,13 @@ void RecoveryDialog::showRecoveryInput(){
assert(m_submit_widget != NULL);
m_cancel_widget = getWidget<IconButtonWidget>("cancel");
assert(m_cancel_widget != NULL);
}
} // showRecoveryInput
// -----------------------------------------------------------------------------
void RecoveryDialog::showRecoveryInfo(){
/** Informs the user that an email will be sent.
*/
void RecoveryDialog::showRecoveryInfo()
{
m_show_recovery_info = false;
clearWindow();
m_phase = Info;
@ -89,14 +96,15 @@ void RecoveryDialog::showRecoveryInfo(){
assert(m_options_widget != NULL);
m_cancel_widget = getWidget<IconButtonWidget>("cancel");
assert(m_cancel_widget != NULL);
}
} // showRecoveryInfo
// -----------------------------------------------------------------------------
/** Let esc act as cancel.
*/
bool RecoveryDialog::onEscapePressed()
{
return m_cancel_widget->isActivated();
}
} // onEscapePressed
// -----------------------------------------------------------------------------
@ -104,29 +112,40 @@ void RecoveryDialog::processInput()
{
const core::stringw username = m_username_widget->getText().trim();
const core::stringw email = m_email_widget->getText().trim();
if (username.size() < 4 || username.size() > 30 || email.size() < 4 || email.size() > 50)
if (username.size() < 4 || username.size() > 30 ||
email.size() < 4 || email.size() > 50 )
{
sfx_manager->quickSound("anvil");
m_info_widget->setErrorColor();
m_info_widget->setText(_("Username and/or email address invalid."), false);
m_info_widget->setText(_("Username and/or email address invalid."),
false);
}
else
{
m_info_widget->setDefaultColor();
m_options_widget->setDeactivated();
m_recovery_request = CurrentUser::get()->requestRecovery(username, email);
m_recovery_request = new XMLRequest();
m_recovery_request->setServerURL("client-user.php");
m_recovery_request->addParameter("action", "recovery");
m_recovery_request->addParameter("username", username);
m_recovery_request->addParameter("email", email);
m_recovery_request->queue();
}
}
} // processInput
// -----------------------------------------------------------------------------
GUIEngine::EventPropagation RecoveryDialog::processEvent(const std::string& eventSource)
/** Handle a user event.
*/
GUIEngine::EventPropagation
RecoveryDialog::processEvent(const std::string& eventSource)
{
std::string selection;
if (eventSource == m_options_widget->m_properties[PROP_ID])
selection = m_options_widget->getSelectionIDString(PLAYER_ID_GAME_MASTER);
selection =
m_options_widget->getSelectionIDString(PLAYER_ID_GAME_MASTER);
else
selection = eventSource;
if (selection == m_cancel_widget->m_properties[PROP_ID])
{
m_self_destroy = true;
@ -138,10 +157,11 @@ GUIEngine::EventPropagation RecoveryDialog::processEvent(const std::string& even
return GUIEngine::EVENT_BLOCK;
}
return GUIEngine::EVENT_LET;
}
} // processEvent
// -----------------------------------------------------------------------------
/** Called when the user pressed enter.
*/
void RecoveryDialog::onEnterPressedInternal()
{
@ -152,7 +172,10 @@ void RecoveryDialog::onEnterPressedInternal()
}
// -----------------------------------------------------------------------------
/** This is called every frame and checks if an outstanding recovery request
* was finished. If so, it displays the results.
* \param dt Time step size.
*/
void RecoveryDialog::onUpdate(float dt)
{
if(m_recovery_request != NULL)
@ -185,4 +208,4 @@ void RecoveryDialog::onUpdate(float dt)
showRecoveryInput();
else if (m_show_recovery_info)
showRecoveryInfo();
}
} // onUpdates

View File

@ -52,7 +52,7 @@ private:
bool m_show_recovery_input;
bool m_show_recovery_info;
const Online::XMLRequest * m_recovery_request;
Online::XMLRequest * m_recovery_request;
GUIEngine::TextBoxWidget * m_username_widget;
GUIEngine::TextBoxWidget * m_email_widget;

View File

@ -29,6 +29,7 @@
#include "states_screens/online_screen.hpp"
#include "states_screens/register_screen.hpp"
#include "states_screens/state_manager.hpp"
#include "states_screens/dialogs/recovery_dialog.hpp"
#include "utils/log.hpp"
#include "utils/translation.hpp"
@ -174,6 +175,7 @@ void LoginScreen::eventCallback(Widget* widget, const std::string& name,
}
else if(button=="recovery")
{
new RecoveryDialog();
}
else if(button=="cancel")
StateManager::get()->escapePressed();