void LLFloaterAvatarPicker::onBtnSelect()
{

	// If select btn not enabled then do not callback
	if (!isSelectBtnEnabled())
		return;

	if(mSelectionCallback)
	{
		std::string active_panel_name;
		LLUICtrl* list =  NULL;
		LLPanel* active_panel = getChild<LLTabContainer>("ResidentChooserTabs")->getCurrentPanel();
		if(active_panel)
		{
			active_panel_name = active_panel->getName();
		}
		if(active_panel_name == "SearchPanel")
		{
			list = getChild<LLScrollListCtrl>("SearchResults");
		}
		else if(active_panel_name == "NearMePanel")
		{
			list = getChild<LLScrollListCtrl>("NearMe");
		}
		else if (active_panel_name == "FriendsPanel")
		{
			list = getChild<LLScrollListCtrl>("Friends");
		}
		else if(active_panel_name == "KeyPanel")
		{
			list = getChild<LLLineEditor>("EditUUID");
		}

		if(list)
		{
			uuid_vec_t			avatar_ids;
			std::vector<LLAvatarName>	avatar_names;
			getSelectedAvatarData(list, avatar_ids, avatar_names);
			mSelectionCallback(avatar_ids, avatar_names);
		}
	}
	getChild<LLScrollListCtrl>("SearchResults")->deselectAllItems(TRUE);
	getChild<LLScrollListCtrl>("NearMe")->deselectAllItems(TRUE);
	getChild<LLScrollListCtrl>("Friends")->deselectAllItems(TRUE);
	if(mCloseOnSelect)
	{
		mCloseOnSelect = FALSE;
		close();		
	}
}
Exemplo n.º 2
0
void LLSplitButton::onItemSelected(LLUICtrl* ctrl)
{
	if (!ctrl) return;

	hideButtons();

	// call the callback if it exists
	if(!mSelectionCallback.empty())
	{
		mSelectionCallback(this, ctrl->getName());
	}

	gFocusMgr.setKeyboardFocus(NULL);
}
void LLFloaterAvatarPicker::onBtnSelect()
{

	// If select btn not enabled then do not callback
	if (!visibleItemsSelected())
		return;

	if(mSelectionCallback)
	{
		std::vector<LLAvatarName>	avatar_names;
		std::vector<LLUUID>			avatar_ids;
		std::string active_panel_name;
		LLScrollListCtrl* list =  NULL;
		LLPanel* active_panel = childGetVisibleTab("ResidentChooserTabs");
		if(active_panel)
		{
			active_panel_name = active_panel->getName();
		}
		if(active_panel_name == "CallingCardsPanel")
		{
			avatar_ids = mSelectedInventoryAvatarIDs;
			for(std::vector<std::string>::size_type i = 0; i < avatar_ids.size(); ++i)
			{
				std::map<LLUUID, LLAvatarName>::iterator iter = sAvatarNameMap.find(avatar_ids[i]);
				LLAvatarName av_name;
				if (iter != sAvatarNameMap.end())
				{
					avatar_names.push_back(iter->second);
				}
				else if(LLAvatarNameCache::get(avatar_ids[i], &av_name))
				{
					avatar_names.push_back(av_name);
				}
				else
				{
					std::string name = gCacheName->buildLegacyName(mSelectedInventoryAvatarNames[i]);
					std::string::size_type pos = name.find(' ');
					av_name.mLegacyFirstName = name.substr(pos);
					av_name.mLegacyLastName = pos!=std::string::npos ? name.substr(pos+1) : "Resident";
					av_name.mDisplayName = name;
					av_name.mUsername = "";
					avatar_names.push_back(av_name);
				}
			}
		}
		else if(active_panel_name == "SearchPanel")
		{
			list = getChild<LLScrollListCtrl>("SearchResults");
		}
		else if(active_panel_name == "NearMePanel")
		{
			list = getChild<LLScrollListCtrl>("NearMe");
		}
		else if(active_panel_name == "KeyPanel")
		{
			LLUUID specified = getChild<LLLineEditor>("EditUUID")->getValue().asUUID();
			if(specified.isNull())
				return;
			avatar_ids.push_back(specified);

			std::map<LLUUID, LLAvatarName>::iterator iter = sAvatarNameMap.find(specified);
			if (iter != sAvatarNameMap.end())
			{
				avatar_names.push_back(iter->second);
			}
			else
			{
				LLAvatarName av_name;
				LLAvatarNameCache::get(specified, &av_name);
				avatar_names.push_back(av_name);
			}
		}

		if(list)
		{
			getSelectedAvatarData(list, avatar_ids, avatar_names);
		}
		if(!avatar_names.empty() && !avatar_ids.empty())
		{
			mSelectionCallback(avatar_ids, avatar_names);
		}
	}
	getChild<LLInventoryPanel>("InventoryPanel")->setSelection(LLUUID::null, FALSE);
	getChild<LLScrollListCtrl>("SearchResults")->deselectAllItems(TRUE);
	getChild<LLScrollListCtrl>("NearMe")->deselectAllItems(TRUE);
	if(mCloseOnSelect)
	{
		mCloseOnSelect = FALSE;
		close();		
	}
}