From 6eb700cac67a95eb48b608a1bf5e0327b678b04c Mon Sep 17 00:00:00 2001 From: Testy Date: Sun, 16 Feb 2020 17:50:55 -0400 Subject: [PATCH] Added a few items to the area search context menu. In the area search context menu, I've added items to select all object entries, clear all selections, or filter all objects owned by the user. --- indra/newview/fsareasearch.cpp | 42 +++++++++++++++++++ indra/newview/fsareasearch.h | 1 + .../default/xui/en/menu_fs_area_search.xml | 28 +++++++++++++ 3 files changed, 71 insertions(+) diff --git a/indra/newview/fsareasearch.cpp b/indra/newview/fsareasearch.cpp index 3f2a41db23..1bfa55e752 100644 --- a/indra/newview/fsareasearch.cpp +++ b/indra/newview/fsareasearch.cpp @@ -1323,6 +1323,11 @@ void FSAreaSearch::onCommitCheckboxRegex() } } +void FSAreaSearch::setFindOwnerText(std::string value) +{ + mPanelFind->mOwnerLineEditor->setText(value); +} + //--------------------------------------------------------------------------- // List panel @@ -1632,6 +1637,43 @@ bool FSPanelAreaSearchList::onContextMenuItemClick(const LLSD& userdata) std::string action = userdata.asString(); LL_DEBUGS("FSAreaSearch") << "Right click menu " << action << " was selected." << LL_ENDL; + if (action == "select_all") + { + std::vector result_items = mResultList->getAllData(); + std::vector::iterator iter = result_items.begin(); + std::vector::iterator end = result_items.end(); + for (; iter != end; ++iter) + { + (*iter)->setSelected(TRUE); + } + return true; + } + if (action == "clear_selection") + { + std::vector selected_items = mResultList->getAllSelected(); + std::vector::iterator iter = selected_items.begin(); + std::vector::iterator end = selected_items.end(); + for (; iter != end; ++iter) + { + (*iter)->setSelected(FALSE); + } + return true; + } + if (action == "filter_my_objects") + { + LLAvatarName avatar_name; + if (LLAvatarNameCache::get(gAgent.getID(), &avatar_name)) + { + mFSAreaSearch->setFindOwnerText(avatar_name.getLegacyName()); + mFSAreaSearch->onButtonClickedSearch(); + } + else + { + LL_DEBUGS() << "Avatar name could not be retrieved from cache." << LL_ENDL; + } + return true; + } + // NOTE that each action command MUST begin with a different letter. char c = action.at(0); switch(c) diff --git a/indra/newview/fsareasearch.h b/indra/newview/fsareasearch.h index 5b8f3a8d74..9ad465aac4 100644 --- a/indra/newview/fsareasearch.h +++ b/indra/newview/fsareasearch.h @@ -126,6 +126,7 @@ public: void onButtonClickedSearch(); void onCommitCheckboxRegex(); bool isSearchableObject (LLViewerObject* objectp, LLViewerRegion* our_region); + void setFindOwnerText(std::string value); std::map mObjectDetails; diff --git a/indra/newview/skins/default/xui/en/menu_fs_area_search.xml b/indra/newview/skins/default/xui/en/menu_fs_area_search.xml index 8b8da3106f..2215bfece5 100644 --- a/indra/newview/skins/default/xui/en/menu_fs_area_search.xml +++ b/indra/newview/skins/default/xui/en/menu_fs_area_search.xml @@ -107,4 +107,32 @@ function="AreaSearch.Enable" parameter="one"/> + + + + + + + + + + +