Added 'always-show-login-screen' option, moved 'remember-password'

option from UI-options to UserScreen.
This commit is contained in:
hiker 2014-05-27 15:36:44 +10:00
parent 4ada050ca7
commit 36d705f021
9 changed files with 54 additions and 12 deletions

View File

@ -40,9 +40,9 @@
</div>
<div width="75%" height="fit" layout="horizontal-row" >
<checkbox id="remember-me"/>
<checkbox id="show-login"/>
<spacer width="20" height="100%" />
<label height="100%" I18N="In the ui settings" text="Remember user"/>
<label height="100%" I18N="In the ui settings" text="Always show login screen"/>
</div>
<spacer height="18" width="4"/>

View File

@ -17,6 +17,11 @@
<label proportion="1" height="100%" text_align="left" I18N="In the login screen" text="Online"/>
<checkbox id="online" I18N="In the login screen" text_align="left"/>
</div>
<div width="100%" height="fit" layout="horizontal-row" >
<label id="label_remember" proportion="1" height="100%" text_align="left"
I18N="In the login screen" text="Remember password"/>
<checkbox id="remember-user" I18N="In the login screen" text_align="left"/>
</div>
<!-- Disable guest accounts for now
<div width="100%" height="fit" layout="horizontal-row" >
<label id="label_guest" proportion="1" height="100%" text_align="left"

View File

@ -26,6 +26,11 @@
<label proportion="1" height="100%" text_align="left" I18N="In the login screen" text="Online"/>
<checkbox id="online" I18N="In the login screen" text_align="left"/>
</div>
<div width="100%" height="fit" layout="horizontal-row" >
<label id="label_remember" proportion="1" height="100%" text_align="left"
I18N="In the login screen" text="Remember password"/>
<checkbox id="remember-user" I18N="In the login screen" text_align="left"/>
</div>
<!-- Disable guest accounts for now
<div width="100%" height="fit" layout="horizontal-row" >
<label id="label_guest" proportion="1" height="100%" text_align="left"

View File

@ -166,7 +166,18 @@ PlayerManager::PlayerManager()
*/
PlayerManager::~PlayerManager()
{
// If the passwords should not be remembered, clear all saved sessions.
if(!UserConfigParams::m_remember_user)
{
PlayerProfile *player;
for_in(player, m_all_players)
{
player->clearSession();
}
}
save();
} // ~PlayerManager
// ----------------------------------------------------------------------------

View File

@ -682,6 +682,10 @@ namespace UserConfigParams
PARAM_PREFIX BoolUserConfigParam m_remember_user
PARAM_DEFAULT( BoolUserConfigParam(true, "remember_me",
"Automatically remember login data"));
PARAM_PREFIX BoolUserConfigParam m_always_show_login_screen
PARAM_DEFAULT( BoolUserConfigParam(false, "always_show_login_screen",
"Always show the login screen even if last player's session was saved."));
// ---- Online gameplay related
PARAM_PREFIX GroupUserConfigParam m_online_group

View File

@ -1289,10 +1289,14 @@ int main(int argc, char *argv[] )
if(!UserConfigParams::m_no_start_screen)
{
// If there is a current player, it was saved in the config file,
// so we immediately start the main menu. Otherwise show the login
// so we immediately start the main menu (unless it was requested
// to always show the login screen). Otherwise show the login
// screen first.
if(PlayerManager::getCurrentPlayer())
if(PlayerManager::getCurrentPlayer() && !
UserConfigParams::m_always_show_login_screen)
{
StateManager::get()->pushScreen(MainMenuScreen::getInstance());
}
else
{
StateManager::get()->pushScreen(UserScreen::getInstance());

View File

@ -21,6 +21,7 @@
#include "online/request_manager.hpp"
#include "config/player_manager.hpp"
#include "config/user_config.hpp"
#include "states_screens/state_manager.hpp"
#include <iostream>
@ -131,8 +132,11 @@ namespace Online
// In case that login id was not saved (or first start of stk),
// current player would not be defined at this stage.
PlayerProfile *player = PlayerManager::getCurrentPlayer();
if(player && player->wasOnlineLastTime())
if(player && player->wasOnlineLastTime() &&
!UserConfigParams::m_always_show_login_screen)
{
PlayerManager::resumeSavedSession();
}
} // startNetworkThread
// ------------------------------------------------------------------------

View File

@ -131,9 +131,9 @@ void OptionsScreenUI::init()
news->setState( UserConfigParams::m_internet_status
==RequestManager::IPERM_ALLOWED );
CheckBoxWidget* remember_me = getWidget<CheckBoxWidget>("remember-me");
assert( remember_me!= NULL );
remember_me->setState( UserConfigParams::m_remember_user);
CheckBoxWidget* show_login = getWidget<CheckBoxWidget>("show-login");
assert( show_login!= NULL );
show_login->setState( UserConfigParams::m_always_show_login_screen);
// --- select the right skin in the spinner
bool currSkinFound = false;
@ -245,11 +245,11 @@ void OptionsScreenUI::eventCallback(Widget* widget, const std::string& name, con
if(internet->getState())
NewsManager::get()->init(false);
}
else if (name=="remember-me")
else if (name=="show-login")
{
CheckBoxWidget* remember_me = getWidget<CheckBoxWidget>("remember-me");
assert( remember_me != NULL );
UserConfigParams::m_remember_user = remember_me->getState();
CheckBoxWidget* show_login = getWidget<CheckBoxWidget>("show-login");
assert( show_login != NULL );
UserConfigParams::m_always_show_login_screen = show_login->getState();
}
else if (name == "language")
{

View File

@ -73,6 +73,8 @@ void BaseUserScreen::init()
m_info_widget = getWidget<LabelWidget>("message");
assert(m_info_widget);
getWidget<CheckBoxWidget>("remember-user")
->setState(UserConfigParams::m_always_show_login_screen);
m_sign_out_name = "";
m_sign_in_name = "";
@ -192,6 +194,8 @@ void BaseUserScreen::makeEntryFieldsVisible()
bool online = m_online_cb->getState();
getWidget<LabelWidget>("label_username")->setVisible(online);
m_username_tb->setVisible(online);
getWidget<LabelWidget>("label_remember")->setVisible(online);
getWidget<CheckBoxWidget>("remember-user")->setVisible(online);
PlayerProfile *player = getSelectedPlayer();
if(player && player->hasSavedSession() && online)
{
@ -230,6 +234,11 @@ void BaseUserScreen::eventCallback(Widget* widget,
if (StringUtils::fromString(s_index, id))
selectUser(id);
}
else if (name == "remember-user")
{
UserConfigParams::m_remember_user =
getWidget<CheckBoxWidget>("remember-user")->getState();
}
else if (name == "online")
{
// If online access is not allowed, do not accept an online account