summaryrefslogtreecommitdiff
path: root/indra/newview/llpaneloutfitedit.h
diff options
context:
space:
mode:
authorIgor Borovkov <iborovkov@productengine.com>2010-06-14 15:04:06 +0300
committerIgor Borovkov <iborovkov@productengine.com>2010-06-14 15:04:06 +0300
commite96544ff266849207adfc3823adfc2dcfe42ce72 (patch)
treedd71d3b2705194ecff65ba76084878309e816548 /indra/newview/llpaneloutfitedit.h
parenta0cb051e93237ce32e6b3448ea02df52e8e9cfe5 (diff)
EXT-7742 FIXED panel outfit edit: added a separate dropdown for the list view
- added a separate filter combobox for the list view containing lots of items, all types of wearables, separated clothing and bodyparts items - comboboxes are linked to the appropriate view, only one is shown - got rid of excluding links in the folder view - minor refactoring Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/573/ --HG-- branch : product-engine
Diffstat (limited to 'indra/newview/llpaneloutfitedit.h')
-rw-r--r--indra/newview/llpaneloutfitedit.h73
1 files changed, 58 insertions, 15 deletions
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index d19ede04f1..56c6c6d680 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -42,6 +42,7 @@
#include "llremoteparcelrequest.h"
#include "llinventory.h"
+#include "llinventoryfunctions.h"
#include "llinventoryitemslist.h"
#include "llinventorymodel.h"
@@ -69,21 +70,59 @@ class LLPanelOutfitEdit : public LLPanel
LOG_CLASS(LLPanelOutfitEdit);
public:
- // NOTE: initialize mLookItemTypes at the index of any new enum you add in the LLPanelOutfitEdit() constructor
- typedef enum e_look_item_type
+ // NOTE: initialize mFolderViewItemTypes at the index of any new enum you add in the LLPanelOutfitEdit() constructor
+ typedef enum e_folder_view_item_type
{
- LIT_ALL = 0,
- LIT_WEARABLE, // clothing or shape
- LIT_ATTACHMENT,
- NUM_LOOK_ITEM_TYPES
- } ELookItemType;
+ FVIT_ALL = 0,
+ FVIT_WEARABLE, // clothing or shape
+ FVIT_ATTACHMENT,
+ NUM_FOLDER_VIEW_ITEM_TYPES
+ } EFolderViewItemType;
+ //should reflect order from LLWearableType::EType
+ typedef enum e_list_view_item_type
+ {
+ LVIT_ALL = 0,
+ LVIT_CLOTHING,
+ LVIT_BODYPART,
+ LVIT_ATTACHMENT,
+ LVIT_SHAPE,
+ LVIT_SKIN,
+ LVIT_HAIR,
+ LVIT_EYES,
+ LVIT_SHIRT,
+ LVIT_PANTS,
+ LVIT_SHOES,
+ LVIT_SOCKS,
+ LVIT_JACKET,
+ LVIT_GLOVES,
+ LVIT_UNDERSHIRT,
+ LVIT_UNDERPANTS,
+ LVIT_SKIRT,
+ LVIT_ALPHA,
+ LVIT_TATTOO,
+ NUM_LIST_VIEW_ITEM_TYPES
+ } EListViewItemType;
+
struct LLLookItemType {
std::string displayName;
U64 inventoryMask;
LLLookItemType() : displayName("NONE"), inventoryMask(0) {}
LLLookItemType(std::string name, U64 mask) : displayName(name), inventoryMask(mask) {}
};
+
+ struct LLFilterItem {
+ std::string displayName;
+ LLInventoryCollectFunctor* collector;
+ LLFilterItem() : displayName("NONE"), collector(NULL) {}
+ LLFilterItem(std::string name, LLInventoryCollectFunctor* _collector) : displayName(name), collector(_collector) {}
+ ~LLFilterItem() { delete collector; }
+
+ //the struct is not supposed to by copied, either way the destructor kills collector
+ //LLPointer is not used as it requires LLInventoryCollectFunctor to extend LLRefCount what it doesn't do
+ private:
+ LLFilterItem(const LLFilterItem& filter_item) {};
+ };
LLPanelOutfitEdit();
/*virtual*/ ~LLPanelOutfitEdit();
@@ -101,12 +140,16 @@ public:
void showWearablesListView();
void showWearablesFolderView();
- void onTypeFilterChanged(LLUICtrl* ctrl);
+ void updateFiltersVisibility();
+
+ void onFolderViewFilterCommitted(LLUICtrl* ctrl);
+ void onListViewFilterCommitted(LLUICtrl* ctrl);
void onSearchEdit(const std::string& string);
void onInventorySelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
void onAddToOutfitClicked(void);
- void applyFilter(e_look_item_type type);
+ void applyFolderViewFilter(EFolderViewItemType type);
+ void applyListViewFilter(EListViewItemType type);
/**
* Filter items in views of Add Wearables Panel and show appropriate view depending on currently selected COF item(s)
@@ -159,18 +202,18 @@ private:
LLButton* mFolderViewBtn;
LLButton* mListViewBtn;
LLPanel* mAddWearablesPanel;
- LLComboBox* mFilterComboBox;
-
- LLFindNonLinksByMask* mWearableListMaskCollector;
- LLFindWearablesOfType* mWearableListTypeCollector;
+
+ LLComboBox* mFolderViewFilterCmbBox;
+ LLComboBox* mListViewFilterCmbBox;
LLFilteredWearableListManager* mWearableListManager;
LLInventoryItemsList* mWearableItemsList;
- LLPanel* mWearableItemsPanel;
+ LLPanel* mWearablesListViewPanel;
LLCOFDragAndDropObserver* mCOFDragAndDropObserver;
- std::vector<LLLookItemType> mLookItemTypes;
+ std::vector<LLLookItemType> mFolderViewItemTypes;
+ std::vector<LLFilterItem*> mListViewItemTypes;
LLCOFWearables* mCOFWearables;
LLMenuGL* mGearMenu;