diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llcommon/indra_constants.h | 1 | ||||
| -rw-r--r-- | indra/llui/llscrolllistctrl.cpp | 5 | ||||
| -rw-r--r-- | indra/llui/llscrolllistctrl.h | 1 | ||||
| -rw-r--r-- | indra/newview/llfloaterland.cpp | 23 | ||||
| -rw-r--r-- | indra/newview/llfloaterregioninfo.cpp | 147 | ||||
| -rw-r--r-- | indra/newview/llfloaterregioninfo.h | 4 | ||||
| -rw-r--r-- | indra/newview/llfloatertopobjects.cpp | 92 | ||||
| -rw-r--r-- | indra/newview/llfloatertopobjects.h | 4 | ||||
| -rw-r--r-- | indra/newview/llmarketplacefunctions.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llnamelistctrl.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llnamelistctrl.h | 2 | ||||
| -rw-r--r-- | indra/newview/llpanelgroupinvite.cpp | 13 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_top_objects.xml | 62 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_group_invite.xml | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_region_debug.xml | 2 | 
15 files changed, 189 insertions, 187 deletions
| diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h index 0745696ef3..0da83720bd 100644 --- a/indra/llcommon/indra_constants.h +++ b/indra/llcommon/indra_constants.h @@ -62,6 +62,7 @@ enum LAND_STAT_FLAGS  	STAT_FILTER_BY_PARCEL	= 0x00000001,  	STAT_FILTER_BY_OWNER	= 0x00000002,  	STAT_FILTER_BY_OBJECT	= 0x00000004, +	STAT_FILTER_BY_PARCEL_NAME	= 0x00000008,  	STAT_REQUEST_LAST_ENTRY	= 0x80000000,  }; diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index b3e1b63db5..82a914a30a 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -2704,6 +2704,11 @@ BOOL LLScrollListCtrl::hasSortOrder() const  	return !mSortColumns.empty();  } +void LLScrollListCtrl::clearSortOrder() +{ +	mSortColumns.clear(); +} +  void LLScrollListCtrl::clearColumns()  {  	column_map_t::iterator itor; diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index ae8aea9245..6660c07b8e 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -373,6 +373,7 @@ public:  	std::string     getSortColumnName();  	BOOL			getSortAscending() { return mSortColumns.empty() ? TRUE : mSortColumns.back().second; }  	BOOL			hasSortOrder() const; +	void			clearSortOrder();  	S32		selectMultiple( uuid_vec_t ids );  	// conceptually const, but mutates mItemList diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index cc7c9a5bda..6d8494421a 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -2377,12 +2377,6 @@ LLPanelLandAccess::~LLPanelLandAccess()  void LLPanelLandAccess::refresh()  {  	LLFloater* parent_floater = gFloaterView->getParentFloater(this); -	 -	if (mListAccess) -		mListAccess->deleteAllItems(); -	if (mListBanned) -		mListBanned->deleteAllItems(); -	  	LLParcel *parcel = mParcel->getParcel();  	// Display options @@ -2400,7 +2394,11 @@ void LLPanelLandAccess::refresh()  		getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name );  		// Allow list +		if (mListAccess)  		{ +			// Clear the sort order so we don't re-sort on every add. +			mListAccess->clearSortOrder(); +			mListAccess->deleteAllItems();  			S32 count = parcel->mAccessList.size();  			getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count));  			getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST)); @@ -2435,13 +2433,17 @@ void LLPanelLandAccess::refresh()  					}  					suffix.append(" " + parent_floater->getString("Remaining") + ")");  				} -				if (mListAccess) -					mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix); +				mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix);  			} +			mListAccess->sortByName(TRUE);  		}  		// Ban List +		if(mListBanned)  		{ +			// Clear the sort order so we don't re-sort on every add. +			mListBanned->clearSortOrder(); +			mListBanned->deleteAllItems();  			S32 count = parcel->mBanList.size();  			getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count)); @@ -2479,6 +2481,7 @@ void LLPanelLandAccess::refresh()  				}  				mListBanned->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix);  			} +			mListBanned->sortByName(TRUE);  		}  		if(parcel->getRegionDenyAnonymousOverride()) @@ -2614,13 +2617,13 @@ void LLPanelLandAccess::refresh_ui()  		getChildView("AccessList")->setEnabled(can_manage_allowed);  		S32 allowed_list_count = parcel->mAccessList.size();  		getChildView("add_allowed")->setEnabled(can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST); -		BOOL has_selected = mListAccess->getSelectionInterface()->getFirstSelectedIndex() >= 0; +		BOOL has_selected = (mListAccess && mListAccess->getSelectionInterface()->getFirstSelectedIndex() >= 0);  		getChildView("remove_allowed")->setEnabled(can_manage_allowed && has_selected);  		getChildView("BannedList")->setEnabled(can_manage_banned);  		S32 banned_list_count = parcel->mBanList.size();  		getChildView("add_banned")->setEnabled(can_manage_banned && banned_list_count < PARCEL_MAX_ACCESS_LIST); -		has_selected = mListBanned->getSelectionInterface()->getFirstSelectedIndex() >= 0; +		has_selected = (mListBanned && mListBanned->getSelectionInterface()->getFirstSelectedIndex() >= 0);  		getChildView("remove_banned")->setEnabled(can_manage_banned && has_selected);  	}  } diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 17850ff35d..fe29bb38c7 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -287,8 +287,7 @@ void LLFloaterRegionInfo::processEstateOwnerRequest(LLMessageSystem* msg,void**)  	//dispatch the message  	dispatch.dispatch(request, invoice, strings); -	LLViewerRegion* region = gAgent.getRegion(); -	panel->updateControls(region); +	panel->updateControls(gAgent.getRegion());  } @@ -1924,10 +1923,18 @@ void LLPanelEstateInfo::updateControls(LLViewerRegion* region)  	BOOL manager = (region && region->isEstateManager());  	setCtrlsEnabled(god || owner || manager); +	BOOL has_allowed_avatar = getChild<LLNameListCtrl>("allowed_avatar_name_list")->getFirstSelected() ?  TRUE : FALSE; +	BOOL has_allowed_group = getChild<LLNameListCtrl>("allowed_group_name_list")->getFirstSelected() ?  TRUE : FALSE; +	BOOL has_banned_agent = getChild<LLNameListCtrl>("banned_avatar_name_list")->getFirstSelected() ?  TRUE : FALSE; +	BOOL has_estate_manager = getChild<LLNameListCtrl>("estate_manager_name_list")->getFirstSelected() ?  TRUE : FALSE; +  	getChildView("add_allowed_avatar_btn")->setEnabled(god || owner || manager); -	getChildView("remove_allowed_avatar_btn")->setEnabled(god || owner || manager); +	getChildView("remove_allowed_avatar_btn")->setEnabled(has_allowed_avatar && (god || owner || manager)); +	getChildView("allowed_avatar_name_list")->setEnabled(god || owner || manager); +	  	getChildView("add_allowed_group_btn")->setEnabled(god || owner || manager); -	getChildView("remove_allowed_group_btn")->setEnabled(god || owner || manager); +	getChildView("remove_allowed_group_btn")->setEnabled(has_allowed_group && (god || owner || manager) ); +	getChildView("allowed_group_name_list")->setEnabled(god || owner || manager);  	// Can't ban people from mainland, orientation islands, etc. because this  	// creates much network traffic and server load. @@ -1935,14 +1942,15 @@ void LLPanelEstateInfo::updateControls(LLViewerRegion* region)  	bool linden_estate = isLindenEstate();  	bool enable_ban = (god || owner || manager) && !linden_estate;  	getChildView("add_banned_avatar_btn")->setEnabled(enable_ban); -	getChildView("remove_banned_avatar_btn")->setEnabled(enable_ban); +	getChildView("remove_banned_avatar_btn")->setEnabled(has_banned_agent && enable_ban); +	getChildView("banned_avatar_name_list")->setEnabled(god || owner || manager);  	getChildView("message_estate_btn")->setEnabled(god || owner || manager);  	getChildView("kick_user_from_estate_btn")->setEnabled(god || owner || manager);  	// estate managers can't add estate managers  	getChildView("add_estate_manager_btn")->setEnabled(god || owner); -	getChildView("remove_estate_manager_btn")->setEnabled(god || owner); +	getChildView("remove_estate_manager_btn")->setEnabled(has_estate_manager && (god || owner));  	getChildView("estate_manager_name_list")->setEnabled(god || owner);  	refresh(); @@ -1979,10 +1987,8 @@ bool LLPanelEstateInfo::refreshFromRegion(LLViewerRegion* region)  void LLPanelEstateInfo::updateChild(LLUICtrl* child_ctrl)  { -	if (checkRemovalButton(child_ctrl->getName())) -	{ -		// do nothing -	} +	// Ensure appropriate state of the management ui. +	updateControls(gAgent.getRegion());  }  bool LLPanelEstateInfo::estateUpdate(LLMessageSystem* msg) @@ -2080,23 +2086,8 @@ void LLPanelEstateInfo::refreshFromEstate()  	getChild<LLUICtrl>("limit_payment")->setValue(estate_info.getDenyAnonymous());  	getChild<LLUICtrl>("limit_age_verified")->setValue(estate_info.getDenyAgeUnverified()); -	// If visible from mainland, disable the access allowed -	// UI, as anyone can teleport there. -	// However, gods need to be able to edit the access list for -	// linden estates, regardless of visibility, to allow object -	// and L$ transfers. -	{ -		bool visible_from_mainland = estate_info.getIsExternallyVisible(); -		bool god = gAgent.isGodlike(); -		bool linden_estate = isLindenEstate(); - -		bool enable_agent = (!visible_from_mainland || (god && linden_estate)); -		bool enable_group = enable_agent; -		bool enable_ban = !linden_estate; - -		setAccessAllowedEnabled(enable_agent, enable_group, enable_ban); -	} - +	// Ensure appriopriate state of the management UI +	updateControls(gAgent.getRegion());  	refresh();  } @@ -2225,47 +2216,6 @@ void LLPanelEstateInfo::setOwnerName(const std::string& name)  	getChild<LLUICtrl>("estate_owner")->setValue(LLSD(name));  } -void LLPanelEstateInfo::setAccessAllowedEnabled(bool enable_agent, -												bool enable_group, -												bool enable_ban) -{ -	getChildView("allow_resident_label")->setEnabled(enable_agent); -	getChildView("allowed_avatar_name_list")->setEnabled(enable_agent); -	getChildView("allowed_avatar_name_list")->setVisible( enable_agent); -	getChildView("add_allowed_avatar_btn")->setEnabled(enable_agent); -	getChildView("remove_allowed_avatar_btn")->setEnabled(enable_agent); - -	// Groups -	getChildView("allow_group_label")->setEnabled(enable_group); -	getChildView("allowed_group_name_list")->setEnabled(enable_group); -	getChildView("allowed_group_name_list")->setVisible( enable_group); -	getChildView("add_allowed_group_btn")->setEnabled(enable_group); -	getChildView("remove_allowed_group_btn")->setEnabled(enable_group); - -	// Ban -	getChildView("ban_resident_label")->setEnabled(enable_ban); -	getChildView("banned_avatar_name_list")->setEnabled(enable_ban); -	getChildView("banned_avatar_name_list")->setVisible( enable_ban); -	getChildView("add_banned_avatar_btn")->setEnabled(enable_ban); -	getChildView("remove_banned_avatar_btn")->setEnabled(enable_ban); - -	// Update removal buttons if needed -	if (enable_agent) -	{ -		checkRemovalButton("allowed_avatar_name_list"); -	} - -	if (enable_group) -	{ -		checkRemovalButton("allowed_group_name_list"); -	} - -	if (enable_ban) -	{ -		checkRemovalButton("banned_avatar_name_list"); -	} -} -  void LLPanelEstateInfo::clearAccessLists()   {  	LLNameListCtrl* name_list = getChild<LLNameListCtrl>("allowed_avatar_name_list"); @@ -2279,39 +2229,7 @@ void LLPanelEstateInfo::clearAccessLists()  	{  		name_list->deleteAllItems();  	} -} - -// enables/disables the "remove" button for the various allow/ban lists -BOOL LLPanelEstateInfo::checkRemovalButton(std::string name) -{ -	std::string btn_name = ""; -	if (name == "allowed_avatar_name_list") -	{ -		btn_name = "remove_allowed_avatar_btn"; -	} -	else if (name == "allowed_group_name_list") -	{ -		btn_name = "remove_allowed_group_btn"; -	} -	else if (name == "banned_avatar_name_list") -	{ -		btn_name = "remove_banned_avatar_btn"; -	} -	else if (name == "estate_manager_name_list") -	{ -		//ONLY OWNER CAN ADD /DELET ESTATE MANAGER -		LLViewerRegion* region = gAgent.getRegion(); -		if (region && (region->getOwner() == gAgent.getID())) -		{ -			btn_name = "remove_estate_manager_btn"; -		} -	} - -	// enable the remove button if something is selected -	LLNameListCtrl* name_list = getChild<LLNameListCtrl>(name); -	getChildView(btn_name)->setEnabled(name_list && name_list->getFirstSelected() ? TRUE : FALSE); - -	return (btn_name != ""); +	updateControls(gAgent.getRegion());  }  // static @@ -2792,15 +2710,15 @@ bool LLDispatchSetEstateAccess::operator()(  		if (allowed_agent_name_list)  		{ -			//allowed_agent_name_list->deleteAllItems(); +			// Don't sort these as we add them, sort them when we are done. +			allowed_agent_name_list->clearSortOrder();  			for (S32 i = 0; i < num_allowed_agents && i < ESTATE_MAX_ACCESS_IDS; i++)  			{  				LLUUID id;  				memcpy(id.mData, strings[index++].data(), UUID_BYTES);		/* Flawfinder: ignore */  				allowed_agent_name_list->addNameItem(id);  			} -			panel->getChildView("remove_allowed_avatar_btn")->setEnabled(allowed_agent_name_list->getFirstSelected() ? TRUE : FALSE); -			allowed_agent_name_list->sortByColumnIndex(0, TRUE); +			allowed_agent_name_list->sortByName(TRUE);  		}  	} @@ -2817,6 +2735,8 @@ bool LLDispatchSetEstateAccess::operator()(  		if (allowed_group_name_list)  		{ +			// Don't sort these as we add them, sort them when we are done. +			allowed_group_name_list->clearSortOrder();  			allowed_group_name_list->deleteAllItems();  			for (S32 i = 0; i < num_allowed_groups && i < ESTATE_MAX_GROUP_IDS; i++)  			{ @@ -2824,8 +2744,7 @@ bool LLDispatchSetEstateAccess::operator()(  				memcpy(id.mData, strings[index++].data(), UUID_BYTES);		/* Flawfinder: ignore */  				allowed_group_name_list->addGroupNameItem(id);  			} -			panel->getChildView("remove_allowed_group_btn")->setEnabled(allowed_group_name_list->getFirstSelected() ? TRUE : FALSE); -			allowed_group_name_list->sortByColumnIndex(0, TRUE); +			allowed_group_name_list->sortByName(TRUE);  		}  	} @@ -2849,15 +2768,16 @@ bool LLDispatchSetEstateAccess::operator()(  		if (banned_agent_name_list)  		{ -			//banned_agent_name_list->deleteAllItems(); +			// Don't sort these as we add them, sort them when we are done. +			banned_agent_name_list->clearSortOrder(); +  			for (S32 i = 0; i < num_banned_agents && i < ESTATE_MAX_ACCESS_IDS; i++)  			{  				LLUUID id;  				memcpy(id.mData, strings[index++].data(), UUID_BYTES);		/* Flawfinder: ignore */  				banned_agent_name_list->addNameItem(id);  			} -			panel->getChildView("remove_banned_avatar_btn")->setEnabled(banned_agent_name_list->getFirstSelected() ? TRUE : FALSE); -			banned_agent_name_list->sortByColumnIndex(0, TRUE); +			banned_agent_name_list->sortByName(TRUE);  		}  	} @@ -2872,6 +2792,9 @@ bool LLDispatchSetEstateAccess::operator()(  			panel->getChild<LLNameListCtrl>("estate_manager_name_list");  		if (estate_manager_name_list)  		{	 +			// Don't sort these as we add them, sort them when we are done. +			estate_manager_name_list->clearSortOrder(); +  			estate_manager_name_list->deleteAllItems();		// Clear existing entries  			// There should be only ESTATE_MAX_MANAGERS people in the list, but if the database gets more (SL-46107) don't  @@ -2883,11 +2806,13 @@ bool LLDispatchSetEstateAccess::operator()(  				memcpy(id.mData, strings[index++].data(), UUID_BYTES);		/* Flawfinder: ignore */  				estate_manager_name_list->addNameItem(id);  			} -			panel->getChildView("remove_estate_manager_btn")->setEnabled(estate_manager_name_list->getFirstSelected() ? TRUE : FALSE); -			estate_manager_name_list->sortByColumnIndex(0, TRUE); +			estate_manager_name_list->sortByName(TRUE);  		}  	} +	// Update the buttons which may change based on the list contents but also needs to account for general access features. +	panel->updateControls(gAgent.getRegion()); +  	return true;  } diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index e36ef4604b..f0499f1903 100644 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -312,9 +312,6 @@ public:  	const std::string getOwnerName() const;  	void setOwnerName(const std::string& name); -	// If visible from mainland, allowed agent and allowed groups -	// are ignored, so must disable UI. -	void setAccessAllowedEnabled(bool enable_agent, bool enable_group, bool enable_ban);  protected:  	virtual BOOL sendUpdate();  	// confirmation dialog callback @@ -324,7 +321,6 @@ protected:  	void commitEstateManagers();  	void clearAccessLists(); -	BOOL checkRemovalButton(std::string name);  	BOOL checkSunHourSlider(LLUICtrl* child_ctrl);  	U32 mEstateID; diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp index 87d048c15b..2d91a61b54 100644 --- a/indra/newview/llfloatertopobjects.cpp +++ b/indra/newview/llfloatertopobjects.cpp @@ -82,6 +82,7 @@ LLFloaterTopObjects::LLFloaterTopObjects(const LLSD& key)  	mCommitCallbackRegistrar.add("TopObjects.Refresh",			boost::bind(&LLFloaterTopObjects::onRefresh, this));  	mCommitCallbackRegistrar.add("TopObjects.GetByObjectName",	boost::bind(&LLFloaterTopObjects::onGetByObjectName, this));  	mCommitCallbackRegistrar.add("TopObjects.GetByOwnerName",	boost::bind(&LLFloaterTopObjects::onGetByOwnerName, this)); +	mCommitCallbackRegistrar.add("TopObjects.GetByParcelName",	boost::bind(&LLFloaterTopObjects::onGetByParcelName, this));  	mCommitCallbackRegistrar.add("TopObjects.CommitObjectsList",boost::bind(&LLFloaterTopObjects::onCommitObjectsList, this));  } @@ -99,21 +100,6 @@ BOOL LLFloaterTopObjects::postBuild()  	setDefaultBtn("show_beacon_btn"); -	/* -	LLLineEditor* line_editor = getChild<LLLineEditor>("owner_name_editor"); -	if (line_editor) -	{ -		line_editor->setCommitOnFocusLost(FALSE); -		line_editor->setCommitCallback(onGetByOwnerName, this); -	} - -	line_editor = getChild<LLLineEditor>("object_name_editor"); -	if (line_editor) -	{ -		line_editor->setCommitOnFocusLost(FALSE); -		line_editor->setCommitCallback(onGetByObjectName, this); -	}*/ -  	mCurrentMode = STAT_REPORT_TOP_SCRIPTS;  	mFlags = 0;  	mFilter.clear(); @@ -168,9 +154,11 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)  		F32 score;  		std::string name_buf;  		std::string owner_buf; +		std::string parcel_buf("unknown");  		F32 mono_score = 0.f;  		bool have_extended_data = false;  		S32 public_urls = 0; +		F32 script_memory = 0.f;  		msg->getU32Fast(_PREHASH_ReportData, _PREHASH_TaskLocalID, task_local_id, block);  		msg->getUUIDFast(_PREHASH_ReportData, _PREHASH_TaskID, task_id, block); @@ -180,12 +168,18 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)  		msg->getF32Fast(_PREHASH_ReportData, _PREHASH_Score, score, block);  		msg->getStringFast(_PREHASH_ReportData, _PREHASH_TaskName, name_buf, block);  		msg->getStringFast(_PREHASH_ReportData, _PREHASH_OwnerName, owner_buf, block); +  		if(msg->has("DataExtended"))  		{  			have_extended_data = true;  			msg->getU32("DataExtended", "TimeStamp", time_stamp, block);  			msg->getF32("DataExtended", "MonoScore", mono_score, block);  			msg->getS32("DataExtended", "PublicURLs", public_urls, block); +			if (msg->getSize("DataExtended", "ParcelName") > 0) +			{ +				msg->getString("DataExtended", "ParcelName", parcel_buf, block); +				msg->getF32("DataExtended", "Size", script_memory, block); +			}  		}  		LLSD element; @@ -193,13 +187,14 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)  		element["id"] = task_id;  		LLSD columns; -		columns[0]["column"] = "score"; -		columns[0]["value"] = llformat("%0.3f", score); -		columns[0]["font"] = "SANSSERIF"; +		S32 column_num = 0; +		columns[column_num]["column"] = "score"; +		columns[column_num]["value"] = llformat("%0.3f", score); +		columns[column_num++]["font"] = "SANSSERIF"; -		columns[1]["column"] = "name"; -		columns[1]["value"] = name_buf; -		columns[1]["font"] = "SANSSERIF"; +		columns[column_num]["column"] = "name"; +		columns[column_num]["value"] = name_buf; +		columns[column_num++]["font"] = "SANSSERIF";  		// Owner names can have trailing spaces sent from server  		LLStringUtil::trim(owner_buf); @@ -215,28 +210,33 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)  			// ...just strip out legacy "Resident" name  			owner_buf = LLCacheName::cleanFullName(owner_buf);  		} -		columns[2]["column"] = "owner"; -		columns[2]["value"] = owner_buf; -		columns[2]["font"] = "SANSSERIF"; - -		columns[3]["column"] = "location"; -		columns[3]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z); -		columns[3]["font"] = "SANSSERIF"; -		columns[4]["column"] = "time"; -		columns[4]["type"] = "date"; -		columns[4]["value"] = LLDate((time_t)time_stamp); -		columns[4]["font"] = "SANSSERIF"; +		columns[column_num]["column"] = "owner"; +		columns[column_num]["value"] = owner_buf; +		columns[column_num++]["font"] = "SANSSERIF"; + +		columns[column_num]["column"] = "location"; +		columns[column_num]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z); +		columns[column_num++]["font"] = "SANSSERIF"; + +		columns[column_num]["column"] = "parcel"; +		columns[column_num]["value"] = parcel_buf; +		columns[column_num++]["font"] = "SANSSERIF"; + +		columns[column_num]["column"] = "time"; +		columns[column_num]["type"] = "date"; +		columns[column_num]["value"] = LLDate((time_t)time_stamp); +		columns[column_num++]["font"] = "SANSSERIF";  		if (mCurrentMode == STAT_REPORT_TOP_SCRIPTS  			&& have_extended_data)  		{ -			columns[5]["column"] = "mono_time"; -			columns[5]["value"] = llformat("%0.3f", mono_score); -			columns[5]["font"] = "SANSSERIF"; +			columns[column_num]["column"] = "memory"; +			columns[column_num]["value"] = llformat("%0.0f", (script_memory / 1000.f)); +			columns[column_num++]["font"] = "SANSSERIF"; -			columns[6]["column"] = "URLs"; -			columns[6]["value"] = llformat("%d", public_urls); -			columns[6]["font"] = "SANSSERIF"; +			columns[column_num]["column"] = "URLs"; +			columns[column_num]["value"] = llformat("%d", public_urls); +			columns[column_num++]["font"] = "SANSSERIF";  		}  		element["columns"] = columns;  		list->addElement(element); @@ -260,18 +260,18 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)  	{  		setTitle(getString("top_scripts_title"));  		list->setColumnLabel("score", getString("scripts_score_label")); -		list->setColumnLabel("mono_time", getString("scripts_mono_time_label"));  		LLUIString format = getString("top_scripts_text");  		format.setArg("[COUNT]", llformat("%d", total_count)); -		format.setArg("[TIME]", llformat("%0.1f", mtotalScore)); +		format.setArg("[TIME]", llformat("%0.3f", mtotalScore));  		getChild<LLUICtrl>("title_text")->setValue(LLSD(format));  	}  	else  	{  		setTitle(getString("top_colliders_title"));  		list->setColumnLabel("score", getString("colliders_score_label")); -		list->setColumnLabel("mono_time", ""); +		list->setColumnLabel("URLs", ""); +		list->setColumnLabel("memory", "");  		LLUIString format = getString("top_colliders_text");  		format.setArg("[COUNT]", llformat("%d", total_count));  		getChild<LLUICtrl>("title_text")->setValue(LLSD(format)); @@ -301,6 +301,7 @@ void LLFloaterTopObjects::updateSelectionInfo()  	{  		getChild<LLUICtrl>("object_name_editor")->setValue(sli->getColumn(1)->getValue().asString());  		getChild<LLUICtrl>("owner_name_editor")->setValue(sli->getColumn(2)->getValue().asString()); +		getChild<LLUICtrl>("parcel_name_editor")->setValue(sli->getColumn(4)->getValue().asString());  	}  } @@ -480,6 +481,15 @@ void LLFloaterTopObjects::onGetByOwnerName()  	onRefresh();  } + +void LLFloaterTopObjects::onGetByParcelName() +{ +	mFlags  = STAT_FILTER_BY_PARCEL_NAME; +	mFilter = getChild<LLUICtrl>("parcel_name_editor")->getValue().asString(); +	onRefresh(); +} + +  void LLFloaterTopObjects::showBeacon()  {  	LLScrollListCtrl* list = getChild<LLScrollListCtrl>("objects_list"); diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h index a608ca20f1..6edc46cf79 100644 --- a/indra/newview/llfloatertopobjects.h +++ b/indra/newview/llfloatertopobjects.h @@ -73,9 +73,7 @@ private:  	void onGetByOwnerName();  	void onGetByObjectName(); - -//	static void onGetByOwnerNameClicked(void* data)  { onGetByOwnerName(NULL, data); }; -//	static void onGetByObjectNameClicked(void* data) { onGetByObjectName(NULL, data); }; +	void onGetByParcelName();  	void showBeacon(); diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp index 93dd82957f..51df868faa 100644 --- a/indra/newview/llmarketplacefunctions.cpp +++ b/indra/newview/llmarketplacefunctions.cpp @@ -336,13 +336,19 @@ namespace LLMarketplaceImport  // Interface class  // +static const F32 MARKET_IMPORTER_UPDATE_FREQUENCY = 1.0f;  //static  void LLMarketplaceInventoryImporter::update()  {  	if (instanceExists())  	{ -		LLMarketplaceInventoryImporter::instance().updateImport(); +		static LLTimer update_timer; +		if (update_timer.hasExpired()) +		{ +			LLMarketplaceInventoryImporter::instance().updateImport(); +			update_timer.setTimerExpirySec(MARKET_IMPORTER_UPDATE_FREQUENCY); +		}  	}  } diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 4e28d1f526..11b057eb0d 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -401,7 +401,7 @@ void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id,  		name = av_name.getCompleteName();  	item_list::iterator iter; -	for (iter = getItemList().begin(); iter != getItemList().end(); iter++) +	for (iter = getItemList().begin(); iter != getItemList().end(); ++iter)  	{  		LLScrollListItem* item = *iter;  		if (item->getUUID() == agent_id) @@ -410,6 +410,7 @@ void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id,  			if (cell)  			{  				cell->setValue(name); +				setNeedsSort();  			}  		}  	} @@ -431,3 +432,8 @@ void LLNameListCtrl::updateColumns()  		}  	}  } + +void LLNameListCtrl::sortByName(BOOL ascending) +{ +	sortByColumnIndex(mNameColumnIndex,ascending); +} diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index ca9956dc53..77c21f92e2 100644 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -110,6 +110,8 @@ public:  	void setAllowCallingCardDrop(BOOL b) { mAllowCallingCardDrop = b; } +	void sortByName(BOOL ascending); +  	/*virtual*/ void updateColumns();  	/*virtual*/ void	mouseOverHighlightNthItem( S32 index ); diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index 7a15d93181..00dd206571 100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -83,6 +83,7 @@ public:  	LLTextBox		*mGroupName;  	std::string		mOwnerWarning;  	std::string		mAlreadyInGroup; +	std::string		mTooManySelected;  	bool		mConfirmedOwnerInvite;  	void (*mCloseCallback)(void* data); @@ -185,6 +186,17 @@ void LLPanelGroupInvite::impl::submitInvitations()  		role_member_pairs[item->getUUID()] = role_id;  	} +	const S32 MAX_GROUP_INVITES = 100; // Max invites per request. 100 to match server cap. +	if (role_member_pairs.size() > MAX_GROUP_INVITES) +	{ +		// Fail! +		LLSD msg; +		msg["MESSAGE"] = mTooManySelected; +		LLNotificationsUtil::add("GenericAlert", msg); +		(*mCloseCallback)(mCloseCallbackUserData); +		return; +	} +  	LLGroupMgr::getInstance()->sendGroupMemberInvites(mGroupID, role_member_pairs);  	if(already_in_group) @@ -621,6 +633,7 @@ BOOL LLPanelGroupInvite::postBuild()  	mImplementation->mOwnerWarning = getString("confirm_invite_owner_str");  	mImplementation->mAlreadyInGroup = getString("already_in_group"); +	mImplementation->mTooManySelected = getString("invite_selection_too_large");  	update(); diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml index 4dfdcd15c7..0b71177345 100644 --- a/indra/newview/skins/default/xui/en/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml @@ -2,7 +2,7 @@  <floater   legacy_header_height="18"   can_resize="true" - height="350" + height="372"   layout="topleft"   min_height="300"   min_width="450" @@ -23,10 +23,6 @@          Time      </floater.string>      <floater.string -     name="scripts_mono_time_label"> -        Mono Time -    </floater.string> -    <floater.string       name="top_colliders_title">          Top Colliders      </floater.string> @@ -68,31 +64,35 @@          <scroll_list.columns           label="Score"           name="score" -         width="55" /> +         width="45" />          <scroll_list.columns           label="Name"           name="name" -         width="140" /> +         width="130" />          <scroll_list.columns           label="Owner"           name="owner" -         width="105" /> +         width="100" />          <scroll_list.columns           label="Location"           name="location" -         width="130" /> +         width="120" /> +        <scroll_list.columns +         label="Parcel" +         name="parcel" +         width="120" />          <scroll_list.columns           label="Time"           name="time" -         width="150" /> -        <scroll_list.columns -         label="Mono Time" -         name="mono_time" -         width="100" /> +         width="130" />            <scroll_list.columns            	label="URLs"            	name="URLs" -          	width="100" /> +         width="40" /> +        <scroll_list.columns +         label="Memory (KB)" +         name="memory" +         width="40" />  		<scroll_list.commit_callback            function="TopObjects.CommitObjectsList" />      </scroll_list> @@ -193,6 +193,38 @@        <button.commit_callback            function="TopObjects.GetByOwnerName" />      </button> +    <text +     type="string" +     length="1" +     follows="left|bottom" +     height="20" +     layout="topleft" +     left="10" +     top_pad="5" +     name="parcel_name_text" +     width="107"> +        Parcel: +    </text> +    <line_editor +     follows="left|bottom|right" +     height="20" +     layout="topleft" +     left_pad="3" +     name="parcel_name_editor" +     top_delta="-3" +     width="568" /> +    <button +     follows="bottom|right" +     height="23" +     label="Filter" +     layout="topleft" +     left_pad="5" +     name="filter_parcel_btn" +     top_delta="0" +     width="100"> +      <button.commit_callback +          function="TopObjects.GetByParcelName" /> +    </button>      <button       follows="bottom|right"       height="22" diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml index cd834b61ce..124c0596c3 100644 --- a/indra/newview/skins/default/xui/en/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml @@ -19,6 +19,10 @@       name="already_in_group">          Some Residents you chose are already in the group, and so were not sent an invitation.      </panel.string> +	<panel.string +     name="invite_selection_too_large"> +		Group Invitations not sent: too many Residents selected. Group Invitations are limited to 100 per request. +	</panel.string>      <text       type="string"       length="1" diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml index 4550603134..a4883c21e2 100644 --- a/indra/newview/skins/default/xui/en/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml @@ -194,7 +194,7 @@      <button       follows="left|top"       height="20" -     label="Delay Restart" +     label="Cancel Restart"       layout="topleft"       left_pad="155"       name="cancel_restart_btn" | 
