diff options
-rw-r--r-- | indra/llcommon/llassettype.cpp | 16 | ||||
-rw-r--r-- | indra/llcommon/llassettype.h | 8 | ||||
-rw-r--r-- | indra/llcommon/llavatarconstants.h | 12 | ||||
-rw-r--r-- | indra/llcommon/llsdutil.cpp | 11 | ||||
-rw-r--r-- | indra/llcommon/llsdutil.h | 3 | ||||
-rw-r--r-- | indra/llcommon/lluri.cpp | 84 | ||||
-rw-r--r-- | indra/llcommon/lluri.h | 7 | ||||
-rw-r--r-- | indra/llmessage/llhttpclient.cpp | 9 | ||||
-rw-r--r-- | indra/llmessage/llhttpclient.h | 4 | ||||
-rw-r--r-- | indra/newview/English.lproj/InfoPlist.strings | 4 | ||||
-rw-r--r-- | indra/newview/Info-SecondLife.plist | 2 | ||||
-rw-r--r-- | indra/newview/llfloaterland.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llfloaterproperties.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llhudeffect.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llhudmanager.cpp | 10 | ||||
-rw-r--r-- | indra/newview/llpanelavatar.cpp | 81 | ||||
-rw-r--r-- | indra/newview/llpanelavatar.h | 3 | ||||
-rw-r--r-- | indra/newview/llviewermenu.cpp | 48 | ||||
-rw-r--r-- | indra/newview/llviewermessage.cpp | 2 | ||||
-rw-r--r-- | scripts/messages/message_template.msg | 16 |
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 |