diff options
| author | Merov Linden <merov@lindenlab.com> | 2013-03-12 19:40:00 -0700 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2013-03-12 19:40:00 -0700 | 
| commit | c594e848656f2bc1d29c48b7ceae782b5d542ad2 (patch) | |
| tree | c668283967304a5e84e0b8d72a07511d5e842e2b /indra/llui | |
| parent | cb6574c905806feac3846733ca0ead77e431beb1 (diff) | |
| parent | e7a4cce3566988d5b58dc070196a32844d705318 (diff) | |
Pull merge from lindenlab/viewer-chui
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/lltextbase.cpp | 1 | ||||
| -rw-r--r-- | indra/llui/llurlaction.cpp | 31 | ||||
| -rw-r--r-- | indra/llui/llurlaction.h | 2 | 
3 files changed, 27 insertions, 7 deletions
| diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index af29f3b56f..c4ec1edc73 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1919,6 +1919,7 @@ void LLTextBase::createUrlContextMenu(S32 x, S32 y, const std::string &in_url)  	registrar.add("Url.Teleport", boost::bind(&LLUrlAction::teleportToLocation, url));  	registrar.add("Url.ShowProfile", boost::bind(&LLUrlAction::showProfile, url));  	registrar.add("Url.SendIM", boost::bind(&LLUrlAction::sendIM, url)); +	registrar.add("Url.AddFriend", boost::bind(&LLUrlAction::addFriend, url));  	registrar.add("Url.ShowOnMap", boost::bind(&LLUrlAction::showLocationOnMap, url));  	registrar.add("Url.CopyLabel", boost::bind(&LLUrlAction::copyLabelToClipboard, url));  	registrar.add("Url.CopyUrl", boost::bind(&LLUrlAction::copyURLToClipboard, url)); diff --git a/indra/llui/llurlaction.cpp b/indra/llui/llurlaction.cpp index fd872eca4b..f51aeaec13 100644 --- a/indra/llui/llurlaction.cpp +++ b/indra/llui/llurlaction.cpp @@ -24,7 +24,6 @@   * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ -  #include "linden_common.h"  #include "llurlaction.h" @@ -32,6 +31,7 @@  #include "llwindow.h"  #include "llurlregistry.h" +  // global state for the callback functions  LLUrlAction::url_callback_t 		LLUrlAction::sOpenURLCallback;  LLUrlAction::url_callback_t 		LLUrlAction::sOpenURLInternalCallback; @@ -158,16 +158,33 @@ void LLUrlAction::showProfile(std::string url)  	}  } -void LLUrlAction::sendIM(std::string url) +std::string LLUrlAction::getUserID(std::string url)  {  	LLURI uri(url);  	LLSD path_array = uri.pathArray(); +	std::string id_str;  	if (path_array.size() == 4)  	{ -		std::string id_str = path_array.get(2).asString(); -		if (LLUUID::validate(id_str)) -		{ -			executeSLURL("secondlife:///app/agent/" + id_str + "/im"); -		} +		id_str = path_array.get(2).asString();  	} +	return id_str;  } + +void LLUrlAction::sendIM(std::string url) +{ +	std::string id_str = getUserID(url); +	if (LLUUID::validate(id_str)) +	{ +		executeSLURL("secondlife:///app/agent/" + id_str + "/im"); +	} +} + +void LLUrlAction::addFriend(std::string url) +{ +	std::string id_str = getUserID(url); +	if (LLUUID::validate(id_str)) +	{ +		executeSLURL("secondlife:///app/agent/" + id_str + "/requestfriend"); +	} +} + diff --git a/indra/llui/llurlaction.h b/indra/llui/llurlaction.h index f5f2ceba72..e31cd71a20 100644 --- a/indra/llui/llurlaction.h +++ b/indra/llui/llurlaction.h @@ -76,7 +76,9 @@ public:  	/// if the Url specifies an SL command in the form like 'app/{cmd}/{id}/*', show its profile  	static void showProfile(std::string url); +	static std::string getUserID(std::string url);  	static void sendIM(std::string url); +	static void addFriend(std::string url);  	/// specify the callbacks to enable this class's functionality  	typedef boost::function<void (const std::string&)> url_callback_t; | 
