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.h38
1 files changed, 25 insertions, 13 deletions
diff --git a/indra/newview/llfolderviewmodel.h b/indra/newview/llfolderviewmodel.h
index 5304613219..98b7255137 100644
--- a/indra/newview/llfolderviewmodel.h
+++ b/indra/newview/llfolderviewmodel.h
@@ -22,17 +22,11 @@
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
-#ifndef LLFOLDERVIEWEVENTLISTENER_H
-#define LLFOLDERVIEWEVENTLISTENER_H
+#ifndef LLFOLDERVIEWMODEL_H
+#define LLFOLDERVIEWMODEL_H
-#include "lldarray.h" // *TODO: convert to std::vector
-#include "llfoldertype.h"
#include "llfontgl.h" // just for StyleFlags enum
-#include "llfolderviewitem.h"
-#include "llinventorytype.h"
-#include "llpermissionsflags.h"
-#include "llpointer.h"
-#include "llwearabletype.h"
+#include "llfolderview.h"
#include "lltooldraganddrop.h"
// These are grouping of inventory types.
@@ -122,11 +116,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 +138,8 @@ public:
// sort everything
mTargetSortVersion++;
}
+ virtual std::string getStatusText();
+ virtual void filter();
void setFolderView(LLFolderView* folder_view) { mFolderView = folder_view;}
@@ -177,6 +175,7 @@ public:
// add getStatusText and isFiltering()
virtual bool contentsReady() { return true; }
+
struct ViewModelCompare
{
ViewModelCompare(const SortType& sorter)
@@ -272,6 +271,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 +305,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 +317,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; }
@@ -343,4 +355,4 @@ protected:
};
-#endif
+#endif // LLFOLDERVIEWMODEL_H