summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterhoverheight.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloaterhoverheight.cpp')
-rwxr-xr-xindra/newview/llfloaterhoverheight.cpp62
1 files changed, 26 insertions, 36 deletions
diff --git a/indra/newview/llfloaterhoverheight.cpp b/indra/newview/llfloaterhoverheight.cpp
index f25d491910..bcdab6b3a0 100755
--- a/indra/newview/llfloaterhoverheight.cpp
+++ b/indra/newview/llfloaterhoverheight.cpp
@@ -36,68 +36,58 @@
#include "llviewerregion.h"
#include "llvoavatarself.h"
-class LLHoverHeightResponder: public LLHTTPClient::Responder
+LLFloaterHoverHeight::LLFloaterHoverHeight(const LLSD& key) : LLFloater(key)
{
-public:
- LLHoverHeightResponder(): LLHTTPClient::Responder() {}
+}
-private:
- void httpFailure()
- {
- LL_WARNS() << dumpResponse() << LL_ENDL;
- }
+void LLFloaterHoverHeight::syncFromPreferenceSetting(void *user_data)
+{
+ LLVector3 offset = gSavedSettings.getVector3("AvatarPosFinalOffset");
+ F32 value = offset[2];
- void httpSuccess()
+ LLFloaterHoverHeight *self = static_cast<LLFloaterHoverHeight*>(user_data);
+ LLSliderCtrl* sldrCtrl = self->getChild<LLSliderCtrl>("HoverHeightSlider");
+ sldrCtrl->setValue(value,FALSE);
+ if (isAgentAvatarValid())
{
- LL_INFOS() << dumpResponse() << LL_ENDL;
+ gAgentAvatarp->sendHoverHeight();
}
-};
-
-LLFloaterHoverHeight::LLFloaterHoverHeight(const LLSD& key) : LLFloater(key)
-{
}
BOOL LLFloaterHoverHeight::postBuild()
{
-
- LLVector3 offset = gSavedSettings.getVector3("AvatarPosFinalOffset");
- F32 value = offset[2];
-
LLSliderCtrl* sldrCtrl = getChild<LLSliderCtrl>("HoverHeightSlider");
- sldrCtrl->setValue(value,FALSE);
sldrCtrl->setSliderMouseUpCallback(boost::bind(&LLFloaterHoverHeight::onFinalCommit,this));
sldrCtrl->setSliderEditorCommitCallback(boost::bind(&LLFloaterHoverHeight::onFinalCommit,this));
childSetCommitCallback("HoverHeightSlider", &LLFloaterHoverHeight::onSliderMoved, NULL);
+ // Initialize slider from pref setting.
+ syncFromPreferenceSetting(this);
+ // Update slider on future pref changes.
+ gSavedSettings.getControl("AvatarPosFinalOffset")->getCommitSignal()->connect(boost::bind(&syncFromPreferenceSetting, this));
+
return TRUE;
}
// static
void LLFloaterHoverHeight::onSliderMoved(LLUICtrl* ctrl, void* userData)
{
+ LLSliderCtrl* sldrCtrl = static_cast<LLSliderCtrl*>(ctrl);
+ F32 value = sldrCtrl->getValueF32();
+ LLVector3 offset = gSavedSettings.getVector3("AvatarPosFinalOffset");
+ offset[2] = value;
+ gAgentAvatarp->mHoverOffset = offset;
}
-// Do extra send-to-the-server work when slider drag completes, or new
+// Do send-to-the-server work when slider drag completes, or new
// value entered as text.
void LLFloaterHoverHeight::onFinalCommit()
{
- LL_INFOS() << "FINAL FINAL!!!" << LL_ENDL;
- sendHoverHeightUpdate();
-}
-
-void LLFloaterHoverHeight::sendHoverHeightUpdate()
-{
LLSliderCtrl* sldrCtrl = getChild<LLSliderCtrl>("HoverHeightSlider");
F32 value = sldrCtrl->getValueF32();
+ LLVector3 offset = gSavedSettings.getVector3("AvatarPosFinalOffset");
+ offset[2] = value;
+ gSavedSettings.setVector3("AvatarPosFinalOffset",offset);
+}
- std::string url = gAgent.getRegion()->getCapability("AgentPreferences");
- if (!url.empty())
- {
- LLSD update = LLSD::emptyMap();
- update["hover_height"] = value;
-
- LL_INFOS() << "updating hover height to " << value << LL_ENDL;
- LLHTTPClient::post(url, update, new LLHoverHeightResponder);
- }
-}