From ecbfe288290bf813c9d8bed7d1671523a1afe3cb Mon Sep 17 00:00:00 2001 From: Ansariel Date: Fri, 26 Aug 2016 12:09:22 +0200 Subject: [PATCH] Add filter editor for the avatar render settings floater --- .../newview/fsfloateravatarrendersettings.cpp | 29 ++++++++++++++++++- indra/newview/fsfloateravatarrendersettings.h | 4 +++ .../de/floater_fs_avatar_render_settings.xml | 1 + .../en/floater_fs_avatar_render_settings.xml | 16 ++++++++-- 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/indra/newview/fsfloateravatarrendersettings.cpp b/indra/newview/fsfloateravatarrendersettings.cpp index 85aeaef0fb..88f380bcff 100644 --- a/indra/newview/fsfloateravatarrendersettings.cpp +++ b/indra/newview/fsfloateravatarrendersettings.cpp @@ -29,6 +29,7 @@ #include "fsfloateravatarrendersettings.h" +#include "llfiltereditor.h" #include "llnamelistctrl.h" #include "lltrans.h" #include "llviewercontrol.h" @@ -39,7 +40,9 @@ FSFloaterAvatarRenderSettings::FSFloaterAvatarRenderSettings(const LLSD& key) : LLFloater(key), mAvatarList(NULL), - mRenderSettingChangedCallbackConnection() + mRenderSettingChangedCallbackConnection(), + mFilterSubString(LLStringUtil::null), + mFilterSubStringOrig(LLStringUtil::null) { } @@ -75,9 +78,12 @@ BOOL FSFloaterAvatarRenderSettings::postBuild() { mAvatarList = getChild("avatar_list"); mAvatarList->setContextMenu(&FSFloaterAvatarRenderPersistenceMenu::gFSAvatarRenderPersistenceMenu); + mAvatarList->setFilterColumn(0); childSetAction("close_btn", boost::bind(&FSFloaterAvatarRenderSettings::onCloseBtn, this)); + getChild("filter_input")->setCommitCallback(boost::bind(&FSFloaterAvatarRenderSettings::onFilterEdit, this, _2)); + mRenderSettingChangedCallbackConnection = FSAvatarRenderPersistence::instance().setAvatarRenderSettingChangedCallback(boost::bind(&FSFloaterAvatarRenderSettings::onAvatarRenderSettingChanged, this, _1, _2)); loadInitialList(); @@ -108,7 +114,28 @@ void FSFloaterAvatarRenderSettings::onAvatarRenderSettingChanged(const LLUUID& a } } +void FSFloaterAvatarRenderSettings::onFilterEdit(const std::string& search_string) +{ + mFilterSubStringOrig = search_string; + LLStringUtil::trimHead(mFilterSubStringOrig); + // Searches are case-insensitive + std::string search_upper = mFilterSubStringOrig; + LLStringUtil::toUpper(search_upper); + if (mFilterSubString == search_upper) + { + return; + } + + mFilterSubString = search_upper; + + // Apply new filter. + mAvatarList->setFilterString(mFilterSubStringOrig); +} + +//--------------------------------------------------------------------------- +// Context menu +//--------------------------------------------------------------------------- namespace FSFloaterAvatarRenderPersistenceMenu { diff --git a/indra/newview/fsfloateravatarrendersettings.h b/indra/newview/fsfloateravatarrendersettings.h index ec5f302f0c..75d70308e2 100644 --- a/indra/newview/fsfloateravatarrendersettings.h +++ b/indra/newview/fsfloateravatarrendersettings.h @@ -46,6 +46,7 @@ public: private: void onCloseBtn(); + void onFilterEdit(const std::string& search_string); void onAvatarRenderSettingChanged(const LLUUID& avatar_id, LLVOAvatar::VisualMuteSettings render_setting); void loadInitialList(); @@ -54,6 +55,9 @@ private: LLNameListCtrl* mAvatarList; boost::signals2::connection mRenderSettingChangedCallbackConnection; + + std::string mFilterSubString; + std::string mFilterSubStringOrig; }; diff --git a/indra/newview/skins/default/xui/de/floater_fs_avatar_render_settings.xml b/indra/newview/skins/default/xui/de/floater_fs_avatar_render_settings.xml index 66aaef51eb..a7c8ba1d13 100644 --- a/indra/newview/skins/default/xui/de/floater_fs_avatar_render_settings.xml +++ b/indra/newview/skins/default/xui/de/floater_fs_avatar_render_settings.xml @@ -6,6 +6,7 @@ Komplett + diff --git a/indra/newview/skins/default/xui/en/floater_fs_avatar_render_settings.xml b/indra/newview/skins/default/xui/en/floater_fs_avatar_render_settings.xml index 95725aff5e..7f271b79c1 100644 --- a/indra/newview/skins/default/xui/en/floater_fs_avatar_render_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_fs_avatar_render_settings.xml @@ -20,14 +20,24 @@ Fully +