summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerchat.cpp
diff options
context:
space:
mode:
authorNyx (Neal Orman) <nyx@lindenlab.com>2011-04-08 15:58:11 -0400
committerNyx (Neal Orman) <nyx@lindenlab.com>2011-04-08 15:58:11 -0400
commit2deea74cf6f08376e14e2f7e5333fc6959d2af19 (patch)
tree80429812cfb4f88a151627830dceb4a8f2e278dd /indra/newview/llviewerchat.cpp
parent534ac19ed5a6abe68ea654a5444b7e486f8ce06a (diff)
parent8807496ed78b36658f488d901842852d63f73cb9 (diff)
merging mesh-development into nyx's mesh development
Diffstat (limited to 'indra/newview/llviewerchat.cpp')
-rw-r--r--indra/newview/llviewerchat.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/indra/newview/llviewerchat.cpp b/indra/newview/llviewerchat.cpp
index 0af850a46b..286b16bab2 100644
--- a/indra/newview/llviewerchat.cpp
+++ b/indra/newview/llviewerchat.cpp
@@ -31,6 +31,8 @@
#include "llagent.h" // gAgent
#include "lluicolortable.h"
#include "llviewercontrol.h" // gSavedSettings
+#include "llviewerregion.h"
+#include "llworld.h"
#include "llinstantmessage.h" //SYSTEM_FROM
// LLViewerChat
@@ -214,3 +216,43 @@ void LLViewerChat::formatChatMsg(const LLChat& chat, std::string& formated_msg)
}
+//static
+std::string LLViewerChat::getSenderSLURL(const LLChat& chat, const LLSD& args)
+{
+ switch (chat.mSourceType)
+ {
+ case CHAT_SOURCE_AGENT:
+ return LLSLURL("agent", chat.mFromID, "about").getSLURLString();
+
+ case CHAT_SOURCE_OBJECT:
+ return getObjectImSLURL(chat, args);
+
+ default:
+ llwarns << "Getting SLURL for an unsupported sender type: " << chat.mSourceType << llendl;
+ }
+
+ return LLStringUtil::null;
+}
+
+//static
+std::string LLViewerChat::getObjectImSLURL(const LLChat& chat, const LLSD& args)
+{
+ std::string url = LLSLURL("objectim", chat.mFromID, "").getSLURLString();
+ url += "?name=" + chat.mFromName;
+ url += "&owner=" + chat.mOwnerID.asString();
+
+ std::string slurl = args["slurl"].asString();
+ if (slurl.empty())
+ {
+ LLViewerRegion *region = LLWorld::getInstance()->getRegionFromPosAgent(chat.mPosAgent);
+ if(region)
+ {
+ LLSLURL region_slurl(region->getName(), chat.mPosAgent);
+ slurl = region_slurl.getLocationString();
+ }
+ }
+
+ url += "&slurl=" + LLURI::escape(slurl);
+
+ return url;
+}