From a0e3c4380d3cbfbb5e0589d081a7068c1525ebce Mon Sep 17 00:00:00 2001 From: callum Date: Thu, 21 Oct 2010 16:55:15 -0700 Subject: EXP-271 FIX Implement slapp functionality for changing avatars --- indra/newview/llappearancemgr.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'indra/newview/llappearancemgr.cpp') diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index ed5e8ceee3..8737e97b47 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -2943,3 +2943,32 @@ void wear_multiple(const uuid_vec_t& ids, bool replace) } } +// SLapp for easy-wearing of a stock (library) avatar +// +class LLWearFolderHandler : public LLCommandHandler +{ +public: + // not allowed from outside the app + LLWearFolderHandler() : LLCommandHandler("wear_folder", UNTRUSTED_BLOCK) { } + + bool handle(const LLSD& tokens, const LLSD& query_map, + LLMediaCtrl* web) + { + LLPointer category = new LLInventoryCategory(query_map["folder_id"], + LLUUID::null, + LLFolderType::FT_CLOTHING, + "Quick Appearance"); + LLSD::UUID folder_uuid = query_map["folder_id"].asUUID(); + if ( gInventory.getCategory( folder_uuid ) != NULL ) + { + LLAppearanceMgr::getInstance()->wearInventoryCategory(category, true, false); + + // *TODOw: This may not be necessary if initial outfit is chosen already -- josh + gAgent.setGenderChosen(TRUE); + } + + return true; + } +}; + +LLWearFolderHandler gWearFolderHandler; -- cgit v1.2.3 From 8a4b7c85c2227a2465bc4fb028496c1908c298d3 Mon Sep 17 00:00:00 2001 From: Seth ProductEngine Date: Fri, 29 Oct 2010 22:31:21 +0300 Subject: STORM-184 FIXED Disabled "Save" command for outfits without name (with "No Outfit" in My Appearance SP). --- indra/newview/llappearancemgr.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'indra/newview/llappearancemgr.cpp') diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index ed5e8ceee3..62074ddcd5 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -2204,12 +2204,11 @@ void LLAppearanceMgr::updateIsDirty() base_outfit = catp->getUUID(); } - if(base_outfit.isNull()) - { - // no outfit link found, display "unsaved outfit" - mOutfitIsDirty = true; - } - else + // Set dirty to "false" if no base outfit found to disable "Save" + // and leave only "Save As" enabled in My Outfits. + mOutfitIsDirty = false; + + if (base_outfit.notNull()) { LLIsOfAssetType collector = LLIsOfAssetType(LLAssetType::AT_LINK); @@ -2248,8 +2247,6 @@ void LLAppearanceMgr::updateIsDirty() return; } } - - mOutfitIsDirty = false; } } @@ -2635,6 +2632,7 @@ void LLAppearanceMgr::dumpItemArray(const LLInventoryModel::item_array_t& items, LLAppearanceMgr::LLAppearanceMgr(): mAttachmentInvLinkEnabled(false), mOutfitIsDirty(false), + mOutfitLocked(false), mIsInUpdateAppearanceFromCOF(false) { LLOutfitObserver& outfit_observer = LLOutfitObserver::instance(); -- cgit v1.2.3 From 024e5ff23542cf0604b73901311bb4d024957b1c Mon Sep 17 00:00:00 2001 From: Seth ProductEngine Date: Tue, 9 Nov 2010 00:55:44 +0200 Subject: STORM-559 FIXED crash upon quitting the viewer while an outfit is being saved. --- indra/newview/llappearancemgr.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'indra/newview/llappearancemgr.cpp') diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 62074ddcd5..4e0bfb2e22 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -2437,6 +2437,12 @@ public: virtual ~LLShowCreatedOutfit() { + if (!LLApp::isRunning()) + { + llwarns << "called during shutdown, skipping" << llendl; + return; + } + LLSD key; //EXT-7727. For new accounts LLShowCreatedOutfit is created during login process -- cgit v1.2.3 From 05c14aa5588596a3bef49cee45e648c1f5ef18b7 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Tue, 4 Jan 2011 13:52:29 +0200 Subject: STORM-702 FIXED Made it possible to wear partial outfits Enabled the "Replace Current Outfit" option for incomplete outfits (i.e. those that don't contain full set of body parts). --- indra/newview/llappearancemgr.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'indra/newview/llappearancemgr.cpp') diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 80734b0d41..f40fed5ad3 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -1300,8 +1300,16 @@ bool LLAppearanceMgr::getCanReplaceCOF(const LLUUID& outfit_cat_id) return false; } - // Check whether the outfit contains the full set of body parts (shape+skin+hair+eyes). - return getCanMakeFolderIntoOutfit(outfit_cat_id); + // Check whether the outfit contains any wearables we aren't wearing already (STORM-702). + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + LLFindWearablesEx is_worn(/*is_worn=*/ false, /*include_body_parts=*/ true); + gInventory.collectDescendentsIf(outfit_cat_id, + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + is_worn); + return items.size() > 0; } void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category) -- cgit v1.2.3 From e3c5d6d553ca7d8441f94f45603a2e73d6968f3c Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Tue, 8 Mar 2011 17:17:26 -0800 Subject: SOCIAL-635 Hitting enter in viewer after selecting an avatar change causes another avatar change to be initiated --- indra/newview/llappearancemgr.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview/llappearancemgr.cpp') diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index f40fed5ad3..1cf552e42c 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -2979,6 +2979,9 @@ public: gAgent.setGenderChosen(TRUE); } + // release avatar picker keyboard focus + gFocusMgr.setKeyboardFocus( NULL ); + return true; } }; -- cgit v1.2.3