Add filter editor for the avatar render settings floater

meow-7.2.2
Ansariel 2016-08-26 12:09:22 +02:00
parent 0d99a8530a
commit ecbfe28829
4 changed files with 46 additions and 4 deletions

View File

@ -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<LLNameListCtrl>("avatar_list");
mAvatarList->setContextMenu(&FSFloaterAvatarRenderPersistenceMenu::gFSAvatarRenderPersistenceMenu);
mAvatarList->setFilterColumn(0);
childSetAction("close_btn", boost::bind(&FSFloaterAvatarRenderSettings::onCloseBtn, this));
getChild<LLFilterEditor>("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
{

View File

@ -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;
};

View File

@ -6,6 +6,7 @@
<floater.string name="av_render_always">
Komplett
</floater.string>
<filter_editor label="Avatare filtern" name="filter_input"/>
<name_list name="avatar_list">
<name_list.columns label="Name" name="name"/>
<name_list.columns label="Anzeigeeinstellung" name="render_setting" width="125"/>

View File

@ -20,14 +20,24 @@
<floater.string name="av_render_always">
Fully
</floater.string>
<filter_editor
follows="left|top|right"
height="23"
layout="topleft"
left="4"
label="Filter Avatars"
max_length_chars="300"
name="filter_input"
top="4"
right="-4" />
<name_list
column_padding="0"
draw_heading="true"
follows="all"
layout="topleft"
left="10"
right="-10"
top="10"
left="4"
right="-4"
top="30"
bottom="-32"
name="avatar_list"
name_column="name"