summaryrefslogtreecommitdiff
path: root/indra/newview/llfolderviewmodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfolderviewmodel.h')
-rw-r--r--indra/newview/llfolderviewmodel.h25
1 files changed, 22 insertions, 3 deletions
diff --git a/indra/newview/llfolderviewmodel.h b/indra/newview/llfolderviewmodel.h
index 5304613219..8a16ec3eff 100644
--- a/indra/newview/llfolderviewmodel.h
+++ b/indra/newview/llfolderviewmodel.h
@@ -28,6 +28,7 @@
#include "lldarray.h" // *TODO: convert to std::vector
#include "llfoldertype.h"
#include "llfontgl.h" // just for StyleFlags enum
+#include "llfolderview.h"
#include "llfolderviewitem.h"
#include "llinventorytype.h"
#include "llpermissionsflags.h"
@@ -122,11 +123,13 @@ public:
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;
};
class LLFolderViewModelCommon : public LLFolderViewModelInterface
@@ -142,6 +145,8 @@ public:
// sort everything
mTargetSortVersion++;
}
+ virtual std::string getStatusText();
+ virtual void filter();
void setFolderView(LLFolderView* folder_view) { mFolderView = folder_view;}
@@ -177,6 +182,7 @@ public:
// add getStatusText and isFiltering()
virtual bool contentsReady() { return true; }
+
struct ViewModelCompare
{
ViewModelCompare(const SortType& sorter)
@@ -272,6 +278,7 @@ public:
virtual bool hasChildren() const = 0;
virtual void addChild(LLFolderViewModelItem* child) = 0;
+ virtual void removeChild(LLFolderViewModelItem* child) = 0;
// This method will be called to determine if a drop can be
// performed, and will set drop to TRUE if a drop is
@@ -305,7 +312,9 @@ public:
mLastFilterGeneration(-1),
mMostFilteredDescendantGeneration(-1),
mParent(NULL)
- {}
+ {
+ std::for_each(mChildren.begin(), mChildren.end(), DeletePointer());
+ }
void requestSort() { mSortVersion = -1; }
S32 getSortVersion() { return mSortVersion; }
@@ -315,13 +324,23 @@ public:
void dirtyFilter()
{
mLastFilterGeneration = -1;
+
// bubble up dirty flag all the way to root
if (mParent)
{
mParent->dirtyFilter();
- }
+ }
+ }
+ virtual void addChild(LLFolderViewModelItem* child)
+ {
+ mChildren.push_back(child);
+ child->setParent(this);
+ }
+ virtual void removeChild(LLFolderViewModelItem* child)
+ {
+ mChildren.remove(child);
+ child->setParent(NULL);
}
- virtual void addChild(LLFolderViewModelItem* child) { mChildren.push_back(child); child->setParent(this); }
protected:
virtual void setParent(LLFolderViewModelItem* parent) { mParent = parent; }