summaryrefslogtreecommitdiff
path: root/indra/newview/llinventoryitemslist.h
diff options
context:
space:
mode:
authorEugene Mutavchi <emutavchi@productengine.com>2010-04-30 18:27:24 +0300
committerEugene Mutavchi <emutavchi@productengine.com>2010-04-30 18:27:24 +0300
commitd6edc4cd12c015003cd665028b69a7b34b3aa54f (patch)
tree58ffcac02b74dab72a7260e99d2d2bb87ed1b6de /indra/newview/llinventoryitemslist.h
parent779bf4bb59e9c8d832de84bc926e8839827735b7 (diff)
Implemented normal EXT-7002 (Inventory flat list needs optimization.):
- changed the LLInventoryItemsList::addNewItem() to add item to the list without immediately rearranging - implemented LLFlatListViewEx::setFilterSubString(), sets up new filter string and filters the list. - implemented LLFlatListViewEx::filterItems(), filters the list, rearranges and notifies parent about shape changes. The list items are filtered using the notify() functionality, without need in adding/removing them on each filter call. It sends 'match_filter' request to items and interprets the returned zero as sign of matched filter string, i.e. we don't hide items that don't support 'match_filter' action(separators etc). - filtring of LLOutfitsList. Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/342/ --HG-- branch : product-engine
Diffstat (limited to 'indra/newview/llinventoryitemslist.h')
-rw-r--r--indra/newview/llinventoryitemslist.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h
index 152aafbd7e..bc04eb6f5b 100644
--- a/indra/newview/llinventoryitemslist.h
+++ b/indra/newview/llinventoryitemslist.h
@@ -64,13 +64,16 @@ class LLViewerInventoryItem;
class LLPanelInventoryListItemBase : public LLPanel
{
public:
-
static LLPanelInventoryListItemBase* create(LLViewerInventoryItem* item);
+ virtual void draw();
+
/**
- * Called after inventory item was updated, update panel widgets to reflect inventory changes.
+ * Let item know it need to be refreshed in next draw()
*/
- virtual void updateItem();
+ void setNeedsRefresh(bool needs_refresh){ mNeedsRefresh = needs_refresh; }
+
+ bool getNeedsRefresh(){ return mNeedsRefresh; }
/**
* Add widget to left side
@@ -107,6 +110,11 @@ public:
*/
/*virtual*/ void setValue(const LLSD& value);
+ /**
+ * Handles filter request
+ */
+ /*virtual*/ S32 notify(const LLSD& info);
+
/* Highlights item */
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
/* Removes item highlight */
@@ -125,6 +133,11 @@ protected:
*/
virtual void init();
+ /**
+ * Called after inventory item was updated, update panel widgets to reflect inventory changes.
+ */
+ virtual void updateItem();
+
/** setter for mIconCtrl */
void setIconCtrl(LLIconCtrl* icon) { mIconCtrl = icon; }
/** setter for MTitleCtrl */
@@ -178,14 +191,15 @@ private:
S32 mLeftWidgetsWidth;
S32 mRightWidgetsWidth;
+ bool mNeedsRefresh;
};
//////////////////////////////////////////////////////////////////////////
-class LLInventoryItemsList : public LLFlatListView
+class LLInventoryItemsList : public LLFlatListViewEx
{
public:
- struct Params : public LLInitParam::Block<Params, LLFlatListView::Params>
+ struct Params : public LLInitParam::Block<Params, LLFlatListViewEx::Params>
{
Params();
};
@@ -225,7 +239,7 @@ protected:
/**
* Add an item to the list
*/
- virtual void addNewItem(LLViewerInventoryItem* item);
+ virtual void addNewItem(LLViewerInventoryItem* item, bool rearrange = true);
private:
uuid_vec_t mIDs; // IDs of items that were added in refreshList().