diff options
| author | Eugene Mutavchi <emutavchi@productengine.com> | 2010-04-21 20:23:55 +0300 | 
|---|---|---|
| committer | Eugene Mutavchi <emutavchi@productengine.com> | 2010-04-21 20:23:55 +0300 | 
| commit | 647327d0eca0c089d94ce964a8cc837cc2888e93 (patch) | |
| tree | bf4cfc385e8cb50fde60028e655e7a8a916f964a /indra/llui | |
| parent | b36539f23f6eba4ac20f53bbb134e2562421dc9c (diff) | |
Fixed normal bug EXT-6907 ('Show residents profile' menu opens inspector instead of profile) - added 'Url.ShowProfile' action.
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/282/
--HG--
branch : product-engine
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/lltextbase.cpp | 1 | ||||
| -rw-r--r-- | indra/llui/llurlaction.cpp | 17 | ||||
| -rw-r--r-- | indra/llui/llurlaction.h | 3 | 
3 files changed, 21 insertions, 0 deletions
| diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index e08026eaf4..390ec234d3 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1507,6 +1507,7 @@ void LLTextBase::createUrlContextMenu(S32 x, S32 y, const std::string &in_url)  	registrar.add("Url.OpenExternal", boost::bind(&LLUrlAction::openURLExternal, url));  	registrar.add("Url.Execute", boost::bind(&LLUrlAction::executeSLURL, url));  	registrar.add("Url.Teleport", boost::bind(&LLUrlAction::teleportToLocation, url)); +	registrar.add("Url.ShowProfile", boost::bind(&LLUrlAction::showProfile, 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 679db5e39b..2f13a56b42 100644 --- a/indra/llui/llurlaction.cpp +++ b/indra/llui/llurlaction.cpp @@ -146,3 +146,20 @@ void LLUrlAction::copyLabelToClipboard(std::string url)  		LLView::getWindow()->copyTextToClipboard(utf8str_to_wstring(match.getLabel()));  	}	  } + +void LLUrlAction::showProfile(std::string url) +{ +	// Get id from 'secondlife:///app/{cmd}/{id}/{action}' +	// and show its profile +	LLURI uri(url); +	LLSD path_array = uri.pathArray(); +	if (path_array.size() == 4) +	{ +		std::string id_str = path_array.get(2).asString(); +		if (LLUUID::validate(id_str)) +		{ +			std::string cmd_str = path_array.get(1).asString(); +			executeSLURL("secondlife:///app/" + cmd_str + "/" + id_str + "/about"); +		} +	} +} diff --git a/indra/llui/llurlaction.h b/indra/llui/llurlaction.h index 4830cf27ef..b96faf1b3f 100644 --- a/indra/llui/llurlaction.h +++ b/indra/llui/llurlaction.h @@ -79,6 +79,9 @@ public:  	/// copy a Url to the clipboard  	static void copyURLToClipboard(std::string url); +	/// if the Url specifies an SL command in the form like 'app/{cmd}/{id}/*', show its profile +	static void showProfile(std::string url); +  	/// specify the callbacks to enable this class's functionality  	static void	setOpenURLCallback(void (*cb) (const std::string& url));  	static void	setOpenURLInternalCallback(void (*cb) (const std::string& url)); | 
