summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoren Shih <seraph@lindenlab.com>2009-12-03 20:50:21 -0500
committerLoren Shih <seraph@lindenlab.com>2009-12-03 20:50:21 -0500
commit0f2f846a12936991f0434d5aac50c850d76ce2a4 (patch)
tree11397aef6deba9f61b7aee2b20940c506b0fc6be
parent1ffd7c99afe25da37a83a2a1dd8a03c7275a5f6b (diff)
EXT-3125 : INFRASTRUCTURE : Cleanup LLInventoryFilter to disambiguate various filter options
EXT-3124 : Add lookup for finding all linked items to an item LLInventoryFilter cleanup, including adding ability to lookup item by UUID. --HG-- branch : avatar-pipeline
-rw-r--r--indra/newview/llfolderview.h3
-rw-r--r--indra/newview/llinventoryfilter.cpp225
-rw-r--r--indra/newview/llinventoryfilter.h195
-rw-r--r--indra/newview/llinventoryfunctions.h27
-rw-r--r--indra/newview/llinventorypanel.cpp4
-rw-r--r--indra/newview/llinventorypanel.h2
-rw-r--r--indra/newview/llpanelobjectinventory.cpp1
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp2
8 files changed, 280 insertions, 179 deletions
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index a0e252ae88..bbd92b487f 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -71,9 +71,6 @@ class LLUICtrl;
// that only work folders or only work on items, but I'll worry about
// that later when it's determined to be too slow.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-
-
class LLFolderViewFunctor
{
public:
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index 085c96c93d..3664d7d117 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -44,6 +44,18 @@
// linden library includes
#include "lltrans.h"
+LLInventoryFilter::FilterOps::FilterOps() :
+ mFilterObjectTypes(0xffffffffffffffffULL),
+ mMinDate(time_min()),
+ mMaxDate(time_max()),
+ mHoursAgo(0),
+ mShowFolderState(SHOW_NON_EMPTY_FOLDERS),
+ mPermissions(PERM_NONE),
+ mFilterType(FILTERTYPE_ITEM),
+ mFilterUUID(LLUUID::null)
+{
+}
+
///----------------------------------------------------------------------------
/// Class LLInventoryFilter
///----------------------------------------------------------------------------
@@ -52,14 +64,6 @@ LLInventoryFilter::LLInventoryFilter(const std::string& name)
mModified(FALSE),
mNeedTextRebuild(TRUE)
{
- mFilterOps.mFilterTypes = 0xffffffffffffffffULL;
- mFilterOps.mMinDate = time_min();
- mFilterOps.mMaxDate = time_max();
- mFilterOps.mHoursAgo = 0;
- mFilterOps.mShowFolderState = SHOW_NON_EMPTY_FOLDERS;
- mFilterOps.mPermissions = PERM_NONE;
- mFilterOps.mFilterForCategories = FALSE;
-
mOrder = SO_FOLDERS_BY_NAME; // This gets overridden by a pref immediately
mSubStringMatchOffset = 0;
@@ -81,11 +85,17 @@ LLInventoryFilter::~LLInventoryFilter()
{
}
-BOOL LLInventoryFilter::check(LLFolderViewItem* item)
+BOOL LLInventoryFilter::check(const LLFolderViewItem* item)
{
- time_t earliest;
+ // If it's a folder and we're showing all folders, return TRUE automatically.
+ const BOOL is_folder = (dynamic_cast<const LLFolderViewFolder*>(item) != NULL);
+ if (is_folder && (mFilterOps.mShowFolderState == LLInventoryFilter::SHOW_ALL_FOLDERS))
+ {
+ return TRUE;
+ }
- earliest = time_corrected() - mFilterOps.mHoursAgo * 3600;
+ const U16 HOURS_TO_SECONDS = 3600;
+ time_t earliest = time_corrected() - mFilterOps.mHoursAgo * HOURS_TO_SECONDS;
if (mFilterOps.mMinDate > time_min() && mFilterOps.mMinDate < earliest)
{
earliest = mFilterOps.mMinDate;
@@ -94,59 +104,64 @@ BOOL LLInventoryFilter::check(LLFolderViewItem* item)
{
earliest = 0;
}
- LLFolderViewEventListener* listener = item->getListener();
+
+ const LLFolderViewEventListener* listener = item->getListener();
mSubStringMatchOffset = mFilterSubString.size() ? item->getSearchableLabel().find(mFilterSubString) : std::string::npos;
- bool passed_type = false;
- if (mFilterOps.mFilterForCategories)
- {
- // Pass if this item is a category of the filter type, or
- // if its parent is a category of the filter type.
- LLUUID uuid = listener->getUUID();
- if (listener->getInventoryType() != LLInventoryType::IT_CATEGORY)
- {
- const LLInventoryObject *obj = gInventory.getObject(uuid);
- uuid = obj->getParentUUID();
- }
- LLViewerInventoryCategory *cat = gInventory.getCategory(uuid);
- if (cat)
- {
- passed_type |= ((1LL << cat->getPreferredType() & mFilterOps.mFilterTypes) != U64(0));
- }
- }
- else
+ const BOOL passed_filtertype = checkAgainstFilterType(item);
+ const BOOL passed = passed_filtertype &&
+ (mFilterSubString.size() == 0 || mSubStringMatchOffset != std::string::npos) &&
+ ((listener->getPermissionMask() & mFilterOps.mPermissions) == mFilterOps.mPermissions) &&
+ (listener->getCreationDate() >= earliest && listener->getCreationDate() <= mFilterOps.mMaxDate);
+
+ return passed;
+}
+
+BOOL LLInventoryFilter::checkAgainstFilterType(const LLFolderViewItem* item)
+{
+ const LLFolderViewEventListener* listener = item->getListener();
+ if (!listener) return FALSE;
+
+ const LLInventoryType::EType object_type = listener->getInventoryType();
+ const LLUUID object_id = listener->getUUID();
+ const LLInventoryObject *object = gInventory.getObject(object_id);
+
+ if (!object) return FALSE;
+
+ switch (mFilterOps.mFilterType)
{
- LLInventoryType::EType type = listener->getInventoryType();
- passed_type |= ((1LL << type & mFilterOps.mFilterTypes) != U64(0));
- if (type == LLInventoryType::IT_NONE)
+ case FILTERTYPE_ITEM:
{
- const LLInventoryObject *obj = gInventory.getObject(listener->getUUID());
- if (obj && obj->getIsLinkType())
+ // If it has no type, pass it, unless it's a link.
+ if (object_type == LLInventoryType::IT_NONE)
{
- passed_type = FALSE;
+ return !object->getIsLinkType();
}
- else
+ return (1LL << object_type & mFilterOps.mFilterObjectTypes) != U64(0);
+ }
+ // Pass if this item is a category of the filter type, or
+ // if its parent is a category of the filter type.
+ case FILTERTYPE_CATEGORY:
+ {
+ LLUUID cat_id = object_id;
+ if (listener->getInventoryType() != LLInventoryType::IT_CATEGORY)
{
- passed_type = TRUE;
+ cat_id = object->getParentUUID();
}
+ const LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
+ if (!cat) return FALSE;
+ return (1LL << cat->getPreferredType() & mFilterOps.mFilterObjectTypes) != U64(0);
+ }
+ case FILTERTYPE_UUID:
+ {
+ return (object->getLinkedUUID() == mFilterOps.mFilterUUID);
}
}
-
- BOOL passed = passed_type
- && (mFilterSubString.size() == 0 || mSubStringMatchOffset != std::string::npos)
- && ((listener->getPermissionMask() & mFilterOps.mPermissions) == mFilterOps.mPermissions)
- && (listener->getCreationDate() >= earliest && listener->getCreationDate() <= mFilterOps.mMaxDate);
-
- BOOL is_folder = (dynamic_cast<LLFolderViewFolder*>(item) != NULL);
- if (is_folder && mFilterOps.mShowFolderState == LLInventoryFilter::SHOW_ALL_FOLDERS)
- {
- passed = TRUE;
- }
-
- return passed;
+ return FALSE;
}
-const std::string LLInventoryFilter::getFilterSubString(BOOL trim)
+
+const std::string& LLInventoryFilter::getFilterSubString(BOOL trim) const
{
return mFilterSubString;
}
@@ -157,9 +172,9 @@ std::string::size_type LLInventoryFilter::getStringMatchOffset() const
}
// has user modified default filter params?
-BOOL LLInventoryFilter::isNotDefault()
+BOOL LLInventoryFilter::isNotDefault() const
{
- return mFilterOps.mFilterTypes != mDefaultFilterOps.mFilterTypes
+ return mFilterOps.mFilterObjectTypes != mDefaultFilterOps.mFilterObjectTypes
|| mFilterSubString.size()
|| mFilterOps.mPermissions != mDefaultFilterOps.mPermissions
|| mFilterOps.mMinDate != mDefaultFilterOps.mMinDate
@@ -167,9 +182,9 @@ BOOL LLInventoryFilter::isNotDefault()
|| mFilterOps.mHoursAgo != mDefaultFilterOps.mHoursAgo;
}
-BOOL LLInventoryFilter::isActive()
+BOOL LLInventoryFilter::isActive() const
{
- return mFilterOps.mFilterTypes != 0xffffffffffffffffULL
+ return mFilterOps.mFilterObjectTypes != 0xffffffffffffffffULL
|| mFilterSubString.size()
|| mFilterOps.mPermissions != PERM_NONE
|| mFilterOps.mMinDate != time_min()
@@ -177,7 +192,7 @@ BOOL LLInventoryFilter::isActive()
|| mFilterOps.mHoursAgo != 0;
}
-BOOL LLInventoryFilter::isModified()
+BOOL LLInventoryFilter::isModified() const
{
return mModified;
}
@@ -189,15 +204,15 @@ BOOL LLInventoryFilter::isModifiedAndClear()
return ret;
}
-void LLInventoryFilter::setFilterTypes(U64 types, BOOL filter_for_categories)
+void LLInventoryFilter::setFilterTypes(U64 types, EFilterType filter_type)
{
- if (mFilterOps.mFilterTypes != types)
+ if (mFilterOps.mFilterObjectTypes != types)
{
// keep current items only if no type bits getting turned off
- BOOL fewer_bits_set = (mFilterOps.mFilterTypes & ~types);
- BOOL more_bits_set = (~mFilterOps.mFilterTypes & types);
+ BOOL fewer_bits_set = (mFilterOps.mFilterObjectTypes & ~types);
+ BOOL more_bits_set = (~mFilterOps.mFilterObjectTypes & types);
- mFilterOps.mFilterTypes = types;
+ mFilterOps.mFilterObjectTypes = types;
if (more_bits_set && fewer_bits_set)
{
// neither less or more restrive, both simultaneously
@@ -214,7 +229,7 @@ void LLInventoryFilter::setFilterTypes(U64 types, BOOL filter_for_categories)
setModified(FILTER_MORE_RESTRICTIVE);
}
}
- mFilterOps.mFilterForCategories = filter_for_categories;
+ mFilterOps.mFilterType = filter_type;
}
void LLInventoryFilter::setFilterSubString(const std::string& string)
@@ -298,12 +313,18 @@ void LLInventoryFilter::setDateRangeLastLogoff(BOOL sl)
}
}
-BOOL LLInventoryFilter::isSinceLogoff()
+BOOL LLInventoryFilter::isSinceLogoff() const
{
return (mFilterOps.mMinDate == (time_t)mLastLogoff) &&
(mFilterOps.mMaxDate == time_max());
}
+void LLInventoryFilter::clearModified()
+{
+ mModified = FALSE;
+ mFilterBehavior = FILTER_NONE;
+}
+
void LLInventoryFilter::setHoursAgo(U32 hours)
{
if (mFilterOps.mHoursAgo != hours)
@@ -417,12 +438,12 @@ void LLInventoryFilter::setModified(EFilterBehavior behavior)
}
}
-BOOL LLInventoryFilter::isFilterWith(LLInventoryType::EType t)
+BOOL LLInventoryFilter::isFilterWith(LLInventoryType::EType t) const
{
- return mFilterOps.mFilterTypes & (1LL << t);
+ return mFilterOps.mFilterObjectTypes & (1LL << t);
}
-std::string LLInventoryFilter::getFilterText()
+const std::string& LLInventoryFilter::getFilterText()
{
if (!mNeedTextRebuild)
{
@@ -619,7 +640,7 @@ std::string LLInventoryFilter::getFilterText()
return mFilterText;
}
-void LLInventoryFilter::toLLSD(LLSD& data)
+void LLInventoryFilter::toLLSD(LLSD& data) const
{
data["filter_types"] = (LLSD::Integer)getFilterTypes();
data["min_date"] = (LLSD::Integer)getMinDate();
@@ -674,3 +695,71 @@ void LLInventoryFilter::fromLLSD(LLSD& data)
setDateRangeLastLogoff((bool)data["since_logoff"].asBoolean());
}
}
+
+U32 LLInventoryFilter::getFilterTypes() const
+{
+ return mFilterOps.mFilterObjectTypes;
+}
+
+BOOL LLInventoryFilter::hasFilterString() const
+{
+ return mFilterSubString.size() > 0;
+}
+
+PermissionMask LLInventoryFilter::getFilterPermissions() const
+{
+ return mFilterOps.mPermissions;
+}
+
+time_t LLInventoryFilter::getMinDate() const
+{
+ return mFilterOps.mMinDate;
+}
+
+time_t LLInventoryFilter::getMaxDate() const
+{
+ return mFilterOps.mMaxDate;
+}
+U32 LLInventoryFilter::getHoursAgo() const
+{
+ return mFilterOps.mHoursAgo;
+}
+LLInventoryFilter::EFolderShow LLInventoryFilter::getShowFolderState() const
+{
+ return mFilterOps.mShowFolderState;
+}
+U32 LLInventoryFilter::getSortOrder() const
+{
+ return mOrder;
+}
+const std::string& LLInventoryFilter::getName() const
+{
+ return mName;
+}
+
+void LLInventoryFilter::setFilterCount(S32 count)
+{
+ mFilterCount = count;
+}
+S32 LLInventoryFilter::getFilterCount() const
+{
+ return mFilterCount;
+}
+
+void LLInventoryFilter::decrementFilterCount()
+{
+ mFilterCount--;
+}
+
+S32 LLInventoryFilter::getCurrentGeneration() const
+{
+ return mFilterGeneration;
+}
+S32 LLInventoryFilter::getMinRequiredGeneration() const
+{
+ return mMinRequiredGeneration;
+}
+S32 LLInventoryFilter::getMustPassGeneration() const
+{
+ return mMustPassGeneration;
+}
diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h
index b803df110b..20a4a15028 100644
--- a/indra/newview/llinventoryfilter.h
+++ b/indra/newview/llinventoryfilter.h
@@ -33,30 +33,38 @@
#ifndef LLINVENTORYFILTER_H
#define LLINVENTORYFILTER_H
-// lots of includes here
#include "llinventorytype.h"
-#include "llpermissionsflags.h" // PermissionsMask
+#include "llpermissionsflags.h"
class LLFolderViewItem;
class LLInventoryFilter
{
public:
- typedef enum e_folder_show
+ enum EFolderShow
{
SHOW_ALL_FOLDERS,
SHOW_NON_EMPTY_FOLDERS,
SHOW_NO_FOLDERS
- } EFolderShow;
+ };
- typedef enum e_filter_behavior
+ enum EFilterBehavior
{
FILTER_NONE, // nothing to do, already filtered
FILTER_RESTART, // restart filtering from scratch
FILTER_LESS_RESTRICTIVE, // existing filtered items will certainly pass this filter
FILTER_MORE_RESTRICTIVE // if you didn't pass the previous filter, you definitely won't pass this one
- } EFilterBehavior;
+ };
+
+ enum EFilterType
+ {
+ FILTERTYPE_NONE,
+ FILTERTYPE_ITEM, // normal default search-by-item-type
+ FILTERTYPE_CATEGORY, // search by folder type
+ FILTERTYPE_UUID // find the object with UUID and any links to it
+ };
+ // REFACTOR: Change this to an enum.
static const U32 SO_DATE = 1;
static const U32 SO_FOLDERS_BY_NAME = 2;
static const U32 SO_SYSTEM_FOLDERS_TO_TOP = 4;
@@ -64,89 +72,118 @@ public:
LLInventoryFilter(const std::string& name);
virtual ~LLInventoryFilter();
- void setFilterTypes(U64 types, BOOL filter_for_categories = FALSE); // if filter_for_categories is true, operate on folder preferred asset type
- U32 getFilterTypes() const { return mFilterOps.mFilterTypes; }
-
- void setFilterSubString(const std::string& string);
- const std::string getFilterSubString(BOOL trim = FALSE);
-
- void setFilterPermissions(PermissionMask perms);
- PermissionMask getFilterPermissions() const { return mFilterOps.mPermissions; }
-
- void setDateRange(time_t min_date, time_t max_date);
- void setDateRangeLastLogoff(BOOL sl);
- time_t getMinDate() const { return mFilterOps.mMinDate; }
- time_t getMaxDate() const { return mFilterOps.mMaxDate; }
-
- void setHoursAgo(U32 hours);
- U32 getHoursAgo() const { return mFilterOps.mHoursAgo; }
-
- void setShowFolderState( EFolderShow state);
- EFolderShow getShowFolderState() { return mFilterOps.mShowFolderState; }
-
- void setSortOrder(U32 order);
- U32 getSortOrder() { return mOrder; }
-
- BOOL check(LLFolderViewItem* item);
+ // +-------------------------------------------------------------------+
+ // + Execution And Results
+ // +-------------------------------------------------------------------+
+ BOOL check(const LLFolderViewItem* item);
+ BOOL checkAgainstFilterType(const LLFolderViewItem* item);
std::string::size_type getStringMatchOffset() const;
- BOOL isActive();
- BOOL isNotDefault();
- BOOL isModified();
- BOOL isModifiedAndClear();
- BOOL isSinceLogoff();
- bool hasFilterString() { return mFilterSubString.size() > 0; }
- void clearModified() { mModified = FALSE; mFilterBehavior = FILTER_NONE; }
- const std::string getName() const { return mName; }
- std::string getFilterText();
- void setFilterCount(S32 count) { mFilterCount = count; }
- S32 getFilterCount() { return mFilterCount; }
- void decrementFilterCount() { mFilterCount--; }
+ // +-------------------------------------------------------------------+
+ // + Parameters
+ // +-------------------------------------------------------------------+
+ void setFilterTypes(U64 types, EFilterType filter_type = FILTERTYPE_ITEM);
+ U32 getFilterTypes() const;
+ BOOL isFilterWith(LLInventoryType::EType t) const;
+
+ void setFilterSubString(const std::string& string);
+ const std::string& getFilterSubString(BOOL trim = FALSE) const;
+ BOOL hasFilterString() const;
+
+ void setFilterPermissions(PermissionMask perms);
+ PermissionMask getFilterPermissions() const;
+
+ void setDateRange(time_t min_date, time_t max_date);
+ void setDateRangeLastLogoff(BOOL sl);
+ time_t getMinDate() const;
+ time_t getMaxDate() const;
+
+ void setHoursAgo(U32 hours);
+ U32 getHoursAgo() const;
+
+ void setShowFolderState( EFolderShow state);
+ EFolderShow getShowFolderState() const;
+
+ void setSortOrder(U32 order);
+ U32 getSortOrder() const;
+
+ // +-------------------------------------------------------------------+
+ // + Status
+ // +-------------------------------------------------------------------+
+ BOOL isActive() const;
+ BOOL isModified() const;
+ BOOL isModifiedAndClear();
+ BOOL isSinceLogoff() const;
+ void clearModified();
+ const std::string& getName() const;
+ const std::string& getFilterText();
+ //RN: this is public to allow system to externally force a global refilter
+ void setModified(EFilterBehavior behavior = FILTER_RESTART);
+
+ // +-------------------------------------------------------------------+
+ // + Count
+ // +-------------------------------------------------------------------+
+ void setFilterCount(S32 count);
+ S32 getFilterCount() const;
+ void decrementFilterCount();
+
+ // +-------------------------------------------------------------------+
+ // + Default
+ // +-------------------------------------------------------------------+
+ BOOL isNotDefault() const;
+ void markDefault();
+ void resetDefault();
+
+ // +-------------------------------------------------------------------+
+ // + Generation
+ // +-------------------------------------------------------------------+
+ S32 getCurrentGeneration() const;
+ S32 getMinRequiredGeneration() const;
+ S32 getMustPassGeneration() const;
+
+ // +-------------------------------------------------------------------+
+ // + Conversion
+ // +-------------------------------------------------------------------+
+ void toLLSD(LLSD& data) const;
+ void fromLLSD(LLSD& data);
- void markDefault();
- void resetDefault();
+private:
+ struct FilterOps
+ {
+ FilterOps();
+ EFilterType mFilterType;
- BOOL isFilterWith(LLInventoryType::EType t);
+ U64 mFilterObjectTypes; // For _ITEM or _CATEGORY
+ LLUUID mFilterUUID; // for UUID
- S32 getCurrentGeneration() const { return mFilterGeneration; }
- S32 getMinRequiredGeneration() const { return mMinRequiredGeneration; }
- S32 getMustPassGeneration() const { return mMustPassGeneration; }
+ time_t mMinDate;
+ time_t mMaxDate;
+ U32 mHoursAgo;
+ EFolderShow mShowFolderState;
+ PermissionMask mPermissions;
+ };
- //RN: this is public to allow system to externally force a global refilter
- void setModified(EFilterBehavior behavior = FILTER_RESTART);
+ U32 mOrder;
+ U32 mLastLogoff;
- void toLLSD(LLSD& data);
- void fromLLSD(LLSD& data);
+ FilterOps mFilterOps;
+ FilterOps mDefaultFilterOps;
-protected:
- struct filter_ops
- {
- U64 mFilterTypes;
- BOOL mFilterForCategories;
- time_t mMinDate;
- time_t mMaxDate;
- U32 mHoursAgo;
- EFolderShow mShowFolderState;
- PermissionMask mPermissions;
- };
- filter_ops mFilterOps;
- filter_ops mDefaultFilterOps;
std::string::size_type mSubStringMatchOffset;
- std::string mFilterSubString;
- U32 mOrder;
- const std::string mName;
- S32 mFilterGeneration;
- S32 mMustPassGeneration;
- S32 mMinRequiredGeneration;
- S32 mFilterCount;
- S32 mNextFilterGeneration;
- EFilterBehavior mFilterBehavior;
+ std::string mFilterSubString;
+ const std::string mName;
-private:
- U32 mLastLogoff;
- BOOL mModified;
- BOOL mNeedTextRebuild;
- std::string mFilterText;
+ S32 mFilterGeneration;
+ S32 mMustPassGeneration;
+ S32 mMinRequiredGeneration;
+ S32 mNextFilterGeneration;
+
+ S32 mFilterCount;
+ EFilterBehavior mFilterBehavior;
+
+ BOOL mModified;
+ BOOL mNeedTextRebuild;
+ std::string mFilterText;
};
#endif
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index 95cc68ddbe..9916a2351c 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -34,32 +34,9 @@
#ifndef LL_LLINVENTORYFUNCTIONS_H
#define LL_LLINVENTORYFUNCTIONS_H
-#include "llassetstorage.h"
-#include "lldarray.h"
-#include "llfloater.h"
-#include "llinventory.h"
-#include "llinventoryfilter.h"
+#include "llinventorytype.h"
#include "llfolderview.h"
-#include "llinventorymodel.h"
-#include "lluictrlfactory.h"
-#include <set>
-
-
-class LLFolderViewItem;
-class LLInventoryFilter;
-class LLInventoryModel;
-class LLInventoryPanel;
-class LLInvFVBridge;
-class LLInventoryFVBridgeBuilder;
-class LLMenuBarGL;
-class LLCheckBoxCtrl;
-class LLSpinCtrl;
-class LLScrollContainer;
-class LLTextBox;
-class LLIconCtrl;
-class LLSaveFolderState;
-class LLFilterEditor;
-class LLTabContainer;
+#include "llfolderviewitem.h"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index c13ae7726b..53b78ad438 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -207,9 +207,9 @@ LLInventoryFilter* LLInventoryPanel::getFilter()
return NULL;
}
-void LLInventoryPanel::setFilterTypes(U64 filter_types, BOOL filter_for_categories)
+void LLInventoryPanel::setFilterTypes(U64 types, LLInventoryFilter::EFilterType filter_type)
{
- mFolders->getFilter()->setFilterTypes(filter_types, filter_for_categories);
+ mFolders->getFilter()->setFilterTypes(types, filter_type);
}
void LLInventoryPanel::setFilterPermMask(PermissionMask filter_perm_mask)
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 02e6041a38..56f7b39480 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -126,7 +126,7 @@ public:
void setSelectCallback(const LLFolderView::signal_t::slot_type& cb) { if (mFolders) mFolders->setSelectCallback(cb); }
void clearSelection();
LLInventoryFilter* getFilter();
- void setFilterTypes(U64 filter, BOOL filter_for_categories = FALSE); // if filter_for_categories is true, operate on folder preferred asset type
+ void setFilterTypes(U64 filter, LLInventoryFilter::EFilterType = LLInventoryFilter::FILTERTYPE_ITEM);
U32 getFilterTypes() const { return mFolders->getFilterTypes(); }
void setFilterPermMask(PermissionMask filter_perm_mask);
U32 getFilterPermMask() const { return mFolders->getFilterPermissions(); }
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 342d2bc739..754df33bd4 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -50,6 +50,7 @@
#include "llfloaterbuycurrency.h"
#include "llfloaterreg.h"
#include "llinventorybridge.h"
+#include "llinventoryfilter.h"
#include "llinventoryfunctions.h"
#include "llpreviewanim.h"
#include "llpreviewgesture.h"
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 951e74abf9..6aba8c0ebb 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -353,7 +353,7 @@ void LLPanelOutfitsInventory::initAccordionPanels()
mAccordionPanels.resize(2);
LLInventoryPanel *myoutfits_panel = getChild<LLInventoryPanel>("outfitslist_accordionpanel");
- myoutfits_panel->setFilterTypes(1LL << LLFolderType::FT_OUTFIT, TRUE);
+ myoutfits_panel->setFilterTypes(1LL << LLFolderType::FT_OUTFIT, LLInventoryFilter::FILTERTYPE_CATEGORY);
myoutfits_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
mAccordionPanels[0] = myoutfits_panel;
mActivePanel = myoutfits_panel;