diff options
Diffstat (limited to 'indra')
62 files changed, 513 insertions, 403 deletions
| diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 9363b3a8d5..e6233ecf97 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -75,7 +75,7 @@ public:  public:  	bool mIsGroup;  	U32 mCreateTime;	// unix time_t -	std::string mFirstName; +	std::string mFirstName;		// IDEVO TODO collapse to one field  	std::string mLastName;  	std::string mGroupName;  }; @@ -463,7 +463,7 @@ void LLCacheName::exportFile(std::ostream& ostr)  		// store it  		LLUUID id = iter->first;  		std::string id_str = id.asString(); -		if(!entry->mFirstName.empty() && !entry->mLastName.empty()) +		if(!entry->mFirstName.empty() /* && !entry->mLastName.empty() */ )  // IDEVO save SLIDs  		{  			data[AGENTS][id_str][FIRST] = entry->mFirstName;  			data[AGENTS][id_str][LAST] = entry->mLastName; @@ -508,6 +508,7 @@ BOOL LLCacheName::getName(const LLUUID& id, std::string& first, std::string& las  	}  } +  // static  void LLCacheName::LocalizeCacheName(std::string key, std::string value)  { @@ -521,7 +522,7 @@ BOOL LLCacheName::getFullName(const LLUUID& id, std::string& fullname)  {  	std::string first_name, last_name;  	BOOL res = getName(id, first_name, last_name); -	fullname = first_name + " " + last_name; +	fullname = buildFullname(first_name, last_name);  	return res;  } @@ -561,7 +562,7 @@ BOOL LLCacheName::getGroupName(const LLUUID& id, std::string& group)  BOOL LLCacheName::getUUID(const std::string& first, const std::string& last, LLUUID& id)  { -	std::string fullname = first + " " + last; +	std::string fullname = buildFullname(first, last);  	return getUUID(fullname, id);  } @@ -579,6 +580,19 @@ BOOL LLCacheName::getUUID(const std::string& fullname, LLUUID& id)  	}  } +//static +std::string LLCacheName::buildFullname(const std::string& first, const std::string& last) +{ +	std::string fullname = first; +	if (!last.empty() +		&& last != "Resident") +	{ +		fullname += ' '; +		fullname += last; +	} +	return fullname; +} +  // This is a little bit kludgy. LLCacheNameCallback is a slot instead of a function pointer.  //  The reason it is a slot is so that the legacy get() function below can bind an old callback  //  and pass it as a slot. The reason it isn't a boost::function is so that trackable behavior @@ -586,7 +600,7 @@ BOOL LLCacheName::getUUID(const std::string& fullname, LLUUID& id)  //  we call it immediately. -Steve  // NOTE: Even though passing first and last name is a bit of extra overhead, it eliminates the  //  potential need for any parsing should any code need to handle first and last name independently. -boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, const LLCacheNameCallback& callback) +boost::signals2::connection LLCacheName::get(const LLUUID& id, bool is_group, const LLCacheNameCallback& callback)  {  	boost::signals2::connection res; @@ -594,7 +608,7 @@ boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, co  	{  		LLCacheNameSignal signal;  		signal.connect(callback); -		signal(id, sCacheName["nobody"], "", is_group); +		signal(id, sCacheName["nobody"], is_group);  		return res;  	} @@ -606,11 +620,13 @@ boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, co  		// id found in map therefore we can call the callback immediately.  		if (entry->mIsGroup)  		{ -			signal(id, entry->mGroupName, "", entry->mIsGroup); +			signal(id, entry->mGroupName, entry->mIsGroup);  		}  		else  		{ -			signal(id, entry->mFirstName, entry->mLastName, entry->mIsGroup); +			std::string fullname = +				buildFullname(entry->mFirstName, entry->mLastName); +			signal(id, fullname, entry->mIsGroup);  		}  	}  	else @@ -632,9 +648,9 @@ boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, co  	return res;  } -boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, old_callback_t callback, void* user_data) +boost::signals2::connection LLCacheName::get(const LLUUID& id, bool is_group, old_callback_t callback, void* user_data)  { -	return get(id, is_group, boost::bind(callback, _1, _2, _3, _4, user_data)); +	return get(id, is_group, boost::bind(callback, _1, _2, _3, user_data));  }  void LLCacheName::processPending() @@ -706,7 +722,7 @@ void LLCacheName::dump()  		{  			llinfos  				<< iter->first << " = " -				<< entry->mFirstName << " " << entry->mLastName +				<< buildFullname(entry->mFirstName, entry->mLastName)  				<< " @ " << entry->mCreateTime  				<< llendl;  		} @@ -752,11 +768,13 @@ void LLCacheName::Impl::processPendingReplies()  		if (!entry->mIsGroup)  		{ -			(reply->mSignal)(reply->mID, entry->mFirstName, entry->mLastName, FALSE); +			std::string fullname = +				LLCacheName::buildFullname(entry->mFirstName, entry->mLastName); +			(reply->mSignal)(reply->mID, fullname, false);  		}  		else  		{ -			(reply->mSignal)(reply->mID, entry->mGroupName, "", TRUE); +			(reply->mSignal)(reply->mID, entry->mGroupName, true);  		}  	} @@ -918,6 +936,13 @@ void LLCacheName::Impl::processUUIDReply(LLMessageSystem* msg, bool isGroup)  		{  			msg->getStringFast(_PREHASH_UUIDNameBlock, _PREHASH_FirstName, entry->mFirstName, i);  			msg->getStringFast(_PREHASH_UUIDNameBlock, _PREHASH_LastName,  entry->mLastName, i); + +			// IDEVO blank out last name for storage to reduce string compares on +			// retrieval.  Eventually need to convert to single mName field. +			if (entry->mLastName == "Resident") +			{ +				entry->mLastName = ""; +			}  		}  		else  		{	// is group @@ -927,13 +952,14 @@ void LLCacheName::Impl::processUUIDReply(LLMessageSystem* msg, bool isGroup)  		if (!isGroup)  		{ -			mSignal(id, entry->mFirstName, entry->mLastName, FALSE); -			std::string fullname = entry->mFirstName + " " + entry->mLastName; +			std::string fullname = +				LLCacheName::buildFullname(entry->mFirstName, entry->mLastName); +			mSignal(id, fullname, false);  			mReverseCache[fullname] = id;  		}  		else  		{ -			mSignal(id, entry->mGroupName, "", TRUE); +			mSignal(id, entry->mGroupName, true);  			mReverseCache[entry->mGroupName] = id;  		}  	} @@ -962,4 +988,3 @@ void LLCacheName::Impl::handleUUIDGroupNameReply(LLMessageSystem* msg, void** us  {  	((LLCacheName::Impl*)userData)->processUUIDReply(msg, true);  } - diff --git a/indra/llmessage/llcachename.h b/indra/llmessage/llcachename.h index 111cc8b650..c7385204f5 100644 --- a/indra/llmessage/llcachename.h +++ b/indra/llmessage/llcachename.h @@ -42,13 +42,12 @@ class LLUUID;  typedef boost::signals2::signal<void (const LLUUID& id, -                                      const std::string& first_name, -                                      const std::string& last_name, -                                      BOOL is_group)> LLCacheNameSignal; +                                      const std::string& name, +                                      bool is_group)> LLCacheNameSignal;  typedef LLCacheNameSignal::slot_type LLCacheNameCallback;  // Old callback with user data for compatability -typedef void (*old_callback_t)(const LLUUID&, const std::string&, const std::string&, BOOL, void*); +typedef void (*old_callback_t)(const LLUUID&, const std::string&, bool, void*);  // Here's the theory:  // If you request a name that isn't in the cache, it returns "waiting" @@ -89,6 +88,10 @@ public:  	// Reverse lookup of UUID from name  	BOOL getUUID(const std::string& first, const std::string& last, LLUUID& id);  	BOOL getUUID(const std::string& fullname, LLUUID& id); + +	// IDEVO Temporary code +	// Clean up new-style "bobsmith123 Resident" names to "bobsmith123" for display +	static std::string buildFullname(const std::string& first, const std::string& last);  	// If available, this method copies the group name into the string  	// provided. The caller must allocate at least @@ -100,10 +103,10 @@ public:  	// If the data is currently available, may call the callback immediatly  	// otherwise, will request the data, and will call the callback when  	// available.  There is no garuntee the callback will ever be called. -	boost::signals2::connection get(const LLUUID& id, BOOL is_group, const LLCacheNameCallback& callback); +	boost::signals2::connection get(const LLUUID& id, bool is_group, const LLCacheNameCallback& callback);  	// LEGACY -	boost::signals2::connection get(const LLUUID& id, BOOL is_group, old_callback_t callback, void* user_data); +	boost::signals2::connection get(const LLUUID& id, bool is_group, old_callback_t callback, void* user_data);  	// This method needs to be called from time to time to send out  	// requests.  	void processPending(); diff --git a/indra/llmessage/mean_collision_data.h b/indra/llmessage/mean_collision_data.h index 03b96f9f90..a6c635e81e 100644 --- a/indra/llmessage/mean_collision_data.h +++ b/indra/llmessage/mean_collision_data.h @@ -61,7 +61,7 @@ public:  	LLMeanCollisionData(LLMeanCollisionData *mcd)  		: mVictim(mcd->mVictim), mPerp(mcd->mPerp), mTime(mcd->mTime), mType(mcd->mType), mMag(mcd->mMag), -		  mFirstName(mcd->mFirstName), mLastName(mcd->mLastName) +		  mFullName(mcd->mFullName)  	{  	}		 @@ -95,8 +95,7 @@ public:  	time_t mTime;  	EMeanCollisionType mType;  	F32	   mMag; -	std::string mFirstName; -	std::string mLastName; +	std::string mFullName;  }; diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index 92b7816bdd..0bbf1fe084 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -311,13 +311,82 @@ LLUrlEntryAgent::LLUrlEntryAgent()  	mColor = LLUIColorTable::instance().getColor("AgentLinkColor");  } -void LLUrlEntryAgent::onAgentNameReceived(const LLUUID& id, -										  const std::string& first, -										  const std::string& last, -										  BOOL is_group) +// IDEVO demo code +static std::string clean_name(const std::string& full_name)  { +	std::string displayname; +	if (full_name == "miyazaki23") // IDEVO demo code +	{ +		// miyazaki +		displayname += (char)(0xE5); +		displayname += (char)(0xAE); +		displayname += (char)(0xAE); +		displayname += (char)(0xE5); +		displayname += (char)(0xB4); +		displayname += (char)(0x8E); +		// hayao +		displayname += (char)(0xE9); +		displayname += (char)(0xA7); +		displayname += (char)(0xBF); +		// san +		displayname += (char)(0xE3); +		displayname += (char)(0x81); +		displayname += (char)(0x95); +		displayname += (char)(0xE3); +		displayname += (char)(0x82); +		displayname += (char)(0x93); +	} +	else if (full_name == "Jim Linden") +	{ +		displayname = "Jos"; +		displayname += (char)(0xC3); +		displayname += (char)(0xA9); +		displayname += " Sanchez"; +	} +	else if (full_name == "James Linden") +	{ +		displayname = "James Cook"; +	} +	else if (full_name == "Hamilton Linden") +	{ +		displayname = "Hamilton Hitchings"; +	} +	else if (full_name == "Rome Linden") +	{ +		displayname = "Rome Portlock"; +	} +	else if (full_name == "M Linden") +	{ +		displayname = "Mark Kingdon"; +	} +	else if (full_name == "T Linden") +	{ +		displayname = "Tom Hale"; +	} +	else if (full_name == "Callen Linden") +	{ +		displayname = "Christina Allen"; +	} +	 +	std::string final; +	if (!displayname.empty()) +	{ +		final = displayname + " (" + full_name + ")"; +	} +	else +	{ +		final = full_name; +	} +	return final; +} + +void LLUrlEntryAgent::onNameCache(const LLUUID& id, +								  const std::string& full_name, +								  bool is_group) +{ +	std::string final = clean_name(full_name);  	// received the agent name from the server - tell our observers -	callObservers(id.asString(), first + " " + last); +	callObservers(id.asString(), final);  }  std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCallback &cb) @@ -327,14 +396,14 @@ std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCa  		// probably at the login screen, use short string for layout  		return LLTrans::getString("LoadingData");  	} - +	  	std::string agent_id_string = getIDStringFromUrl(url);  	if (agent_id_string.empty())  	{  		// something went wrong, just give raw url  		return unescapeUrl(url);  	} - +	  	LLUUID agent_id(agent_id_string);  	std::string full_name;  	if (agent_id.isNull()) @@ -343,18 +412,19 @@ std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCa  	}  	else if (gCacheName->getFullName(agent_id, full_name))  	{ -		return full_name; +		return clean_name(full_name);  	}  	else  	{ -		gCacheName->get(agent_id, FALSE, -			boost::bind(&LLUrlEntryAgent::onAgentNameReceived, -				this, _1, _2, _3, _4)); +		gCacheName->get(agent_id, false, +						boost::bind(&LLUrlEntryAgent::onNameCache, +									this, _1, _2, _3));  		addObserver(agent_id_string, url, cb);  		return LLTrans::getString("LoadingData");  	}  } +  //  // LLUrlEntryGroup Describes a Second Life group Url, e.g.,  // secondlife:///app/group/00005ff3-4044-c79f-9de8-fb28ae0df991/about @@ -371,12 +441,11 @@ LLUrlEntryGroup::LLUrlEntryGroup()  }  void LLUrlEntryGroup::onGroupNameReceived(const LLUUID& id, -										  const std::string& first, -										  const std::string& last, -										  BOOL is_group) +										  const std::string& name, +										  bool is_group)  {  	// received the group name from the server - tell our observers -	callObservers(id.asString(), first); +	callObservers(id.asString(), name);  }  std::string LLUrlEntryGroup::getLabel(const std::string &url, const LLUrlLabelCallback &cb) @@ -406,9 +475,9 @@ std::string LLUrlEntryGroup::getLabel(const std::string &url, const LLUrlLabelCa  	}  	else  	{ -		gCacheName->get(group_id, TRUE, +		gCacheName->get(group_id, true,  			boost::bind(&LLUrlEntryGroup::onGroupNameReceived, -				this, _1, _2, _3, _4)); +				this, _1, _2, _3));  		addObserver(group_id_string, url, cb);  		return LLTrans::getString("LoadingData");  	} diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h index 3abada0f24..e6844b595c 100644 --- a/indra/llui/llurlentry.h +++ b/indra/llui/llurlentry.h @@ -163,15 +163,13 @@ public:  ///  /// LLUrlEntryAgent Describes a Second Life agent Url, e.g.,  /// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about -///  class LLUrlEntryAgent : public LLUrlEntryBase  {  public:  	LLUrlEntryAgent();  	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);  private: -	void onAgentNameReceived(const LLUUID& id, const std::string& first, -							 const std::string& last, BOOL is_group); +	void onNameCache(const LLUUID& id, const std::string& full_name, bool is_group);  };  /// @@ -184,8 +182,7 @@ public:  	LLUrlEntryGroup();  	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);  private: -	void onGroupNameReceived(const LLUUID& id, const std::string& first, -							 const std::string& last, BOOL is_group); +	void onGroupNameReceived(const LLUUID& id, const std::string& name, bool is_group);  };  /// diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp index 722dbe41b3..5db1f46b8d 100644 --- a/indra/llui/llurlregistry.cpp +++ b/indra/llui/llurlregistry.cpp @@ -43,6 +43,8 @@ void LLUrlRegistryNullCallback(const std::string &url, const std::string &label)  LLUrlRegistry::LLUrlRegistry()  { +	mUrlEntry.reserve(16); +  	// Urls are matched in the order that they were registered  	registerUrl(new LLUrlEntryNoLink());  	registerUrl(new LLUrlEntrySLURL()); @@ -74,11 +76,14 @@ LLUrlRegistry::~LLUrlRegistry()  	}  } -void LLUrlRegistry::registerUrl(LLUrlEntryBase *url) +void LLUrlRegistry::registerUrl(LLUrlEntryBase *url, bool force_front)  {  	if (url)  	{ -		mUrlEntry.push_back(url); +		if (force_front)  // IDEVO +			mUrlEntry.insert(mUrlEntry.begin(), url); +		else +			mUrlEntry.push_back(url);  	}  } diff --git a/indra/llui/llurlregistry.h b/indra/llui/llurlregistry.h index 399ee0a988..6d47c2c2a2 100644 --- a/indra/llui/llurlregistry.h +++ b/indra/llui/llurlregistry.h @@ -70,7 +70,9 @@ public:  	~LLUrlRegistry();  	/// add a new Url handler to the registry (will be freed on destruction) -	void registerUrl(LLUrlEntryBase *url); +	/// optionally force it to the front of the list, making it take +	/// priority over other regular expression matches for URLs +	void registerUrl(LLUrlEntryBase *url, bool force_front = false);  	/// get the next Url in an input string, starting at a given character offset  	/// your callback is invoked if the matched Url's label changes in the future diff --git a/indra/llui/tests/llurlentry_stub.cpp b/indra/llui/tests/llurlentry_stub.cpp index 26d1f2e067..30bab1eb91 100644 --- a/indra/llui/tests/llurlentry_stub.cpp +++ b/indra/llui/tests/llurlentry_stub.cpp @@ -36,13 +36,20 @@ BOOL LLCacheName::getFullName(const LLUUID& id, std::string& fullname)  	return TRUE;  } +BOOL LLCacheName::getName(const LLUUID& id, std::string& first, std::string& last) +{ +	first = "Lynx"; +	last = "Linden"; +	return TRUE; +} +  BOOL LLCacheName::getGroupName(const LLUUID& id, std::string& group)  {  	group = "My Group";  	return TRUE;  } -boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, const LLCacheNameCallback& callback) +boost::signals2::connection LLCacheName::get(const LLUUID& id, bool is_group, const LLCacheNameCallback& callback)  {  	return boost::signals2::connection();  } diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp index cbb303a059..bcb1e65092 100644 --- a/indra/llui/tests/llurlentry_test.cpp +++ b/indra/llui/tests/llurlentry_test.cpp @@ -285,7 +285,6 @@ namespace tut  		testRegex("Agent Url alternate command", url,  				  "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar",  				  "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar"); -  	}  	template<> template<> diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index bd987eac77..bfd3d12efb 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -62,6 +62,7 @@  #include "llimfloater.h"  #include "lltrans.h"  #include "llcallingcard.h" +#include "llslurl.h"			// IDEVO  // static  void LLAvatarActions::requestFriendshipDialog(const LLUUID& id, const std::string& name) @@ -73,7 +74,7 @@ void LLAvatarActions::requestFriendshipDialog(const LLUUID& id, const std::strin  	}  	LLSD args; -	args["NAME"] = name; +	args["NAME"] = LLSLURL::buildCommand("agent", id, "inspect");  	LLSD payload;  	payload["id"] = id;  	payload["name"] = name; @@ -102,7 +103,7 @@ void LLAvatarActions::requestFriendshipDialog(const LLUUID& id)  	}  	std::string full_name; -	gCacheName->getFullName(id, full_name); +	// IDEVO gCacheName->getFullName(id, full_name);  	requestFriendshipDialog(id, full_name);  } diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index 87b8d807c4..11cc456695 100644 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -244,7 +244,8 @@ void LLAvatarIconCtrl::setValue(const LLSD& value)  		LLIconCtrl::setValue(value);  	} -	gCacheName->get(mAvatarId, FALSE, boost::bind(&LLAvatarIconCtrl::nameUpdatedCallback, this, _1, _2, _3, _4)); +	gCacheName->get(mAvatarId, false, +		boost::bind(&LLAvatarIconCtrl::nameUpdatedCallback, this, _1, _2, _3));  }  bool LLAvatarIconCtrl::updateFromCache() @@ -289,22 +290,20 @@ void LLAvatarIconCtrl::processProperties(void* data, EAvatarProcessorType type)  void LLAvatarIconCtrl::nameUpdatedCallback(  	const LLUUID& id, -	const std::string& first, -	const std::string& last, -	BOOL is_group) +	const std::string& name, +	bool is_group)  {  	if (id == mAvatarId)  	{ -		mFirstName = first; -		mLastName = last; +		mFullName = name;  		if (mDrawTooltip)  		{ -			setToolTip(mFirstName + " " + mLastName); +			setToolTip(name);  		}  		else  		{ -			setToolTip(std::string("")); +			setToolTip(std::string());  		}  	}  } diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h index 38616b7852..a5452ee1d3 100644 --- a/indra/newview/llavatariconctrl.h +++ b/indra/newview/llavatariconctrl.h @@ -92,20 +92,17 @@ public:  	void nameUpdatedCallback(  		const LLUUID& id, -		const std::string& first, -		const std::string& last, -		BOOL is_group); +		const std::string& name, +		bool is_group);  	const LLUUID&		getAvatarId() const	{ return mAvatarId; } -	const std::string&	getFirstName() const { return mFirstName; } -	const std::string&	getLastName() const { return mLastName; } +	const std::string&	getFullName() const { return mFullName; }  	void setDrawTooltip(bool value) { mDrawTooltip = value;}  protected:  	LLUUID				mAvatarId; -	std::string			mFirstName; -	std::string			mLastName; +	std::string			mFullName;  	bool				mDrawTooltip;  	std::string			mDefaultIconName; diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 846b2843dd..bf0121f5fd 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -225,7 +225,7 @@ void LLAvatarListItem::setAvatarId(const LLUUID& id, bool ignore_status_changes)  		LLAvatarTracker::instance().addParticularFriendObserver(mAvatarId, this);  	// Set avatar name. -	gCacheName->get(id, FALSE, boost::bind(&LLAvatarListItem::onNameCache, this, _2, _3)); +	gCacheName->get(id, false, boost::bind(&LLAvatarListItem::onNameCache, this, _2));  }  void LLAvatarListItem::showLastInteractionTime(bool show) @@ -330,10 +330,9 @@ void LLAvatarListItem::setNameInternal(const std::string& name, const std::strin  	mAvatarName->setToolTip(name);  } -void LLAvatarListItem::onNameCache(const std::string& first_name, const std::string& last_name) +void LLAvatarListItem::onNameCache(const std::string& fullname)  { -	std::string name = first_name + " " + last_name; -	setName(name); +	setName(fullname);  }  // Convert given number of seconds to a string like "23 minutes", "15 hours" or "3 years", diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index 426d80e0a8..00c87ec330 100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -151,7 +151,7 @@ private:  	} EAvatarListItemChildIndex;  	void setNameInternal(const std::string& name, const std::string& highlight); -	void onNameCache(const std::string& first_name, const std::string& last_name); +	void onNameCache(const std::string& fullname);  	std::string formatSeconds(U32 secs); diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 1dc0e8c0a7..855d109784 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -174,11 +174,7 @@ public:  		}  		else if (level == "add")  		{ -			std::string name; -			name.assign(getFirstName()); -			name.append(" "); -			name.append(getLastName()); - +			std::string name = getFullName();  			LLAvatarActions::requestFriendshipDialog(getAvatarId(), name);  		}  		else if (level == "remove") @@ -248,15 +244,14 @@ public:  	}  	const LLUUID&		getAvatarId () const { return mAvatarID;} -	const std::string&	getFirstName() const { return mFirstName; } -	const std::string&	getLastName	() const { return mLastName; } +	const std::string&	getFullName() const { return mFullName; }  	void setup(const LLChat& chat,const LLStyle::Params& style_params)   	{  		mAvatarID = chat.mFromID;  		mSessionID = chat.mSessionID;  		mSourceType = chat.mSourceType; -		gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4)); +		gCacheName->get(mAvatarID, false, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3));  		if(chat.mFromID.isNull())  		{  			mSourceType = CHAT_SOURCE_SYSTEM; @@ -328,12 +323,11 @@ public:  		LLPanel::draw();  	} -	void nameUpdatedCallback(const LLUUID& id,const std::string& first,const std::string& last,BOOL is_group) +	void nameUpdatedCallback(const LLUUID& id,const std::string& full_name, bool is_group)  	{  		if (id != mAvatarID)  			return; -		mFirstName = first; -		mLastName = last; +		mFullName = full_name;  	}  protected:  	static const S32 PADDING = 20; @@ -418,8 +412,7 @@ protected:  	LLUUID			    mAvatarID;  	EChatSourceType		mSourceType; -	std::string			mFirstName; -	std::string			mLastName; +	std::string			mFullName;  	std::string			mFrom;  	LLUUID				mSessionID; diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index a0b2de85f0..50aa70478b 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -370,6 +370,19 @@ void LLFloaterAvatarPicker::setAllowMultiple(BOOL allow_multiple)  	getChild<LLScrollListCtrl>("Friends")->setAllowMultipleSelection(allow_multiple);  } +// IDEVO +static std::string clean_name_from_avatar_picker(const std::string& first, const std::string& last) +{ +	if (last.empty() || last == "Resident") +	{ +		return first; +	} +	else +	{ +		return first + " " + last; +	} +} +  // static   void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void**)  { @@ -420,7 +433,7 @@ void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void*  		}  		else  		{ -			avatar_name = first_name + " " + last_name; +			avatar_name = clean_name_from_avatar_picker(first_name, last_name);  			search_results->setEnabled(TRUE);  			found_one = TRUE;  		} diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp index e925796526..9ccae43a92 100644 --- a/indra/newview/llfloaterbump.cpp +++ b/indra/newview/llfloaterbump.cpp @@ -89,7 +89,7 @@ void LLFloaterBump::onOpen(const LLSD& key)  void LLFloaterBump::add(LLScrollListCtrl* list, LLMeanCollisionData* mcd)  { -	if (mcd->mFirstName.empty() || list->getItemCount() >= 20) +	if (mcd->mFullName.empty() || list->getItemCount() >= 20)  	{  		return;  	} @@ -127,8 +127,7 @@ void LLFloaterBump::add(LLScrollListCtrl* list, LLMeanCollisionData* mcd)  	// All above action strings are in XML file  	LLUIString text = getString(action);  	text.setArg("[TIME]", timeStr); -	text.setArg("[FIRST]", mcd->mFirstName); -	text.setArg("[LAST]", mcd->mLastName); +	text.setArg("[NAME]", mcd->mFullName);  	LLSD row;  	row["id"] = mcd->mPerp; diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp index 9b88923e7e..47678d1e82 100644 --- a/indra/newview/llfloaterbuyland.cpp +++ b/indra/newview/llfloaterbuyland.cpp @@ -182,9 +182,8 @@ public:  	void updateNames();  	// Name cache callback  	void updateGroupName(const LLUUID& id, -						 const std::string& first_name, -						 const std::string& last_name, -						 BOOL is_group); +						 const std::string& name, +						 bool is_group);  	void refreshUI(); @@ -801,9 +800,9 @@ void LLFloaterBuyLandUI::updateNames()  	}  	else if (parcelp->getIsGroupOwned())  	{ -		gCacheName->get(parcelp->getGroupID(), TRUE, +		gCacheName->get(parcelp->getGroupID(), true,  			boost::bind(&LLFloaterBuyLandUI::updateGroupName, this, -				_1, _2, _3, _4)); +				_1, _2, _3));  	}  	else  	{ @@ -813,16 +812,15 @@ void LLFloaterBuyLandUI::updateNames()  }  void LLFloaterBuyLandUI::updateGroupName(const LLUUID& id, -						 const std::string& first_name, -						 const std::string& last_name, -						 BOOL is_group) +						 const std::string& name, +						 bool is_group)  {  	LLParcel* parcelp = mParcel->getParcel();  	if (parcelp  		&& parcelp->getGroupID() == id)  	{  		// request is current -		mParcelSellerName = first_name; +		mParcelSellerName = name;  	}  } diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp index 00959322e5..bdfce36737 100644 --- a/indra/newview/llfloaterpay.cpp +++ b/indra/newview/llfloaterpay.cpp @@ -47,6 +47,7 @@  #include "lllineeditor.h"  #include "llmutelist.h"  #include "llfloaterreporter.h" +#include "llslurl.h"  #include "llviewerobject.h"  #include "llviewerobjectlist.h"  #include "llviewerregion.h" @@ -102,10 +103,6 @@ private:  	static void onGive(void* data);  	void give(S32 amount);  	static void processPayPriceReply(LLMessageSystem* msg, void **userdata); -	void onCacheOwnerName(const LLUUID& owner_id, -						  const std::string& firstname, -						  const std::string& lastname, -						  BOOL is_group);  	void finishPayUI(const LLUUID& target_id, BOOL is_group);  protected: @@ -427,33 +424,28 @@ void LLFloaterPay::payDirectly(money_callback callback,  void LLFloaterPay::finishPayUI(const LLUUID& target_id, BOOL is_group)  { -	gCacheName->get(target_id, is_group, boost::bind(&LLFloaterPay::onCacheOwnerName, this, _1, _2, _3, _4)); - -	// Make sure the amount field has focus - -	childSetFocus("amount", TRUE); -	 -	LLLineEditor* amount = getChild<LLLineEditor>("amount"); -	amount->selectAll(); -	mTargetIsGroup = is_group; -} - -void LLFloaterPay::onCacheOwnerName(const LLUUID& owner_id, -									const std::string& firstname, -									const std::string& lastname, -									BOOL is_group) -{ +	// IDEVO +	//gCacheName->get(target_id, is_group, boost::bind(&LLFloaterPay::onCacheOwnerName, this, _1, _2, _3, _4)); +	std::string slurl;  	if (is_group)  	{  		setTitle(getString("payee_group")); +		slurl = LLSLURL::buildCommand("group", target_id, "inspect");  	}  	else  	{  		setTitle(getString("payee_resident")); +		slurl = LLSLURL::buildCommand("agent", target_id, "inspect");  	} +	childSetText("payee_name", slurl); + +	// Make sure the amount field has focus + +	childSetFocus("amount", TRUE); -	childSetTextArg("payee_name", "[FIRST]", firstname); -	childSetTextArg("payee_name", "[LAST]", lastname); +	LLLineEditor* amount = getChild<LLLineEditor>("amount"); +	amount->selectAll(); +	mTargetIsGroup = is_group;  }  // static diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index 4194416a01..f2827919ce 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -563,11 +563,8 @@ void LLPanelScriptLimitsRegionMemory::setErrorStatus(U32 status, const std::stri  // callback from the name cache with an owner name to add to the list  void LLPanelScriptLimitsRegionMemory::onNameCache(  						 const LLUUID& id, -						 const std::string& first_name, -						 const std::string& last_name) +						 const std::string& name)  { -	std::string name = first_name + " " + last_name; -  	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");	  	if(!list)  	{ @@ -670,9 +667,12 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)  					if(std::find(names_requested.begin(), names_requested.end(), owner_id) == names_requested.end())  					{  						names_requested.push_back(owner_id); -						gCacheName->get(owner_id, TRUE, -						boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache, -							this, _1, _2, _3)); +					    // Is this a bug?  It's trying to look up a GROUP name, not +					    // an AVATAR name?  JC +					    const bool is_group = true; +						gCacheName->get(owner_id, is_group, +						    boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache, +							    this, _1, _2));  					}  				}  			} diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index 4c1ecc1019..cbcd64e82c 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -173,10 +173,8 @@ public:  	void returnObjects();  private: - -	void onNameCache(const LLUUID& id, -			 const std::string& first_name, -			 const std::string& last_name); +	void onNameCache(	 const LLUUID& id, +						 const std::string& name);  	LLSD mContent;  	LLUUID mParcelId; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 0c64c2b032..f3de5a2543 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2425,7 +2425,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  		{ @@ -2435,9 +2436,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(); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 1c7aaa3f1b..8ad8632c99 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -429,7 +429,7 @@ private:  	void processIMTypingCore(const LLIMInfo* im_info, BOOL typing); -	static void onInviteNameLookup(LLSD payload, const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group); +	static void onInviteNameLookup(LLSD payload, const LLUUID& id, const std::string& name, bool is_group);  	void notifyObserverSessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id);  	void notifyObserverSessionRemoved(const LLUUID& session_id); diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index b2cdc0738f..ddd9008b3c 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -138,11 +138,9 @@ private:  	bool isNotFriend();  	// Callback for gCacheName to look up avatar name -	void nameUpdatedCallback( -							 const LLUUID& id, -							 const std::string& first, -							 const std::string& last, -							 BOOL is_group); +	void nameUpdatedCallback(const LLUUID& id, +							 const std::string& name, +							 bool is_group);  private:  	LLUUID				mAvatarID; @@ -360,9 +358,9 @@ void LLInspectAvatar::requestUpdate()  	childSetValue("avatar_icon", LLSD(mAvatarID) ); -	gCacheName->get(mAvatarID, FALSE, +	gCacheName->get(mAvatarID, false,  		boost::bind(&LLInspectAvatar::nameUpdatedCallback, -			this, _1, _2, _3, _4)); +			this, _1, _2, _3));  }  void LLInspectAvatar::processAvatarData(LLAvatarData* data) @@ -605,13 +603,12 @@ void LLInspectAvatar::onVolumeChange(const LLSD& data)  void LLInspectAvatar::nameUpdatedCallback(  	const LLUUID& id, -	const std::string& first, -	const std::string& last, -	BOOL is_group) +	const std::string& name, +	bool is_group)  {  	if (id == mAvatarID)  	{ -		mAvatarName = first + " " + last; +		mAvatarName = name;  		childSetValue("user_name", LLSD(mAvatarName) );  	}  } diff --git a/indra/newview/llinspectgroup.cpp b/indra/newview/llinspectgroup.cpp index 7fd7b69021..364da3f64c 100644 --- a/indra/newview/llinspectgroup.cpp +++ b/indra/newview/llinspectgroup.cpp @@ -84,9 +84,8 @@ public:  	// Callback for gCacheName to look up group name  	// Faster than waiting for group properties to return  	void nameUpdatedCallback(const LLUUID& id, -							 const std::string& first, -							 const std::string& last, -							 BOOL is_group); +							 const std::string& name, +							 bool is_group);  	// Button/menu callbacks  	void onClickViewProfile(); @@ -225,21 +224,19 @@ void LLInspectGroup::requestUpdate()  	mPropertiesRequest = new LLFetchGroupData(mGroupID, this);  	// Name lookup will be faster out of cache, use that -	gCacheName->get(mGroupID, TRUE, +	gCacheName->get(mGroupID, true,  		boost::bind(&LLInspectGroup::nameUpdatedCallback, -			this, _1, _2, _3, _4)); +			this, _1, _2, _3));  }  void LLInspectGroup::nameUpdatedCallback(  	const LLUUID& id, -	const std::string& first, -	const std::string& last, -	BOOL is_group) +	const std::string& name, +	bool is_group)  {  	if (id == mGroupID)  	{ -		// group names are returned as a first name -		childSetValue("group_name", LLSD(first) ); +		childSetValue("group_name", LLSD(name) );  	}  	// Otherwise possibly a request for an older inspector, ignore it diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp index 66e4a1bf66..e91f68f0c9 100644 --- a/indra/newview/llinspectremoteobject.cpp +++ b/indra/newview/llinspectremoteobject.cpp @@ -66,7 +66,7 @@ public:  private:  	void update(); -	static void nameCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* data); +	void onNameCache(const LLUUID& id, const std::string& name, bool is_group);  private:  	LLUUID		 mObjectID; @@ -121,7 +121,8 @@ void LLInspectRemoteObject::onOpen(const LLSD& data)  	mOwner = "";  	if (gCacheName)  	{ -		gCacheName->get(mOwnerID, mGroupOwned, nameCallback, this); +		gCacheName->get(mOwnerID, mGroupOwned, +			boost::bind(&LLInspectRemoteObject::onNameCache, this, _1, _2, _3));  	}  	// update the inspector with the current object state @@ -152,16 +153,10 @@ void LLInspectRemoteObject::onClickClose()  	closeFloater();  } -//static  -void LLInspectRemoteObject::nameCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* data) +void LLInspectRemoteObject::onNameCache(const LLUUID& id, const std::string& name, bool is_group)  { -	LLInspectRemoteObject *self = (LLInspectRemoteObject*)data; -	self->mOwner = first; -	if (!last.empty()) -	{ -		self->mOwner += " " + last; -	} -	self->update(); +	mOwner = name; +	update();  }  void LLInspectRemoteObject::update() diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 7ec976604a..bf19aae34f 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -756,7 +756,8 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item)  			new_item->setCreator(id);  			std::string avatar_name;  			// Fetch the currect name -			gCacheName->get(id, FALSE, boost::bind(&LLViewerInventoryItem::onCallingCardNameLookup, new_item.get(), _1, _2, _3)); +			gCacheName->get(id, false, +				boost::bind(&LLViewerInventoryItem::onCallingCardNameLookup, new_item.get(), _1, _2, _3));  		}  	}  	else if (new_item->getType() == LLAssetType::AT_GESTURE) diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index 2d3c4b187e..62085a47b4 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -443,7 +443,7 @@ void LLMuteList::updateRemove(const LLMute& mute)  	gAgent.sendReliableMessage();  } -void notify_automute_callback(const LLUUID& agent_id, const std::string& first_name, const std::string& last_name, BOOL is_group, LLMuteList::EAutoReason reason) +void notify_automute_callback(const LLUUID& agent_id, const std::string& full_name, bool is_group, LLMuteList::EAutoReason reason)  {  	std::string notif_name;  	switch (reason) @@ -461,8 +461,7 @@ void notify_automute_callback(const LLUUID& agent_id, const std::string& first_n  	}  	LLSD args; -	args["FIRST"] = first_name; -	args["LAST"] = last_name; +	args["NAME"] = full_name;  	LLNotificationPtr notif_ptr = LLNotifications::instance().add(notif_name, args, LLSD());  	if (notif_ptr) @@ -477,7 +476,7 @@ void notify_automute_callback(const LLUUID& agent_id, const std::string& first_n  } -BOOL LLMuteList::autoRemove(const LLUUID& agent_id, const EAutoReason reason, const std::string& first_name, const std::string& last_name) +BOOL LLMuteList::autoRemove(const LLUUID& agent_id, const EAutoReason reason)  {  	BOOL removed = FALSE; @@ -487,24 +486,17 @@ BOOL LLMuteList::autoRemove(const LLUUID& agent_id, const EAutoReason reason, co  		removed = TRUE;  		remove(automute); -		if (first_name.empty() && last_name.empty()) +		std::string full_name; +		if (gCacheName->getFullName(agent_id, full_name))  		{ -			std::string cache_first, cache_last; -			if (gCacheName->getName(agent_id, cache_first, cache_last)) -			{ -				// name in cache, call callback directly -				notify_automute_callback(agent_id, cache_first, cache_last, FALSE, reason); -			} -			else -			{ -				// not in cache, lookup name from cache -				gCacheName->get(agent_id, FALSE, boost::bind(¬ify_automute_callback, _1, _2, _3, _4, reason)); -			} +			// name in cache, call callback directly +			notify_automute_callback(agent_id, full_name, false, reason);  		}  		else  		{ -			// call callback directly -			notify_automute_callback(agent_id, first_name, last_name, FALSE, reason); +			// not in cache, lookup name from cache +			gCacheName->get(agent_id, false, +				boost::bind(¬ify_automute_callback, _1, _2, _3, reason));  		}  	} diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h index e1e81a24b4..4e5812c5ff 100644 --- a/indra/newview/llmutelist.h +++ b/indra/newview/llmutelist.h @@ -107,7 +107,7 @@ public:  	// Remove both normal and legacy mutes, for any or all properties.  	BOOL remove(const LLMute& mute, U32 flags = 0); -	BOOL autoRemove(const LLUUID& agent_id, const EAutoReason reason, const std::string& first_name = LLStringUtil::null, const std::string& last_name = LLStringUtil::null); +	BOOL autoRemove(const LLUUID& agent_id, const EAutoReason reason);  	// Name is required to test against legacy text-only mutes.  	BOOL isMuted(const LLUUID& id, const std::string& name = LLStringUtil::null, U32 flags = 0) const; diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp index cd810b9793..da3e95e947 100644 --- a/indra/newview/llnamebox.cpp +++ b/indra/newview/llnamebox.cpp @@ -87,26 +87,15 @@ void LLNameBox::setNameID(const LLUUID& name_id, BOOL is_group)  		setText(mInitialValue);  } -void LLNameBox::refresh(const LLUUID& id, const std::string& firstname, -						const std::string& lastname, BOOL is_group) +void LLNameBox::refresh(const LLUUID& id, const std::string& full_name, bool is_group)  {  	if (id == mNameID)  	{ -		std::string name; -		if (!is_group) -		{ -			name = firstname + " " + lastname; -		} -		else -		{ -			name = firstname; -		} -		setName(name, is_group); +		setName(full_name, is_group);  	}  } -void LLNameBox::refreshAll(const LLUUID& id, const std::string& firstname, -						   const std::string& lastname, BOOL is_group) +void LLNameBox::refreshAll(const LLUUID& id, const std::string& full_name, bool is_group)  {  	std::set<LLNameBox*>::iterator it;  	for (it = LLNameBox::sInstances.begin(); @@ -114,7 +103,7 @@ void LLNameBox::refreshAll(const LLUUID& id, const std::string& firstname,  		 ++it)  	{  		LLNameBox* box = *it; -		box->refresh(id, firstname, lastname, is_group); +		box->refresh(id, full_name, is_group);  	}  } diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h index 48b54faec8..2fe8990653 100644 --- a/indra/newview/llnamebox.h +++ b/indra/newview/llnamebox.h @@ -59,10 +59,9 @@ public:  	void setNameID(const LLUUID& name_id, BOOL is_group); -	void refresh(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group); +	void refresh(const LLUUID& id, const std::string& full_name, bool is_group); -	static void refreshAll(const LLUUID& id, const std::string& firstname, -						   const std::string& lastname, BOOL is_group); +	static void refreshAll(const LLUUID& id, const std::string& full_name, bool is_group);  protected:  	LLNameBox (const Params&); diff --git a/indra/newview/llnameeditor.cpp b/indra/newview/llnameeditor.cpp index 65601da7da..0c704a1f56 100644 --- a/indra/newview/llnameeditor.cpp +++ b/indra/newview/llnameeditor.cpp @@ -81,26 +81,15 @@ void LLNameEditor::setNameID(const LLUUID& name_id, BOOL is_group)  	setText(name);  } -void LLNameEditor::refresh(const LLUUID& id, const std::string& firstname, -						   const std::string& lastname, BOOL is_group) +void LLNameEditor::refresh(const LLUUID& id, const std::string& full_name, bool is_group)  {  	if (id == mNameID)  	{ -		std::string name; -		if (!is_group) -		{ -			name = firstname + " " + lastname; -		} -		else -		{ -			name = firstname; -		} -		setText(name); +		setText(full_name);  	}  } -void LLNameEditor::refreshAll(const LLUUID& id, const std::string& firstname, -							  const std::string& lastname, BOOL is_group) +void LLNameEditor::refreshAll(const LLUUID& id, const std::string& full_name, bool is_group)  {  	std::set<LLNameEditor*>::iterator it;  	for (it = LLNameEditor::sInstances.begin(); @@ -108,7 +97,7 @@ void LLNameEditor::refreshAll(const LLUUID& id, const std::string& firstname,  		 ++it)  	{  		LLNameEditor* box = *it; -		box->refresh(id, firstname, lastname, is_group); +		box->refresh(id, full_name, is_group);  	}  } diff --git a/indra/newview/llnameeditor.h b/indra/newview/llnameeditor.h index 99e03a1166..a75c492aca 100644 --- a/indra/newview/llnameeditor.h +++ b/indra/newview/llnameeditor.h @@ -65,10 +65,9 @@ public:  	void setNameID(const LLUUID& name_id, BOOL is_group); -	void refresh(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group); +	void refresh(const LLUUID& id, const std::string& full_name, bool is_group); -	static void refreshAll(const LLUUID& id, const std::string& firstname, -						   const std::string& lastname, BOOL is_group); +	static void refreshAll(const LLUUID& id, const std::string& full_name, bool is_group);  	// Take/return agent UUIDs diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 8c875c9b63..73d5fccfbd 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -315,22 +315,11 @@ void LLNameListCtrl::removeNameItem(const LLUUID& agent_id)  }  // public -void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,  -							 const std::string& last, BOOL is_group) +void LLNameListCtrl::refresh(const LLUUID& id, const std::string& full_name, bool is_group)  {  	//llinfos << "LLNameListCtrl::refresh " << id << " '" << first << " "  	//	<< last << "'" << llendl; -	std::string fullname; -	if (!is_group) -	{ -		fullname = first + " " + last; -	} -	else -	{ -		fullname = first; -	} -  	// TODO: scan items for that ID, fix if necessary  	item_list::iterator iter;  	for (iter = getItemList().begin(); iter != getItemList().end(); iter++) @@ -342,7 +331,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,  			cell = item->getColumn(mNameColumnIndex);  			if (cell)  			{ -				cell->setValue(fullname); +				cell->setValue(full_name);  			}  		}  	} @@ -352,14 +341,13 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first,  // static -void LLNameListCtrl::refreshAll(const LLUUID& id, const std::string& first, -								const std::string& last, BOOL is_group) +void LLNameListCtrl::refreshAll(const LLUUID& id, const std::string& full_name, bool is_group)  {  	LLInstanceTracker<LLNameListCtrl>::instance_iter it;  	for (it = beginInstances(); it != endInstances(); ++it)  	{  		LLNameListCtrl& ctrl = *it; -		ctrl.refresh(id, first, last, is_group); +		ctrl.refresh(id, full_name, is_group);  	}  } diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index 23b1cb6897..5148c74132 100644 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -105,10 +105,9 @@ public:  	void removeNameItem(const LLUUID& agent_id); -	void refresh(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group); +	void refresh(const LLUUID& id, const std::string& full_name, bool is_group); -	static void refreshAll(const LLUUID& id, const std::string& firstname, -						   const std::string& lastname, BOOL is_group); +	static void refreshAll(const LLUUID& id, const std::string& full_name, bool is_group);  	// LLView interface  	/*virtual*/ BOOL	handleDragAndDrop(S32 x, S32 y, MASK mask, diff --git a/indra/newview/llpanelavatartag.cpp b/indra/newview/llpanelavatartag.cpp index 7563cc7f61..173fb851ce 100644 --- a/indra/newview/llpanelavatartag.cpp +++ b/indra/newview/llpanelavatartag.cpp @@ -86,7 +86,7 @@ void LLPanelAvatarTag::setAvatarId(const LLUUID& avatar_id)  	{  		mIcon->setValue(avatar_id);  	} -	setName(std::string(mIcon->getFirstName()+ " "+ mIcon->getLastName())); +	setName(std::string(mIcon->getFullName()));  }  boost::signals2::connection LLPanelAvatarTag::setLeftButtonClickCallback( diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index cbd6f64a48..15e8258475 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -182,7 +182,7 @@ void LLPanelIMControlPanel::onViewProfileButtonClicked()  void LLPanelIMControlPanel::onAddFriendButtonClicked()  {  	LLAvatarIconCtrl* avatar_icon = getChild<LLAvatarIconCtrl>("avatar_icon"); -	std::string full_name = avatar_icon->getFirstName() + " " + avatar_icon->getLastName(); +	std::string full_name = avatar_icon->getFullName();  	LLAvatarActions::requestFriendshipDialog(mAvatarID, full_name);  } @@ -231,7 +231,8 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)  	else  	{  		// If the participant is an avatar, fetch the currect name -		gCacheName->get(mAvatarID, FALSE, boost::bind(&LLPanelIMControlPanel::nameUpdatedCallback, this, _1, _2, _3, _4)); +		gCacheName->get(mAvatarID, false, +			boost::bind(&LLPanelIMControlPanel::onNameCache, this, _1, _2, _3));  	}  } @@ -247,14 +248,11 @@ void LLPanelIMControlPanel::changed(U32 mask)  	}  } -void LLPanelIMControlPanel::nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) +void LLPanelIMControlPanel::onNameCache(const LLUUID& id, const std::string& full_name, bool is_group)  {  	if ( id == mAvatarID )  	{ -		std::string avatar_name; -		avatar_name.assign(first); -		avatar_name.append(" "); -		avatar_name.append(last); +		std::string avatar_name = full_name;  		getChild<LLTextBox>("avatar_name")->setValue(avatar_name);  		getChild<LLTextBox>("avatar_name")->setToolTip(avatar_name);  	} diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h index 3ab505a084..45f4b95903 100644 --- a/indra/newview/llpanelimcontrolpanel.h +++ b/indra/newview/llpanelimcontrolpanel.h @@ -90,7 +90,7 @@ public:  	virtual void changed(U32 mask);  protected: -	void nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group); +	void onNameCache(const LLUUID& id, const std::string& full_name, bool is_group);  private:  	void onViewProfileButtonClicked(); diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 36a542cfa0..ff27282cbf 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -44,6 +44,7 @@  #include "llagent.h"  #include "llagentui.h"  #include "lllandmarkactions.h" +#include "llslurl.h"  #include "llviewerinventory.h"  #include "llviewerparcelmgr.h"  #include "llviewerregion.h" @@ -230,13 +231,15 @@ void LLPanelLandmarkInfo::displayItemInfo(const LLInventoryItem* pItem)  	//////////////////  	if (pItem->getCreatorUUID().notNull())  	{ -		std::string name; +		// IDEVO  		LLUUID creator_id = pItem->getCreatorUUID(); -		if (!gCacheName->getFullName(creator_id, name)) -		{ -			gCacheName->get(creator_id, FALSE, -							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mCreator, _2, _3)); -		} +		std::string name = +			LLSLURL::buildCommand("agent", creator_id, "inspect"); +		//if (!gCacheName->getFullName(creator_id, name)) +		//{ +		//	gCacheName->get(creator_id, FALSE, +		//					boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mCreator, _2, _3)); +		//}  		mCreator->setText(name);  	}  	else @@ -253,20 +256,24 @@ void LLPanelLandmarkInfo::displayItemInfo(const LLInventoryItem* pItem)  		if (perm.isGroupOwned())  		{  			LLUUID group_id = perm.getGroup(); -			if (!gCacheName->getGroupName(group_id, name)) -			{ -				gCacheName->get(group_id, TRUE, -								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mOwner, _2, _3)); -			} +			// IDEVO +			//if (!gCacheName->getGroupName(group_id, name)) +			//{ +			//	gCacheName->get(group_id, TRUE, +			//					boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mOwner, _2, _3)); +			//} +			name = LLSLURL::buildCommand("group", group_id, "inspect");  		}  		else  		{  			LLUUID owner_id = perm.getOwner(); -			if (!gCacheName->getFullName(owner_id, name)) -			{ -				gCacheName->get(owner_id, FALSE, -								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mOwner, _2, _3)); -			} +			// IDEVO +			//if (!gCacheName->getFullName(owner_id, name)) +			//{ +			//	gCacheName->get(owner_id, FALSE, +			//					boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mOwner, _2, _3)); +			//} +			name = LLSLURL::buildCommand("agent", owner_id, "inspect");  		}  		mOwner->setText(name);  	} diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index af9e791223..23e157e617 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -213,7 +213,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	}  #if !USE_VIEWER_AUTH -	childSetPrevalidate("first_name_edit", LLLineEditor::prevalidateASCIIPrintableNoSpace); +	//childSetPrevalidate("login_id_edit", LLLineEditor::prevalidateASCIIPrintableNoSpace);  	childSetPrevalidate("last_name_edit", LLLineEditor::prevalidateASCIIPrintableNoSpace);  	childSetCommitCallback("password_edit", mungePassword, this); @@ -498,7 +498,7 @@ void LLPanelLogin::giveFocus()  	if( sInstance )  	{  		// Grab focus and move cursor to first blank input field -		std::string first = sInstance->childGetText("first_name_edit"); +		std::string first = sInstance->childGetText("login_id_edit");  		std::string pass = sInstance->childGetText("password_edit");  		BOOL have_first = !first.empty(); @@ -514,7 +514,7 @@ void LLPanelLogin::giveFocus()  		else  		{  			// User doesn't have a name, so start there. -			edit = sInstance->getChild<LLLineEditor>("first_name_edit"); +			edit = sInstance->getChild<LLLineEditor>("login_id_edit");  		}  		if (edit) @@ -536,8 +536,8 @@ void LLPanelLogin::showLoginWidgets()  	// *TODO: Append all the usual login parameters, like first_login=Y etc.  	std::string splash_screen_url = sInstance->getString("real_url");  	web_browser->navigateTo( splash_screen_url, "text/html" ); -	LLUICtrl* first_name_edit = sInstance->getChild<LLUICtrl>("first_name_edit"); -	first_name_edit->setFocus(TRUE); +	LLUICtrl* login_id_edit = sInstance->getChild<LLUICtrl>("login_id_edit"); +	login_id_edit->setFocus(TRUE);  }  // static @@ -569,8 +569,15 @@ void LLPanelLogin::setFields(const std::string& firstname,  		return;  	} -	sInstance->childSetText("first_name_edit", firstname); -	sInstance->childSetText("last_name_edit", lastname); +	std::string login_id = firstname; +	if (!lastname.empty()) +	{ +		// support traditional First Last name slurls +		login_id += " "; +		login_id += lastname; +	} +	sInstance->childSetText("login_id_edit", login_id); +	sInstance->childSetText("last_name_edit", std::string());  	// Max "actual" password length is 16 characters.  	// Hex digests are always 32 characters. @@ -623,10 +630,24 @@ void LLPanelLogin::getFields(std::string *firstname,  		return;  	} -	*firstname = sInstance->childGetText("first_name_edit"); -	LLStringUtil::trim(*firstname); +	std::string login_id = sInstance->childGetText("login_id_edit"); +	LLStringUtil::trim(login_id); -	*lastname = sInstance->childGetText("last_name_edit"); +	U32 pos = login_id.find(' '); +	if (pos != std::string::npos) +	{ +		// old-style Firstname Lastname +		*firstname = login_id.substr(0, pos); +		*lastname = login_id.substr(pos+1); +	} +	else +	{ +		// new-style single SLID string +		*firstname = login_id; +		*lastname = "Resident"; +	} + +	LLStringUtil::trim(*firstname);  	LLStringUtil::trim(*lastname);  	*password = sInstance->mMungedPassword; @@ -913,8 +934,10 @@ void LLPanelLogin::onClickConnect(void *)  		// JC - Make sure the fields all get committed.  		sInstance->setFocus(FALSE); -		std::string first = sInstance->childGetText("first_name_edit"); -		std::string last  = sInstance->childGetText("last_name_edit"); +		// Do SLID "Resident" name mangling +		std::string first, last, unused_password; +		getFields(&first, &last, &unused_password); +  		LLComboBox* combo = sInstance->getChild<LLComboBox>("start_location_combo");  		std::string combo_text = combo->getSimple(); diff --git a/indra/newview/llpanelmediasettingspermissions.cpp b/indra/newview/llpanelmediasettingspermissions.cpp index a23aed2e98..dcc052f15e 100644 --- a/indra/newview/llpanelmediasettingspermissions.cpp +++ b/indra/newview/llpanelmediasettingspermissions.cpp @@ -115,7 +115,7 @@ void LLPanelMediaSettingsPermissions::draw()  		if(mPermsGroupName)  		{  			mPermsGroupName->setNameID(LLUUID::null, TRUE); -			mPermsGroupName->refresh(LLUUID::null, LLStringUtil::null, LLStringUtil::null, true); +			mPermsGroupName->refresh(LLUUID::null, std::string(), true);  			mPermsGroupName->setEnabled(false);  		};  	}; diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp index 8b8b1bed37..b820adeaf3 100644 --- a/indra/newview/llpanelpermissions.cpp +++ b/indra/newview/llpanelpermissions.cpp @@ -385,7 +385,7 @@ void LLPanelPermissions::refresh()  		if (mLabelGroupName)  		{  			mLabelGroupName->setNameID(LLUUID::null, TRUE); -			mLabelGroupName->refresh(LLUUID::null,LLStringUtil::null, LLStringUtil::null, TRUE); +			mLabelGroupName->refresh(LLUUID::null, std::string(), true);  			mLabelGroupName->setEnabled(FALSE);  		}  	} diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index 9ebc8ca2b9..f57aa7d42e 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -281,9 +281,7 @@ void LLPanelPlaceInfo::createPick(const LLVector3d& pos_global, LLPanelPickEdit*  }  // static -void LLPanelPlaceInfo::nameUpdatedCallback(LLTextBox* text, -										   const std::string& first, -										   const std::string& last) +void LLPanelPlaceInfo::onNameCache(LLTextBox* text, const std::string& full_name)  { -	text->setText(first + " " + last); +	text->setText(full_name);  } diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h index deedbd2b0f..0d7a09b5de 100644 --- a/indra/newview/llpanelplaceinfo.h +++ b/indra/newview/llpanelplaceinfo.h @@ -102,9 +102,7 @@ public:  	void createPick(const LLVector3d& pos_global, LLPanelPickEdit* pick_panel);  protected: -	static void nameUpdatedCallback(LLTextBox* text, -									const std::string& first, -									const std::string& last); +	static void onNameCache(LLTextBox* text, const std::string& full_name);  	/**  	 * mParcelID is valid only for remote places, in other cases it's null. See resetLocation()  diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 9e5f9da0ea..5fe24b15f6 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -51,6 +51,7 @@  #include "llappviewer.h"  #include "llcallbacklist.h"  #include "llfloaterbuycurrency.h" +#include "llslurl.h"		// IDEVO  #include "llstatusbar.h"  #include "llviewercontrol.h"  #include "llviewerparcelmgr.h" @@ -427,11 +428,11 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,  			if(!parcel->getGroupID().isNull())  			{  				// FIXME: Using parcel group as region group. -				gCacheName->get(parcel->getGroupID(), TRUE, -								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mRegionGroupText, _2, _3)); +				gCacheName->get(parcel->getGroupID(), true, +								boost::bind(&LLPanelPlaceInfo::onNameCache, mRegionGroupText, _2)); -				gCacheName->get(parcel->getGroupID(), TRUE, -								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mParcelOwner, _2, _3)); +				gCacheName->get(parcel->getGroupID(), true, +								boost::bind(&LLPanelPlaceInfo::onNameCache, mParcelOwner, _2));  			}  			else  			{ @@ -443,10 +444,14 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,  		else  		{  			// Figure out the owner's name -			gCacheName->get(parcel->getOwnerID(), FALSE, -							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mParcelOwner, _2, _3)); -			gCacheName->get(region->getOwner(), FALSE, -							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mRegionOwnerText, _2, _3)); +			// IDEVO +			//gCacheName->get(parcel->getOwnerID(), FALSE, +			//				boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mParcelOwner, _2, _3)); +			std::string parcel_owner = +				LLSLURL::buildCommand("agent", parcel->getOwnerID(), "inspect"); +			mParcelOwner->setText(parcel_owner); +			gCacheName->get(region->getOwner(), false, +							boost::bind(&LLPanelPlaceInfo::onNameCache, mRegionOwnerText, _2));  		}  		if(LLParcel::OS_LEASE_PENDING == parcel->getOwnershipStatus()) @@ -468,8 +473,8 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,  		const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();  		if(auth_buyer_id.notNull())  		{ -			gCacheName->get(auth_buyer_id, TRUE, -							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mSaleToText, _2, _3)); +			gCacheName->get(auth_buyer_id, true, +							boost::bind(&LLPanelPlaceInfo::onNameCache, mSaleToText, _2));  			// Show sales info to a specific person or a group he belongs to.  			if (auth_buyer_id != gAgent.getID() && !gAgent.isInGroup(auth_buyer_id)) diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp index 044036ea50..7c9b7aed36 100644 --- a/indra/newview/llpanelprofileview.cpp +++ b/indra/newview/llpanelprofileview.cpp @@ -107,8 +107,8 @@ void LLPanelProfileView::onOpen(const LLSD& key)  	}  	// Update the avatar name. -	gCacheName->get(getAvatarId(), FALSE, -		boost::bind(&LLPanelProfileView::onAvatarNameCached, this, _1, _2, _3, _4)); +	gCacheName->get(getAvatarId(), false, +		boost::bind(&LLPanelProfileView::onNameCache, this, _1, _2, _3));  	updateOnlineStatus(); @@ -198,10 +198,10 @@ void LLPanelProfileView::processOnlineStatus(bool online)  	mStatusText->setValue(status);  } -void LLPanelProfileView::onAvatarNameCached(const LLUUID& id, const std::string& first_name, const std::string& last_name, BOOL is_group) +void LLPanelProfileView::onNameCache(const LLUUID& id, const std::string& full_name, bool is_group)  {  	llassert(getAvatarId() == id); -	getChild<LLUICtrl>("user_name", FALSE)->setValue(first_name + " " + last_name); +	getChild<LLUICtrl>("user_name", FALSE)->setValue(full_name);  }  // EOF diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h index 9b87e146a8..2b67be12e5 100644 --- a/indra/newview/llpanelprofileview.h +++ b/indra/newview/llpanelprofileview.h @@ -99,11 +99,10 @@ protected:  private:  	// LLCacheName will call this function when avatar name is loaded from server.  	// This is required to display names that have not been cached yet. -	void onAvatarNameCached( +	void onNameCache(  		const LLUUID& id,  -		const std::string& first_name, -		const std::string& last_name, -		BOOL is_group); +		const std::string& full_name, +		bool is_group);  	LLTextBox* mStatusText;  	AvatarStatusObserver* mAvatarStatusObserver; diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp index 0b8f66c5f3..1da6fc516d 100644 --- a/indra/newview/llsidepaneltaskinfo.cpp +++ b/indra/newview/llsidepaneltaskinfo.cpp @@ -348,7 +348,7 @@ void LLSidepanelTaskInfo::refresh()  		if (mLabelGroupName)  		{  			mLabelGroupName->setNameID(LLUUID::null, TRUE); -			mLabelGroupName->refresh(LLUUID::null,LLStringUtil::null, LLStringUtil::null, TRUE); +			mLabelGroupName->refresh(LLUUID::null, std::string(), true);  			mLabelGroupName->setEnabled(FALSE);  		}  	} diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 6f9a1ccdbe..2d4f3ff3c6 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -75,12 +75,13 @@ LLSpeaker::LLSpeaker(const LLUUID& id, const std::string& name, const ESpeakerTy  void LLSpeaker::lookupName()  { -	gCacheName->get(mID, FALSE, boost::bind(&LLSpeaker::onAvatarNameLookup, this, _1, _2, _3, _4)); +	gCacheName->get(mID, false, +		boost::bind(&LLSpeaker::onNameCache, this, _1, _2, _3));  } -void LLSpeaker::onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) +void LLSpeaker::onNameCache(const LLUUID& id, const std::string& full_name, bool is_group)  { -	mDisplayName = first + " " + last; +	mDisplayName = full_name;  }  bool LLSpeaker::isInVoiceChannel() diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h index 63237204c8..cf236f4fe8 100644 --- a/indra/newview/llspeakers.h +++ b/indra/newview/llspeakers.h @@ -65,7 +65,7 @@ public:  	~LLSpeaker() {};  	void lookupName(); -	void onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group); +	void onNameCache(const LLUUID& id, const std::string& full_name, bool is_group);  	bool isInVoiceChannel(); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index b5cd5b73ce..15c5640841 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -267,11 +267,11 @@ void apply_udp_blacklist(const std::string& csv);  bool process_login_success_response();  void transition_back_to_login_panel(const std::string& emsg); -void callback_cache_name(const LLUUID& id, const std::string& firstname, const std::string& lastname, BOOL is_group) +void callback_cache_name(const LLUUID& id, const std::string& full_name, bool is_group)  { -	LLNameListCtrl::refreshAll(id, firstname, lastname, is_group); -	LLNameBox::refreshAll(id, firstname, lastname, is_group); -	LLNameEditor::refreshAll(id, firstname, lastname, is_group); +	LLNameListCtrl::refreshAll(id, full_name, is_group); +	LLNameBox::refreshAll(id, full_name, is_group); +	LLNameEditor::refreshAll(id, full_name, is_group);  	// TODO: Actually be intelligent about the refresh.  	// For now, just brute force refresh the dialogs. diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 3001992630..81b5ac81ad 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1544,9 +1544,9 @@ bool LLViewerInventoryItem::checkPermissionsSet(PermissionMask mask) const  //---------- -void LLViewerInventoryItem::onCallingCardNameLookup(const LLUUID& id, const std::string& first_name, const std::string& last_name) +void LLViewerInventoryItem::onCallingCardNameLookup(const LLUUID& id, const std::string& name, bool is_group)  { -	rename(first_name + " " + last_name); +	rename(name);  	gInventory.addChangedMask(LLInventoryObserver::LABEL, getUUID());  	gInventory.notifyObservers();  } diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index c24f76c87a..278786796d 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -159,7 +159,7 @@ public:  	bool checkPermissionsSet(PermissionMask mask) const;  	// callback -	void onCallingCardNameLookup(const LLUUID& id, const std::string& first_name, const std::string& last_name); +	void onCallingCardNameLookup(const LLUUID& id, const std::string& name, bool is_group);  	// If this is a broken link, try to fix it and any other identical link.  	BOOL regenerateLink(); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 143d95d27e..d8d149bb94 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -995,27 +995,24 @@ bool highlight_offered_item(const LLUUID& item_id)  }  void inventory_offer_mute_callback(const LLUUID& blocked_id, -								   const std::string& first_name, -								   const std::string& last_name, -								   BOOL is_group, LLOfferInfo* offer = NULL) +								   const std::string& full_name, +								   bool is_group, +								   LLOfferInfo* offer = NULL)  { -	std::string from_name; +	std::string from_name = full_name;  	LLMute::EType type;  	if (is_group)  	{  		type = LLMute::GROUP; -		from_name = first_name;  	}  	else if(offer && offer->mFromObject)  	{  		//we have to block object by name because blocked_id is an id of owner  		type = LLMute::BY_NAME; -		from_name = offer->mFromName;  	}  	else  	{  		type = LLMute::AGENT; -		from_name = first_name + " " + last_name;  	}  	// id should be null for BY_NAME mute, see  LLMuteList::add for details   @@ -1141,7 +1138,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&  	// * we can't build two messages at once.  	if (2 == button) // Block  	{ -		gCacheName->get(mFromID, mFromGroup, boost::bind(&inventory_offer_mute_callback,_1,_2,_3,_4,this)); +		gCacheName->get(mFromID, mFromGroup, boost::bind(&inventory_offer_mute_callback,_1,_2,_3,this));  	}  	std::string from_string; // Used in the pop-up. @@ -1282,7 +1279,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const  	// * we can't build two messages at once.  	if (2 == button)  	{ -		gCacheName->get(mFromID, mFromGroup, boost::bind(&inventory_offer_mute_callback,_1,_2,_3,_4,this)); +		gCacheName->get(mFromID, mFromGroup, boost::bind(&inventory_offer_mute_callback,_1,_2,_3,this));  	}  	LLMessageSystem* msg = gMessageSystem; @@ -1657,6 +1654,60 @@ bool inspect_remote_object_callback(const LLSD& notification, const LLSD& respon  }  static LLNotificationFunctorRegistration inspect_remote_object_callback_reg("ServerObjectMessage", inspect_remote_object_callback); +// Strip out "Resident" for display, but only if the message came from a user +// (rather than a script) +static std::string clean_name_from_im(const std::string& name, EInstantMessage type) +{ +	U32 pos = 0; +	switch(type) +	{ +	case IM_NOTHING_SPECIAL: +	case IM_MESSAGEBOX: +	case IM_GROUP_INVITATION: +	case IM_INVENTORY_OFFERED: +	case IM_INVENTORY_ACCEPTED: +	case IM_INVENTORY_DECLINED: +	case IM_GROUP_VOTE: +	case IM_GROUP_MESSAGE_DEPRECATED: +	//IM_TASK_INVENTORY_OFFERED +	//IM_TASK_INVENTORY_ACCEPTED +	//IM_TASK_INVENTORY_DECLINED +	case IM_NEW_USER_DEFAULT: +	case IM_SESSION_INVITE: +	case IM_SESSION_P2P_INVITE: +	case IM_SESSION_GROUP_START: +	case IM_SESSION_CONFERENCE_START: +	case IM_SESSION_SEND: +	case IM_SESSION_LEAVE: +	//IM_FROM_TASK +	case IM_BUSY_AUTO_RESPONSE: +	case IM_CONSOLE_AND_CHAT_HISTORY: +	case IM_LURE_USER: +	case IM_LURE_ACCEPTED: +	case IM_LURE_DECLINED: +	case IM_GODLIKE_LURE_USER: +	case IM_YET_TO_BE_USED: +	case IM_GROUP_ELECTION_DEPRECATED: +	//IM_GOTO_URL +	//IM_FROM_TASK_AS_ALERT +	case IM_GROUP_NOTICE: +	case IM_GROUP_NOTICE_INVENTORY_ACCEPTED: +	case IM_GROUP_NOTICE_INVENTORY_DECLINED: +	case IM_GROUP_INVITATION_ACCEPT: +	case IM_GROUP_INVITATION_DECLINE: +	case IM_GROUP_NOTICE_REQUESTED: +	case IM_FRIENDSHIP_OFFERED: +	case IM_FRIENDSHIP_ACCEPTED: +	case IM_FRIENDSHIP_DECLINED_DEPRECATED: +	//IM_TYPING_START +	//IM_TYPING_STOP +		pos = name.find(" Resident"); +		return name.substr(0, pos); +	default: +		return name; +	} +} +  void process_improved_im(LLMessageSystem *msg, void **user_data)  {  	if (gNoRender) @@ -1704,6 +1755,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  	{          name = LLTrans::getString("Unnamed");  	} +	// IDEVO convert new-style "Resident" names for display +	name = clean_name_from_im(name, dialog);  	BOOL is_busy = gAgent.getBusy();  	BOOL is_muted = LLMuteList::getInstance()->isMuted(from_id, name, LLMute::flagTextChat); @@ -2517,6 +2570,15 @@ void process_decline_callingcard(LLMessageSystem* msg, void**)  	LLNotificationsUtil::add("CallingCardDeclined");  } +static std::string clean_name_from_chat(const std::string& full_name, EChatSourceType type) +{ +	if (type == CHAT_SOURCE_AGENT) +	{ +		U32 pos = full_name.find(" Resident"); +		return full_name.substr(0, pos); +	} +	return full_name; +}  void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)  { @@ -2533,7 +2595,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)  	LLViewerObject*	chatter;  	msg->getString("ChatData", "FromName", from_name); -	chat.mFromName = from_name; +	//chat.mFromName = from_name;  	msg->getUUID("ChatData", "SourceID", from_id);  	chat.mFromID = from_id; @@ -2552,6 +2614,9 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)  	chat.mTime = LLFrameTimer::getElapsedSeconds(); +	// IDEVO Correct for new-style "Resident" names +	chat.mFromName = clean_name_from_chat(from_name, chat.mSourceType); +  	BOOL is_busy = gAgent.getBusy();  	BOOL is_muted = FALSE; @@ -4720,7 +4785,7 @@ void handle_show_mean_events(void *)  	//LLFloaterBump::showInstance();  } -void mean_name_callback(const LLUUID &id, const std::string& first, const std::string& last, BOOL always_false) +void mean_name_callback(const LLUUID &id, const std::string& full_name, bool is_group)  {  	if (gNoRender)  	{ @@ -4742,8 +4807,7 @@ void mean_name_callback(const LLUUID &id, const std::string& first, const std::s  		LLMeanCollisionData *mcd = *iter;  		if (mcd->mPerp == id)  		{ -			mcd->mFirstName = first; -			mcd->mLastName = last; +			mcd->mFullName = full_name;  		}  	}  } @@ -4797,8 +4861,7 @@ void process_mean_collision_alert_message(LLMessageSystem *msgsystem, void **use  		{  			LLMeanCollisionData *mcd = new LLMeanCollisionData(gAgentID, perp, time, type, mag);  			gMeanCollisionList.push_front(mcd); -			const BOOL is_group = FALSE; -			gCacheName->get(perp, is_group, &mean_name_callback); +			gCacheName->get(perp, false, boost::bind(&mean_name_callback, _1, _2, _3));  		}  	}  } @@ -5697,7 +5760,7 @@ static LLNotificationFunctorRegistration callback_load_url_reg("LoadWebPage", ca  // We've got the name of the person who owns the object hurling the url.  // Display confirmation dialog. -void callback_load_url_name(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) +void callback_load_url_name(const LLUUID& id, const std::string& full_name, bool is_group)  {  	std::vector<LLSD>::iterator it;  	for (it = gLoadUrlList.begin(); it != gLoadUrlList.end(); ) @@ -5710,11 +5773,11 @@ void callback_load_url_name(const LLUUID& id, const std::string& first, const st  			std::string owner_name;  			if (is_group)  			{ -				owner_name = first + LLTrans::getString("Group"); +				owner_name = full_name + LLTrans::getString("Group");  			}  			else  			{ -				owner_name = first + " " + last; +				owner_name = full_name;  			}  			// For legacy name-only mutes. @@ -5774,7 +5837,8 @@ void process_load_url(LLMessageSystem* msg, void**)  	// Add to list of pending name lookups  	gLoadUrlList.push_back(payload); -	gCacheName->get(owner_id, owner_is_group, &callback_load_url_name); +	gCacheName->get(owner_id, owner_is_group, +		boost::bind(&callback_load_url_name, _1, _2, _3));  } diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 4235f97eab..7df24c9ade 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2792,8 +2792,12 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)  					line += firstname->getString();  				} -				line += " "; -				line += lastname->getString(); +				// Suppress last name "Resident" as this is used for new SLID names +				if (strcmp(lastname->getString(), "Resident")) +				{ +					line += " "; +					line += lastname->getString(); +				}  				BOOL need_comma = FALSE;  				if (is_away || is_muted || is_busy) diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index b6e7e73b9d..13735071af 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -7080,18 +7080,8 @@ void LLVoiceClient::notifyFriendObservers()  void LLVoiceClient::lookupName(const LLUUID &id)  { -	BOOL is_group = FALSE; -	gCacheName->get(id, is_group, &LLVoiceClient::onAvatarNameLookup); -} - -//static -void LLVoiceClient::onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) -{ -	if(gVoiceClient) -	{ -		std::string name = llformat("%s %s", first.c_str(), last.c_str()); -		gVoiceClient->avatarNameResolved(id, name); -	} +	gCacheName->get(id, false, +		boost::bind(&LLVoiceClient::avatarNameResolved, this, _1, _2));  }  void LLVoiceClient::avatarNameResolved(const LLUUID &id, const std::string &name) diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index a96cf18e27..d020d796c0 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -477,7 +477,6 @@ static	void updatePosition(void);  		void removeObserver(LLFriendObserver* observer);  		void lookupName(const LLUUID &id); -		static void onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group);  		void avatarNameResolved(const LLUUID &id, const std::string &name);  		typedef std::vector<std::string> deviceList; diff --git a/indra/newview/skins/default/xui/en/floater_bumps.xml b/indra/newview/skins/default/xui/en/floater_bumps.xml index 303c28d7c8..1f2fe62b3c 100644 --- a/indra/newview/skins/default/xui/en/floater_bumps.xml +++ b/indra/newview/skins/default/xui/en/floater_bumps.xml @@ -14,23 +14,23 @@      </floater.string>      <floater.string       name="bump"> -        [TIME]  [FIRST] [LAST] bumped you +        [TIME]  [NAME] bumped you      </floater.string>      <floater.string       name="llpushobject"> -        [TIME]  [FIRST] [LAST] pushed you with a script +        [TIME]  [NAME] pushed you with a script      </floater.string>      <floater.string       name="selected_object_collide"> -        [TIME]  [FIRST] [LAST] hit you with an object +        [TIME]  [NAME] hit you with an object      </floater.string>      <floater.string       name="scripted_object_collide"> -        [TIME]  [FIRST] [LAST] hit you with a scripted object +        [TIME]  [NAME] hit you with a scripted object      </floater.string>      <floater.string       name="physical_object_collide"> -        [TIME]  [FIRST] [LAST] hit you with a physical object +        [TIME]  [NAME] hit you with a physical object      </floater.string>      <floater.string       name="timeStr"> diff --git a/indra/newview/skins/default/xui/en/floater_pay.xml b/indra/newview/skins/default/xui/en/floater_pay.xml index 509cffe490..8f60dd6f28 100644 --- a/indra/newview/skins/default/xui/en/floater_pay.xml +++ b/indra/newview/skins/default/xui/en/floater_pay.xml @@ -28,16 +28,6 @@       width="75">          Pay:      </text> -   <icon -     height="16" -     width="16" -     image_name="Generic_Person" -     mouse_opaque="true" -     name="icon_person" -     tool_tip="Person" -     top_pad="0" -     left="10" -     />      <text       type="string"       length="1" @@ -45,10 +35,11 @@       font="SansSerifSmall"       height="16"       layout="topleft" -     left_pad="7" +     left="10"       name="payee_name" -     width="210"> -        [FIRST] [LAST] +     top_pad="0"  +     width="230"> +        Test Name      </text>      <button       height="23" diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml index d09a0a0535..c65dd6e49f 100644 --- a/indra/newview/skins/default/xui/en/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml @@ -2,7 +2,7 @@  <floater   legacy_header_height="18"   can_minimize="false" - height="220" + height="225"   layout="topleft"   name="Give Money"   help_topic="give_money" @@ -16,27 +16,15 @@       name="payee_resident">          Pay Resident      </string> -   <icon -     height="16" -     width="16" -     image_name="Generic_Person" -     mouse_opaque="true" -     name="icon_person" -     tool_tip="Person" -     top_pad="24" -     left="10" -     />      <text -     type="string" -     length="1"       follows="left|top"       height="16"       layout="topleft" -     left_pad="7" -     top_delta="3" +     left="10" +     top_pad="24"       name="payee_name" -     width="184"> -      [FIRST] [LAST] +     width="200"> +      Ericacita Moostopolison      </text>      <text       type="string" @@ -45,9 +33,9 @@       halign="left"       height="14"       layout="topleft" -     left="34" +     left="10"       name="object_name_label" -     top_pad="0" +     top_pad="5"       width="180">          Via object:      </text> @@ -58,7 +46,7 @@       mouse_opaque="true"       name="icon_object"       tool_tip="Objects" -     top_pad="0" +     top_pad="5"       left="10"       />      <text diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 636db2b59b..b6fc8def86 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5584,21 +5584,21 @@ Click Accept to join the call or Decline to decline the invitation. Click Block     icon="notify.tga"     name="AutoUnmuteByIM"     type="notify"> -[FIRST] [LAST] was sent an instant message and has been automatically unblocked. +[NAME] was sent an instant message and has been automatically unblocked.    </notification>    <notification     icon="notify.tga"     name="AutoUnmuteByMoney"     type="notify"> -[FIRST] [LAST] was given money and has been automatically unblocked. +[NAME] was given money and has been automatically unblocked.    </notification>    <notification     icon="notify.tga"     name="AutoUnmuteByInventory"     type="notify"> -[FIRST] [LAST] was offered inventory and has been automatically unblocked. +[NAME] was offered inventory and has been automatically unblocked.    </notification>    <notification diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index c04414abbb..cf119c9ab6 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -60,7 +60,7 @@ name="first_name_text"  top="20"  left="20"  width="150"> -First name: +  Second Life ID:  </text>  <line_editor  follows="left|bottom" @@ -69,20 +69,23 @@ height="22"  label="First"  left_delta="0"  max_length="31" -name="first_name_edit" +name="login_id_edit" +prevalidate_callback="ascii"   select_on_focus="true" -tool_tip="[SECOND_LIFE] First Name" +tool_tip="[SECOND_LIFE] ID"  top_pad="0" -   width="135" /> +   width="200" />    <text     follows="left|bottom"     font="SansSerifSmall"     height="16" -   left_pad="8" +   left="230"     name="last_name_text"     top="20" +   visible="false"      width="150"> -    Last name:   </text> +    Last name: +  </text>  <line_editor  follows="left|bottom"  handle_edit_keys_directly="true" @@ -93,12 +96,13 @@ name="last_name_edit"  select_on_focus="true"  tool_tip="[SECOND_LIFE] Last Name"    top_pad="0" +  visible="false"     width="135" />  <text  follows="left|bottom"  font="SansSerifSmall"  height="15" -left_pad="8" +left="230"  name="password_text"  top="20"      width="150"> | 
