summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerchat.cpp
diff options
context:
space:
mode:
authorVadim ProductEngine <vsavchuk@productengine.com>2011-03-23 22:58:49 +0200
committerVadim ProductEngine <vsavchuk@productengine.com>2011-03-23 22:58:49 +0200
commitdf450ff17b7a6bb27049f6f462e75fe0763644c3 (patch)
treea376dfdf65c38da7cffb6951f54cec4f4f0a4457 /indra/newview/llviewerchat.cpp
parente4a4d75104916968ce03337094b1194e0daff438 (diff)
STORM-1021 ADDITIONAL_FIX Replaced usual object inspector with the remote one in nearby chat toasts.
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;
+}