From ad61ada7c136764be940acb19c32a759e042f7dc Mon Sep 17 00:00:00 2001 From: Apelsin Date: Thu, 17 Jun 2010 11:47:39 -0700 Subject: [PATCH] Added ability to select avatar by UUID and even select groups by UUID (i.e. return group-owned objects per estate[s]) --- indra/newview/llfloateravatarpicker.cpp | 23 +++++++++++++++++-- .../xui/en-us/floater_avatar_picker.xml | 22 ++++++++++++++---- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index e382fefec..9579924aa 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -100,6 +100,7 @@ LLFloaterAvatarPicker::LLFloaterAvatarPicker() : BOOL LLFloaterAvatarPicker::postBuild() { childSetKeystrokeCallback("Edit", editKeystroke, this); + childSetKeystrokeCallback("EditUUID", editKeystroke, this); childSetAction("Find", onBtnFind, this); childDisable("Find"); @@ -138,7 +139,7 @@ BOOL LLFloaterAvatarPicker::postBuild() childSetTabChangeCallback("ResidentChooserTabs", "SearchPanel", onTabChanged, this); childSetTabChangeCallback("ResidentChooserTabs", "CallingCardsPanel", onTabChanged, this); childSetTabChangeCallback("ResidentChooserTabs", "NearMePanel", onTabChanged, this); - + childSetTabChangeCallback("ResidentChooserTabs", "KeyPanel", onTabChanged, this); setAllowMultiple(FALSE); return TRUE; @@ -209,6 +210,17 @@ void LLFloaterAvatarPicker::onBtnSelect(void* userdata) getSelectedAvatarData(self->getChild("NearMe"), avatar_names, avatar_ids); self->mCallback(avatar_names, avatar_ids, self->mCallbackUserdata); } + else if(active_panel == self->getChild("KeyPanel")) + { + LLUUID specified = self->getChild("EditUUID")->getValue().asUUID(); + if(specified.isNull()) + return; + std::vector avatar_names; + std::vector avatar_ids; + avatar_ids.push_back(specified); + avatar_names.push_back(specified.asString()); + self->mCallback(avatar_names, avatar_ids, self->mCallbackUserdata); + } } self->getChild("InventoryPanel")->setSelection(LLUUID::null, FALSE); self->getChild("SearchResults")->deselectAllItems(TRUE); @@ -481,7 +493,14 @@ void LLFloaterAvatarPicker::processAvatarPickerReply(LLMessageSystem* msg, void* void LLFloaterAvatarPicker::editKeystroke(LLLineEditor* caller, void* user_data) { LLFloaterAvatarPicker* self = (LLFloaterAvatarPicker*)user_data; - self->childSetEnabled("Find", caller->getText().size() >= 3); + LLPanel* active_panel = self->childGetVisibleTab("ResidentChooserTabs"); + if(active_panel == self->getChild("SearchPanel")) + self->childSetEnabled("Find", caller->getText().size() >= 3); + else if(active_panel == self->getChild("KeyPanel")) + { + LLUUID specified = self->getChild("EditUUID")->getValue().asUUID(); + self->childSetEnabled("Select", specified.notNull()); + } } // virtual diff --git a/indra/newview/skins/default/xui/en-us/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en-us/floater_avatar_picker.xml index 8cc8b9890..cf1d22f2f 100644 --- a/indra/newview/skins/default/xui/en-us/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/en-us/floater_avatar_picker.xml @@ -1,10 +1,10 @@ + can_resize="true" height="350" left="400" min_height="200" min_width="375" + mouse_opaque="true" name="avatarpicker" title="Choose Resident" width="375"> + name="ResidentChooserTabs" tab_position="top" tab_width="65" width="365"> @@ -71,7 +71,21 @@ draw_stripes="true" column_padding="5" sort_column="0" mouse_opaque="true" background_visible="true" multi_select="false" name="NearMe" /> - + + + Avatar or Group UUID: + + +