SuperTuxKart
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
BaseUserScreen Class Reference

The user management screen. More...

#include <user_screen.hpp>

Inheritance diagram for BaseUserScreen:
Inheritance graph
[legend]

Public Member Functions

virtual void loadedFromFile () OVERRIDE
 implement callback from parent class GUIEngine::Screen
 
virtual void eventCallback (GUIEngine::Widget *widget, const std::string &name, const int playerID) OVERRIDE
 implement callback from parent class GUIEngine::Screen More...
 
virtual void beforeAddingWidget () OVERRIDE
 implement callback from parent class GUIEngine::Screen
 
virtual void init () OVERRIDE
 implement callback from parent class GUIEngine::Screen More...
 
virtual void tearDown () OVERRIDE
 implement callback from parent class GUIEngine::Screen
 
virtual void unloaded () OVERRIDE
 implement optional callback from parent class GUIEngine::Screen
 
void setNewAccountData (bool online, bool auto_login, const core::stringw &online_name="", const core::stringw &password="")
 Stores information from the register screen. More...
 
void loginSuccessful ()
 Callback from player profile if login was successful.
 
void loginError (const irr::core::stringw &error_message)
 Callback from player profile if login was unsuccessful. More...
 
void logoutSuccessful ()
 Callback from player profile if logout was successful.
 
void logoutError (const irr::core::stringw &error_message)
 Callback from player profile if login was unsuccessful. More...
 
virtual GUIEngine::EventPropagation filterActions (PlayerAction action, int deviceID, const unsigned int value, Input::InputType type, int playerId) OVERRIDE
 Override this if you need to be notified of player actions in subclasses.
 
- Public Member Functions inherited from GUIEngine::Screen
 Screen (bool pause_race=true)
 Creates a dummy incomplete object; only use to override behaviour in sub-class.
 
 Screen (const char *filename, bool pause_race=true)
 Creates a screen populated by the widgets described in a STK GUI file. More...
 
bool operator== (const char *filename) const
 
void loadFromFile ()
 loads this Screen from the file passed to the constructor
 
bool isLoaded () const
 
bool throttleFPS () const
 
void addWidgets ()
 Adds the IrrLicht widgets corresponding to this screen to the IGUIEnvironment.
 
void calculateLayout ()
 Called after all widgets have been added. More...
 
void manualAddWidget (Widget *w)
 Can be used for custom purposes for which the load-screen-from-XML code won't make it.
 
void manualRemoveWidget (Widget *w)
 Can be used for custom purposes for which the load-screen-from-XML code won't make it. More...
 
void setUpdateInBackground (bool value)
 When set to true it updates the screen even if modal dialog is opened.
 
bool getUpdateInBackground ()
 
const std::string & getName () const
 
virtual void unload ()
 Next time this menu needs to be shown, don't use cached values, re-calculate everything. More...
 
bool needs3D ()
 Will be called to determine if the 3D scene must be rendered when at this screen.
 
void setNeeds3D (bool needs3D)
 Invoke this method for screens that use a 3D scene as background. More...
 
void push ()
 Displays this screen bu pushing it onto the stack of screen in the state manager. More...
 
virtual bool onEscapePressed ()
 Called when escape is pressed. More...
 
virtual void onDraw (float dt)
 optional callback you can override to be notified at every frame.
 
virtual MusicInformationgetMusic () const
 
virtual MusicInformationgetInGameMenuMusic () const
 
virtual int getWidth ()
 Implementing method from AbstractTopLevelContainer.
 
virtual int getHeight ()
 Implementing method from AbstractTopLevelContainer.
 
virtual void onDisabledItemClicked (const std::string &item)
 Callback you can use if you want to know when the user pressed on a disabled ribbon item. More...
 
virtual void filterInput (Input::InputType type, int deviceID, int btnID, int axisDir, int value)
 Override this if you need to be notified of raw input in subclasses.
 
virtual void onDialogClose ()
 Callback that gets called when a dialog is closed. More...
 
virtual void onFocusChanged (Widget *previous, Widget *focus, int playerID)
 Callback called when focus changes.
 
- Public Member Functions inherited from GUIEngine::AbstractTopLevelContainer
WidgetgetWidget (const char *name)
 This function returns a widget by name if that widget is found. More...
 
WidgetgetWidget (const int id)
 This function returns a widget by irrlicht ID if that widget is found. More...
 
template<typename T >
T * getWidget (const char *name)
 This function searches and returns a widget by name, cast as specified type, if that widget is found and the type is correct. More...
 
WidgetgetFirstWidget (PtrVector< Widget > *within_vector=NULL)
 This function returns the first widget found in within_vector. More...
 
WidgetgetLastWidget (PtrVector< Widget > *within_vector=NULL)
 This function returns the last widget found in within_vector. More...
 
void elementsWereDeleted (PtrVector< Widget > *within_vector=NULL)
 This function is called when screen is removed. More...
 
bool isMyChild (Widget *widget) const
 This function checks if a widget is a child of the container. More...
 

Protected Member Functions

 BaseUserScreen (const std::string &name)
 
- Protected Member Functions inherited from GUIEngine::AbstractTopLevelContainer
void addWidgetsRecursively (PtrVector< Widget > &widgets, Widget *parent=NULL)
 This function adds a list of widgets recursively, effectively creating the hierarchy of widgets. More...
 

Private Types

enum  UserScreenState { STATE_NONE =0, STATE_LOGIN =1, STATE_LOGOUT =2 }
 The state of the user screen. More...
 

Private Member Functions

void selectUser (int index)
 Called when a user is selected. More...
 
void makeEntryFieldsVisible ()
 Make the entry fields either visible or invisible. More...
 
void login ()
 Called when OK or OK-and-save is clicked. More...
 
void closeScreen ()
 Closes the BaseUserScreen, and makes sure that the right screen is displayed next.
 
void deletePlayer ()
 Called when a player will be deleted.
 
void doDeletePlayer ()
 Callback when the user confirms to delete a player. More...
 
PlayerProfilegetSelectedPlayer ()
 
virtual void onUpdate (float dt) OVERRIDE
 Called once every frame. More...
 

Private Attributes

enum BaseUserScreen::UserScreenState m_state
 
irr::core::stringw m_sign_out_name
 The user name that is currently being logged out. More...
 
irr::core::stringw m_sign_in_name
 The user name that is currently being logged out. More...
 
GUIEngine::CheckBoxWidgetm_online_cb
 Online check box. More...
 
GUIEngine::TextBoxWidgetm_username_tb
 User name entry field. More...
 
GUIEngine::TextBoxWidgetm_password_tb
 Password widget. More...
 
GUIEngine::LabelWidgetm_info_widget
 Label field for warning and error messages. More...
 
GUIEngine::RibbonWidgetm_options_widget
 The ribbon with all buttons. More...
 
GUIEngine::DynamicRibbonWidgetm_players
 The dynamic ribbon containing all players. More...
 
bool m_new_registered_data
 Set to indicate when the sceen is initialised that new data from a registration are available, and therefore entry fields are not all cleared. More...
 
bool m_auto_login
 Set from the register screen if the newly created account can be used directly without waiting to confirm the account. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from GUIEngine::Screen
static void parseScreenFileDiv (irr::io::IXMLReader *xml, PtrVector< Widget > &append_to, irr::gui::IGUIElement *parent=NULL)
 Loads a GUI screen from its XML file. More...
 
- Static Public Member Functions inherited from GUIEngine::AbstractTopLevelContainer
static WidgetgetWidget (const char *name, PtrVector< Widget > *within_vector)
 This function returns a widget by name if that widget is found in within_vector. More...
 
static WidgetgetWidget (const int id, PtrVector< Widget > *within_vector)
 This function returns a widget by irrlicht ID if that widget is found. More...
 
- Protected Attributes inherited from GUIEngine::Screen
bool m_throttle_FPS
 
- Protected Attributes inherited from GUIEngine::AbstractTopLevelContainer
PtrVector< Widget, HOLD > m_widgets
 the widgets in this screen
 
Widgetm_first_widget
 AbstractTopLevelContainer is generally able to determine its first widget just fine, but in highly complex screens (e.g. More...
 
Widgetm_last_widget
 AbstractTopLevelContainer is generally able to determine its last widget just fine, but in highly complex screens (e.g. More...
 

Detailed Description

The user management screen.

The screen cames in two variations: either as a stand-alone screen before the main menu (on first time STK is started, or it the user is not remembered), but also as tab in the options menu. To implement this, we use one common base class that implements nearly all functionality, and derive to classes - one for the stand alone version, one for the version with tabs.

Member Enumeration Documentation

◆ UserScreenState

The state of the user screen.

Note that this is a bit mask, since the current user can be logged out, and the new one logged in at the same time.

Member Function Documentation

◆ doDeletePlayer()

void BaseUserScreen::doDeletePlayer ( )
private

Callback when the user confirms to delete a player.

This function actually deletes the player, discards the dialog, and re-initialised the BaseUserScreen to display only the available players.

◆ eventCallback()

void BaseUserScreen::eventCallback ( GUIEngine::Widget widget,
const std::string &  name,
const int  playerID 
)
virtual

implement callback from parent class GUIEngine::Screen

Called when the user selects anything on the screen.

Implements GUIEngine::Screen.

Reimplemented in TabbedUserScreen.

◆ init()

void BaseUserScreen::init ( )
virtual

implement callback from parent class GUIEngine::Screen

Initialises the user screen.

Searches for all players to fill the list of users with their icons, and initialises all widgets for the current user (e.g. the online flag etc).

Reimplemented from GUIEngine::Screen.

Reimplemented in TabbedUserScreen.

◆ login()

void BaseUserScreen::login ( )
private

Called when OK or OK-and-save is clicked.

This will trigger the actual login (if requested) etc.

Parameters
remember_meTrue if the login details should be remembered, so that next time this menu can be skipped.

◆ loginError()

void BaseUserScreen::loginError ( const irr::core::stringw &  error_message)

Callback from player profile if login was unsuccessful.

Parameters
error_messageContains the error message.

◆ logoutError()

void BaseUserScreen::logoutError ( const irr::core::stringw &  error_message)

Callback from player profile if login was unsuccessful.

Parameters
error_messageContains the error message.

◆ makeEntryFieldsVisible()

void BaseUserScreen::makeEntryFieldsVisible ( )
private

Make the entry fields either visible or invisible.

Parameters
onlineOnline state, which dicates if the entry fields are visible (true) or not.

◆ onUpdate()

void BaseUserScreen::onUpdate ( float  dt)
privatevirtual

Called once every frame.

It will replace this screen with the main menu screen if a successful login happened.

Reimplemented from GUIEngine::Screen.

◆ selectUser()

void BaseUserScreen::selectUser ( int  index)
private

Called when a user is selected.

It updates the online checkbox and entry fields.

◆ setNewAccountData()

void BaseUserScreen::setNewAccountData ( bool  online,
bool  auto_login,
const core::stringw &  online_name = "",
const core::stringw &  password = "" 
)

Stores information from the register screen.

It allows this screen to use the entered user name and password to prefill fields so that the user does not have to enter them again.

Parameters
onlineIf the user created an online account.
auto-loginIf the user should be automatically logged in online. This can not be done for newly created online accounts, since they need to be confirmed first.
online_nameThe online account name.
passwordThe password for the online account.

Member Data Documentation

◆ m_auto_login

bool BaseUserScreen::m_auto_login
private

Set from the register screen if the newly created account can be used directly without waiting to confirm the account.

◆ m_info_widget

GUIEngine::LabelWidget* BaseUserScreen::m_info_widget
private

Label field for warning and error messages.

◆ m_new_registered_data

bool BaseUserScreen::m_new_registered_data
private

Set to indicate when the sceen is initialised that new data from a registration are available, and therefore entry fields are not all cleared.

◆ m_online_cb

GUIEngine::CheckBoxWidget* BaseUserScreen::m_online_cb
private

Online check box.

◆ m_options_widget

GUIEngine::RibbonWidget* BaseUserScreen::m_options_widget
private

The ribbon with all buttons.

◆ m_password_tb

GUIEngine::TextBoxWidget* BaseUserScreen::m_password_tb
private

Password widget.

◆ m_players

GUIEngine::DynamicRibbonWidget* BaseUserScreen::m_players
private

The dynamic ribbon containing all players.

◆ m_sign_in_name

irr::core::stringw BaseUserScreen::m_sign_in_name
private

The user name that is currently being logged out.

Used to display more meaningful sign-out message.

◆ m_sign_out_name

irr::core::stringw BaseUserScreen::m_sign_out_name
private

The user name that is currently being logged out.

Used to display more meaningful sign-out message.

◆ m_username_tb

GUIEngine::TextBoxWidget* BaseUserScreen::m_username_tb
private

User name entry field.


The documentation for this class was generated from the following files: