diff options
Diffstat (limited to 'indra/newview/llimview.cpp')
| -rw-r--r-- | indra/newview/llimview.cpp | 70 | 
1 files changed, 54 insertions, 16 deletions
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 039df69454..e915d3ad70 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -34,6 +34,7 @@  #include "llimview.h" +#include "llavatarnamecache.h"	// IDEVO  #include "llfloaterreg.h"  #include "llfontgl.h"  #include "llgl.h" @@ -631,7 +632,7 @@ bool LLIMModel::clearSession(const LLUUID& session_id)  void LLIMModel::getMessagesSilently(const LLUUID& session_id, std::list<LLSD>& messages, int start_index)  {  	LLIMSession* session = findIMSession(session_id); -	if (!session) +	if (!session)   	{  		llwarns << "session " << session_id << "does not exist " << llendl;  		return; @@ -639,7 +640,7 @@ void LLIMModel::getMessagesSilently(const LLUUID& session_id, std::list<LLSD>& m  	int i = session->mMsgs.size() - start_index; -	for (std::list<LLSD>::iterator iter = session->mMsgs.begin(); +	for (std::list<LLSD>::iterator iter = session->mMsgs.begin();   		iter != session->mMsgs.end() && i > 0;  		iter++)  	{ @@ -1745,8 +1746,19 @@ void LLOutgoingCallDialog::show(const LLSD& key)  	setTitle(callee_name);  	LLSD callee_id = mPayload["other_user_id"]; -	childSetTextArg("calling", "[CALLEE_NAME]", callee_name); -	childSetTextArg("connecting", "[CALLEE_NAME]", callee_name); +	// Beautification:  Since SLID is in the title bar, and you probably +	// recognize this person's voice, just show display name +	std::string final_callee_name = callee_name; +	if (mPayload["session_type"].asInteger() == LLIMModel::LLIMSession::P2P_SESSION) +	{ +		LLAvatarName av_name; +		if (LLAvatarNameCache::get(callee_id, &av_name)) +		{ +			final_callee_name = av_name.mDisplayName; +		} +	} +	childSetTextArg("calling", "[CALLEE_NAME]", final_callee_name); +	childSetTextArg("connecting", "[CALLEE_NAME]", final_callee_name);  	// for outgoing group calls callee_id == group id == session id  	setIcon(callee_id, callee_id); @@ -1903,16 +1915,21 @@ BOOL LLIncomingCallDialog::postBuild()  	if (caller_name == "anonymous")  	{  		caller_name = getString("anonymous"); +		setCallerName(caller_name, caller_name, call_type);  	}  	else if (!is_avatar)  	{  		caller_name = LLTextUtil::formatPhoneNumber(caller_name); +		setCallerName(caller_name, caller_name, call_type); +	} +	else +	{ +		// Get the full name information +		LLAvatarNameCache::get(caller_id, +			boost::bind(&LLIncomingCallDialog::onAvatarNameCache, +				this, _1, _2, call_type));  	} -	setTitle(caller_name + " " + call_type); - -	LLUICtrl* caller_name_widget = getChild<LLUICtrl>("caller name"); -	caller_name_widget->setValue(caller_name + " " + call_type);  	setIcon(session_id, caller_id);  	childSetAction("Accept", onAccept, this); @@ -1936,6 +1953,24 @@ BOOL LLIncomingCallDialog::postBuild()  	return TRUE;  } +void LLIncomingCallDialog::setCallerName(const std::string& ui_title, +										 const std::string& ui_label, +										 const std::string& call_type) +{ +	setTitle(ui_title); + +	// call_type may be a string like " is calling." +	LLUICtrl* caller_name_widget = getChild<LLUICtrl>("caller name"); +	caller_name_widget->setValue(ui_label + " " + call_type); +} + +void LLIncomingCallDialog::onAvatarNameCache(const LLUUID& agent_id, +											 const LLAvatarName& av_name, +											 const std::string& call_type) +{ +	std::string title = av_name.getCompleteName(); +	setCallerName(title, av_name.mDisplayName, call_type); +}  void LLIncomingCallDialog::onOpen(const LLSD& key)  { @@ -2034,8 +2069,11 @@ void LLIncomingCallDialog::processCallResponse(S32 response)  					}  					else  					{ -						if (gCacheName->getFullName(caller_id, correct_session_name)) +						// *NOTE: really should be using callbacks here +						LLAvatarName av_name; +						if (LLAvatarNameCache::get(caller_id, &av_name))  						{ +							correct_session_name = av_name.mDisplayName + " (" + av_name.mUsername + ")";  							correct_session_name.append(ADHOC_NAME_SUFFIX);   						}  					} @@ -2544,7 +2582,8 @@ void LLIMMgr::inviteToSession(  	{  		if (caller_name.empty())  		{ -			gCacheName->get(caller_id, FALSE, boost::bind(&LLIMMgr::onInviteNameLookup, payload, _1, _2, _3, _4)); +			gCacheName->get(caller_id, false, +				boost::bind(&LLIMMgr::onInviteNameLookup, payload, _1, _2, _3));  		}  		else  		{ @@ -2554,9 +2593,9 @@ void LLIMMgr::inviteToSession(  	}  } -void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) +void LLIMMgr::onInviteNameLookup(LLSD payload, const LLUUID& id, const std::string& name, bool is_group)  { -	payload["caller_name"] = first + " " + last; +	payload["caller_name"] = name;  	payload["session_name"] = payload["caller_name"].asString();  	std::string notify_box_type = payload["notify_box_type"].asString(); @@ -2777,13 +2816,12 @@ void LLIMMgr::noteOfflineUsers(  		for(S32 i = 0; i < count; ++i)  		{  			info = at.getBuddyInfo(ids.get(i)); -			std::string first, last; +			std::string full_name;  			if(info && !info->isOnline() -			   && gCacheName->getName(ids.get(i), first, last)) +			   && gCacheName->getFullName(ids.get(i), full_name))  			{  				LLUIString offline = LLTrans::getString("offline_message"); -				offline.setArg("[FIRST]", first); -				offline.setArg("[LAST]", last); +				offline.setArg("[NAME]", full_name);  				im_model.proccessOnlineOfflineNotification(session_id, offline);  			}  		}  | 
