diff options
author | Tofu Linden <tofu.linden@lindenlab.com> | 2010-04-07 13:37:37 +0100 |
---|---|---|
committer | Tofu Linden <tofu.linden@lindenlab.com> | 2010-04-07 13:37:37 +0100 |
commit | 4533d1b59b2e8fc534ad3de7a896aaa8514fe653 (patch) | |
tree | 38b4d2398d66a0e18cd8e4dcd47efba0ad5326a1 /indra/newview/llpaneloutfitedit.h | |
parent | 92f630871386bafc4548eb9beb45063e40b6139c (diff) | |
parent | adce2ecdf8f3a0efcd4907699d286012124ac496 (diff) |
merge from viewer-trunk
Diffstat (limited to 'indra/newview/llpaneloutfitedit.h')
-rw-r--r-- | indra/newview/llpaneloutfitedit.h | 216 |
1 files changed, 54 insertions, 162 deletions
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index 836bba8c44..ba382d7320 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -2,25 +2,31 @@ * @file llpaneloutfitedit.h * @brief Displays outfit edit information in Side Tray. * - * $LicenseInfo:firstyear=2009&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 2004-2009, Linden Research, Inc. * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. * $/LicenseInfo$ */ @@ -36,199 +42,85 @@ #include "llremoteparcelrequest.h" #include "llinventory.h" -#include "llinventoryfunctions.h" -#include "llinventoryitemslist.h" #include "llinventorymodel.h" class LLButton; -class LLCOFWearables; -class LLComboBox; class LLTextBox; class LLInventoryCategory; -class LLOutfitObserver; -class LLCOFDragAndDropObserver; +class LLInventoryLookObserver; class LLInventoryPanel; class LLSaveFolderState; class LLFolderViewItem; class LLScrollListCtrl; -class LLToggleableMenu; +class LLLookFetchObserver; class LLFilterEditor; -class LLFilteredWearableListManager; -class LLMenuGL; -class LLFindNonLinksByMask; -class LLFindWearablesOfType; -class LLSaveOutfitComboBtn; class LLPanelOutfitEdit : public LLPanel { - LOG_CLASS(LLPanelOutfitEdit); public: - // NOTE: initialize mFolderViewItemTypes at the index of any new enum you add in the LLPanelOutfitEdit() constructor - typedef enum e_folder_view_item_type + // NOTE: initialize mLookItemTypes at the index of any new enum you add in the LLPanelOutfitEdit() constructor + typedef enum e_look_item_type { - FVIT_ALL = 0, - FVIT_WEARABLE, // clothing or shape - FVIT_ATTACHMENT, - NUM_FOLDER_VIEW_ITEM_TYPES - } EFolderViewItemType; + LIT_ALL = 0, + LIT_WEARABLE, // clothing or shape + LIT_ATTACHMENT, + NUM_LOOK_ITEM_TYPES + } ELookItemType; - //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(); /*virtual*/ BOOL postBuild(); - /*virtual*/ void onOpen(const LLSD& key); - - void moveWearable(bool closer_to_body); + /*virtual*/ void changed(U32 mask); - void toggleAddWearablesPanel(); - void showAddWearablesPanel(bool show__add_wearables); + /*virtual*/ void setParcelID(const LLUUID& parcel_id); + // Sends a request for data about the given parcel, which will + // only update the location if there is none already available. - //following methods operate with "add wearables" panel - void showWearablesFilter(); - void showWearablesListView(); - void showWearablesFolderView(); + void showAddWearablesPanel(); - void updateFiltersVisibility(); - - void onFolderViewFilterCommitted(LLUICtrl* ctrl); - void onListViewFilterCommitted(LLUICtrl* ctrl); + void onTypeFilterChanged(LLUICtrl* ctrl); void onSearchEdit(const std::string& string); - void updatePlusButton(); - void onPlusBtnClicked(void); - - void onVisibilityChange(const LLSD &in_visible_chain); - - 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) - * No COF items selected - shows the folder view, reset filter - * 1 COF item selected - shows the list view and filters wearables there by a wearable type of the selected item - * More than 1 COF item selected - shows the list view and filters it by a type of the selected item (attachment or clothing) - */ - void filterWearablesBySelectedItem(void); - - void onRemoveFromOutfitClicked(void); + void onInventorySelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action); + void onAddToLookClicked(void); + void onLookItemSelectionChange(void); + void onRemoveFromLookClicked(void); void onEditWearableClicked(void); - void onAddWearableClicked(void); - void onReplaceMenuItemClicked(LLUUID selected_item_id); - void onShopButtonClicked(); + void onUpClicked(void); void displayCurrentOutfit(); - void updateCurrentOutfitName(); - - void update(); - - void updateVerbs(); - /** - * @brief Helper function. Shows one panel instead of another. - * If panels already switched does nothing and returns false. - * @param switch_from_panel panel to hide - * @param switch_to_panel panel to show - * @retun returns true if switching happened, false if not. - */ - bool switchPanels(LLPanel* switch_from_panel, LLPanel* switch_to_panel); - - void resetAccordionState(); - - virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, - EDragAndDropType cargo_type, - void* cargo_data, - EAcceptance* accept, - std::string& tooltip_msg); + + void lookFetched(void); + + void updateLookInfo(void); private: - void onGearButtonClick(LLUICtrl* clicked_button); - void onAddMoreButtonClicked(); - void showFilteredWearablesListView(LLWearableType::EType type); - void onOutfitChanging(bool started); - void getSelectedItemsUUID(uuid_vec_t& uuid_list); - void getCurrentItemUUID(LLUUID& selected_id); - void onCOFChanged(); - - LLWearableType::EType getCOFWearablesSelectionType() const; - LLWearableType::EType getAddMorePanelSelectionType() const; - LLWearableType::EType getWearableTypeByItemUUID(const LLUUID& item_uuid) const; + //*TODO got rid of mCurrentOutfitID + LLUUID mCurrentOutfitID; LLTextBox* mCurrentOutfitName; - LLTextBox* mStatus; + LLScrollListCtrl* mLookContents; LLInventoryPanel* mInventoryItemsPanel; LLFilterEditor* mSearchFilter; LLSaveFolderState* mSavedFolderState; std::string mSearchString; + LLButton* mAddToLookBtn; + LLButton* mRemoveFromLookBtn; + LLButton* mUpBtn; LLButton* mEditWearableBtn; - LLButton* mFolderViewBtn; - LLButton* mListViewBtn; - LLButton* mPlusBtn; - LLPanel* mAddWearablesPanel; - LLComboBox* mFolderViewFilterCmbBox; - LLComboBox* mListViewFilterCmbBox; - - LLFilteredWearableListManager* mWearableListManager; - LLInventoryItemsList* mWearableItemsList; - LLPanel* mWearablesListViewPanel; - - LLCOFDragAndDropObserver* mCOFDragAndDropObserver; - - std::vector<LLLookItemType> mFolderViewItemTypes; - std::vector<LLFilterItem*> mListViewItemTypes; - - LLCOFWearables* mCOFWearables; - LLMenuGL* mGearMenu; - bool mInitialized; - std::auto_ptr<LLSaveOutfitComboBtn> mSaveComboBtn; - - - + LLLookFetchObserver* mFetchLook; + LLInventoryLookObserver* mLookObserver; + std::vector<LLLookItemType> mLookItemTypes; }; #endif // LL_LLPANELOUTFITEDIT_H |