From a17dee79f04e21f414d59ed1d5566160dda8fa08 Mon Sep 17 00:00:00 2001 From: Todd Stinson Date: Wed, 15 Feb 2012 15:26:32 -0800 Subject: PATH-297: Basic freeze/unfreeze button switching for UI buttons. Also, adding ability to detect whether region is enabled for pathfinding. --- indra/newview/llfloaterpathfindingbasic.cpp | 83 +++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 3 deletions(-) (limited to 'indra/newview/llfloaterpathfindingbasic.cpp') diff --git a/indra/newview/llfloaterpathfindingbasic.cpp b/indra/newview/llfloaterpathfindingbasic.cpp index a875cae883..a1c333989e 100644 --- a/indra/newview/llfloaterpathfindingbasic.cpp +++ b/indra/newview/llfloaterpathfindingbasic.cpp @@ -30,6 +30,9 @@ #include "llsd.h" #include "llagent.h" +#include "lltextbase.h" +#include "llbutton.h" +#include "llviewerregion.h" //--------------------------------------------------------------------------- // LLFloaterPathfindingBasic @@ -37,15 +40,40 @@ BOOL LLFloaterPathfindingBasic::postBuild() { - childSetAction("enter_unfrozen_mode", boost::bind(&LLFloaterPathfindingBasic::onUnfreezeClicked, this)); - childSetAction("enter_frozen_mode", boost::bind(&LLFloaterPathfindingBasic::onFreezeClicked, this)); + mRegionNotEnabledText = findChild("disabled_warning_label"); + llassert(mRegionNotEnabledText != NULL); + + mUnfreezeLabel = findChild("unfreeze_label"); + llassert(mUnfreezeLabel != NULL); + + mUnfreezeButton = findChild("enter_unfrozen_mode"); + llassert(mUnfreezeButton != NULL); + mUnfreezeButton->setCommitCallback(boost::bind(&LLFloaterPathfindingBasic::onUnfreezeClicked, this)); + + mFreezeLabel = findChild("freeze_label"); + llassert(mFreezeLabel != NULL); + + mFreezeButton = findChild("enter_frozen_mode"); + llassert(mFreezeButton != NULL); + mFreezeButton->setCommitCallback(boost::bind(&LLFloaterPathfindingBasic::onFreezeClicked, this)); + + updateOnFrozenState(); return LLFloater::postBuild(); } +void LLFloaterPathfindingBasic::onOpen(const LLSD& key) +{ +} LLFloaterPathfindingBasic::LLFloaterPathfindingBasic(const LLSD& pSeed) - : LLFloater(pSeed) + : LLFloater(pSeed), + mRegionNotEnabledText(NULL), + mUnfreezeLabel(NULL), + mUnfreezeButton(NULL), + mFreezeLabel(NULL), + mFreezeButton(NULL), + mIsRegionFrozenXXX(true) { } @@ -53,12 +81,61 @@ LLFloaterPathfindingBasic::~LLFloaterPathfindingBasic() { } +std::string LLFloaterPathfindingBasic::getCapabilityURL() const +{ + std::string capURL(""); + + LLViewerRegion *region = gAgent.getRegion(); + if (region != NULL) + { + capURL = region->getCapability("RetrieveNavMeshSrc"); + } + + return capURL; +} + +void LLFloaterPathfindingBasic::updateOnFrozenState() +{ + std::string capURL = getCapabilityURL(); + + if (capURL.empty()) + { + mRegionNotEnabledText->setVisible(TRUE); + mUnfreezeLabel->setEnabled(FALSE); + mUnfreezeButton->setEnabled(FALSE); + mFreezeLabel->setEnabled(FALSE); + mFreezeButton->setEnabled(FALSE); + } + else + { + mRegionNotEnabledText->setVisible(FALSE); + if (mIsRegionFrozenXXX) + { + mUnfreezeLabel->setEnabled(TRUE); + mUnfreezeButton->setEnabled(TRUE); + mFreezeLabel->setEnabled(FALSE); + mFreezeButton->setEnabled(FALSE); + } + else + { + mUnfreezeLabel->setEnabled(FALSE); + mUnfreezeButton->setEnabled(FALSE); + mFreezeLabel->setEnabled(TRUE); + mFreezeButton->setEnabled(TRUE); + } + } +} + void LLFloaterPathfindingBasic::onUnfreezeClicked() { + mIsRegionFrozenXXX = false; + updateOnFrozenState(); llwarns << "functionality has not yet been implemented to set unfrozen state" << llendl; } void LLFloaterPathfindingBasic::onFreezeClicked() { + mIsRegionFrozenXXX = true; + updateOnFrozenState(); llwarns << "functionality has not yet been implemented to set frozen state" << llendl; } -- cgit v1.2.3