CHANGED: #1471 CDBGroupComboBox no longer depends on the isLoggedin global Ryzom game variable.

--HG--
branch : gui-refactoring
This commit is contained in:
dfighter1985 2012-06-29 00:30:27 +02:00
parent 9cb78fe4f5
commit d82891c719
5 changed files with 53 additions and 33 deletions

View file

@ -1351,6 +1351,7 @@ void CFarTP::onDssDown(bool forceReturn)
} }
extern bool loginFinished; extern bool loginFinished;
void setLoginFinished( bool f );
extern bool loginOK; extern bool loginOK;
void CFarTP::joinSessionResult(uint32 /* userId */, TSessionId /* sessionId */, uint32 /* result */, const std::string &/* shardAddr */, const std::string &/* participantStatus */) void CFarTP::joinSessionResult(uint32 /* userId */, TSessionId /* sessionId */, uint32 /* result */, const std::string &/* shardAddr */, const std::string &/* participantStatus */)
@ -1365,7 +1366,7 @@ void CFarTP::joinSessionResult(uint32 /* userId */, TSessionId /* sessionId */,
// //
// FSAddr = shardAddr; // FSAddr = shardAddr;
// //
// loginFinished = true; // setLoginFinished( true );
// loginOK = true; // loginOK = true;
// //
// LoginSM.pushEvent(CLoginStateMachine::ev_connect); // LoginSM.pushEvent(CLoginStateMachine::ev_connect);

View file

@ -15,24 +15,22 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdpch.h"
#include "dbgroup_combo_box.h" #include "dbgroup_combo_box.h"
#include "nel/gui/group_menu.h" #include "nel/gui/group_menu.h"
#include "nel/misc/xml_auto_ptr.h" #include "nel/misc/xml_auto_ptr.h"
#include "interface_manager.h"
#include "nel/gui/ctrl_button.h" #include "nel/gui/ctrl_button.h"
#include "nel/gui/action_handler.h" #include "nel/gui/action_handler.h"
#include "nel/gui/lua_ihm.h" #include "nel/gui/lua_ihm.h"
#include "nel/gui/widget_manager.h"
#include "nel/gui/lua_ihm.h"
using namespace std; using namespace std;
using namespace NLMISC; using namespace NLMISC;
NLMISC_REGISTER_OBJECT(CViewBase, CDBGroupComboBox, std::string, "combo_box"); NLMISC_REGISTER_OBJECT(CViewBase, CDBGroupComboBox, std::string, "combo_box");
extern bool loginFinished; std::string CDBGroupComboBox::measureMenu;
std::string CDBGroupComboBox::selectMenu;
std::string CDBGroupComboBox::selectMenuOut;
// *************************************************************************** // ***************************************************************************
CDBGroupComboBox::CDBGroupComboBox(const TCtorParam &param) CDBGroupComboBox::CDBGroupComboBox(const TCtorParam &param)
@ -56,9 +54,8 @@ CDBGroupComboBox::~CDBGroupComboBox()
// *************************************************************************** // ***************************************************************************
sint32 CDBGroupComboBox::evalContentWidth() const sint32 CDBGroupComboBox::evalContentWidth() const
{ {
CInterfaceManager *pIM = CInterfaceManager::getInstance();
// get the menu to open. // get the menu to open.
CGroupMenu *groupMenu= dynamic_cast<CGroupMenu*>(CWidgetManager::getInstance()->getElementFromId( loginFinished ? WIN_COMBO_BOX_MEASURE_MENU : WIN_COMBO_BOX_MEASURE_MENU_LOGIN )); CGroupMenu *groupMenu= dynamic_cast<CGroupMenu*>(CWidgetManager::getInstance()->getElementFromId( CDBGroupComboBox::measureMenu ));
if( !groupMenu ) if( !groupMenu )
{ {
return 0; return 0;
@ -543,7 +540,6 @@ class CHandlerComboBoxSelectStart : public IActionHandler
public: public:
virtual void execute (CCtrlBase *pCaller, const std::string &/* Params */) virtual void execute (CCtrlBase *pCaller, const std::string &/* Params */)
{ {
CInterfaceManager *pIM= CInterfaceManager::getInstance();
CDBGroupComboBox *pCB = dynamic_cast<CDBGroupComboBox*>(pCaller->getParent()); CDBGroupComboBox *pCB = dynamic_cast<CDBGroupComboBox*>(pCaller->getParent());
if (pCB == NULL) return; if (pCB == NULL) return;
// if no choice, return. // if no choice, return.
@ -551,10 +547,10 @@ public:
return; return;
// get the menu to open. // get the menu to open.
CGroupMenu *groupMenu= dynamic_cast<CGroupMenu*>(CWidgetManager::getInstance()->getElementFromId(loginFinished ? WIN_COMBO_BOX_SELECT_MENU: WIN_COMBO_BOX_SELECT_MENU_LOGIN )); CGroupMenu *groupMenu= dynamic_cast<CGroupMenu*>(CWidgetManager::getInstance()->getElementFromId( CDBGroupComboBox::selectMenu ));
if( !groupMenu ) if( !groupMenu )
{ {
groupMenu= dynamic_cast<CGroupMenu*>(CWidgetManager::getInstance()->getElementFromId(WIN_COMBO_BOX_SELECT_MENU_OUTGAME)); groupMenu= dynamic_cast<CGroupMenu*>(CWidgetManager::getInstance()->getElementFromId( CDBGroupComboBox::selectMenuOut ));
} }
if( !groupMenu ) if( !groupMenu )
return; return;
@ -606,7 +602,6 @@ class CHandlerComboBoxSelectEnd : public IActionHandler
public: public:
virtual void execute (CCtrlBase * /* pCaller */, const std::string &Params) virtual void execute (CCtrlBase * /* pCaller */, const std::string &Params)
{ {
CInterfaceManager *pIM= CInterfaceManager::getInstance();
CDBGroupComboBox *pCB = dynamic_cast<CDBGroupComboBox*>(CWidgetManager::getInstance()->getCtrlLaunchingModal()); CDBGroupComboBox *pCB = dynamic_cast<CDBGroupComboBox*>(CWidgetManager::getInstance()->getCtrlLaunchingModal());
if (pCB == NULL) return; if (pCB == NULL) return;

View file

@ -30,17 +30,6 @@ namespace NLGUI
} }
// ***************************************************************************
#define WIN_COMBO_BOX_SELECT_MENU "ui:interface:combo_box_select_menu"
#define WIN_COMBO_BOX_MEASURE_MENU "ui:interface:combo_box_measure_menu"
#define WIN_COMBO_BOX_SELECT_MENU_OUTGAME "ui:outgame:combo_box_select_menu"
#define WIN_COMBO_BOX_SELECT_MENU_LOGIN "ui:login:combo_box_select_menu"
#define WIN_COMBO_BOX_MEASURE_MENU_LOGIN "ui:login:combo_box_measure_menu"
// *************************************************************************** // ***************************************************************************
/** /**
* Widget: ComboBox of text * Widget: ComboBox of text
@ -155,12 +144,16 @@ protected:
private: private:
void setup(); void setup();
void dirt(); void dirt();
public: public:
// private : fill a menu with current content // private : fill a menu with current content
void fillMenu(CGroupMenu *groupMenu) const; void fillMenu(CGroupMenu *groupMenu) const;
static std::string measureMenu;
static std::string selectMenu;
static std::string selectMenuOut;
}; };

View file

@ -174,6 +174,7 @@ using namespace NLNET;
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
extern bool loginFinished; extern bool loginFinished;
void setLoginFinished( bool f );
// Edit actions // Edit actions
CActionsManager EditActions; CActionsManager EditActions;
@ -788,7 +789,7 @@ void badXMLParseMessageBox()
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void CInterfaceManager::initInGame() void CInterfaceManager::initInGame()
{ {
loginFinished = true; setLoginFinished( true );
_LogState = false; _LogState = false;
// Whole initInGame profile // Whole initInGame profile

View file

@ -40,6 +40,7 @@
#include "nel/gui/view_text.h" #include "nel/gui/view_text.h"
#include "nel/gui/ctrl_button.h" #include "nel/gui/ctrl_button.h"
#include "nel/gui/ctrl_text_button.h" #include "nel/gui/ctrl_text_button.h"
#include "interface_v3/dbgroup_combo_box.h"
#include "sound_manager.h" #include "sound_manager.h"
#include "far_tp.h" #include "far_tp.h"
@ -143,6 +144,33 @@ uint32 TotalPatchSize;
CLoginStateMachine LoginSM; CLoginStateMachine LoginSM;
// ***************************************************************************
#define WIN_COMBO_BOX_SELECT_MENU "ui:interface:combo_box_select_menu"
#define WIN_COMBO_BOX_MEASURE_MENU "ui:interface:combo_box_measure_menu"
#define WIN_COMBO_BOX_SELECT_MENU_OUTGAME "ui:outgame:combo_box_select_menu"
#define WIN_COMBO_BOX_SELECT_MENU_LOGIN "ui:login:combo_box_select_menu"
#define WIN_COMBO_BOX_MEASURE_MENU_LOGIN "ui:login:combo_box_measure_menu"
bool isLoginFinished()
{
return loginFinished;
}
void setLoginFinished( bool f )
{
loginFinished = f;
if( loginFinished )
{
CDBGroupComboBox::measureMenu.assign( WIN_COMBO_BOX_MEASURE_MENU );
CDBGroupComboBox::selectMenu.assign( WIN_COMBO_BOX_SELECT_MENU );
}
else
{
CDBGroupComboBox::measureMenu.assign( WIN_COMBO_BOX_MEASURE_MENU_LOGIN );
CDBGroupComboBox::selectMenu.assign( WIN_COMBO_BOX_SELECT_MENU_LOGIN );
}
}
// *************************************************************************** // ***************************************************************************
// Pop a fatal error message box, giving the option to 'quit' the client, plus a help button // Pop a fatal error message box, giving the option to 'quit' the client, plus a help button
@ -349,6 +377,7 @@ static void updatePatchingInfoText(const std::string &baseUIPath)
// Main loop of the login step // Main loop of the login step
void loginMainLoop() void loginMainLoop()
{ {
CDBGroupComboBox::selectMenuOut.assign( WIN_COMBO_BOX_SELECT_MENU_OUTGAME );
CInterfaceManager *pIM = CInterfaceManager::getInstance(); CInterfaceManager *pIM = CInterfaceManager::getInstance();
CPatchManager *pPM = CPatchManager::getInstance(); CPatchManager *pPM = CPatchManager::getInstance();
@ -757,7 +786,7 @@ void initLoginScreen()
CCtrlTextButton *pCB = dynamic_cast<CCtrlTextButton*>(CWidgetManager::getInstance()->getElementFromId(CTRL_BUTTON_CONNECT)); CCtrlTextButton *pCB = dynamic_cast<CCtrlTextButton*>(CWidgetManager::getInstance()->getElementFromId(CTRL_BUTTON_CONNECT));
if (pCB != NULL) pCB->setActive(false); if (pCB != NULL) pCB->setActive(false);
loginFinished = false; setLoginFinished( false );
loginOK = false; loginOK = false;
} }
@ -882,6 +911,7 @@ bool login()
// CCtrlTextButton *pCB = dynamic_cast<CCtrlTextButton*>(CWidgetManager::getInstance()->getElementFromId(CTRL_BUTTON_CONNECT)); // CCtrlTextButton *pCB = dynamic_cast<CCtrlTextButton*>(CWidgetManager::getInstance()->getElementFromId(CTRL_BUTTON_CONNECT));
// if (pCB != NULL) pCB->setActive(false); // if (pCB != NULL) pCB->setActive(false);
// //
// setLoginFinished( false );
// loginFinished = false; // loginFinished = false;
// loginOK = false; // loginOK = false;
@ -1280,7 +1310,7 @@ class CAHOnGameConfiguration : public IActionHandler
{ {
// launch the ryzom configurator // launch the ryzom configurator
launchProgram(Configurator, ""); launchProgram(Configurator, "");
loginFinished = true; setLoginFinished( true );
loginOK = false; loginOK = false;
LoginSM.pushEvent(CLoginStateMachine::ev_quit); LoginSM.pushEvent(CLoginStateMachine::ev_quit);
@ -1301,7 +1331,7 @@ class CAHLoginQuit : public IActionHandler
{ {
nlinfo("CAHLoginQuit called"); nlinfo("CAHLoginQuit called");
loginFinished = true; setLoginFinished( true );
loginOK = false; loginOK = false;
LoginSM.pushEvent(CLoginStateMachine::ev_quit); LoginSM.pushEvent(CLoginStateMachine::ev_quit);
@ -1400,7 +1430,7 @@ void ConnectToShard()
if (ClientCfg.R2Mode) if (ClientCfg.R2Mode)
{ {
// r2 mode // r2 mode
loginFinished = true; setLoginFinished( true );
loginOK = true; loginOK = true;
LoginSM.pushEvent(CLoginStateMachine::ev_enter_game); LoginSM.pushEvent(CLoginStateMachine::ev_enter_game);
@ -1414,7 +1444,7 @@ void ConnectToShard()
if(res.empty()) if(res.empty())
{ {
loginFinished = true; setLoginFinished( true );
loginOK = true; loginOK = true;
LoginSM.pushEvent(CLoginStateMachine::ev_enter_game); LoginSM.pushEvent(CLoginStateMachine::ev_enter_game);
@ -2625,7 +2655,7 @@ class CAHOnConnectToShard: public IActionHandler
Cookie[i] = '|'; Cookie[i] = '|';
} }
loginFinished = true; setLoginFinished( true );
loginOK = true; loginOK = true;
LoginSM.pushEvent(CLoginStateMachine::ev_connect); LoginSM.pushEvent(CLoginStateMachine::ev_connect);
@ -2639,7 +2669,7 @@ class CAHOnBackToLogin: public IActionHandler
{ {
virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */) virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */)
{ {
loginFinished = false; setLoginFinished( false );
loginOK = false; loginOK = false;
LoginSM.pushEvent(CLoginStateMachine::ev_relog); LoginSM.pushEvent(CLoginStateMachine::ev_relog);