diff options
Diffstat (limited to 'indra/newview/llappearancemgr.cpp')
| -rw-r--r-- | indra/newview/llappearancemgr.cpp | 48 | 
1 files changed, 43 insertions, 5 deletions
| diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 61d60fdff9..8f4ce4498e 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -35,6 +35,7 @@  #include "llagent.h"  #include "llagentwearables.h"  #include "llappearancemgr.h" +#include "llcommandhandler.h"  #include "llfloatercustomize.h"  #include "llgesturemgr.h"  #include "llinventorybridge.h" @@ -47,6 +48,23 @@  #include "llviewerregion.h"  #include "llwearablelist.h" +// support for secondlife:///app/appearance SLapps +class LLAppearanceHandler : public LLCommandHandler +{ +public: +	// requests will be throttled from a non-trusted browser +	LLAppearanceHandler() : LLCommandHandler("appearance", UNTRUSTED_THROTTLE) {} + +	bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) +	{ +		// support secondlife:///app/appearance/show, but for now we just +		// make all secondlife:///app/appearance SLapps behave this way +		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD()); +		return true; +	} +}; +LLAppearanceHandler gAppearanceHandler; +  class LLWearInventoryCategoryCallback : public LLInventoryCallback  {  public: @@ -274,11 +292,11 @@ private:  struct LLFoundData  { -	LLFoundData() {} +	LLFoundData() : mAssetType(LLAssetType::AT_NONE), mWearable(NULL) {}  	LLFoundData(const LLUUID& item_id, -				const LLUUID& asset_id, -				const std::string& name, -				LLAssetType::EType asset_type) : +		    const LLUUID& asset_id, +		    const std::string& name, +		    LLAssetType::EType asset_type) :  		mItemID(item_id),  		mAssetID(asset_id),  		mName(name), @@ -428,7 +446,7 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)  	holder->mResolved += 1;  } -LLUUID LLAppearanceManager::getCOF() +const LLUUID LLAppearanceManager::getCOF() const  {  	return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);  } @@ -1311,3 +1329,23 @@ void LLAppearanceManager::linkRegisteredAttachments()  	}  	mRegisteredAttachments.clear();  } + +BOOL LLAppearanceManager::getIsInCOF(const LLUUID& obj_id) const +{ +	return gInventory.isObjectDescendentOf(obj_id, getCOF()); +} + +BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const +{ +	if (!getIsInCOF(obj_id)) return FALSE; +	const LLInventoryObject *obj = gInventory.getObject(obj_id); +	if (!obj) return FALSE; + +	// Can't delete bodyparts, since this would be equivalent to removing the item. +	if (obj->getType() == LLAssetType::AT_BODYPART) return TRUE; + +	// Can't delete the folder link, since this is saved for bookkeeping. +	if (obj->getActualType() == LLAssetType::AT_LINK_FOLDER) return TRUE; + +	return FALSE; +} | 
