summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llcommon/llassettype.cpp16
-rw-r--r--indra/llcommon/llassettype.h8
-rw-r--r--indra/llcommon/llavatarconstants.h12
-rw-r--r--indra/llcommon/llsdutil.cpp11
-rw-r--r--indra/llcommon/llsdutil.h3
-rw-r--r--indra/llcommon/lluri.cpp84
-rw-r--r--indra/llcommon/lluri.h7
-rw-r--r--indra/llmessage/llhttpclient.cpp9
-rw-r--r--indra/llmessage/llhttpclient.h4
-rw-r--r--indra/newview/English.lproj/InfoPlist.strings4
-rw-r--r--indra/newview/Info-SecondLife.plist2
-rw-r--r--indra/newview/llfloaterland.cpp6
-rw-r--r--indra/newview/llfloaterproperties.cpp1
-rw-r--r--indra/newview/llhudeffect.cpp1
-rw-r--r--indra/newview/llhudmanager.cpp10
-rw-r--r--indra/newview/llpanelavatar.cpp81
-rw-r--r--indra/newview/llpanelavatar.h3
-rw-r--r--indra/newview/llviewermenu.cpp48
-rw-r--r--indra/newview/llviewermessage.cpp2
-rw-r--r--scripts/messages/message_template.msg16
20 files changed, 225 insertions, 103 deletions
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index f6d9f166e1..628ebb7aec 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -8,9 +8,11 @@
#include "linden_common.h"
+#include "llassettype.h"
+
#include <time.h>
-#include "llassettype.h"
+#include "llstring.h"
#include "lltimer.h"
// I added lookups for exact text of asset type enums in addition to the ones below, so shoot me. -Steve
@@ -49,9 +51,9 @@ asset_info_t asset_types[] =
{ LLAssetType::AT_NONE, "NONE" },
};
-LLAssetType::EType LLAssetType::getType(const LLString& sin)
+LLAssetType::EType LLAssetType::getType(const std::string& sin)
{
- LLString s = sin;
+ std::string s = sin;
LLString::toUpper(s);
for (S32 idx = 0; ;idx++)
{
@@ -64,17 +66,17 @@ LLAssetType::EType LLAssetType::getType(const LLString& sin)
return LLAssetType::AT_NONE;
}
-LLString LLAssetType::getDesc(LLAssetType::EType type)
+std::string LLAssetType::getDesc(LLAssetType::EType type)
{
for (S32 idx = 0; ;idx++)
{
asset_info_t* info = asset_types + idx;
if (type == info->type)
- return LLString(info->desc);
+ return info->desc;
if (info->type == LLAssetType::AT_NONE)
break;
}
- return LLString("BAD TYPE");
+ return "BAD TYPE";
}
//============================================================================
@@ -206,7 +208,7 @@ EDragAndDropType LLAssetType::lookupDragAndDropType( EType asset )
// static. Generate a good default description
void LLAssetType::generateDescriptionFor(LLAssetType::EType type,
- LLString& desc)
+ std::string& desc)
{
const S32 BUF_SIZE = 30;
char time_str[BUF_SIZE]; /* Flawfinder: ignore */
diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h
index 2b5aadf078..abc118fe9c 100644
--- a/indra/llcommon/llassettype.h
+++ b/indra/llcommon/llassettype.h
@@ -9,6 +9,8 @@
#ifndef LL_LLASSETTYPE
#define LL_LLASSETTYPE
+#include <string>
+
#include "stdenums.h" // for EDragAndDropType
class LLAssetType
@@ -131,10 +133,10 @@ public:
// Generate a good default description. You may want to add a verb
// or agent name after this depending on your application.
static void generateDescriptionFor(LLAssetType::EType type,
- LLString& desc);
+ std::string& desc);
- static EType getType(const LLString& sin);
- static LLString getDesc(EType type);
+ static EType getType(const std::string& sin);
+ static std::string getDesc(EType type);
private:
// don't instantiate or derive one of these objects
diff --git a/indra/llcommon/llavatarconstants.h b/indra/llcommon/llavatarconstants.h
index ccfec63b83..67bd329732 100644
--- a/indra/llcommon/llavatarconstants.h
+++ b/indra/llcommon/llavatarconstants.h
@@ -20,5 +20,17 @@ const char* const BLACKLIST_PROFILE_WEB_URL = "http://secondlife.com/app/webdisa
// Maximum number of avatar picks
const S32 MAX_AVATAR_PICKS = 10;
+// For Flags in AvatarPropertiesReply
+const U32 AVATAR_ALLOW_PUBLISH = 0x1 << 0; // whether profile is externally visible or not
+const U32 AVATAR_MATURE_PUBLISH = 0x1 << 1; // profile is "mature"
+const U32 AVATAR_IDENTIFIED = 0x1 << 2; // whether avatar has provided payment info
+const U32 AVATAR_TRANSACTED = 0x1 << 3; // whether avatar has actively used payment info
+const U32 AVATAR_ONLINE = 0x1 << 4; // the online status of this avatar, if known.
+
+static const std::string VISIBILITY_DEFAULT("default");
+static const std::string VISIBILITY_HIDDEN("hidden");
+static const std::string VISIBILITY_VISIBLE("visible");
+static const std::string VISIBILITY_INVISIBLE("invisible");
+
#endif
diff --git a/indra/llcommon/llsdutil.cpp b/indra/llcommon/llsdutil.cpp
index 7cd0ed4c08..a6ac2fb12b 100644
--- a/indra/llcommon/llsdutil.cpp
+++ b/indra/llcommon/llsdutil.cpp
@@ -203,3 +203,14 @@ U32 ll_ipaddr_from_sd(const LLSD& sd)
memcpy(&ret, &(v[0]), 4); /* Flawfinder: ignore */
return ret;
}
+
+// Converts an LLSD binary to an LLSD string
+LLSD ll_string_from_binary(const LLSD& sd)
+{
+ std::vector<U8> value = sd.asBinary();
+ char* c_str = new char[value.size() + 1];
+ memcpy(c_str, &value[0], value.size());
+ c_str[value.size()] = '\0';
+
+ return c_str;
+}
diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h
index 79961c5311..44e9429d7f 100644
--- a/indra/llcommon/llsdutil.h
+++ b/indra/llcommon/llsdutil.h
@@ -51,4 +51,7 @@ U64 ll_U64_from_sd(const LLSD& sd);
LLSD ll_sd_from_ipaddr(const U32);
U32 ll_ipaddr_from_sd(const LLSD& sd);
+// Binary to string
+LLSD ll_string_from_binary(const LLSD& sd);
+
#endif // LL_LLSDUTIL_H
diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp
index 1b66173399..5ecba4420d 100644
--- a/indra/llcommon/lluri.cpp
+++ b/indra/llcommon/lluri.cpp
@@ -9,9 +9,13 @@
*/
#include "linden_common.h"
+
+#include "llapp.h"
#include "lluri.h"
#include "llsd.h"
+#include "../llmath/lluuid.h"
+
// uric = reserved | unreserved | escaped
// reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
// unreserved = alphanum | mark
@@ -353,9 +357,21 @@ LLURI LLURI::buildHTTP(const std::string& host_port,
const LLSD& path)
{
LLURI result;
- result.mScheme = "HTTP";
+
// TODO: deal with '/' '?' '#' in host_port
- result.mEscapedAuthority = "//" + escape(host_port);
+ S32 index = host_port.find("://");
+ if (index != host_port.npos)
+ {
+ // The scheme is part of the host_port
+ result.mScheme = "";
+ result.mEscapedAuthority = escape(host_port);
+ }
+ else
+ {
+ result.mScheme = "HTTP";
+ result.mEscapedAuthority = "//" + escape(host_port);
+ }
+
if (path.isArray())
{
// break out and escape each path component
@@ -397,6 +413,70 @@ LLURI LLURI::buildHTTP(const std::string& host_port,
return result;
}
+// static
+LLURI LLURI::buildAgentPresenceURI(const LLUUID& agent_id, LLApp* app)
+{
+ std::string host = "localhost:12040";
+
+ if (app)
+ {
+ host = app->getOption("backbone-host-port").asString();
+ }
+
+ LLSD path = LLSD::emptyArray();
+ path.append("agent");
+ path.append(agent_id);
+ path.append("presence");
+
+ return buildHTTP(host, path);
+}
+
+// static
+LLURI LLURI::buildBulkAgentPresenceURI(LLApp* app)
+{
+ std::string host = "localhost:12040";
+
+ if (app)
+ {
+ host = app->getOption("backbone-host-port").asString();
+ }
+
+ LLSD path = LLSD::emptyArray();
+ path.append("agent");
+ path.append("presence");
+
+ return buildHTTP(host, path);
+}
+
+// static
+LLURI LLURI::buildAgentSessionURI(const LLUUID& agent_id, LLApp* app)
+{
+ std::string host = "localhost:12040";
+
+ if (app)
+ {
+ host = app->getOption("backbone-host-port").asString();
+ }
+
+ LLSD path = LLSD::emptyArray();
+ path.append("agent");
+ path.append(agent_id);
+ path.append("session");
+
+ return buildHTTP(host, path);
+}
+
+// static
+LLURI LLURI::buildAgentLoginInfoURI(const LLUUID& agent_id, const std::string& dataserver)
+{
+ LLSD path = LLSD::emptyArray();
+ path.append("agent");
+ path.append(agent_id);
+ path.append("logininfo");
+
+ return buildHTTP(dataserver, path);
+}
+
std::string LLURI::asString() const
{
if (mScheme.empty())
diff --git a/indra/llcommon/lluri.h b/indra/llcommon/lluri.h
index 3fc62aeb98..b1ac0bca2b 100644
--- a/indra/llcommon/lluri.h
+++ b/indra/llcommon/lluri.h
@@ -14,6 +14,8 @@
#include <string>
class LLSD;
+class LLUUID;
+class LLApp;
/**
*
@@ -61,6 +63,11 @@ public:
static std::string escape(const std::string& str);
static std::string unescape(const std::string& str);
+ // Functions for building specific URIs for web services
+ static LLURI buildAgentPresenceURI(const LLUUID& agent_id, LLApp* app);
+ static LLURI buildBulkAgentPresenceURI(LLApp* app);
+ static LLURI buildAgentSessionURI(const LLUUID& agent_id, LLApp* app);
+ static LLURI buildAgentLoginInfoURI(const LLUUID& agent_id, const std::string& dataserver);
private:
std::string mScheme;
std::string mEscapedOpaque;
diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp
index 38dee26723..7d51b6c722 100644
--- a/indra/llmessage/llhttpclient.cpp
+++ b/indra/llmessage/llhttpclient.cpp
@@ -7,8 +7,10 @@
*/
#include "linden_common.h"
-#include "llassetstorage.h"
+
#include "llhttpclient.h"
+
+#include "llassetstorage.h"
#include "lliopipe.h"
#include "llurlrequest.h"
#include "llbufferstream.h"
@@ -232,6 +234,11 @@ void LLHTTPClient::post(const std::string& url, const LLSD& body, ResponderPtr r
request(url, LLURLRequest::HTTP_POST, new LLSDInjector(body), responder);
}
+void LLHTTPClient::del(const std::string& url, ResponderPtr responder)
+{
+ request(url, LLURLRequest::HTTP_DELETE, NULL, responder);
+}
+
#if 1
void LLHTTPClient::postFile(const std::string& url, const std::string& filename, ResponderPtr responder)
{
diff --git a/indra/llmessage/llhttpclient.h b/indra/llmessage/llhttpclient.h
index 563450f07e..41ccb1fad9 100644
--- a/indra/llmessage/llhttpclient.h
+++ b/indra/llmessage/llhttpclient.h
@@ -16,8 +16,10 @@
#include <string>
#include <boost/intrusive_ptr.hpp>
-#include "llassetstorage.h"
+#include "llassettype.h"
+
+class LLUUID;
class LLPumpIO;
class LLSD;
diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings
index 2f68a020ca..6ef64e4b4b 100644
--- a/indra/newview/English.lproj/InfoPlist.strings
+++ b/indra/newview/English.lproj/InfoPlist.strings
@@ -1,5 +1,5 @@
/* Localized versions of Info.plist keys */
CFBundleName = "Second Life";
-CFBundleShortVersionString = "Second Life version 1.13.2.15";
-CFBundleGetInfoString = "Second Life version 1.13.2.15, Copyright 2004-2006 Linden Research, Inc.";
+CFBundleShortVersionString = "Second Life version 1.13.3.2";
+CFBundleGetInfoString = "Second Life version 1.13.3.2, Copyright 2004-2006 Linden Research, Inc.";
diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist
index 3e6c65e953..6e1de8bb07 100644
--- a/indra/newview/Info-SecondLife.plist
+++ b/indra/newview/Info-SecondLife.plist
@@ -32,7 +32,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
- <string>1.13.2.15</string>
+ <string>1.13.3.2</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 3b4c7c2f59..be06154c29 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -999,8 +999,8 @@ void LLPanelLandGeneral::onCommitAny(LLUICtrl *ctrl, void *userdata)
}
// Extract data from UI
- std::string name = panelp->mEditName->getText();
- std::string desc = panelp->mEditDesc->getText();
+ std::string name = panelp->mEditName->getText();
+ std::string desc = panelp->mEditDesc->getText();
// Valid data from UI
@@ -1104,7 +1104,7 @@ BOOL LLPanelLandObjects::postBuild()
mCleanOtherObjectsTime = LLUICtrlFactory::getLineEditorByName(this, "clean other time");
mCleanOtherObjectsTime->setFocusLostCallback(onLostFocus);
- childSetPrevalidate("clean other time", LLLineEditor::prevalidatePrintableNotPipe);
+ childSetPrevalidate("clean other time", LLLineEditor::prevalidateNonNegativeS32);
childSetUserData("clean other time", this);
mOwnerListText = LLUICtrlFactory::getTextBoxByName(this, "Object Owners:");
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
index 4311a899c4..76a387556e 100644
--- a/indra/newview/llfloaterproperties.cpp
+++ b/indra/newview/llfloaterproperties.cpp
@@ -145,6 +145,7 @@ LLFloaterProperties::LLFloaterProperties(const std::string& name, const LLRect&
childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidatePrintableNotPipe);
childSetCommitCallback("LabelItemName",onCommitName,this);
childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidatePrintableNotPipe);
+ childSetCommitCallback("LabelItemDesc", onCommitDescription, this);
// Creator information
childSetAction("BtnCreator",onClickCreator,this);
// owner information
diff --git a/indra/newview/llhudeffect.cpp b/indra/newview/llhudeffect.cpp
index 4f80fffb01..8fbfcb65e7 100644
--- a/indra/newview/llhudeffect.cpp
+++ b/indra/newview/llhudeffect.cpp
@@ -38,6 +38,7 @@ LLHUDEffect::~LLHUDEffect()
void LLHUDEffect::packData(LLMessageSystem *mesgsys)
{
mesgsys->addUUIDFast(_PREHASH_ID, mID);
+ mesgsys->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
mesgsys->addU8Fast(_PREHASH_Type, mType);
mesgsys->addF32Fast(_PREHASH_Duration, mDuration);
mesgsys->addBinaryData(_PREHASH_Color, mColor.mV, 4);
diff --git a/indra/newview/llhudmanager.cpp b/indra/newview/llhudmanager.cpp
index 40e140253e..31e6318d25 100644
--- a/indra/newview/llhudmanager.cpp
+++ b/indra/newview/llhudmanager.cpp
@@ -176,9 +176,13 @@ void LLHUDManager::sendEffects()
}
if (hep->getNeedsSendToSim() && hep->getOriginatedHere())
{
- gMessageSystem->newMessageFast(_PREHASH_ViewerEffect);
- gMessageSystem->nextBlockFast(_PREHASH_Effect);
- hep->packData(gMessageSystem);
+ LLMessageSystem* msg = gMessageSystem;
+ msg->newMessageFast(_PREHASH_ViewerEffect);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+ msg->nextBlockFast(_PREHASH_Effect);
+ hep->packData(msg);
hep->setNeedsSendToSim(FALSE);
gAgent.sendMessage();
}
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 9b1a6caf0e..615086e7d4 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -400,8 +400,11 @@ BOOL LLPanelAvatarSecondLife::postBuild(void)
childSetVisible("allow_publish",LLPanelAvatar::sAllowFirstLife);
childSetVisible("?",LLPanelAvatar::sAllowFirstLife);
- childSetVisible("online_unknown",TRUE);
childSetVisible("online_yes",FALSE);
+
+ // These are cruft but may still exist in some xml files
+ // TODO: remove the following 2 lines once translators grab these changes
+ childSetVisible("online_unknown",FALSE);
childSetVisible("online_no",FALSE);
childSetAction("Show on Map", LLPanelAvatar::onClickTrack, mPanelAvatar);
@@ -1279,6 +1282,19 @@ void LLPanelAvatar::setAvatar(LLViewerObject *avatarp)
setAvatarID(avatarp->getID(), name, ONLINE_STATUS_YES);
}
+void LLPanelAvatar::setOnlineStatus(EOnlineStatus online_status)
+{
+ // Online status NO could be because they are hidden
+ // If they are a friend, we may know the truth!
+ if ((ONLINE_STATUS_YES != online_status)
+ && mIsFriend
+ && (LLAvatarTracker::instance().isBuddyOnline( mAvatarID )))
+ {
+ online_status = ONLINE_STATUS_YES;
+ }
+
+ mPanelSecondLife->childSetVisible("online_yes", (online_status == ONLINE_STATUS_YES));
+}
void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const LLString &name,
EOnlineStatus online_status)
@@ -1295,50 +1311,8 @@ void LLPanelAvatar::setAvatarID(const LLUUID &avatar_id, const LLString &name,
// Determine if we have their calling card.
mIsFriend = is_agent_friend(mAvatarID);
- if (ONLINE_STATUS_UNKNOWN == online_status)
- {
- // Determine if we know that they are online. If we can see them,
- // we know they're online. Likewise, if we have a calling card,
- // we know. Otherwise we don't.
- LLViewerObject* object = gObjectList.findObject( mAvatarID );
- if (object && !object->isDead())
- {
- online_status = ONLINE_STATUS_YES;
- }
- else if (mIsFriend)
- {
- if (LLAvatarTracker::instance().isBuddyOnline( mAvatarID ))
- {
- online_status = ONLINE_STATUS_YES;
- }
- else
- {
- online_status = ONLINE_STATUS_NO;
- }
- }
- else
- {
- // Don't actually know if they are online.
- }
- }
-
- mPanelSecondLife->childSetVisible("online_unknown",FALSE);
- mPanelSecondLife->childSetVisible("online_yes",FALSE);
- mPanelSecondLife->childSetVisible("online_no",FALSE);
-
- switch(online_status)
- {
- case ONLINE_STATUS_YES:
- mPanelSecondLife->childSetVisible("online_yes",TRUE);
- break;
- case ONLINE_STATUS_NO:
- mPanelSecondLife->childSetVisible("online_no",TRUE);
- break;
- case ONLINE_STATUS_UNKNOWN:
- default:
- mPanelSecondLife->childSetVisible("online_unknown",TRUE);
- break;
- }
+ // setOnlineStatus uses mIsFriend
+ setOnlineStatus(online_status);
BOOL own_avatar = (mAvatarID == gAgent.getID() );
@@ -1736,8 +1710,11 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
//BOOL mature = FALSE;
BOOL identified = FALSE;
BOOL transacted = FALSE;
+ BOOL online = FALSE;
char profile_url[DB_USER_PROFILE_URL_BUF_SIZE];
+ U32 flags = 0x0;
+
//llinfos << "properties packet size " << msg->getReceiveSize() << llendl;
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id);
@@ -1757,7 +1734,6 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
{
self->childSetEnabled("Rate...",TRUE);
}
- lldebugs << "!!!!!!!!!!!!!!!!!!!!!!Enabling drop target" << llendl;
self->childSetEnabled("drop target",TRUE);
self->mHaveProperties = TRUE;
@@ -1769,9 +1745,17 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
msg->getStringFast(_PREHASH_PropertiesData, _PREHASH_AboutText, DB_USER_ABOUT_BUF_SIZE, about_text );
msg->getStringFast(_PREHASH_PropertiesData, _PREHASH_FLAboutText, DB_USER_FL_ABOUT_BUF_SIZE, fl_about_text );
msg->getStringFast(_PREHASH_PropertiesData, _PREHASH_BornOn, DB_BORN_BUF_SIZE, born_on);
- msg->getBOOLFast(_PREHASH_PropertiesData, _PREHASH_Identified, identified);
- msg->getBOOLFast(_PREHASH_PropertiesData, _PREHASH_Transacted, transacted);
msg->getString("PropertiesData","ProfileURL", DB_USER_PROFILE_URL_BUF_SIZE, profile_url);
+ msg->getU32Fast(_PREHASH_PropertiesData, _PREHASH_Flags, flags);
+
+ identified = (flags & AVATAR_IDENTIFIED);
+ transacted = (flags & AVATAR_TRANSACTED);
+ allow_publish = (flags & AVATAR_ALLOW_PUBLISH);
+ online = (flags & AVATAR_ONLINE);
+
+ EOnlineStatus online_status = (online) ? ONLINE_STATUS_YES : ONLINE_STATUS_NO;
+
+ self->setOnlineStatus(online_status);
self->mPanelWeb->setWebURL(std::string(profile_url));
U8 caption_index = 0;
@@ -1849,7 +1833,6 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
{
image_ctrl->setImageAssetID(fl_image_id);
}
- msg->getBOOL("PropertiesData", "AllowPublish", allow_publish);
self->mPanelSecondLife->childSetValue("allow_publish", allow_publish);
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index 0cdcdf938b..713750ad06 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -36,7 +36,6 @@ class LLWebBrowserCtrl;
enum EOnlineStatus
{
- ONLINE_STATUS_UNKNOWN = -1,
ONLINE_STATUS_NO = 0,
ONLINE_STATUS_YES = 1
};
@@ -243,6 +242,8 @@ public:
// Pass one of the ONLINE_STATUS_foo constants above.
void setAvatarID(const LLUUID &avatar_id, const LLString &name, EOnlineStatus online_status);
+ void setOnlineStatus(EOnlineStatus online_status);
+
const LLUUID& getAvatarID() const { return mAvatarID; }
void disableRate();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index b2889f961a..05e3159864 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -562,21 +562,21 @@ void init_menus()
// flash when an item is triggered (the flash occurs in the holder)
gViewerWindow->getRootView()->addChild(gMenuHolder);
- gMenuHolder->childSetLabelArg("Upload Image", "[COST]", "10");
- gMenuHolder->childSetLabelArg("Upload Sound", "[COST]", "10");
- gMenuHolder->childSetLabelArg("Upload Animation", "[COST]", "10");
- gMenuHolder->childSetLabelArg("Bulk Upload", "[COST]", "10");
+ gMenuHolder->childSetLabelArg("Upload Image", "[COST]", "10");
+ gMenuHolder->childSetLabelArg("Upload Sound", "[COST]", "10");
+ gMenuHolder->childSetLabelArg("Upload Animation", "[COST]", "10");
+ gMenuHolder->childSetLabelArg("Bulk Upload", "[COST]", "10");
- gAFKMenu = (LLMenuItemCallGL*)gMenuBarView->getChildByName("Set Away", TRUE);
- gBusyMenu = (LLMenuItemCallGL*)gMenuBarView->getChildByName("Set Busy", TRUE);
- gAttachSubMenu = gMenuBarView->getChildMenuByName("Attach Object", TRUE);
- gDetachSubMenu = gMenuBarView->getChildMenuByName("Detach Object", TRUE);
+ gAFKMenu = (LLMenuItemCallGL*)gMenuBarView->getChildByName("Set Away", TRUE);
+ gBusyMenu = (LLMenuItemCallGL*)gMenuBarView->getChildByName("Set Busy", TRUE);
+ gAttachSubMenu = gMenuBarView->getChildMenuByName("Attach Object", TRUE);
+ gDetachSubMenu = gMenuBarView->getChildMenuByName("Detach Object", TRUE);
- if (gAgent.mAccess < SIM_ACCESS_MATURE)
- {
- gMenuBarView->getChildByName("Menu Underpants", TRUE)->setVisible(FALSE);
- gMenuBarView->getChildByName("Menu Undershirt", TRUE)->setVisible(FALSE);
- }
+ if (gAgent.mAccess < SIM_ACCESS_MATURE)
+ {
+ gMenuBarView->getChildByName("Menu Underpants", TRUE)->setVisible(FALSE);
+ gMenuBarView->getChildByName("Menu Undershirt", TRUE)->setVisible(FALSE);
+ }
// TomY TODO convert these two
LLMenuGL*menu;
@@ -607,23 +607,23 @@ void init_menus()
///
gPieSelf = gUICtrlFactory->buildPieMenu("menu_pie_self.xml", gMenuHolder);
- // TomY TODO: what shall we do about these?
- gDetachScreenPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Detach HUD", true);
- gDetachPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Detach", true);
+ // TomY TODO: what shall we do about these?
+ gDetachScreenPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Detach HUD", true);
+ gDetachPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Detach", true);
- if (gAgent.mAccess < SIM_ACCESS_MATURE)
- {
- gMenuHolder->getChildByName("Self Underpants", TRUE)->setVisible(FALSE);
- gMenuHolder->getChildByName("Self Undershirt", TRUE)->setVisible(FALSE);
- }
+ if (gAgent.mAccess < SIM_ACCESS_MATURE)
+ {
+ gMenuHolder->getChildByName("Self Underpants", TRUE)->setVisible(FALSE);
+ gMenuHolder->getChildByName("Self Undershirt", TRUE)->setVisible(FALSE);
+ }
gPieAvatar = gUICtrlFactory->buildPieMenu("menu_pie_avatar.xml", gMenuHolder);
gPieObject = gUICtrlFactory->buildPieMenu("menu_pie_object.xml", gMenuHolder);
- gAttachScreenPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Attach HUD", true);
- gAttachPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Attach", true);
- gPieRate = (LLPieMenu*)gMenuHolder->getChildByName("Rate Menu", true);
+ gAttachScreenPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Attach HUD", true);
+ gAttachPieMenu = (LLPieMenu*)gMenuHolder->getChildByName("Object Attach", true);
+ gPieRate = (LLPieMenu*)gMenuHolder->getChildByName("Rate Menu", true);
gPieAttachment = gUICtrlFactory->buildPieMenu("menu_pie_attachment.xml", gMenuHolder);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index dff2a6c9e0..f95ec9e3cc 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3887,7 +3887,7 @@ void process_alert_core(const char* buffer, BOOL modal)
{
//XUI:translate
LLString::format_map_t args;
- args["[BUFFER]"] = buffer;
+ args["[ERROR_MESSAGE]"] = buffer;
gViewerWindow->alertXml("ErrorMessage", args);
}
else
diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
index b44b099c33..32a514502f 100644
--- a/scripts/messages/message_template.msg
+++ b/scripts/messages/message_template.msg
@@ -4260,10 +4260,7 @@ sim -> dataserver
{ BornOn Variable 1 } // string
{ ProfileURL Variable 1 } // string
{ CharterMember Variable 1 } // special - usually U8
- { AllowPublish BOOL } // whether profile is externally visible or not
- { MaturePublish BOOL } // profile is "mature"
- { Identified BOOL } // whether avatar has provided payment info
- { Transacted BOOL } // whether avatar has actively used payment info
+ { Flags U32 }
}
}
@@ -9196,11 +9193,20 @@ sim -> dataserver
// ViewerEffect
// Viewer side effect that's sent from one viewer, and broadcast to other agents nearby
+// viewer-->sim (single effect created by viewer)
+// sim-->viewer (multiple effects that can be seen by viewer)
+// the AgentData block used for authentication for viewer-->sim messages
{
ViewerEffect Medium NotTrusted Zerocoded
{
+ AgentData Single
+ { AgentID LLUUID }
+ { SessionID LLUUID }
+ }
+ {
Effect Variable
- { ID LLUUID } // UUID of the effect
+ { ID LLUUID } // unique UUID of the effect
+ { AgentID LLUUID } // yes, pack AgentID again (note this block is variable)
{ Type U8 } // Type of the effect
{ Duration F32 } // F32 time (seconds)
{ Color Fixed 4 } // Color4U