diff options
| -rw-r--r-- | indra/newview/llfloaterpreference.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llgroupactions.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llnearbychat.cpp | 26 | ||||
| -rw-r--r-- | indra/newview/llnearbychat.h | 8 | ||||
| -rw-r--r-- | indra/newview/llpanelavatar.cpp | 11 | ||||
| -rw-r--r-- | indra/newview/llpanelavatar.h | 4 | 
6 files changed, 45 insertions, 13 deletions
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 83c784c1f7..5128a7b861 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -106,6 +106,7 @@  #include "llviewermedia.h"  #include "llpluginclassmedia.h"  #include "llteleporthistorystorage.h" +#include "llnearbychat.h"  #include <boost/regex.hpp> @@ -361,6 +362,8 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)  BOOL LLFloaterPreference::postBuild()  {  	gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&LLIMFloater::processChatHistoryStyleUpdate, _2)); +	 +	gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&LLNearbyChat::processChatHistoryStyleUpdate, _2));  	LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core");  	if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab"))) diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index 6fe8ed0e4d..99b58f2170 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -100,9 +100,9 @@ public:  		}  		if (tokens[1].asString() == "inspect")  		{ -			LLSD key; -			key["group_id"] = group_id; -			LLFloaterReg::showInstance("inspect_group", key); +			if (group_id.isNull()) +				return true; +			LLGroupActions::show(group_id);  			return true;  		}  		return false; diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 8f1dec1431..ee3be0a5e3 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -57,6 +57,7 @@  #include "lltrans.h"  #include "llbottomtray.h"  #include "llnearbychatbar.h" +#include "llfloaterreg.h"  static const S32 RESIZE_BAR_THICKNESS = 3; @@ -145,7 +146,7 @@ std::string appendTime()  	return timeStr;  } -void	LLNearbyChat::addMessage(const LLChat& chat) +void	LLNearbyChat::addMessage(const LLChat& chat,bool archive)  {  	if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)  	{ @@ -207,6 +208,13 @@ void	LLNearbyChat::addMessage(const LLChat& chat)  			mChatHistory->appendMessage(chat,use_plain_text_chat_history);  		}  	} + +	if(archive) +	{ +		mMessageArchive.push_back(chat); +		if(mMessageArchive.size()>200) +			mMessageArchive.erase(mMessageArchive.begin()); +	}  }  void LLNearbyChat::onNearbySpeakers() @@ -256,3 +264,19 @@ void LLNearbyChat::getAllowedRect(LLRect& rect)  {  	rect = gViewerWindow->getWorldViewRectScaled();  } + +void LLNearbyChat::updateChatHistoryStyle() +{ +	mChatHistory->clear(); +	for(std::vector<LLChat>::iterator it = mMessageArchive.begin();it!=mMessageArchive.end();++it) +	{ +		addMessage(*it,false); +	} +} +//static  +void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue) +{ +	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); +	if(nearby_chat) +		nearby_chat->updateChatHistoryStyle(); +} diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index efcaf4263b..1cbc2a3478 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -47,7 +47,7 @@ public:  	~LLNearbyChat();  	BOOL	postBuild			(); -	void	addMessage			(const LLChat& message);	 +	void	addMessage			(const LLChat& message,bool archive = true);	  	void	onNearbyChatContextMenuItemClicked(const LLSD& userdata);  	bool	onNearbyChatCheckContextMenuItem(const LLSD& userdata); @@ -57,6 +57,10 @@ public:  	virtual void setRect		(const LLRect &rect); +	virtual void updateChatHistoryStyle(); + +	static void processChatHistoryStyleUpdate(const LLSD& newvalue); +  private:  	virtual void    applySavedVariables(); @@ -68,6 +72,8 @@ private:  private:  	LLHandle<LLView>	mPopupMenuHandle;  	LLChatHistory*		mChatHistory; + +	std::vector<LLChat> mMessageArchive;  };  #endif diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 125d9c3934..eb9cb10d56 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -530,20 +530,19 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g  	for(; it_end != it; ++it)  	{  		LLAvatarGroups::LLGroupData group_data = *it; - -		// Check if there is no duplicates for this group -		if (std::find(mGroups.begin(), mGroups.end(), group_data.group_name) == mGroups.end()) -			mGroups.push_back(group_data.group_name); +		mGroups[group_data.group_name] = group_data.group_id;  	}  	// Creating string, containing group list  	std::string groups = ""; -	for (group_list_t::const_iterator it = mGroups.begin(); it != mGroups.end(); ++it) +	for (group_map_t::iterator it = mGroups.begin(); it != mGroups.end(); ++it)  	{  		if (it != mGroups.begin())  			groups += ", "; -		groups += *it; +		 +		std::string group_url="[secondlife:///app/group/" + it->second.asString() + "/about " + it->first + "]"; +		groups += group_url;  	}  	childSetValue("sl_groups", groups); diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index f54aeee4eb..b19c5cca49 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -192,8 +192,8 @@ protected:  private: -	typedef std::list<std::string>	group_list_t; -	group_list_t 			mGroups; +	typedef std::map< std::string,LLUUID>	group_map_t; +	group_map_t 			mGroups;  	LLToggleableMenu*		mProfileMenu;  };  | 
