summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llpaneleditwearable.cpp96
-rw-r--r--indra/newview/llpaneleditwearable.h3
2 files changed, 66 insertions, 33 deletions
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 9862c98cc8..997edbab07 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -26,6 +26,8 @@
#include "llviewerprecompiledheaders.h"
+#include <boost/intrusive_ptr.hpp>
+
#include "llpaneleditwearable.h"
#include "llpanel.h"
#include "llviewerwearable.h"
@@ -47,6 +49,7 @@
#include "llscrollingpanelparam.h"
#include "llradiogroup.h"
#include "llnotificationsutil.h"
+#include "llhttpclient.h"
#include "llcolorswatch.h"
#include "lltexturectrl.h"
@@ -1028,44 +1031,75 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)
}
}
+class LLIncrementCofVersionResponder : public LLHTTPClient::Responder
+{
+public:
+ LLIncrementCofVersionResponder(S32 retries);
+ virtual ~LLIncrementCofVersionResponder();
+
+ virtual void result(const LLSD &pContent);
+ virtual void error(U32 pStatus, const std::string& pReason);
+
+protected:
+
+private:
+ LLAgent *mAgent;
+ S32 mRetries;
+};
+
+LLIncrementCofVersionResponder::LLIncrementCofVersionResponder(S32 retries)
+ : LLHTTPClient::Responder(),
+ mRetries(retries)
+{
+}
+
+LLIncrementCofVersionResponder::~LLIncrementCofVersionResponder()
+{
+}
+
+void LLIncrementCofVersionResponder::result(const LLSD &pContent)
+{
+ lldebugs << "Successfully incremented agent's COF." << llendl;
+
+}
+
+void LLIncrementCofVersionResponder::error(U32 pStatus, const std::string& pReason)
+{
+ llwarns << "While attempting to increment the agent's cof we got an error because '"
+ << pReason << "' [status:" << pStatus << "]" << llendl;
+ LLPanelEditWearable::incrementCofVersion(mRetries++);
+}
+
//static
-void LLPanelEditWearable::incrementCofVersion()
+void LLPanelEditWearable::incrementCofVersion(S32 retries)
{
- // Create a response handler
- LLHTTPClient::ResponderPtr responderPtr = LLHTTPClient::ResponderPtr(new LLMaturityPreferencesResponder(this));
+ // Create a response handler
+ LLHTTPClient::ResponderPtr responderPtr = LLHTTPClient::ResponderPtr(new LLIncrementCofVersionResponder(retries));
- // Look up the capability to POST to.
- std::string url = gAgent.getRegion()->getCapability("IncrementCofVersion");
+ // If we don't have a region, report it as an error
+ if (gAgent.getRegion() == NULL)
+ {
+ responderPtr->error(0U, "region is not defined");
+ }
+ else
+ {
+ // Find the capability to send maturity preference
+ std::string url = gAgent.getRegion()->getCapability("IncrementCofVersion");
- // If we don't have a region, report it as an error
- if (getRegion() == NULL)
+ // If the capability is not defined, report it as an error
+ if (url.empty())
{
- responderPtr->error(0U, "region is not defined");
+ responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region");
}
else
{
- // Find the capability to send maturity preference
- std::string url = getRegion()->getCapability("UpdateAgentInformation");
-
- // If the capability is not defined, report it as an error
- if (url.empty())
- {
- responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region");
- }
- else
- {
- // Set new access preference
- LLSD access_prefs = LLSD::emptyMap();
- access_prefs["max"] = LLViewerRegion::accessToShortString(pPreferredMaturity);
-
- LLSD body = LLSD::emptyMap();
- body["access_prefs"] = access_prefs;
- llinfos << "Sending viewer preferred maturity to '" << LLViewerRegion::accessToString(pPreferredMaturity)
- << "' via capability to: " << url << llendl;
- LLSD headers;
- LLHTTPClient::post(url, body, responderPtr, headers, 30.0f);
- }
- }
+ llinfos << "Requesting cof_version be incremented via capability to: "
+ << url << llendl;
+ LLSD headers;
+ LLSD body = LLSD::emptyMap();
+ LLHTTPClient::post(url, body, responderPtr, headers, 30.0f);
+ }
+ }
}
void LLPanelEditWearable::saveChanges(bool force_save_as)
@@ -1091,7 +1125,7 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)
gAgentWearables.saveWearable(mWearablePtr->getType(), index, TRUE, new_name);
}
- LLPanelEditWearable::incrementCofVersion();
+ LLPanelEditWearable::incrementCofVersion(0);
}
void LLPanelEditWearable::revertChanges()
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 619486bb5b..9c9eac791e 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -78,6 +78,7 @@ public:
virtual void setVisible(BOOL visible);
+ static void incrementCofVersion(S32 retries);
private:
typedef std::map<F32, LLViewerVisualParam*> value_map_t;
@@ -116,8 +117,6 @@ private:
void setWearablePanelVisibilityChangeCallback(LLPanel* bodypart_panel);
- static void incrementCofVersion();
-
// the pointer to the wearable we're editing. NULL means we're not editing a wearable.
LLViewerWearable *mWearablePtr;
LLViewerInventoryItem* mWearableItem;