diff options
Diffstat (limited to 'indra/newview/llpaneloutfitedit.h')
-rw-r--r-- | indra/newview/llpaneloutfitedit.h | 73 |
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; |