Path-722: Reset buttons to default state.

master
prep 2012-06-13 15:31:44 -04:00
parent 7d5c4d20b9
commit 9767b5a026
5 changed files with 34 additions and 112 deletions

View File

@ -1,7 +1,7 @@
/**
* @file LLPanelNavMeshRebake.cpp
* @author
* @brief
* @author prep
* @brief handles the buttons for navmesh rebaking
*
* $LicenseInfo:firstyear=2002&license=viewerlgpl$
* Second Life Viewer Source Code
@ -26,18 +26,13 @@
*/
#include "llviewerprecompiledheaders.h"
#include "llpathfindingmanager.h"
#include <string>
#include <map>
#include <boost/function.hpp>
#include <boost/signals2.hpp>
#include "llpanelnavmeshrebake.h"
#include "llagent.h"
#include "llfloaterreg.h"
#include "llhints.h"
#include "lltooltip.h"
#include "llbutton.h"
@ -46,7 +41,6 @@
LLPanelNavMeshRebake::LLPanelNavMeshRebake()
: mNavMeshRebakeButton( NULL )
, mNavMeshBakingButton( NULL )
, mAttached(false)
{
// make sure we have the only instance of this class
static bool b = true;
@ -54,47 +48,21 @@ LLPanelNavMeshRebake::LLPanelNavMeshRebake()
b=false;
}
// static
LLPanelNavMeshRebake* LLPanelNavMeshRebake::getInstance()
{
static LLPanelNavMeshRebake* panel = getPanel();
return panel;
}
//static
void LLPanelNavMeshRebake::setMode( ESNavMeshRebakeMode mode )
{
LLPanelNavMeshRebake* panel = getInstance();
panel->mNavMeshRebakeButton->setVisible( true );
//visibility of it should be updated after updating visibility of the buttons
panel->setVisible(TRUE);
}
void LLPanelNavMeshRebake::clearMode( ESNavMeshRebakeMode mode )
{
LLPanelNavMeshRebake* panel = getInstance();
switch(mode)
{
case NMRM_Visible:
panel->mNavMeshRebakeButton->setVisible(FALSE);
break;
default:
llerrs << "Unexpected mode is passed: " << mode << llendl;
}
}
BOOL LLPanelNavMeshRebake::postBuild()
{
//Rebake
//Rebake initiated
mNavMeshRebakeButton = getChild<LLButton>("navmesh_btn");
mNavMeshRebakeButton->setCommitCallback(boost::bind(&LLPanelNavMeshRebake::onNavMeshRebakeClick, this));
mNavMeshRebakeButton->setVisible( TRUE );
LLHints::registerHintTarget("navmesh_btn", mNavMeshRebakeButton->getHandle());
//Baking
//Baking...
mNavMeshBakingButton = getChild<LLButton>("navmesh_btn_baking");
mNavMeshBakingButton->setVisible( FALSE );
LLHints::registerHintTarget("navmesh_btn_baking", mNavMeshBakingButton->getHandle());
@ -103,11 +71,10 @@ BOOL LLPanelNavMeshRebake::postBuild()
void LLPanelNavMeshRebake::setVisible( BOOL visible )
{
LLPanel::setVisible(visible);
}
BOOL LLPanelNavMeshRebake::handleToolTip(S32 x, S32 y, MASK mask)
BOOL LLPanelNavMeshRebake::handleToolTip( S32 x, S32 y, MASK mask )
{
LLToolTipMgr::instance().unblockToolTips();
@ -118,67 +85,36 @@ BOOL LLPanelNavMeshRebake::handleToolTip(S32 x, S32 y, MASK mask)
return LLPanel::handleToolTip(x, y, mask);
}
void LLPanelNavMeshRebake::reparent(LLView* rootp)
void LLPanelNavMeshRebake::reparent( LLView* rootp )
{
LLPanel* parent = dynamic_cast<LLPanel*>(getParent());
LLPanel* parent = dynamic_cast<LLPanel*>( getParent() );
if (!parent)
{
return;
}
rootp->addChild(this);
mAttached = true;
}
//static
LLPanelNavMeshRebake* LLPanelNavMeshRebake::getPanel()
{
LLPanelNavMeshRebake* panel = new LLPanelNavMeshRebake();
panel->buildFromFile("panel_navmesh_rebake.xml");
panel->setVisible(FALSE);
//prep#panel->updatePosition();
//panel->updatePosition();
return panel;
}
void LLPanelNavMeshRebake::onNavMeshRebakeClick()
{
setFocus(FALSE);
mNavMeshRebakeButton->setVisible( FALSE );
mNavMeshBakingButton->setVisible( TRUE );
mNavMeshBakingButton->setForcePressedState( TRUE );
//post
LLPathfindingManager::getInstance()->triggerNavMeshRebuild();
}
/**
* Updates position to be center aligned with Move button.
*/
/*
void LLPanelNavMeshRebake::updatePosition()
void LLPanelNavMeshRebake::resetButtonStates()
{
if (mAttached) return;
mNavMeshRebakeButton->setVisible( TRUE );
mNavMeshBakingButton->setVisible( FALSE );
}
S32 y_pos = 0;
S32 bottom_tb_center = 0;
if (LLToolBar* toolbar_bottom = gToolBarView->getChild<LLToolBar>("toolbar_bottom"))
{
y_pos = toolbar_bottom->getRect().getHeight();
bottom_tb_center = toolbar_bottom->getRect().getCenterX();
}
S32 left_tb_width = 0;
if (LLToolBar* toolbar_left = gToolBarView->getChild<LLToolBar>("toolbar_left"))
{
left_tb_width = toolbar_left->getRect().getWidth();
}
if(LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("navmesh_rebake_container"))
{
panel_ssf_container->setOrigin(0, y_pos);
}
S32 x_pos = bottom_tb_center-getRect().getWidth()/2 - left_tb_width;
setOrigin( x_pos, 0);
*/

View File

@ -1,7 +1,7 @@
/**
* @file llpanelenavmeshrebake.h
* @author
* @brief
* @author prep
* @brief handles the buttons for navmesh rebaking
*
* $LicenseInfo:firstyear=2002&license=viewerlgpl$
* Second Life Viewer Source Code
@ -31,6 +31,7 @@
class LLPanelNavMeshRebake : public LLPanel
{
LOG_CLASS(LLPanelNavMeshRebake);
public:
@ -43,10 +44,9 @@ public:
} ESNavMeshRebakeMode;
void reparent( LLView* rootp );
void resetButtonStates();
static LLPanelNavMeshRebake* getInstance();
static void setMode( ESNavMeshRebakeMode mode );
static void clearMode( ESNavMeshRebakeMode mode );
/*virtual*/ BOOL postBuild();
/*virtual*/ void setVisible( BOOL visible );
@ -54,10 +54,9 @@ public:
/*virtual*/ void draw(){/*updatePosition(); */LLPanel::draw();}
/*virtual*/ BOOL handleToolTip( S32 x, S32 y, MASK mask );
protected:
LLPanelNavMeshRebake();
LLPanelNavMeshRebake();
private:
static LLPanelNavMeshRebake* getPanel();
@ -65,13 +64,10 @@ private:
//void updatePosition();
LLButton* mNavMeshRebakeButton;
LLButton* mNavMeshBakingButton;
LLHandle<LLPanel> mOriginalParent;
LLButton* mNavMeshBakingButton;
LLHandle<LLPanel> mOriginalParent;
bool mAttached;
};
#endif //LL_NAVMESHREBAKE_H

View File

@ -333,7 +333,7 @@ LLPathfindingNavMesh::navmesh_slot_t LLPathfindingManager::registerNavMeshListen
void LLPathfindingManager::requestGetNavMeshForRegion(LLViewerRegion *pRegion)
{
LLPathfindingNavMeshPtr navMeshPtr = getNavMeshForRegion(pRegion);
if (pRegion == NULL)
{
navMeshPtr->handleNavMeshNotEnabled();
@ -702,31 +702,30 @@ void LLPathfindingManager::displayNavMeshRebakePanel()
panel_nmr_container->setVisible( TRUE );
panel_namesh_rebake->reparent( rootp );
LLPanelNavMeshRebake::getInstance()->setVisible( TRUE );
LLPanelNavMeshRebake::getInstance()->resetButtonStates();
}
void LLPathfindingManager::hideNavMeshRebakePanel()
void LLPathfindingManager::hideNavMeshRebakePanel()
{
LLPanelNavMeshRebake::getInstance()->setVisible( FALSE );
}
void LLPathfindingManager::handleNavMeshRebakeResult( const LLSD &pContent )
{
}
void LLPathfindingManager::handleNavMeshRebakeError(U32 pStatus, const std::string &pReason, const std::string &pURL)
{
llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
}
//prep#
void LLPathfindingManager::handleNavMeshRebakeResult( const LLSD &pContent )
{
hideNavMeshRebakePanel();
}
void LLPathfindingManager::triggerNavMeshRebuild()
{
LLSD mPostData;
std::string url = getNavMeshStatusURLForRegion( getCurrentRegion() );
if ( url.empty() )
{
//prep#fix#error?
llwarns << "Error with request due to nonexistent URL"<<llendl;
}
else
{
@ -735,7 +734,6 @@ void LLPathfindingManager::triggerNavMeshRebuild()
LLHTTPClient::ResponderPtr responder = new NavMeshRebakeResponder( url );
LLHTTPClient::post( url, mPostData, responder );
}
}
//---------------------------------------------------------------------------
// LLNavMeshSimStateChangeNode

View File

@ -93,7 +93,8 @@ public:
#endif // XXX_STINSON_AGENT_STATE_DELETE_ME
void handleNavMeshRebakeResult( const LLSD &pContent );
void handleNavMeshRebakeError(U32 pStatus, const std::string &pReason, const std::string &pURL);
void handleNavMeshRebakeError( U32 pStatus, const std::string &pReason, const std::string &pURL );
void triggerNavMeshRebuild();
protected:
@ -123,7 +124,6 @@ private:
void displayNavMeshRebakePanel();
void hideNavMeshRebakePanel();
void triggerNavMeshRebuild();
#ifdef XXX_STINSON_AGENT_STATE_DELETE_ME
void requestGetAgentState();

View File

@ -200,9 +200,6 @@
#include "llviewerwindowlistener.h"
#include "llpaneltopinfobar.h"
//prep#
#include "llpathfindingmanager.h"
#if LL_WINDOWS
#include <tchar.h> // For Unicode conversion methods
#endif
@ -1926,12 +1923,7 @@ void LLViewerWindow::initWorldUI()
LLPanelStandStopFlying* panel_stand_stop_flying = LLPanelStandStopFlying::getInstance();
panel_ssf_container->addChild(panel_stand_stop_flying);
panel_ssf_container->setVisible(TRUE);
//prep#
/*LLPanel* panel_nmr_container = getRootView()->getChild<LLPanel>("navmesh_rebake_container");
LLPanelNavMeshRebake* panel_namesh_rebake = LLPanelNavMeshRebake::getInstance();
panel_nmr_container->addChild(panel_namesh_rebake);
panel_nmr_container->setVisible(TRUE);
*/
// Load and make the toolbars visible
// Note: we need to load the toolbars only *after* the user is logged in and IW
if (gToolBarView)