summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llui/llfolderview.cpp12
-rw-r--r--indra/llui/llfolderview.h2
-rw-r--r--indra/llui/llfolderviewitem.cpp68
-rw-r--r--indra/llui/llfolderviewitem.h20
-rw-r--r--indra/llui/llfolderviewmodel.cpp8
-rw-r--r--indra/llui/llfolderviewmodel.h84
-rw-r--r--indra/newview/llfloateroutbox.cpp2
-rw-r--r--indra/newview/llfolderviewmodelinventory.cpp42
-rw-r--r--indra/newview/llfolderviewmodelinventory.h36
-rw-r--r--indra/newview/llinventorybridge.cpp2
-rw-r--r--indra/newview/llinventoryfilter.cpp17
-rw-r--r--indra/newview/llinventoryfilter.h25
-rw-r--r--indra/newview/llinventorypanel.cpp53
-rw-r--r--indra/newview/llinventorypanel.h10
-rw-r--r--indra/newview/llpanellandmarks.cpp24
-rw-r--r--indra/newview/llpanelmaininventory.cpp76
-rw-r--r--indra/newview/llpanelmarketplaceinbox.cpp4
-rw-r--r--indra/newview/llpanelmarketplaceinboxinventory.cpp6
-rw-r--r--indra/newview/llpanelmarketplaceinboxinventory.h2
-rw-r--r--indra/newview/llpanelobjectinventory.cpp7
-rw-r--r--indra/newview/lltexturectrl.cpp10
21 files changed, 241 insertions, 269 deletions
diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp
index e09026fc33..d714d4623d 100644
--- a/indra/llui/llfolderview.cpp
+++ b/indra/llui/llfolderview.cpp
@@ -274,7 +274,7 @@ BOOL LLFolderView::canFocusChildren() const
return FALSE;
}
-BOOL LLFolderView::addFolder( LLFolderViewFolder* folder)
+void LLFolderView::addFolder( LLFolderViewFolder* folder)
{
LLFolderViewFolder::addFolder(folder);
@@ -288,8 +288,6 @@ BOOL LLFolderView::addFolder( LLFolderViewFolder* folder)
//{
// mFolders.insert(mFolders.begin(), folder);
//}
-
- return TRUE;
}
void LLFolderView::closeAllFolders()
@@ -1769,14 +1767,14 @@ void LLFolderView::update()
// until that inventory is loaded up.
LLFastTimer t2(FTM_INVENTORY);
- if (getFolderViewModel()->getFilter()->isModified() && getFolderViewModel()->getFilter()->isNotDefault())
+ if (getFolderViewModel()->getFilter().isModified() && getFolderViewModel()->getFilter().isNotDefault())
{
mNeedsAutoSelect = TRUE;
}
- getFolderViewModel()->getFilter()->clearModified();
+ getFolderViewModel()->getFilter().clearModified();
// filter to determine visibility before arranging
- filter(*(getFolderViewModel()->getFilter()));
+ filter(getFolderViewModel()->getFilter());
// automatically show matching items, and select first one if we had a selection
if (mNeedsAutoSelect)
@@ -1794,7 +1792,7 @@ void LLFolderView::update()
// Open filtered folders for folder views with mAutoSelectOverride=TRUE.
// Used by LLPlacesFolderView.
- if (getFolderViewModel()->getFilter()->showAllResults())
+ if (getFolderViewModel()->getFilter().showAllResults())
{
// these are named variables to get around gcc not binding non-const references to rvalues
// and functor application is inherently non-const to allow for stateful functors
diff --git a/indra/llui/llfolderview.h b/indra/llui/llfolderview.h
index 5ebd8f73ac..05beff9bd8 100644
--- a/indra/llui/llfolderview.h
+++ b/indra/llui/llfolderview.h
@@ -121,7 +121,7 @@ public:
void closeAllFolders();
void openTopLevelFolders();
- virtual BOOL addFolder( LLFolderViewFolder* folder);
+ virtual void addFolder( LLFolderViewFolder* folder);
// Find width and height of this object and its children. Also
// makes sure that this view and its children are the right size.
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index 368e3caea8..9b802157f2 100644
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -219,11 +219,11 @@ void LLFolderViewItem::refresh()
mIconOpen = vmi.getIconOpen();
mIconOverlay = vmi.getIconOverlay();
- if (mRoot->useLabelSuffix())
- {
+ if (mRoot->useLabelSuffix())
+ {
mLabelStyle = vmi.getLabelStyle();
mLabelSuffix = vmi.getLabelSuffix();
-}
+ }
//TODO RN: make sure this logic still fires
//std::string searchable_label(mLabel);
@@ -253,7 +253,7 @@ void LLFolderViewItem::arrangeAndSet(BOOL set_selection,
LLFolderView* root = getRoot();
if (getParentFolder())
{
- getParentFolder()->requestArrange();
+ getParentFolder()->requestArrange();
}
if(set_selection)
{
@@ -273,9 +273,9 @@ std::set<LLFolderViewItem*> LLFolderViewItem::getSelectionList() const
}
// addToFolder() returns TRUE if it succeeds. FALSE otherwise
-BOOL LLFolderViewItem::addToFolder(LLFolderViewFolder* folder)
+void LLFolderViewItem::addToFolder(LLFolderViewFolder* folder)
{
- return folder->addItem(this);
+ folder->addItem(this);
}
@@ -416,12 +416,12 @@ void LLFolderViewItem::rename(const std::string& new_name)
{
getViewModelItem()->renameItem(new_name);
- if(mParentFolder)
- {
- mParentFolder->requestSort();
- }
- }
+ //if(mParentFolder)
+ //{
+ // mParentFolder->requestSort();
+ //}
}
+}
const std::string& LLFolderViewItem::getName( void ) const
{
@@ -836,9 +836,9 @@ LLFolderViewFolder::~LLFolderViewFolder( void )
}
// addToFolder() returns TRUE if it succeeds. FALSE otherwise
-BOOL LLFolderViewFolder::addToFolder(LLFolderViewFolder* folder)
+void LLFolderViewFolder::addToFolder(LLFolderViewFolder* folder)
{
- return folder->addFolder(this);
+ folder->addFolder(this);
}
static LLFastTimer::DeclareTimer FTM_ARRANGE("Arrange");
@@ -1005,11 +1005,6 @@ BOOL LLFolderViewFolder::needsArrange()
return mLastArrangeGeneration < getRoot()->getArrangeGeneration();
}
-void LLFolderViewFolder::requestSort()
-{
- getViewModelItem()->requestSort();
-}
-
//TODO RN: get height resetting working
//void LLFolderViewFolder::setPassedFilter(BOOL passed, BOOL passed_folder, S32 filter_generation)
//{
@@ -1414,7 +1409,6 @@ void LLFolderViewFolder::extractItem( LLFolderViewItem* item )
}
//item has been removed, need to update filter
getViewModelItem()->removeChild(item->getViewModelItem());
- getViewModelItem()->dirtyFilter();
//because an item is going away regardless of filter status, force rearrange
requestArrange();
removeChild(item);
@@ -1480,7 +1474,7 @@ BOOL LLFolderViewFolder::isRemovable()
}
// this is an internal method used for adding items to folders.
-BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)
+void LLFolderViewFolder::addItem(LLFolderViewItem* item)
{
if (item->getParentFolder())
{
@@ -1493,7 +1487,6 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)
item->setRect(LLRect(0, 0, getRect().getWidth(), 0));
item->setVisible(FALSE);
- addChild(item);
// TODO RN - port creation date management to new code location
#if 0
@@ -1501,10 +1494,7 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)
setCreationDate(llmax<time_t>(mCreationDate, item->getCreationDate()));
#endif
- // Handle sorting
- requestArrange();
- requestSort();
-
+ addChild(item);
getViewModelItem()->addChild(item->getViewModelItem());
// TODO RN - port creation date management to new code location
#if 0
@@ -1530,14 +1520,10 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)
// parentp = parentp->getParentFolder();
//}
-
- item->getViewModelItem()->dirtyFilter();
-
- return TRUE;
}
// this is an internal method used for adding items to folders.
-BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder)
+void LLFolderViewFolder::addFolder(LLFolderViewFolder* folder)
{
if (folder->mParentFolder)
{
@@ -1548,30 +1534,26 @@ BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder)
folder->setOrigin(0, 0);
folder->reshape(getRect().getWidth(), 0);
folder->setVisible(FALSE);
- addChild( folder );
// rearrange all descendants too, as our indentation level might have changed
- folder->requestArrange();
- requestSort();
+ //folder->requestArrange();
+ //requestSort();
+ addChild( folder );
getViewModelItem()->addChild(folder->getViewModelItem());
- //After addChild since addChild assigns parent to bubble up to when calling dirtyFilter
- folder->getViewModelItem()->dirtyFilter();
-
- return TRUE;
}
void LLFolderViewFolder::requestArrange()
{
//if ( mLastArrangeGeneration != -1)
{
- mLastArrangeGeneration = -1;
- // flag all items up to root
- if (mParentFolder)
- {
- mParentFolder->requestArrange();
- }
+ mLastArrangeGeneration = -1;
+ // flag all items up to root
+ if (mParentFolder)
+ {
+ mParentFolder->requestArrange();
}
}
+}
void LLFolderViewFolder::toggleOpen()
{
diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h
index e323237b13..19caa7f020 100644
--- a/indra/llui/llfolderviewitem.h
+++ b/indra/llui/llfolderviewitem.h
@@ -114,8 +114,8 @@ protected:
// this is an internal method used for adding items to folders. A
// no-op at this level, but reimplemented in derived classes.
- virtual BOOL addItem(LLFolderViewItem*) { return FALSE; }
- virtual BOOL addFolder(LLFolderViewFolder*) { return FALSE; }
+ virtual void addItem(LLFolderViewItem*) { }
+ virtual void addFolder(LLFolderViewFolder*) { }
static LLFontGL* getLabelFontForStyle(U8 style);
@@ -129,7 +129,7 @@ public:
virtual ~LLFolderViewItem( void );
// addToFolder() returns TRUE if it succeeds. FALSE otherwise
- virtual BOOL addToFolder(LLFolderViewFolder* folder);
+ virtual void addToFolder(LLFolderViewFolder* folder);
// Finds width and height of this object and it's children. Also
// makes sure that this view and it's children are the right size.
@@ -295,7 +295,7 @@ public:
LLFolderViewItem* getPreviousFromChild( LLFolderViewItem*, BOOL include_children = TRUE );
// addToFolder() returns TRUE if it succeeds. FALSE otherwise
- virtual BOOL addToFolder(LLFolderViewFolder* folder);
+ virtual void addToFolder(LLFolderViewFolder* folder);
// Finds width and height of this object and it's children. Also
// makes sure that this view and it's children are the right size.
@@ -354,8 +354,6 @@ public:
// Called when a child is refreshed.
virtual void requestArrange();
- virtual void requestSort();
-
// internal method which doesn't update the entire view. This
// method was written because the list iterators destroy the state
// of other iterations, thus, we can't arrange while iterating
@@ -379,8 +377,6 @@ public:
void applyFunctorToChildren(LLFolderViewFunctor& functor);
virtual void openItem( void );
- virtual BOOL addItem(LLFolderViewItem* item);
- virtual BOOL addFolder( LLFolderViewFolder* folder);
// LLView functionality
virtual BOOL handleHover(S32 x, S32 y, MASK mask);
@@ -410,6 +406,14 @@ public:
LLFolderViewFolder* getCommonAncestor(LLFolderViewItem* item_a, LLFolderViewItem* item_b, bool& reverse);
void gatherChildRangeExclusive(LLFolderViewItem* start, LLFolderViewItem* end, bool reverse, std::vector<LLFolderViewItem*>& items);
+protected:
+ friend void LLFolderViewItem::addToFolder(LLFolderViewFolder*);
+ // internal functions for tracking folders and items separately
+ // use addToFolder() virtual method to ensure folders are always added to mFolders
+ // and not mItems
+ void addItem(LLFolderViewItem* item);
+ void addFolder( LLFolderViewFolder* folder);
+
public:
//WARNING: do not call directly...use the appropriate LLFolderViewModel-derived class instead
template<typename SORT_FUNC> void sortFolders(const SORT_FUNC& func) { mFolders.sort(func); }
diff --git a/indra/llui/llfolderviewmodel.cpp b/indra/llui/llfolderviewmodel.cpp
index dc6e4d754b..6aa4a63edc 100644
--- a/indra/llui/llfolderviewmodel.cpp
+++ b/indra/llui/llfolderviewmodel.cpp
@@ -36,18 +36,18 @@ bool LLFolderViewModelCommon::needsSort(LLFolderViewModelItem* item)
std::string LLFolderViewModelCommon::getStatusText()
{
- if (!contentsReady() || mFolderView->getViewModelItem()->getLastFilterGeneration() < getFilter()->getCurrentGeneration())
+ if (!contentsReady() || mFolderView->getViewModelItem()->getLastFilterGeneration() < getFilter().getCurrentGeneration())
{
return LLTrans::getString("Searching");
}
else
{
- return getFilter()->getEmptyLookupMessage();
+ return getFilter().getEmptyLookupMessage();
}
}
void LLFolderViewModelCommon::filter()
{
- getFilter()->setFilterCount(llclamp(LLUI::sSettingGroups["config"]->getS32("FilterItemsPerFrame"), 1, 5000));
- mFolderView->getViewModelItem()->filter(*getFilter());
+ getFilter().setFilterCount(llclamp(LLUI::sSettingGroups["config"]->getS32("FilterItemsPerFrame"), 1, 5000));
+ mFolderView->getViewModelItem()->filter(getFilter());
}
diff --git a/indra/llui/llfolderviewmodel.h b/indra/llui/llfolderviewmodel.h
index f655e6e4d6..3f825a8670 100644
--- a/indra/llui/llfolderviewmodel.h
+++ b/indra/llui/llfolderviewmodel.h
@@ -109,6 +109,24 @@ public:
virtual S32 getFirstRequiredGeneration() const = 0;
};
+class LLFolderViewModelInterface
+{
+public:
+ virtual ~LLFolderViewModelInterface() {}
+ virtual void requestSortAll() = 0;
+
+ virtual void sort(class LLFolderViewFolder*) = 0;
+ virtual void filter() = 0;
+
+ virtual bool contentsReady() = 0;
+ virtual void setFolderView(LLFolderView* folder_view) = 0;
+ virtual LLFolderViewFilter& getFilter() = 0;
+ virtual const LLFolderViewFilter& getFilter() const = 0;
+ virtual std::string getStatusText() = 0;
+
+ virtual bool startDrag(std::vector<LLFolderViewModelItem*>& items) = 0;
+};
+
// This is am abstract base class that users of the folderview classes
// would use to bridge the folder view with the underlying data
class LLFolderViewModelItem
@@ -193,17 +211,17 @@ protected:
class LLFolderViewModelItemCommon : public LLFolderViewModelItem
{
public:
- LLFolderViewModelItemCommon()
+ LLFolderViewModelItemCommon(LLFolderViewModelInterface& root_view_model)
: mSortVersion(-1),
mPassedFilter(true),
mPassedFolderFilter(true),
- mPrevPassedAllFilters(false),
mStringMatchOffsetFilter(std::string::npos),
mStringFilterSize(0),
mFolderViewItem(NULL),
mLastFilterGeneration(-1),
mMostFilteredDescendantGeneration(-1),
- mParent(NULL)
+ mParent(NULL),
+ mRootViewModel(root_view_model)
{
std::for_each(mChildren.begin(), mChildren.end(), DeletePointer());
}
@@ -231,20 +249,57 @@ public:
{
mChildren.push_back(child);
child->setParent(this);
+ dirtyFilter();
+ requestSort();
}
virtual void removeChild(LLFolderViewModelItem* child)
{
mChildren.remove(child);
child->setParent(NULL);
+ dirtyFilter();
+ }
+
+ void setPassedFilter(bool passed, bool passed_folder, S32 filter_generation, std::string::size_type string_offset, std::string::size_type string_size)
+ {
+ mPassedFilter = passed;
+ mPassedFolderFilter = passed_folder;
+ mLastFilterGeneration = filter_generation;
+ mStringMatchOffsetFilter = string_offset;
+ mStringFilterSize = string_size;
+ }
+
+ virtual bool potentiallyVisible()
+ {
+ return passedFilter() // we've passed the filter
+ || getLastFilterGeneration() < mRootViewModel.getFilter().getFirstSuccessGeneration() // or we don't know yet
+ || descendantsPassedFilter();
}
+ virtual bool passedFilter(S32 filter_generation = -1)
+ {
+ if (filter_generation < 0)
+ filter_generation = mRootViewModel.getFilter().getFirstSuccessGeneration();
+
+ bool passed_folder_filter = mPassedFolderFilter && mLastFilterGeneration >= filter_generation;
+ bool passed_filter = mPassedFilter && mLastFilterGeneration >= filter_generation;
+ return passed_folder_filter
+ && (descendantsPassedFilter(filter_generation)
+ || passed_filter);
+ }
+
+ virtual bool descendantsPassedFilter(S32 filter_generation = -1)
+ {
+ if (filter_generation < 0) filter_generation = mRootViewModel.getFilter().getFirstSuccessGeneration();
+ return mMostFilteredDescendantGeneration >= filter_generation;
+ }
+
+
protected:
virtual void setParent(LLFolderViewModelItem* parent) { mParent = parent; }
S32 mSortVersion;
bool mPassedFilter;
bool mPassedFolderFilter;
- bool mPrevPassedAllFilters;
std::string::size_type mStringMatchOffsetFilter;
std::string::size_type mStringFilterSize;
@@ -255,28 +310,13 @@ protected:
typedef std::list<LLFolderViewModelItem*> child_list_t;
child_list_t mChildren;
LLFolderViewModelItem* mParent;
+ LLFolderViewModelInterface& mRootViewModel;
void setFolderViewItem(LLFolderViewItem* folder_view_item) { mFolderViewItem = folder_view_item;}
LLFolderViewItem* mFolderViewItem;
};
-class LLFolderViewModelInterface
-{
-public:
- virtual ~LLFolderViewModelInterface() {}
- virtual void requestSortAll() = 0;
-
- virtual void sort(class LLFolderViewFolder*) = 0;
- virtual void filter() = 0;
-
- virtual bool contentsReady() = 0;
- virtual void setFolderView(LLFolderView* folder_view) = 0;
- virtual LLFolderViewFilter* getFilter() = 0;
- virtual const LLFolderViewFilter* getFilter() const = 0;
- virtual std::string getStatusText() = 0;
- virtual bool startDrag(std::vector<LLFolderViewModelItem*>& items) = 0;
-};
class LLFolderViewModelCommon : public LLFolderViewModelInterface
{
@@ -320,8 +360,8 @@ public:
virtual const SortType& getSorter() const { return mSorter; }
virtual void setSorter(const SortType& sorter) { mSorter = sorter; requestSortAll(); }
- virtual FilterType* getFilter() { return &mFilter; }
- virtual const FilterType* getFilter() const { return &mFilter; }
+ virtual FilterType& getFilter() { return mFilter; }
+ virtual const FilterType& getFilter() const { return mFilter; }
virtual void setFilter(const FilterType& filter) { mFilter = filter; }
// TODO RN: remove this and put all filtering logic in view model
diff --git a/indra/newview/llfloateroutbox.cpp b/indra/newview/llfloateroutbox.cpp
index e4ed97892e..18ed36d0f3 100644
--- a/indra/newview/llfloateroutbox.cpp
+++ b/indra/newview/llfloateroutbox.cpp
@@ -251,7 +251,7 @@ void LLFloaterOutbox::setupOutbox(const LLUUID& outboxId)
// Set the sort order newest to oldest
mOutboxInventoryPanel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_FOLDERS_BY_NAME);
- mOutboxInventoryPanel->getFilter()->markDefault();
+ mOutboxInventoryPanel->getFilter().markDefault();
fetchOutboxContents();
diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp
index 0878d15d06..e2376b18d5 100644
--- a/indra/newview/llfolderviewmodelinventory.cpp
+++ b/indra/newview/llfolderviewmodelinventory.cpp
@@ -109,7 +109,12 @@ bool LLFolderViewModelInventory::contentsReady()
void LLFolderViewModelItemInventory::requestSort()
{
LLFolderViewModelItemCommon::requestSort();
- if (mRootViewModel.getSorter().isByDate())
+ LLFolderViewFolder* folderp = dynamic_cast<LLFolderViewFolder*>(mFolderViewItem);
+ if (folderp)
+ {
+ folderp->requestArrange();
+ }
+ if (static_cast<LLFolderViewModelInventory&>(mRootViewModel).getSorter().isByDate())
{
// sort by date potentially affects parent folders which use a date
// derived from newest item in them
@@ -120,37 +125,9 @@ void LLFolderViewModelItemInventory::requestSort()
}
}
-bool LLFolderViewModelItemInventory::potentiallyVisible()
-{
- return passedFilter() // we've passed the filter
- || getLastFilterGeneration() < mRootViewModel.getFilter()->getFirstSuccessGeneration() // or we don't know yet
- || descendantsPassedFilter();
-}
-
-bool LLFolderViewModelItemInventory::passedFilter(S32 filter_generation)
-{
- if (filter_generation < 0)
- filter_generation = mRootViewModel.getFilter()->getFirstSuccessGeneration();
-
- return mPassedFolderFilter
- && (descendantsPassedFilter(filter_generation)
- || (mLastFilterGeneration >= filter_generation
- && mPassedFilter));
-}
-
-bool LLFolderViewModelItemInventory::descendantsPassedFilter(S32 filter_generation)
-{
- if (filter_generation < 0) filter_generation = mRootViewModel.getFilter()->getFirstSuccessGeneration();
- return mMostFilteredDescendantGeneration >= filter_generation;
-}
-
void LLFolderViewModelItemInventory::setPassedFilter(bool passed, bool passed_folder, S32 filter_generation, std::string::size_type string_offset, std::string::size_type string_size)
{
- mPassedFilter = passed;
- mPassedFolderFilter = passed_folder;
- mLastFilterGeneration = filter_generation;
- mStringMatchOffsetFilter = string_offset;
- mStringFilterSize = string_size;
+ LLFolderViewModelItemCommon::setPassedFilter(passed, passed_folder, filter_generation, string_offset, string_size);
bool passed_filter_before = mPrevPassedAllFilters;
mPrevPassedAllFilters = passedFilter(filter_generation);
@@ -324,3 +301,8 @@ bool LLInventorySort::operator()(const LLFolderViewModelItemInventory* const& a,
}
}
+LLFolderViewModelItemInventory::LLFolderViewModelItemInventory( class LLFolderViewModelInventory& root_view_model )
+ : LLFolderViewModelItemCommon(root_view_model),
+ mPrevPassedAllFilters(false)
+{
+}
diff --git a/indra/newview/llfolderviewmodelinventory.h b/indra/newview/llfolderviewmodelinventory.h
index 72c8047325..664addf336 100644
--- a/indra/newview/llfolderviewmodelinventory.h
+++ b/indra/newview/llfolderviewmodelinventory.h
@@ -37,9 +37,7 @@ class LLFolderViewModelItemInventory
: public LLFolderViewModelItemCommon
{
public:
- LLFolderViewModelItemInventory(class LLFolderViewModelInventory& root_view_model)
- : mRootViewModel(root_view_model)
- {}
+ LLFolderViewModelItemInventory(class LLFolderViewModelInventory& root_view_model);
virtual const LLUUID& getUUID() const = 0;
virtual time_t getCreationDate() const = 0; // UTC seconds
virtual void setCreationDate(time_t creation_date_utc) = 0;
@@ -55,9 +53,6 @@ public:
virtual EInventorySortGroup getSortGroup() const = 0;
virtual LLInventoryObject* getInventoryObject() const = 0;
virtual void requestSort();
- virtual bool potentiallyVisible();
- virtual bool passedFilter(S32 filter_generation = -1);
- virtual bool descendantsPassedFilter(S32 filter_generation = -1);
virtual void setPassedFilter(bool filtered, bool filtered_folder, S32 filter_generation, std::string::size_type string_offset = std::string::npos, std::string::size_type string_size = 0);
virtual void filter( LLFolderViewFilter& filter);
virtual void filterChildItem( LLFolderViewModelItem* item, LLFolderViewFilter& filter);
@@ -66,25 +61,36 @@ public:
virtual LLToolDragAndDrop::ESource getDragSource() const = 0;
protected:
- class LLFolderViewModelInventory& mRootViewModel;
+ bool mPrevPassedAllFilters;
};
class LLInventorySort
{
public:
- LLInventorySort(U32 order = 0)
- : mSortOrder(order),
- mByDate(false),
- mSystemToTop(false),
- mFoldersByName(false)
+ struct Params : public LLInitParam::Block<Params>
{
- mByDate = (order & LLInventoryFilter::SO_DATE);
- mSystemToTop = (order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP);
- mFoldersByName = (order & LLInventoryFilter::SO_FOLDERS_BY_NAME);
+ Optional<S32> order;
+
+ Params()
+ : order("order", 0)
+ {}
+ };
+
+ LLInventorySort(S32 order = 0)
+ {
+ fromParams(Params().order(order));
}
bool isByDate() const { return mByDate; }
U32 getSortOrder() const { return mSortOrder; }
+ void toParams(Params& p) { p.order(mSortOrder);}
+ void fromParams(Params& p)
+ {
+ mSortOrder = p.order;
+ mByDate = (mSortOrder & LLInventoryFilter::SO_DATE);
+ mSystemToTop = (mSortOrder & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP);
+ mFoldersByName = (mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_NAME);
+ }
bool operator()(const LLFolderViewModelItemInventory* const& a, const LLFolderViewModelItemInventory* const& b) const;
private:
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 14616ca7ab..43c4ce1278 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -900,7 +900,7 @@ LLInventoryModel* LLInvFVBridge::getInventoryModel() const
LLInventoryFilter* LLInvFVBridge::getInventoryFilter() const
{
LLInventoryPanel* panel = mInventoryPanel.get();
- return panel ? panel->getFilter() : NULL;
+ return panel ? &(panel->getFilter()) : NULL;
}
BOOL LLInvFVBridge::isItemInTrash() const
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index 4f4030550f..c913269aad 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -69,7 +69,6 @@ LLInventoryFilter::LLInventoryFilter(const Params& p)
mFilterModified(FILTER_NONE),
mEmptyLookupMessage("InventoryNoMatchingItems"),
mFilterOps(p.filter_ops),
- mOrder(p.sort_order),
mFilterSubString(p.substring),
mCurrentGeneration(0),
mFirstRequiredGeneration(0),
@@ -704,15 +703,6 @@ void LLInventoryFilter::setShowFolderState(EFolderShow state)
}
}
-void LLInventoryFilter::setSortOrder(U32 order)
-{
- if (mOrder != order)
- {
- mOrder = order;
- setModified();
- }
-}
-
void LLInventoryFilter::markDefault()
{
mDefaultFilterOps = mFilterOps;
@@ -945,7 +935,6 @@ LLInventoryFilter& LLInventoryFilter::operator=( const LLInventoryFilter& othe
setShowFolderState(other.getShowFolderState());
setFilterPermissions(other.getFilterPermissions());
setFilterSubString(other.getFilterSubString());
- setSortOrder(other.getSortOrder());
setDateRangeLastLogoff(other.isSinceLogoff());
return *this;
}
@@ -962,7 +951,6 @@ void LLInventoryFilter::toParams(Params& params) const
params.filter_ops.show_folder_state = getShowFolderState();
params.filter_ops.permissions = getFilterPermissions();
params.substring = getFilterSubString();
- params.sort_order = getSortOrder();
params.since_logoff = isSinceLogoff();
}
@@ -981,7 +969,6 @@ void LLInventoryFilter::fromParams(const Params& params)
setShowFolderState(params.filter_ops.show_folder_state);
setFilterPermissions(params.filter_ops.permissions);
setFilterSubString(params.substring);
- setSortOrder(params.sort_order);
setDateRangeLastLogoff(params.since_logoff);
}
@@ -1036,10 +1023,6 @@ LLInventoryFilter::EFolderShow LLInventoryFilter::getShowFolderState() const
{
return mFilterOps.mShowFolderState;
}
-U32 LLInventoryFilter::getSortOrder() const
-{
- return mOrder;
-}
void LLInventoryFilter::setFilterCount(S32 count)
{
diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h
index a8d39735f3..4912b5ca91 100644
--- a/indra/newview/llinventoryfilter.h
+++ b/indra/newview/llinventoryfilter.h
@@ -74,8 +74,8 @@ public:
{
struct DateRange : public LLInitParam::Block<DateRange>
{
- Optional<time_t> min_date;
- Optional<time_t> max_date;
+ Optional<time_t> min_date,
+ max_date;
DateRange()
: min_date("min_date", time_min()),
@@ -115,18 +115,18 @@ public:
FilterOps(const Params& = Params());
U32 mFilterTypes;
-
- U64 mFilterObjectTypes; // For _OBJECT
- U64 mFilterWearableTypes;
- U64 mFilterCategoryTypes; // For _CATEGORY
+ U64 mFilterObjectTypes, // For _OBJECT
+ mFilterWearableTypes,
+ mFilterLinks,
+ mFilterCategoryTypes; // For _CATEGORY
LLUUID mFilterUUID; // for UUID
- time_t mMinDate;
- time_t mMaxDate;
+ time_t mMinDate,
+ mMaxDate;
U32 mHoursAgo;
+
EFolderShow mShowFolderState;
PermissionMask mPermissions;
- U64 mFilterLinks;
};
struct Params : public LLInitParam::Block<Params>
@@ -134,14 +134,12 @@ public:
Optional<std::string> name;
Optional<FilterOps::Params> filter_ops;
Optional<std::string> substring;
- Optional<U32> sort_order;
Optional<bool> since_logoff;
Params()
: name("name"),
filter_ops(""),
substring("substring"),
- sort_order("sort_order"),
since_logoff("since_logoff")
{}
};
@@ -201,9 +199,6 @@ public:
void setShowFolderState( EFolderShow state);
EFolderShow getShowFolderState() const;
- void setSortOrder(U32 order);
- U32 getSortOrder() const;
-
void setEmptyLookupMessage(const std::string& message);
std::string getEmptyLookupMessage() const;
@@ -259,8 +254,6 @@ private:
bool checkAgainstFilterLinks(const class LLFolderViewModelItemInventory* listener) const;
bool checkAgainstClipboard(const LLUUID& object_id) const;
- U32 mOrder;
-
FilterOps mFilterOps;
FilterOps mDefaultFilterOps;
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index e9b128e836..1b3391f7ee 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -239,13 +239,13 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params)
}
// hide inbox
- getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_INBOX));
- getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_OUTBOX));
+ getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_INBOX));
+ getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_OUTBOX));
// set the filter for the empty folder if the debug setting is on
if (gSavedSettings.getBOOL("DebugHideEmptySystemFolders"))
{
- getFilter()->setFilterEmptySystemFolders();
+ getFilter().setFilterEmptySystemFolders();
}
// keep track of the clipboard state so that we avoid filtering too much
@@ -285,18 +285,18 @@ void LLInventoryPanel::draw()
if (mClipboardState != LLClipboard::instance().getGeneration())
{
mClipboardState = LLClipboard::instance().getGeneration();
- getFilter()->setModified(LLClipboard::instance().isCutMode() ? LLInventoryFilter::FILTER_MORE_RESTRICTIVE : LLInventoryFilter::FILTER_LESS_RESTRICTIVE);
+ getFilter().setModified(LLClipboard::instance().isCutMode() ? LLInventoryFilter::FILTER_MORE_RESTRICTIVE : LLInventoryFilter::FILTER_LESS_RESTRICTIVE);
}
LLPanel::draw();
}
-const LLInventoryFilter* LLInventoryPanel::getFilter() const
+const LLInventoryFilter& LLInventoryPanel::getFilter() const
{
return getFolderViewModel()->getFilter();
}
-LLInventoryFilter* LLInventoryPanel::getFilter()
+LLInventoryFilter& LLInventoryPanel::getFilter()
{
return getFolderViewModel()->getFilter();
}
@@ -304,50 +304,49 @@ LLInventoryFilter* LLInventoryPanel::getFilter()
void LLInventoryPanel::setFilterTypes(U64 types, LLInventoryFilter::EFilterType filter_type)
{
if (filter_type == LLInventoryFilter::FILTERTYPE_OBJECT)
- getFilter()->setFilterObjectTypes(types);
+ getFilter().setFilterObjectTypes(types);
if (filter_type == LLInventoryFilter::FILTERTYPE_CATEGORY)
- getFilter()->setFilterCategoryTypes(types);
+ getFilter().setFilterCategoryTypes(types);
}
U32 LLInventoryPanel::getFilterObjectTypes() const
{
- return getFilter()->getFilterObjectTypes();
+ return getFilter().getFilterObjectTypes();
}
U32 LLInventoryPanel::getFilterPermMask() const
{
- return getFilter()->getFilterPermissions();
+ return getFilter().getFilterPermissions();
}
void LLInventoryPanel::setFilterPermMask(PermissionMask filter_perm_mask)
{
- getFilter()->setFilterPermissions(filter_perm_mask);
+ getFilter().setFilterPermissions(filter_perm_mask);
}
void LLInventoryPanel::setFilterWearableTypes(U64 types)
{
- getFilter()->setFilterWearableTypes(types);
+ getFilter().setFilterWearableTypes(types);
}
void LLInventoryPanel::setFilterSubString(const std::string& string)
{
- getFilter()->setFilterSubString(string);
+ getFilter().setFilterSubString(string);
}
const std::string LLInventoryPanel::getFilterSubString()
{
- return getFilter()->getFilterSubString();
+ return getFilter().getFilterSubString();
}
void LLInventoryPanel::setSortOrder(U32 order)
{
- LLInventorySort sorter(order);
- getFilter()->setSortOrder(order);
+ LLInventorySort sorter(order);
if (order != getFolderViewModel()->getSorter().getSortOrder())
{
- getFolderViewModel()->setSorter(LLInventorySort(order));
+ getFolderViewModel()->setSorter(sorter);
// try to keep selection onscreen, even if it wasn't to start with
mFolderRoot->scrollToShowSelection();
}
@@ -360,27 +359,27 @@ U32 LLInventoryPanel::getSortOrder() const
void LLInventoryPanel::setSinceLogoff(BOOL sl)
{
- getFilter()->setDateRangeLastLogoff(sl);
+ getFilter().setDateRangeLastLogoff(sl);
}
void LLInventoryPanel::setHoursAgo(U32 hours)
{
- getFilter()->setHoursAgo(hours);
+ getFilter().setHoursAgo(hours);
}
void LLInventoryPanel::setFilterLinks(U64 filter_links)
{
- getFilter()->setFilterLinks(filter_links);
+ getFilter().setFilterLinks(filter_links);
}
void LLInventoryPanel::setShowFolderState(LLInventoryFilter::EFolderShow show)
{
- getFilter()->setShowFolderState(show);
+ getFilter().setShowFolderState(show);
}
LLInventoryFilter::EFolderShow LLInventoryPanel::getShowFolderState()
{
- return getFilter()->getShowFolderState();
+ return getFilter().getShowFolderState();
}
void LLInventoryPanel::modelChanged(U32 mask)
@@ -473,7 +472,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
{
if (view_folder)
{
- view_folder->requestSort();
+ view_folder->getViewModelItem()->requestSort();
}
}
@@ -1088,7 +1087,7 @@ bool LLInventoryPanel::attachObject(const LLSD& userdata)
BOOL LLInventoryPanel::getSinceLogoff()
{
- return getFilter()->isSinceLogoff();
+ return getFilter().isSinceLogoff();
}
// DEBUG ONLY
@@ -1214,12 +1213,12 @@ void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const L
void LLInventoryPanel::addHideFolderType(LLFolderType::EType folder_type)
{
- getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << folder_type));
+ getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() & ~(1ULL << folder_type));
}
BOOL LLInventoryPanel::getIsHiddenFolderType(LLFolderType::EType folder_type) const
{
- return !(getFilter()->getFilterCategoryTypes() & (1ULL << folder_type));
+ return !(getFilter().getFilterCategoryTypes() & (1ULL << folder_type));
}
void LLInventoryPanel::addItemID( const LLUUID& id, LLFolderViewItem* itemp )
@@ -1321,7 +1320,7 @@ public:
{
LLInventoryPanel::initFromParams(p);
// turn on inbox for recent items
- getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() | (1ULL << LLFolderType::FT_INBOX));
+ getFilter().setFilterCategoryTypes(getFilter().getFilterCategoryTypes() | (1ULL << LLFolderType::FT_INBOX));
}
protected:
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index b66b53f642..e9bfcb0ccf 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -120,6 +120,12 @@ public:
{}
};
+ struct InventoryState : public LLInitParam::Block<InventoryState>
+ {
+ Mandatory<LLInventoryFilter::Params> filter;
+ Mandatory<LLInventorySort::Params> sort;
+ };
+
//--------------------------------------------------------------------
// Initialization
//--------------------------------------------------------------------
@@ -155,8 +161,8 @@ public:
void setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus);
void setSelectCallback(const boost::function<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)>& cb);
void clearSelection();
- LLInventoryFilter* getFilter();
- const LLInventoryFilter* getFilter() const;
+ LLInventoryFilter& getFilter();
+ const LLInventoryFilter& getFilter() const;
void setFilterTypes(U64 filter, LLInventoryFilter::EFilterType = LLInventoryFilter::FILTERTYPE_OBJECT);
U32 getFilterObjectTypes() const;
void setFilterPermMask(PermissionMask filter_perm_mask);
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 1a4f3708ac..9225ea3d53 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -247,10 +247,7 @@ void LLLandmarksPanel::onSearchEdit(const std::string& string)
LLPlacesInventoryPanel* inventory_list = dynamic_cast<LLPlacesInventoryPanel*>(tab->getAccordionView());
if (NULL == inventory_list) continue;
- if (inventory_list->getFilter())
- {
- filter_list(inventory_list, string);
- }
+ filter_list(inventory_list, string);
}
if (sFilterSubString != string)
@@ -365,9 +362,6 @@ void LLLandmarksPanel::onSelectorButtonClicked()
void LLLandmarksPanel::updateShowFolderState()
{
- if (!mLandmarksInventoryPanel->getFilter())
- return;
-
bool show_all_folders = mLandmarksInventoryPanel->getFilterSubString().empty();
if (show_all_folders)
{
@@ -547,7 +541,7 @@ void LLLandmarksPanel::initFavoritesInventoryPanel()
mFavoritesInventoryPanel = getChild<LLPlacesInventoryPanel>("favorites_list");
initLandmarksPanel(mFavoritesInventoryPanel);
- mFavoritesInventoryPanel->getFilter()->setEmptyLookupMessage("FavoritesNoMatchingItems");
+ mFavoritesInventoryPanel->getFilter().setEmptyLookupMessage("FavoritesNoMatchingItems");
initAccordion("tab_favorites", mFavoritesInventoryPanel, true);
}
@@ -558,12 +552,7 @@ void LLLandmarksPanel::initLandmarksInventoryPanel()
initLandmarksPanel(mLandmarksInventoryPanel);
- // Check if mLandmarksInventoryPanel is properly initialized and has a Filter created.
- // In case of a dummy widget getFilter() will return NULL.
- if (mLandmarksInventoryPanel->getFilter())
- {
- mLandmarksInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS);
- }
+ mLandmarksInventoryPanel->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS);
// subscribe to have auto-rename functionality while creating New Folder
mLandmarksInventoryPanel->setSelectCallback(boost::bind(&LLInventoryPanel::onSelectionChange, mLandmarksInventoryPanel, _1, _2));
@@ -599,12 +588,7 @@ void LLLandmarksPanel::initLibraryInventoryPanel()
void LLLandmarksPanel::initLandmarksPanel(LLPlacesInventoryPanel* inventory_list)
{
- // In case of a dummy widget further we have no Folder View widget and no Filter,
- // so further initialization leads to crash.
- if (!inventory_list->getFilter())
- return;
-
- inventory_list->getFilter()->setEmptyLookupMessage("PlacesNoMatchingItems");
+ inventory_list->getFilter().setEmptyLookupMessage("PlacesNoMatchingItems");
inventory_list->setFilterTypes(0x1 << LLInventoryType::IT_LANDMARK);
inventory_list->setSelectCallback(boost::bind(&LLLandmarksPanel::onSelectionChange, this, inventory_list, _1, _2));
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index fea27b37d3..e1aa70cc4a 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -89,9 +89,9 @@ public:
static void selectNoTypes(void* user_data);
private:
LLPanelMainInventory* mPanelMainInventory;
- LLSpinCtrl* mSpinSinceDays;
- LLSpinCtrl* mSpinSinceHours;
- LLInventoryFilter* mFilter;
+ LLSpinCtrl* mSpinSinceDays;
+ LLSpinCtrl* mSpinSinceHours;
+ LLInventoryFilter* mFilter;
};
///----------------------------------------------------------------------------
@@ -131,7 +131,7 @@ BOOL LLPanelMainInventory::postBuild()
mFilterTabs = getChild<LLTabContainer>("inventory filter tabs");
mFilterTabs->setCommitCallback(boost::bind(&LLPanelMainInventory::onFilterSelected, this));
- //panel->getFilter()->markDefault();
+ //panel->getFilter().markDefault();
// Set up the default inv. panel/filter settings.
mActivePanel = getChild<LLInventoryPanel>("All Items");
@@ -139,7 +139,7 @@ BOOL LLPanelMainInventory::postBuild()
{
// "All Items" is the previous only view, so it gets the InventorySortOrder
mActivePanel->setSortOrder(gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER));
- mActivePanel->getFilter()->markDefault();
+ mActivePanel->getFilter().markDefault();
mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
mActivePanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mActivePanel, _1, _2));
mResortActivePanel = true;
@@ -150,7 +150,7 @@ BOOL LLPanelMainInventory::postBuild()
recent_items_panel->setSinceLogoff(TRUE);
recent_items_panel->setSortOrder(LLInventoryFilter::SO_DATE);
recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
- recent_items_panel->getFilter()->markDefault();
+ recent_items_panel->getFilter().markDefault();
recent_items_panel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, recent_items_panel, _1, _2));
}
@@ -169,14 +169,14 @@ BOOL LLPanelMainInventory::postBuild()
// Note that the "All Items" settings do not persist.
if(recent_items_panel)
{
- if(savedFilterState.has(recent_items_panel->getFilter()->getName()))
+ if(savedFilterState.has(recent_items_panel->getFilter().getName()))
{
LLSD recent_items = savedFilterState.get(
- recent_items_panel->getFilter()->getName());
+ recent_items_panel->getFilter().getName());
LLInventoryFilter::Params p;
LLParamSDParser parser;
parser.readSD(recent_items, p);
- recent_items_panel->getFilter()->fromParams(p);
+ recent_items_panel->getFilter().fromParams(p);
}
}
@@ -213,29 +213,29 @@ LLPanelMainInventory::~LLPanelMainInventory( void )
LLInventoryPanel* all_items_panel = getChild<LLInventoryPanel>("All Items");
if (all_items_panel)
{
- LLInventoryFilter* filter = all_items_panel->getFilter();
- if (filter)
+ LLSD filterState;
+ LLInventoryPanel::InventoryState p;
+ all_items_panel->getFilter().toParams(p.filter);
+ all_items_panel->getRootViewModel().getSorter().toParams(p.sort);
+ if (p.validateBlock(false))
{
- LLSD filterState;
- LLInventoryFilter::Params p;
- filter->toParams(p);
- if (p.validateBlock(false))
- {
- LLParamSDParser().writeSD(filterState, p);
- filterRoot[filter->getName()] = filterState;
- }
+ LLParamSDParser().writeSD(filterState, p);
+ filterRoot[all_items_panel->getName()] = filterState;
}
}
- LLInventoryFilter* filter = findChild<LLInventoryPanel>("Recent Items")->getFilter();
- if (filter)
+ LLInventoryPanel* panel = findChild<LLInventoryPanel>("Recent Items");
+ if (panel)
{
LLSD filterState;
- LLInventoryFilter::Params p;
- filter->toParams(p);
- LLParamSDParser parser;
- parser.writeSD(filterState, p);
- filterRoot[filter->getName()] = filterState;
+ LLInventoryPanel::InventoryState p;
+ panel->getFilter().toParams(p.filter);
+ panel->getRootViewModel().getSorter().toParams(p.sort);
+ if (p.validateBlock(false))
+ {
+ LLParamSDParser().writeSD(filterState, p);
+ filterRoot[panel->getName()] = filterState;
+ }
}
std::ostringstream filterSaveName;
@@ -321,7 +321,7 @@ void LLPanelMainInventory::doCreate(const LLSD& userdata)
void LLPanelMainInventory::resetFilters()
{
LLFloaterInventoryFinder *finder = getFinder();
- getActivePanel()->getFilter()->resetDefault();
+ getActivePanel()->getFilter().resetDefault();
if (finder)
{
finder->updateElementsFromFilter();
@@ -426,7 +426,7 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
}
// save current folder open state if no filter currently applied
- if (!mActivePanel->getFilter()->isNotDefault())
+ if (!mActivePanel->getFilter().isNotDefault())
{
mSavedFolderState->setApply(FALSE);
mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
@@ -488,13 +488,13 @@ void LLPanelMainInventory::onFilterSelected()
}
setFilterSubString(mFilterSubString);
- LLInventoryFilter* filter = mActivePanel->getFilter();
+ LLInventoryFilter& filter = mActivePanel->getFilter();
LLFloaterInventoryFinder *finder = getFinder();
if (finder)
{
- finder->changeFilter(filter);
+ finder->changeFilter(&filter);
}
- if (filter->isActive())
+ if (filter.isActive())
{
// If our filter is active we may be the first thing requiring a fetch so we better start it here.
LLInventoryModelBackgroundFetch::instance().start();
@@ -607,7 +607,7 @@ void LLPanelMainInventory::onFocusReceived()
void LLPanelMainInventory::setFilterTextFromFilter()
{
- mFilterText = mActivePanel->getFilter()->getFilterText();
+ mFilterText = mActivePanel->getFilter().getFilterText();
}
void LLPanelMainInventory::toggleFindOptions()
@@ -657,7 +657,7 @@ LLFloaterInventoryFinder* LLPanelMainInventory::getFinder()
LLFloaterInventoryFinder::LLFloaterInventoryFinder(LLPanelMainInventory* inventory_view) :
LLFloater(LLSD()),
mPanelMainInventory(inventory_view),
- mFilter(inventory_view->getPanel()->getFilter())
+ mFilter(&inventory_view->getPanel()->getFilter())
{
buildFromFile("floater_inventory_view_finder.xml");
updateElementsFromFilter();
@@ -1082,14 +1082,14 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
const LLUUID& item_id = static_cast<LLFolderViewModelItemInventory*>(current_item->getViewModelItem())->getUUID();
const std::string &item_name = current_item->getViewModelItem()->getName();
mFilterSubString = item_name;
- LLInventoryFilter *filter = mActivePanel->getFilter();
- filter->setFilterSubString(item_name);
+ LLInventoryFilter &filter = mActivePanel->getFilter();
+ filter.setFilterSubString(item_name);
mFilterEditor->setText(item_name);
mFilterEditor->setFocus(TRUE);
- filter->setFilterUUID(item_id);
- filter->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
- filter->setFilterLinks(LLInventoryFilter::FILTERLINK_ONLY_LINKS);
+ filter.setFilterUUID(item_id);
+ filter.setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
+ filter.setFilterLinks(LLInventoryFilter::FILTERLINK_ONLY_LINKS);
}
}
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index 3547156197..ea0521e3a7 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -95,13 +95,13 @@ LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
// Set the sort order newest to oldest
mInventoryPanel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_DATE);
- mInventoryPanel->getFilter()->markDefault();
+ mInventoryPanel->getFilter().markDefault();
// Set selection callback for proper update of inventory status buttons
mInventoryPanel->setSelectCallback(boost::bind(&LLPanelMarketplaceInbox::onSelectionChange, this));
// Set up the note to display when the inbox is empty
- mInventoryPanel->getFilter()->setEmptyLookupMessage("InventoryInboxNoItems");
+ mInventoryPanel->getFilter().setEmptyLookupMessage("InventoryInboxNoItems");
// Hide the placeholder text
inbox_inventory_placeholder->setVisible(FALSE);
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
index 8ad3929999..0d3fbe66d7 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp
@@ -182,9 +182,9 @@ LLInboxFolderViewItem::LLInboxFolderViewItem(const Params& p)
#endif
}
-BOOL LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder)
+void LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder)
{
- BOOL retval = LLFolderViewItem::addToFolder(folder);
+ LLFolderViewItem::addToFolder(folder);
#if SUPPORTING_FRESH_ITEM_COUNT
// Compute freshness if our parent is the root folder for the inbox
@@ -193,8 +193,6 @@ BOOL LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder)
computeFreshness();
}
#endif
-
- return retval;
}
BOOL LLInboxFolderViewItem::handleDoubleClick(S32 x, S32 y, MASK mask)
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h
index d8b8a2fe63..098969aca6 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.h
+++ b/indra/newview/llpanelmarketplaceinboxinventory.h
@@ -95,7 +95,7 @@ public:
LLInboxFolderViewItem(const Params& p);
- BOOL addToFolder(LLFolderViewFolder* folder);
+ void addToFolder(LLFolderViewFolder* folder);
BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
void draw();
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 4f2c515bde..82956beb3d 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -1567,11 +1567,8 @@ void LLPanelObjectInventory::reset()
mFolders = LLUICtrlFactory::create<LLFolderView>(p);
// this ensures that we never say "searching..." or "no items found"
//TODO RN: make this happen by manipulating filter object directly
- LLInventoryFilter* inventoryFilter = dynamic_cast<LLInventoryFilter*>(mFolders->getFolderViewModel()->getFilter());
- if(inventoryFilter)
- {
- inventoryFilter->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS);
- }
+ LLInventoryFilter& inventoryFilter = dynamic_cast<LLInventoryFilter&>(mFolders->getFolderViewModel()->getFilter());
+ inventoryFilter.setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS);
mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar);
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index 2d3f144588..65f0290060 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -455,7 +455,7 @@ BOOL LLFloaterTexturePicker::postBuild()
// Commented out to scroll to currently selected texture. See EXT-5403.
// // store this filter as the default one
- // mInventoryPanel->getRootFolder()->getFilter()->markDefault();
+ // mInventoryPanel->getRootFolder()->getFilter().markDefault();
// Commented out to stop opening all folders with textures
// mInventoryPanel->openDefaultFolderForType(LLFolderType::FT_TEXTURE);
@@ -638,10 +638,10 @@ void LLFloaterTexturePicker::draw()
LLFolderView* folder_view = mInventoryPanel->getRootFolder();
if (!folder_view) return;
- LLFolderViewFilter* filter = static_cast<LLFolderViewModelInventory*>(folder_view->getFolderViewModel())->getFilter();
+ LLFolderViewFilter& filter = static_cast<LLFolderViewModelInventory*>(folder_view->getFolderViewModel())->getFilter();
- bool is_filter_active = folder_view->getViewModelItem()->getLastFilterGeneration() < filter->getCurrentGeneration() &&
- filter->isNotDefault();
+ bool is_filter_active = folder_view->getViewModelItem()->getLastFilterGeneration() < filter.getCurrentGeneration() &&
+ filter.isNotDefault();
// After inventory panel filter is applied we have to update
// constraint rect for the selected item because of folder view
@@ -1012,7 +1012,7 @@ void LLFloaterTexturePicker::onFilterEdit(const std::string& search_string )
else if (mInventoryPanel->getFilterSubString().empty())
{
// first letter in search term, save existing folder open state
- if (!mInventoryPanel->getFilter()->isNotDefault())
+ if (!mInventoryPanel->getFilter().isNotDefault())
{
mSavedFolderState.setApply(FALSE);
mInventoryPanel->getRootFolder()->applyFunctorRecursively(mSavedFolderState);