Cleared an open CHUI merge issue in LLInventoryFilter and did some clean-up while already working on it

Ansariel 2014-05-09 15:40:18 +02:00
parent 28281ca249
commit beb760eeb0
2 changed files with 51 additions and 57 deletions

View File

@ -42,8 +42,10 @@
#include "llclipboard.h"
#include "lltrans.h"
// Firestorm includes
#include "llinventoryfunctions.h" // needed to query worn status
#include "llappearancemgr.h" // needed to query whether we are in COF
LLFastTimer::DeclareTimer FT_FILTER_CLIPBOARD("Filter Clipboard");
LLInventoryFilter::FilterOps::FilterOps(const Params& p)
@ -68,47 +70,44 @@ LLInventoryFilter::LLInventoryFilter(const Params& p)
: mName(p.name),
mFilterModified(FILTER_NONE),
mEmptyLookupMessage("InventoryNoMatchingItems"),
mFilterSubStringTarget(SUBST_TARGET_NAME), // ## Zi: Extended Inventory Search
mFilterSubStringTarget(SUBST_TARGET_NAME), // <FS:Zi> Extended Inventory Search
mFilterOps(p.filter_ops),
mFilterSubString(p.substring),
mCurrentGeneration(0),
mFirstRequiredGeneration(0),
mFirstSuccessGeneration(0)
{
// Begin Multi-substring inventory search
// <FS:Zi> Begin Multi-substring inventory search
mSubStringMatchOffsets.clear();
mFilterSubStrings.clear();
// End Multi-substring inventory search
// </FS:Zi> End Multi-substring inventory search
// copy mFilterOps into mDefaultFilterOps
markDefault();
}
// ## Zi: Extended Inventory Search
// <FS:Zi> Extended Inventory Search
void LLInventoryFilter::setFilterSubStringTarget(const std::string& targetName)
{
if(targetName=="name")
mFilterSubStringTarget=SUBST_TARGET_NAME;
else if(targetName=="creator")
mFilterSubStringTarget=SUBST_TARGET_CREATOR;
else if(targetName=="description")
mFilterSubStringTarget=SUBST_TARGET_DESCRIPTION;
else if(targetName=="uuid")
mFilterSubStringTarget=SUBST_TARGET_UUID;
else if(targetName=="all")
mFilterSubStringTarget=SUBST_TARGET_ALL;
if (targetName == "name")
mFilterSubStringTarget = SUBST_TARGET_NAME;
else if (targetName == "creator")
mFilterSubStringTarget = SUBST_TARGET_CREATOR;
else if (targetName == "description")
mFilterSubStringTarget = SUBST_TARGET_DESCRIPTION;
else if (targetName == "uuid")
mFilterSubStringTarget = SUBST_TARGET_UUID;
else if (targetName == "all")
mFilterSubStringTarget = SUBST_TARGET_ALL;
else
llwarns << "Unknown sub string target: " << targetName << llendl;
LL_WARNS("LLInventoryFilter") << "Unknown sub string target: " << targetName << LL_ENDL;
}
LLInventoryFilter::EFilterSubstringTarget LLInventoryFilter::getFilterSubStringTarget() const
{
return mFilterSubStringTarget;
}
// ## Zi: Extended Inventory Search
// </FS:Zi> Extended Inventory Search
bool LLInventoryFilter::check(const LLFolderViewModelItem* item)
{
@ -128,16 +127,13 @@ bool LLInventoryFilter::check(const LLFolderViewModelItem* item)
return passed_clipboard;
}
//bool passed = (mFilterSubString.size() ? listener->getSearchableName().find(mFilterSubString) != std::string::npos : true); <FS:TM> 3.6.4 check this, ll repoaced the line in CHUI (2 down) with this
//mSubStringMatchOffset = mFilterSubString.size() ? item->getSearchableLabel().find(mFilterSubString) : std::string::npos; <FS:TM> CHUI Merge LL origonal removed in FS, replaced with enhanced search
//std::string::size_type string_offset = mFilterSubString.size() ? listener->getSearchableName().find(mFilterSubString) : std::string::npos; <FS:TM> CHUI Merge LL new line
// Begin Multi-substring inventory search
// <FS:Zi> Multi-substring inventory search
//bool passed = (mFilterSubString.size() ? listener->getSearchableName().find(mFilterSubString) != std::string::npos : true);
std::string::size_type string_offset = std::string::npos;
if (mFilterSubStrings.size())
{
//const std::string& searchLabel=getSearchableTarget(item); // ## Zi: Extended Inventory Search
std::string searchLabel;
switch(mFilterSubStringTarget)
switch (mFilterSubStringTarget)
{
case SUBST_TARGET_NAME:
searchLabel = listener->getSearchableName();
@ -155,14 +151,14 @@ bool LLInventoryFilter::check(const LLFolderViewModelItem* item)
searchLabel = listener->getSearchableAll();
break;
default:
llwarns << "Unknown search substring target: " << mFilterSubStringTarget << llendl;
LL_WARNS("LLInventoryFilter") << "Unknown search substring target: " << mFilterSubStringTarget << LL_ENDL;
searchLabel = listener->getSearchableName();
break;
}
U32 index = 0;
for (std::vector<std::string>::iterator it=mFilterSubStrings.begin();
it<mFilterSubStrings.end(); it++, index++)
for (std::vector<std::string>::iterator it = mFilterSubStrings.begin();
it < mFilterSubStrings.end(); it++, index++)
{
std::string::size_type sub_string_offset = searchLabel.find(*it);
@ -171,8 +167,8 @@ bool LLInventoryFilter::check(const LLFolderViewModelItem* item)
if (sub_string_offset == std::string::npos)
{
string_offset = std::string::npos;
for (std::vector<std::string::size_type>::iterator it=mSubStringMatchOffsets.begin();
it<mSubStringMatchOffsets.end(); it++)
for (std::vector<std::string::size_type>::iterator it = mSubStringMatchOffsets.begin();
it < mSubStringMatchOffsets.end(); it++)
{
*it = std::string::npos;
}
@ -184,9 +180,9 @@ bool LLInventoryFilter::check(const LLFolderViewModelItem* item)
}
}
}
// End Multi-substring inventory search
bool passed = (mFilterSubString.size() == 0 || string_offset != std::string::npos);
// </FS:Zi> Multi-substring inventory search
BOOL passed = (mFilterSubString.size() == 0 || string_offset != std::string::npos);
passed = passed && checkAgainstFilterType(listener);
passed = passed && checkAgainstPermissions(listener);
passed = passed && checkAgainstFilterLinks(listener);
@ -339,6 +335,7 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent
}
}
// <FS>
////////////////////////////////////////////////////////////////////////////////
// FILTERTYPE_WORN
// Pass if this item is worn (hiding COF and Outfits folders)
@ -351,6 +348,7 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent
&& (!cat || cat->getPreferredType() != LLFolderType::FT_OUTFIT)
&& get_is_item_worn(object_id);
}
// </FS>
////////////////////////////////////////////////////////////////////////////////
// FILTERTYPE_EMPTYFOLDERS
@ -634,7 +632,7 @@ void LLInventoryFilter::setFilterSubString(const std::string& string)
LLStringUtil::trimHead(filter_sub_string_new);
LLStringUtil::toUpper(filter_sub_string_new);
// Begin Multi-substring inventory search
// <FS:Zi> Multi-substring inventory search
// Cut filter string into several substrings, separated by +
{
mFilterSubStrings.clear();
@ -657,7 +655,7 @@ void LLInventoryFilter::setFilterSubString(const std::string& string)
}
while (to != std::string::npos);
}
// </FS:Zi> Multi-substring inventory search
if (mFilterSubString != filter_sub_string_new)
{
@ -670,7 +668,6 @@ void LLInventoryFilter::setFilterSubString(const std::string& string)
&& !filter_sub_string_new.substr(0, mFilterSubString.size()).compare(mFilterSubString);
mFilterSubString = filter_sub_string_new;
if (less_restrictive)
{
setModified(FILTER_LESS_RESTRICTIVE);
@ -692,15 +689,14 @@ void LLInventoryFilter::setFilterSubString(const std::string& string)
setModified(FILTER_RESTART);
}
// ## Zi: Filter Links Menu
// <FS:Zi> Filter Links Menu
// We don't do this anymore, we have a menu option for it now. -Zi
// Cancel out filter links once the search string is modified
// {
// mFilterOps.mFilterLinks = FILTERLINK_INCLUDE_LINKS;
// }
// ## Zi: Filter Links Menu
//{
// mFilterOps.mFilterLinks = FILTERLINK_INCLUDE_LINKS;
//}
// </FS:Zi> Filter Links Menu
}
// End Multi-substring inventory search
}
void LLInventoryFilter::setFilterPermissions(PermissionMask perms)
@ -884,11 +880,13 @@ void LLInventoryFilter::setShowFolderState(EFolderShow state)
}
}
// <FS>
void LLInventoryFilter::setFilterWorn(BOOL sl)
{
setModified();
mFilterOps.mFilterTypes |= FILTERTYPE_WORN;
}
// </FS>
void LLInventoryFilter::markDefault()
{
@ -1319,7 +1317,7 @@ bool LLInventoryFilter::FilterOps::DateRange::validateBlock( bool emit_errors
return valid;
}
// Begin Multi-substring inventory search
// <FS:Zi> Multi-substring inventory search
// For use by LLFolderViewItem for highlighting
@ -1339,4 +1337,4 @@ std::string::size_type LLInventoryFilter::getFilterSubStringLen(U32 index) const
if (index < 0 || index >= mFilterSubStrings.size()) return 0;
return mFilterSubStrings[index].size();
}
// End Multi-substring inventory search
// </FS:Zi> Multi-substring inventory search

View File

@ -31,10 +31,6 @@
#include "llpermissionsflags.h"
#include "llfolderviewmodel.h"
// Begin Multi-substring inventory search
#include <vector>
// End Multi-substring inventory search
class LLFolderViewItem;
class LLFolderViewFolder;
class LLInventoryItem;
@ -57,7 +53,7 @@ public:
FILTERTYPE_DATE = 0x1 << 3, // search by date range
FILTERTYPE_WEARABLE = 0x1 << 4, // search by wearable type
FILTERTYPE_EMPTYFOLDERS = 0x1 << 5, // pass if folder is not a system folder to be hidden if
FILTERTYPE_WORN = 0x1 << 6, // search by wearable type
FILTERTYPE_WORN = 0x1 << 6, // <FS> search by wearable type
};
enum EFilterLink
@ -75,7 +71,7 @@ public:
SO_SYSTEM_FOLDERS_TO_TOP = 0x1 << 2 // Force system folders to be on top
};
// ## Zi: Extended Inventory Search
// <FS:Zi> Extended Inventory Search
enum EFilterSubstringTarget
{
SUBST_TARGET_NAME = 0, // Classic search for item name
@ -84,7 +80,7 @@ public:
SUBST_TARGET_UUID, // Search for asset UUID
SUBST_TARGET_ALL // Search in all fields at the same time
};
// ## Zi: Extended Inventory Search
// </FS:Zi> Extended Inventory Search
struct FilterOps
{
@ -184,12 +180,12 @@ public:
const std::string& getFilterSubStringOrig() const { return mFilterSubStringOrig; }
bool hasFilterString() const;
// Begin Multi-substring inventory search
// <FS:Zi> Multi-substring inventory search
// For use by LLFolderViewItem for highlighting
U32 getFilterSubStringCount() const;
std::string::size_type getFilterSubStringPos(U32 index) const;
std::string::size_type getFilterSubStringLen(U32 index) const;
// End Multi-substring inventory search
// </FS:Zi> Multi-substring inventory search
void setFilterPermissions(PermissionMask perms);
PermissionMask getFilterPermissions() const;
@ -222,11 +218,11 @@ public:
std::string::size_type getStringMatchOffset(LLFolderViewModelItem* item) const;
std::string::size_type getFilterStringSize() const;
// ## Zi: Extended Inventory Search
// <FS:Zi> Extended Inventory Search
void setFilterSubStringTarget(const std::string& targetName);
EFilterSubstringTarget getFilterSubStringTarget() const;
std::string getSearchableTarget(const LLFolderViewItem* item) const;
// ## Zi: Extended Inventory Search
// </FS:Zi> Extended Inventory Search
// +-------------------------------------------------------------------+
// + Presentation
@ -293,11 +289,11 @@ private:
std::string mFilterSubString;
// Begin Multi-substring inventory search
// <FS:Zi> Multi-substring inventory search
std::vector<std::string::size_type> mSubStringMatchOffsets;
std::vector<std::string> mFilterSubStrings;
EFilterSubstringTarget mFilterSubStringTarget; // ## Zi: Extended Inventory Search
// End Multi-substring inventory search
EFilterSubstringTarget mFilterSubStringTarget;
// </FS:Zi> Multi-substring inventory search
std::string mFilterSubStringOrig;
const std::string mName;