diff options
| -rw-r--r-- | doc/contributions.txt | 2 | ||||
| -rw-r--r-- | indra/cmake/FMOD.cmake | 6 | ||||
| -rw-r--r-- | indra/llaudio/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | indra/llui/llurlentry.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llpanelgrouproles.cpp | 107 | ||||
| -rw-r--r-- | indra/newview/llpanelgrouproles.h | 6 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/da/strings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/de/strings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/strings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/es/strings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/fr/strings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/it/strings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/ja/strings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/nl/strings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/pl/strings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/pt/strings.xml | 2 | 
17 files changed, 118 insertions, 41 deletions
| diff --git a/doc/contributions.txt b/doc/contributions.txt index 16327d0917..96ee446a0c 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -72,6 +72,7 @@ Aleric Inglewood  	VWR-13996  	VWR-14426  	SNOW-84 +	SNOW-477  	SNOW-766  	STORM-163  Ales Beaumont @@ -174,6 +175,7 @@ Boroondas Gupte  	VWR-233  	VWR-20583  	VWR-20891 +	VWR-23455  	WEB-262  Bulli Schumann  	CT-218 diff --git a/indra/cmake/FMOD.cmake b/indra/cmake/FMOD.cmake index 96434e38fa..dcf44cd642 100644 --- a/indra/cmake/FMOD.cmake +++ b/indra/cmake/FMOD.cmake @@ -7,8 +7,10 @@ if (FMOD)      set(FMOD_FIND_REQUIRED ON)      include(FindFMOD)    else (STANDALONE) -    include(Prebuilt) -    use_prebuilt_binary(fmod) +    if (INSTALL_PROPRIETARY) +      include(Prebuilt) +      use_prebuilt_binary(fmod) +    endif (INSTALL_PROPRIETARY)      if (WINDOWS)        set(FMOD_LIBRARY fmod) diff --git a/indra/llaudio/CMakeLists.txt b/indra/llaudio/CMakeLists.txt index e869b9717c..21ec622819 100644 --- a/indra/llaudio/CMakeLists.txt +++ b/indra/llaudio/CMakeLists.txt @@ -14,7 +14,6 @@ include(LLVFS)  include_directories(      ${LLAUDIO_INCLUDE_DIRS} -    ${FMOD_INCLUDE_DIR}      ${LLCOMMON_INCLUDE_DIRS}      ${LLMATH_INCLUDE_DIRS}      ${LLMESSAGE_INCLUDE_DIRS} @@ -45,6 +44,10 @@ set(llaudio_HEADER_FILES      )  if (FMOD) +    include_directories( +        ${FMOD_INCLUDE_DIR} +        ) +      list(APPEND llaudio_SOURCE_FILES           llaudioengine_fmod.cpp           lllistener_fmod.cpp diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index f58c07754f..f49dfec82b 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -972,7 +972,7 @@ std::string LLUrlEntryWorldMap::getLocation(const std::string &url) const  //  LLUrlEntryNoLink::LLUrlEntryNoLink()  { -	mPattern = boost::regex("<nolink>[^<]*</nolink>", +	mPattern = boost::regex("<nolink>.*</nolink>",  							boost::regex::perl|boost::regex::icase);  } diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 086d73bc00..7172f0359a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12145,5 +12145,16 @@        <key>Value</key>        <real>300.0</real>      </map> +    <key>GroupMembersSortOrder</key> +    <map> +      <key>Comment</key> +      <string>The order by which group members will be sorted (name|donated|online)</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>String</string> +      <key>Value</key> +      <string>name</string> +    </map>  </map>  </llsd> diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 35f898bfa6..0d1d96eae6 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -49,6 +49,7 @@  #include "llviewertexturelist.h"  #include "llviewerwindow.h"  #include "llfocusmgr.h" +#include "llviewercontrol.h"  #include "roles_constants.h" @@ -742,10 +743,12 @@ LLPanelGroupMembersSubTab::LLPanelGroupMembersSubTab()  	mHasMatch(FALSE),  	mNumOwnerAdditions(0)  { +	mUdpateSessionID = LLUUID::null;  }  LLPanelGroupMembersSubTab::~LLPanelGroupMembersSubTab()  { +	gSavedSettings.setString("GroupMembersSortOrder", mMembersList->getSortColumnName());  }  BOOL LLPanelGroupMembersSubTab::postBuildSubTab(LLView* root) @@ -772,6 +775,17 @@ BOOL LLPanelGroupMembersSubTab::postBuildSubTab(LLView* root)  	// Show the member's profile on double click.  	mMembersList->setDoubleClickCallback(onMemberDoubleClick, this);  	mMembersList->setContextMenu(LLScrollListCtrl::MENU_AVATAR); +	 +	LLSD row; +	row["columns"][0]["column"] = "name"; +	row["columns"][1]["column"] = "donated"; +	row["columns"][2]["column"] = "online"; +	mMembersList->addElement(row); +	std::string order_by = gSavedSettings.getString("GroupMembersSortOrder"); +	if(!order_by.empty()) +	{ +		mMembersList->sortByColumn(order_by, TRUE); +	}	  	LLButton* button = parent->getChild<LLButton>("member_invite", recurse);  	if ( button ) @@ -1529,6 +1543,10 @@ void LLPanelGroupMembersSubTab::update(LLGroupChange gc)  		mMemberProgress = gdatap->mMembers.begin();  		mPendingMemberUpdate = TRUE;  		mHasMatch = FALSE; +		// Generate unique ID for current updateMembers()- see onNameCache for details. +		// Using unique UUID is perhaps an overkill but this way we are perfectly safe +		// from coincidences. +		mUdpateSessionID.generate();  	}  	else  	{ @@ -1556,6 +1574,59 @@ void LLPanelGroupMembersSubTab::update(LLGroupChange gc)  	}  } +void LLPanelGroupMembersSubTab::addMemberToList(LLUUID id, LLGroupMemberData* data) +{ +	LLUIString donated = getString("donation_area"); +	donated.setArg("[AREA]", llformat("%d", data->getContribution())); + +	LLSD row; +	row["id"] = id; + +	row["columns"][0]["column"] = "name"; +	// value is filled in by name list control + +	row["columns"][1]["column"] = "donated"; +	row["columns"][1]["value"] = donated.getString(); + +	row["columns"][2]["column"] = "online"; +	row["columns"][2]["value"] = data->getOnlineStatus(); +	row["columns"][2]["font"] = "SANSSERIF_SMALL"; + +	mMembersList->addElement(row); + +	mHasMatch = TRUE; +} + +void LLPanelGroupMembersSubTab::onNameCache(const LLUUID& update_id, const LLUUID& id) +{ +	// Update ID is used to determine whether member whose id is passed +	// into onNameCache() was passed after current or previous user-initiated update. +	// This is needed to avoid probable duplication of members in list after changing filter +	// or adding of members of another group if gets for their names were called on +	// previous update. If this id is from get() called from older update, +	// we do nothing. +	if (mUdpateSessionID != update_id) return; +	 +	LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID); +		if (!gdatap)  +	{ +		llwarns << "LLPanelGroupMembersSubTab::updateMembers() -- No group data!" << llendl; +		return; +	} +	 +	std::string fullname; +	gCacheName->getFullName(id, fullname); +	if (matchesSearchFilter(fullname)) +	{ +		addMemberToList(id, gdatap->mMembers[id]); +		if(!mMembersList->getEnabled()) +		{ +			mMembersList->setEnabled(TRUE); +		} +	} +	 +} +  void LLPanelGroupMembersSubTab::updateMembers()  {  	mPendingMemberUpdate = FALSE; @@ -1580,12 +1651,13 @@ void LLPanelGroupMembersSubTab::updateMembers()  	//cleanup list only for first iretation  	if(mMemberProgress == gdatap->mMembers.begin()) +	{  		mMembersList->deleteAllItems(); +	}  	LLGroupMgrGroupData::member_list_t::iterator end = gdatap->mMembers.end(); -	LLUIString donated = getString("donation_area"); - +	  	S32 i = 0;  	for( ; mMemberProgress != end && i<UPDATE_MEMBERS_PER_FRAME;   			++mMemberProgress, ++i) @@ -1593,38 +1665,19 @@ void LLPanelGroupMembersSubTab::updateMembers()  		if (!mMemberProgress->second)  			continue;  		// Do filtering on name if it is already in the cache. -		bool add_member = true; -  		std::string fullname;  		if (gCacheName->getFullName(mMemberProgress->first, fullname))  		{ -			if ( !matchesSearchFilter(fullname) ) +			if (matchesSearchFilter(fullname))  			{ -				add_member = false; +				addMemberToList(mMemberProgress->first, mMemberProgress->second);  			}  		} - -		if (add_member) +		else  		{ -			donated.setArg("[AREA]", llformat("%d", mMemberProgress->second->getContribution())); - -			LLSD row; -			row["id"] = (*mMemberProgress).first; - -			row["columns"][0]["column"] = "name"; -			// value is filled in by name list control - -			row["columns"][1]["column"] = "donated"; -			row["columns"][1]["value"] = donated.getString(); - -			row["columns"][2]["column"] = "online"; -			row["columns"][2]["value"] = mMemberProgress->second->getOnlineStatus(); -			row["columns"][2]["font"] = "SANSSERIF_SMALL"; - -			LLScrollListItem* member = mMembersList->addElement(row); - -			LLUUID id = member->getUUID(); -			mHasMatch = TRUE; +			// If name is not cached, onNameCache() should be called when it is cached and add this member to list. +			gCacheName->get(mMemberProgress->first, FALSE, boost::bind(&LLPanelGroupMembersSubTab::onNameCache, +																	   this, mUdpateSessionID, _1));  		}  	} diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h index 6a773f1ebb..270259c16f 100644 --- a/indra/newview/llpanelgrouproles.h +++ b/indra/newview/llpanelgrouproles.h @@ -187,6 +187,9 @@ public:  	virtual void setGroupID(const LLUUID& id); +	void addMemberToList(LLUUID id, LLGroupMemberData* data); +	void onNameCache(const LLUUID& update_id, const LLUUID& id); +  protected:  	typedef std::map<LLUUID, LLRoleMemberChangeType> role_change_data_map_t;  	typedef std::map<LLUUID, role_change_data_map_t*> member_role_changes_map_t; @@ -207,6 +210,9 @@ protected:  	BOOL mPendingMemberUpdate;  	BOOL mHasMatch; +	// This id is generated after each user initiated member list update(opening Roles or changing filter) +	LLUUID mUdpateSessionID; +  	member_role_changes_map_t mMemberRoleChangeData;  	U32 mNumOwnerAdditions; diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 9f4119e73b..afd933c7fa 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -774,7 +774,7 @@  	<string name="xml_file">  		XML Fil  	</string> -	<string name="dot_raw_file"> +	<string name="raw_file">  		RAW Fil  	</string>  	<string name="compressed_image_files"> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index ae2991df45..afcb68f537 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -798,7 +798,7 @@  	<string name="xml_file">  		XML-Datei  	</string> -	<string name="dot_raw_file"> +	<string name="raw_file">  		RAW-Datei  	</string>  	<string name="compressed_image_files"> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index bee0e4fde6..403d976350 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -338,7 +338,7 @@  	<string name="avi_movie_file">AVI Movie File</string>  	<string name="xaf_animation_file">XAF Anim File</string>  	<string name="xml_file">XML File</string> -	<string name="dot_raw_file">RAW File</string> +	<string name="raw_file">RAW File</string>  	<string name="compressed_image_files">Compressed Images</string>  	<string name="load_files">Load Files</string>  	<string name="choose_the_directory">Choose Directory</string> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index ac12b700ee..5fa3d54de2 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -777,7 +777,7 @@  	<string name="xml_file">  		Archivo XML  	</string> -	<string name="dot_raw_file"> +	<string name="raw_file">  		Archivo RAW  	</string>  	<string name="compressed_image_files"> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index a7a766f6a6..af70048106 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -798,7 +798,7 @@  	<string name="xml_file">  		Fichier XML  	</string> -	<string name="dot_raw_file"> +	<string name="raw_file">  		Fichier RAW  	</string>  	<string name="compressed_image_files"> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 4fc0d19199..9dbfc2b79c 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -783,7 +783,7 @@  	<string name="xml_file">  		File XML  	</string> -	<string name="dot_raw_file"> +	<string name="raw_file">  		File RAW  	</string>  	<string name="compressed_image_files"> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 072ae6c630..92bbedaee5 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -798,7 +798,7 @@  	<string name="xml_file">  		XML ファイル  	</string> -	<string name="dot_raw_file"> +	<string name="raw_file">  		RAW ファイル  	</string>  	<string name="compressed_image_files"> diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml index 1ee26c3f24..844945913f 100644 --- a/indra/newview/skins/default/xui/nl/strings.xml +++ b/indra/newview/skins/default/xui/nl/strings.xml @@ -665,7 +665,7 @@  	<string name="xml_file">  		XML bestand  	</string> -	<string name="dot_raw_file"> +	<string name="raw_file">  		RAW bestand  	</string>  	<string name="compressed_image_files"> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index c9fe22f3c8..e355bdbb96 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -774,7 +774,7 @@  	<string name="xml_file">  		Plik XML  	</string> -	<string name="dot_raw_file"> +	<string name="raw_file">  		Plik RAW  	</string>  	<string name="compressed_image_files"> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 2247b0a76b..800ad479fc 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -777,7 +777,7 @@  	<string name="xml_file">  		Arquivo XML  	</string> -	<string name="dot_raw_file"> +	<string name="raw_file">  		Arquivo RAW  	</string>  	<string name="compressed_image_files"> | 
