diff options
148 files changed, 2653 insertions, 4941 deletions
| diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index f785698612..e7aaf3c984 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -50,7 +50,6 @@ set(llcommon_SOURCE_FILES      llfile.cpp      llfindlocale.cpp      llfixedbuffer.cpp -    llfoldertype.cpp      llformat.cpp      llframetimer.cpp      llheartbeat.cpp @@ -151,7 +150,6 @@ set(llcommon_HEADER_FILES      llfile.h      llfindlocale.h      llfixedbuffer.h -    llfoldertype.h      llformat.h      llframetimer.h      llhash.h diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp index 6d5b12d840..b2a92861cc 100644 --- a/indra/llcommon/llassettype.cpp +++ b/indra/llcommon/llassettype.cpp @@ -43,21 +43,30 @@  struct AssetEntry : public LLDictionaryEntry  {  	AssetEntry(const char *desc_name, -			   const char *type_name, 	// 8 character limit! -			   const char *human_name, 	// for decoding to human readable form; put any and as many printable characters you want in each one -			   bool can_link) 			// can you create a link to this type? +			   const char *type_name, // 8 character limit! +			   const char *human_name, // for decoding to human readable form; put any and as many printable characters you want in each one +			   const char *category_name, // used by llinventorymodel when creating new categories +			   EDragAndDropType dad_type, +			   bool can_link, // can you create a link to this type? +			   bool is_protected) // can the viewer change categories of this type?  		:  		LLDictionaryEntry(desc_name),  		mTypeName(type_name),  		mHumanName(human_name), -		mCanLink(can_link) +		mCategoryName(category_name), +		mDadType(dad_type), +		mCanLink(can_link), +		mIsProtected(is_protected)  	{  		llassert(strlen(mTypeName) <= 8);  	}  	const char *mTypeName;  	const char *mHumanName; +	const char *mCategoryName; +	EDragAndDropType mDadType;  	bool mCanLink; +	bool mIsProtected;  };  class LLAssetDictionary : public LLSingleton<LLAssetDictionary>, @@ -69,32 +78,48 @@ public:  LLAssetDictionary::LLAssetDictionary()  { -	//       												   DESCRIPTION			TYPE NAME	HUMAN NAME			CAN LINK?	 -	//      												  |--------------------|-----------|-------------------|-----------| -	addEntry(LLAssetType::AT_TEXTURE, 			new AssetEntry("TEXTURE",			"texture",	"texture",			FALSE)); -	addEntry(LLAssetType::AT_SOUND, 			new AssetEntry("SOUND",				"sound",	"sound",			FALSE)); -	addEntry(LLAssetType::AT_CALLINGCARD, 		new AssetEntry("CALLINGCARD",		"callcard",	"calling card",		FALSE)); -	addEntry(LLAssetType::AT_LANDMARK, 			new AssetEntry("LANDMARK",			"landmark",	"landmark",			FALSE)); -	addEntry(LLAssetType::AT_SCRIPT, 			new AssetEntry("SCRIPT",			"script",	"legacy script",	FALSE)); -	addEntry(LLAssetType::AT_CLOTHING, 			new AssetEntry("CLOTHING",			"clothing",	"clothing",			TRUE)); -	addEntry(LLAssetType::AT_OBJECT, 			new AssetEntry("OBJECT",			"object",	"object",			TRUE)); -	addEntry(LLAssetType::AT_NOTECARD, 			new AssetEntry("NOTECARD",			"notecard",	"note card",		FALSE)); -	addEntry(LLAssetType::AT_CATEGORY, 			new AssetEntry("CATEGORY",			"category",	"folder",			TRUE)); -	addEntry(LLAssetType::AT_LSL_TEXT, 			new AssetEntry("LSL_TEXT",			"lsltext",	"lsl2 script",		FALSE)); -	addEntry(LLAssetType::AT_LSL_BYTECODE, 		new AssetEntry("LSL_BYTECODE",		"lslbyte",	"lsl bytecode",		FALSE)); -	addEntry(LLAssetType::AT_TEXTURE_TGA, 		new AssetEntry("TEXTURE_TGA",		"txtr_tga",	"tga texture",		FALSE)); -	addEntry(LLAssetType::AT_BODYPART, 			new AssetEntry("BODYPART",			"bodypart",	"body part",		TRUE)); -	addEntry(LLAssetType::AT_SOUND_WAV, 		new AssetEntry("SOUND_WAV",			"snd_wav",	"sound",			FALSE)); -	addEntry(LLAssetType::AT_IMAGE_TGA, 		new AssetEntry("IMAGE_TGA",			"img_tga",	"targa image",		FALSE)); -	addEntry(LLAssetType::AT_IMAGE_JPEG, 		new AssetEntry("IMAGE_JPEG",		"jpeg",		"jpeg image",		FALSE)); -	addEntry(LLAssetType::AT_ANIMATION, 		new AssetEntry("ANIMATION",			"animatn",	"animation",		FALSE)); -	addEntry(LLAssetType::AT_GESTURE, 			new AssetEntry("GESTURE",			"gesture",	"gesture",			TRUE)); -	addEntry(LLAssetType::AT_SIMSTATE, 			new AssetEntry("SIMSTATE",			"simstate",	"simstate",			FALSE)); - -	addEntry(LLAssetType::AT_LINK, 				new AssetEntry("LINK",				"link",		"symbolic link",	FALSE)); -	addEntry(LLAssetType::AT_LINK_FOLDER, 		new AssetEntry("FOLDER_LINK",		"link_f", 	"symbolic folder link", FALSE)); - -	addEntry(LLAssetType::AT_NONE, 				new AssetEntry("NONE",				"-1",		NULL,		  		FALSE)); +	//       												   DESCRIPTION			TYPE NAME	HUMAN NAME			CATEGORY NAME 		DRAG&DROP		CAN LINK?	PROTECTED? +	//      												  |--------------------|-----------|-------------------|-------------------|---------------|-----------|-----------| +	addEntry(LLAssetType::AT_TEXTURE, 			new AssetEntry("TEXTURE",			"texture",	"texture",			"Textures", 		DAD_TEXTURE,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_SOUND, 			new AssetEntry("SOUND",				"sound",	"sound",			"Sounds", 			DAD_SOUND,		TRUE,		TRUE)); +	addEntry(LLAssetType::AT_CALLINGCARD, 		new AssetEntry("CALLINGCARD",		"callcard",	"calling card",		"Calling Cards", 	DAD_CALLINGCARD, TRUE,		TRUE)); +	addEntry(LLAssetType::AT_LANDMARK, 			new AssetEntry("LANDMARK",			"landmark",	"landmark",			"Landmarks", 		DAD_LANDMARK,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_SCRIPT, 			new AssetEntry("SCRIPT",			"script",	"legacy script",	"Scripts", 			DAD_NONE,		TRUE,		TRUE)); +	addEntry(LLAssetType::AT_CLOTHING, 			new AssetEntry("CLOTHING",			"clothing",	"clothing",			"Clothing", 		DAD_CLOTHING,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_OBJECT, 			new AssetEntry("OBJECT",			"object",	"object",			"Objects", 			DAD_OBJECT,		TRUE,		TRUE)); +	addEntry(LLAssetType::AT_NOTECARD, 			new AssetEntry("NOTECARD",			"notecard",	"note card",		"Notecards", 		DAD_NOTECARD,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_CATEGORY, 			new AssetEntry("CATEGORY",			"category",	"folder",			"New Folder", 		DAD_CATEGORY,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_ROOT_CATEGORY, 	new AssetEntry("ROOT_CATEGORY",		"root",		"root",				"Inventory", 		DAD_ROOT_CATEGORY, TRUE,	TRUE)); +	addEntry(LLAssetType::AT_LSL_TEXT, 			new AssetEntry("LSL_TEXT",			"lsltext",	"lsl2 script",		"Scripts", 			DAD_SCRIPT,		TRUE,		TRUE)); +	addEntry(LLAssetType::AT_LSL_BYTECODE, 		new AssetEntry("LSL_BYTECODE",		"lslbyte",	"lsl bytecode",		"Scripts", 			DAD_NONE,		TRUE,		TRUE)); +	addEntry(LLAssetType::AT_TEXTURE_TGA, 		new AssetEntry("TEXTURE_TGA",		"txtr_tga",	"tga texture",		"Uncompressed Images", DAD_NONE,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_BODYPART, 			new AssetEntry("BODYPART",			"bodypart",	"body part",		"Body Parts", 		DAD_BODYPART,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_TRASH, 			new AssetEntry("TRASH",				"trash",	"trash",			"Trash", 			DAD_NONE,		FALSE,		TRUE)); +	addEntry(LLAssetType::AT_SNAPSHOT_CATEGORY, new AssetEntry("SNAPSHOT_CATEGORY", "snapshot",	"snapshot",			"Photo Album", 		DAD_NONE,		FALSE,		TRUE)); +	addEntry(LLAssetType::AT_LOST_AND_FOUND, 	new AssetEntry("LOST_AND_FOUND", 	"lstndfnd",	"lost and found",	"Lost And Found", 	DAD_NONE,		FALSE,		TRUE)); +	addEntry(LLAssetType::AT_SOUND_WAV, 		new AssetEntry("SOUND_WAV",			"snd_wav",	"sound",			"Uncompressed SoundS", DAD_NONE,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_IMAGE_TGA, 		new AssetEntry("IMAGE_TGA",			"img_tga",	"targa image",		"Uncompressed Images", DAD_NONE,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_IMAGE_JPEG, 		new AssetEntry("IMAGE_JPEG",		"jpeg",		"jpeg image",		"Uncompressed Images", DAD_NONE,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_ANIMATION, 		new AssetEntry("ANIMATION",			"animatn",	"animation",		"Animations", 		DAD_ANIMATION,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_GESTURE, 			new AssetEntry("GESTURE",			"gesture",	"gesture",			"Gestures", 		DAD_GESTURE,	TRUE,		TRUE)); +	addEntry(LLAssetType::AT_SIMSTATE, 			new AssetEntry("SIMSTATE",			"simstate",	"simstate",			"New Folder", 		DAD_NONE,		FALSE,		TRUE)); +	addEntry(LLAssetType::AT_FAVORITE, 			new AssetEntry("FAVORITE",			"favorite",	"favorite",			"favorite", 		DAD_NONE,		FALSE,		TRUE)); + +	addEntry(LLAssetType::AT_LINK, 				new AssetEntry("LINK",				"link",		"symbolic link",	"Link", 			DAD_LINK,		FALSE,		TRUE)); +	addEntry(LLAssetType::AT_LINK_FOLDER, 		new AssetEntry("FOLDER_LINK",		"link_f", 	"symbolic folder link", "New Folder", 	DAD_LINK,		FALSE,		TRUE)); + +	for (S32 ensemble_num = S32(LLAssetType::AT_FOLDER_ENSEMBLE_START);  +		 ensemble_num <= S32(LLAssetType::AT_FOLDER_ENSEMBLE_END);  +		 ensemble_num++) +	{ +		addEntry(LLAssetType::EType(ensemble_num), new AssetEntry("ENSEMBLE",		"ensemble", "ensemble", 		"New Folder", 		DAD_CATEGORY,	FALSE,		FALSE));  +	} + +	addEntry(LLAssetType::AT_CURRENT_OUTFIT, 	new AssetEntry("CURRENT",			"current",	"current outfit",	"Current Look", 	DAD_CATEGORY,	FALSE,		TRUE)); +	addEntry(LLAssetType::AT_OUTFIT, 			new AssetEntry("OUTFIT",			"outfit",	"outfit",			"New Look", 		DAD_CATEGORY,	FALSE,		FALSE)); +	addEntry(LLAssetType::AT_MY_OUTFITS, 		new AssetEntry("MY_OUTFITS",		"my_otfts",	"my outfits",		"My Looks", 		DAD_CATEGORY,	FALSE,		TRUE)); +		  +	addEntry(LLAssetType::AT_NONE, 				new AssetEntry("NONE",				"-1",		NULL,		  		"New Folder", 		DAD_NONE,		FALSE,		FALSE));  };  // static @@ -115,7 +140,8 @@ const std::string &LLAssetType::getDesc(LLAssetType::EType asset_type)  	}  	else  	{ -		return badLookup(); +		static const std::string error_string = "BAD TYPE"; +		return error_string;  	}  } @@ -130,7 +156,7 @@ const char *LLAssetType::lookup(LLAssetType::EType asset_type)  	}  	else  	{ -		return badLookup().c_str(); +		return "-1";  	}  } @@ -140,7 +166,6 @@ LLAssetType::EType LLAssetType::lookup(const char* name)  	return lookup(ll_safe_string(name));  } -// static  LLAssetType::EType LLAssetType::lookup(const std::string& type_name)  {  	const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); @@ -168,7 +193,7 @@ const char *LLAssetType::lookupHumanReadable(LLAssetType::EType asset_type)  	}  	else  	{ -		return badLookup().c_str(); +		return NULL;  	}  } @@ -178,7 +203,6 @@ LLAssetType::EType LLAssetType::lookupHumanReadable(const char* name)  	return lookupHumanReadable(ll_safe_string(name));  } -// static  LLAssetType::EType LLAssetType::lookupHumanReadable(const std::string& readable_name)  {  	const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); @@ -196,6 +220,32 @@ LLAssetType::EType LLAssetType::lookupHumanReadable(const std::string& readable_  }  // static +const char *LLAssetType::lookupCategoryName(LLAssetType::EType asset_type) +{ +	const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); +	const AssetEntry *entry = dict->lookup(asset_type); +	if (entry) +	{ +		return entry->mCategoryName; +	} +	else +	{ +		return "New Folder"; +	} +} + +// static +EDragAndDropType LLAssetType::lookupDragAndDropType(EType asset_type) +{ +	const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); +	const AssetEntry *entry = dict->lookup(asset_type); +	if (entry) +		return entry->mDadType; +	else +		return DAD_NONE; +} + +// static  bool LLAssetType::lookupCanLink(EType asset_type)  {  	const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); @@ -219,9 +269,37 @@ bool LLAssetType::lookupIsLinkType(EType asset_type)  }  // static -const std::string &LLAssetType::badLookup() +// Only ensembles and plain folders aren't protected.  "Protected" means +// you can't change certain properties such as their type. +bool LLAssetType::lookupIsProtectedCategoryType(EType asset_type)  { -	static const std::string sBadLookup = "llassettype_bad_lookup"; -	return sBadLookup; +	const LLAssetDictionary *dict = LLAssetDictionary::getInstance(); +	const AssetEntry *entry = dict->lookup(asset_type); +	if (entry) +	{ +		return entry->mIsProtected; +	} +	return true; +} +// static +bool LLAssetType::lookupIsEnsembleCategoryType(EType asset_type) +{ +	return (asset_type >= AT_FOLDER_ENSEMBLE_START && +			asset_type <= AT_FOLDER_ENSEMBLE_END); +} + + +// static. Generate a good default description +void LLAssetType::generateDescriptionFor(LLAssetType::EType asset_type, +										 std::string& description) +{ +	const S32 BUF_SIZE = 30; +	char time_str[BUF_SIZE];	/* Flawfinder: ignore */ +	time_t now; +	time(&now); +	memset(time_str, '\0', BUF_SIZE); +	strftime(time_str, BUF_SIZE - 1, "%Y-%m-%d %H:%M:%S ", localtime(&now)); +	description.assign(time_str); +	description.append(LLAssetType::lookupHumanReadable(asset_type));  } diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h index ec2290d30e..3c760e4d91 100644 --- a/indra/llcommon/llassettype.h +++ b/indra/llcommon/llassettype.h @@ -94,6 +94,18 @@ public:  		AT_BODYPART = 13,  			// A collection of textures and parameters that can be worn by an avatar. +		AT_TRASH = 14, +			// Only to be used as a marker for a category preferred type.  +			// Using this, we can throw things in the trash before completely deleting. + +		AT_SNAPSHOT_CATEGORY = 15, +			// A marker for a folder meant for snapshots.  +			// No actual assets will be snapshots, though if there were, you +			// could interpret them as textures. + +		AT_LOST_AND_FOUND = 16, +			// Used to stuff lost&found items into. +  		AT_SOUND_WAV = 17,  			// Uncompressed sound. @@ -114,22 +126,38 @@ public:  		AT_SIMSTATE = 22,  			// Simstate file. +		AT_FAVORITE = 23, +			// favorite items +  		AT_LINK = 24,  			// Inventory symbolic link  		AT_LINK_FOLDER = 25,  			// Inventory folder link + +		AT_FOLDER_ENSEMBLE_START = 26, +		AT_FOLDER_ENSEMBLE_END = 45, +			// This range is reserved for special clothing folder types. + +		AT_CURRENT_OUTFIT = 46, +			// Current outfit + +		AT_OUTFIT = 47, +			// Predefined outfit ("look") + +		AT_MY_OUTFITS = 48, +			// Folder that holds your outfits. + -		AT_COUNT = 26, +		AT_COUNT = 49,  			// +*********************************************************+  			// |  TO ADD AN ELEMENT TO THIS ENUM:                        |  			// +*********************************************************+  			// | 1. INSERT BEFORE AT_COUNT                               |  			// | 2. INCREMENT AT_COUNT BY 1                              | -			// | 3. ADD TO LLAssetType.cpp                               | -			// | 4. ADD TO LLViewerAssetType.cpp                         | -			// | 5. ADD TO DEFAULT_ASSET_FOR_INV in LLInventoryType.cpp  | +			// | 3. ADD TO LLAssetDictionary in LLAssetType.cpp          | +			// | 3. ADD TO DEFAULT_ASSET_FOR_INV in LLInventoryType.cpp  |  			// +*********************************************************+  		AT_NONE = -1 @@ -145,17 +173,33 @@ public:  	static EType 				lookupHumanReadable(const std::string& readable_name);  	static const char*			lookupHumanReadable(EType asset_type); +	// Generate a good default description. You may want to add a verb +	// or agent name after this depending on your application. +	static void 				generateDescriptionFor(LLAssetType::EType asset_type, +													   std::string& description); +  	static EType 				getType(const std::string& desc_name);  	static const std::string&	getDesc(EType asset_type); +	static EDragAndDropType   	lookupDragAndDropType(EType asset_type);  	static bool 				lookupCanLink(EType asset_type);  	static bool 				lookupIsLinkType(EType asset_type); -	static const std::string&	badLookup(); // error string when a lookup fails - -protected: -	LLAssetType() {} -	~LLAssetType() {} +	static const char*  		lookupCategoryName(EType asset_type); +	static bool 				lookupIsProtectedCategoryType(EType asset_type); +	static bool 				lookupIsEnsembleCategoryType(EType asset_type); + +	/* TODO: Change return types from "const char *" to "const std::string &". +	This is fairly straightforward, but requires changing some calls to use .c_str(). +	e.g.: +	-	fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType)); +	+	fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType).c_str()); +	*/ +	 +private: +	// don't instantiate or derive one of these objects +	LLAssetType( void ) {} +	~LLAssetType( void ) {}  };  #endif // LL_LLASSETTYPE_H diff --git a/indra/llcommon/llfoldertype.cpp b/indra/llcommon/llfoldertype.cpp deleted file mode 100644 index 9107b11597..0000000000 --- a/indra/llcommon/llfoldertype.cpp +++ /dev/null @@ -1,165 +0,0 @@ -/**  - * @file llfoldertype.cpp - * @brief Implementatino of LLFolderType functionality. - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - *  - * Copyright (c) 2001-2009, Linden Research, Inc. - *  - * 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 - *  - * 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 - *  - * 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. - *  - * 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$ - */ - -#include "linden_common.h" - -#include "llfoldertype.h" -#include "lldictionary.h" -#include "llmemory.h" -#include "llsingleton.h" - -///---------------------------------------------------------------------------- -/// Class LLFolderType -///---------------------------------------------------------------------------- -struct FolderEntry : public LLDictionaryEntry -{ -	FolderEntry(const std::string &type_name, // 8 character limit! -				bool is_protected) // can the viewer change categories of this type? -		: -	LLDictionaryEntry(type_name), -	mIsProtected(is_protected) -	{ -		llassert(type_name.length() <= 8); -	} - -	const bool mIsProtected; -}; - -class LLFolderDictionary : public LLSingleton<LLFolderDictionary>, -						   public LLDictionary<LLFolderType::EType, FolderEntry> -{ -public: -	LLFolderDictionary(); -}; - -LLFolderDictionary::LLFolderDictionary() -{ -	//       													    TYPE NAME	PROTECTED -	//      													   |-----------|---------| -	addEntry(LLFolderType::FT_TEXTURE, 				new FolderEntry("texture",	TRUE)); -	addEntry(LLFolderType::FT_SOUND, 				new FolderEntry("sound",	TRUE)); -	addEntry(LLFolderType::FT_CALLINGCARD, 			new FolderEntry("callcard",	TRUE)); -	addEntry(LLFolderType::FT_LANDMARK, 			new FolderEntry("landmark",	TRUE)); -	addEntry(LLFolderType::FT_CLOTHING, 			new FolderEntry("clothing",	TRUE)); -	addEntry(LLFolderType::FT_OBJECT, 				new FolderEntry("object",	TRUE)); -	addEntry(LLFolderType::FT_NOTECARD, 			new FolderEntry("notecard",	TRUE)); -	addEntry(LLFolderType::FT_CATEGORY, 			new FolderEntry("category",	TRUE)); -	addEntry(LLFolderType::FT_ROOT_CATEGORY, 		new FolderEntry("root",		TRUE)); -	addEntry(LLFolderType::FT_LSL_TEXT, 			new FolderEntry("lsltext",	TRUE)); -	addEntry(LLFolderType::FT_BODYPART, 			new FolderEntry("bodypart",	TRUE)); -	addEntry(LLFolderType::FT_TRASH, 				new FolderEntry("trash",	TRUE)); -	addEntry(LLFolderType::FT_SNAPSHOT_CATEGORY, 	new FolderEntry("snapshot", TRUE)); -	addEntry(LLFolderType::FT_LOST_AND_FOUND, 		new FolderEntry("lstndfnd",	TRUE)); -	addEntry(LLFolderType::FT_ANIMATION, 			new FolderEntry("animatn",	TRUE)); -	addEntry(LLFolderType::FT_GESTURE, 				new FolderEntry("gesture",	TRUE)); -	addEntry(LLFolderType::FT_FAVORITE, 			new FolderEntry("favorite",	TRUE)); -	 -	for (S32 ensemble_num = S32(LLFolderType::FT_ENSEMBLE_START); ensemble_num <= S32(LLFolderType::FT_ENSEMBLE_END); ensemble_num++) -	{ -		addEntry(LLFolderType::EType(ensemble_num), new FolderEntry("ensemble", FALSE));  -	} - -	addEntry(LLFolderType::FT_CURRENT_OUTFIT, 		new FolderEntry("current",	TRUE)); -	addEntry(LLFolderType::FT_OUTFIT, 				new FolderEntry("outfit",	FALSE)); -	addEntry(LLFolderType::FT_MY_OUTFITS, 			new FolderEntry("my_otfts",	TRUE)); -	addEntry(LLFolderType::FT_INBOX, 				new FolderEntry("inbox",	TRUE)); -		  -	addEntry(LLFolderType::FT_NONE, 				new FolderEntry("-1",		FALSE)); -}; - -// static -LLFolderType::EType LLFolderType::lookup(const std::string& name) -{ -	return LLFolderDictionary::getInstance()->lookup(name); -} - -// static -const std::string &LLFolderType::lookup(LLFolderType::EType folder_type) -{ -	const FolderEntry *entry = LLFolderDictionary::getInstance()->lookup(folder_type); -	if (entry) -	{ -		return entry->mName; -	} -	else -	{ -		return badLookup(); -	} -} - -// static -// Only ensembles and plain folders aren't protected.  "Protected" means -// you can't change certain properties such as their type. -bool LLFolderType::lookupIsProtectedType(EType folder_type) -{ -	const LLFolderDictionary *dict = LLFolderDictionary::getInstance(); -	const FolderEntry *entry = dict->lookup(folder_type); -	if (entry) -	{ -		return entry->mIsProtected; -	} -	return true; -} - -// static -bool LLFolderType::lookupIsEnsembleType(EType folder_type) -{ -	return (folder_type >= FT_ENSEMBLE_START && -			folder_type <= FT_ENSEMBLE_END); -} - -// static -LLAssetType::EType LLFolderType::folderTypeToAssetType(LLFolderType::EType folder_type) -{ -	if (LLAssetType::lookup(LLAssetType::EType(folder_type)) == LLAssetType::badLookup()) -	{ -		llwarns << "Converting to unknown asset type " << folder_type << llendl; -	} -	return (LLAssetType::EType)folder_type; -} - -// static -LLFolderType::EType LLFolderType::assetTypeToFolderType(LLAssetType::EType asset_type) -{ -	if (LLFolderType::lookup(LLFolderType::EType(asset_type)) == LLFolderType::badLookup()) -	{ -		llwarns << "Converting to unknown folder type " << asset_type << llendl; -	} -	return (LLFolderType::EType)asset_type; -} - -// static -const std::string &LLFolderType::badLookup() -{ -	static const std::string sBadLookup = "llfoldertype_bad_lookup"; -	return sBadLookup; -} diff --git a/indra/llcommon/llfoldertype.h b/indra/llcommon/llfoldertype.h deleted file mode 100644 index 5374ffd829..0000000000 --- a/indra/llcommon/llfoldertype.h +++ /dev/null @@ -1,123 +0,0 @@ -/**  - * @file llfoldertype.h - * @brief Declaration of LLFolderType. - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - *  - * Copyright (c) 2001-2009, Linden Research, Inc. - *  - * 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 - *  - * 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 - *  - * 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. - *  - * 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$ - */ - -#ifndef LL_LLFOLDERTYPE_H -#define LL_LLFOLDERTYPE_H - -#include <string> -#include "llassettype.h" - -// This class handles folder types (similar to assettype, except for folders) -// and operations on those. -class LL_COMMON_API LLFolderType -{ -public: -	// ! BACKWARDS COMPATIBILITY ! Folder type enums must match asset type enums. -	enum EType -	{ -		FT_TEXTURE = 0, - -		FT_SOUND = 1,  - -		FT_CALLINGCARD = 2, - -		FT_LANDMARK = 3, - -		// FT_SCRIPT = 4, - -		FT_CLOTHING = 5, - -		FT_OBJECT = 6, - -		FT_NOTECARD = 7, - -		FT_CATEGORY = 8, - -		FT_ROOT_CATEGORY = 9, - -		FT_LSL_TEXT = 10, - -		// FT_LSL_BYTECODE = 11, -		// FT_TEXTURE_TGA = 12, - -		FT_BODYPART = 13, - -		FT_TRASH = 14, - -		FT_SNAPSHOT_CATEGORY = 15, - -		FT_LOST_AND_FOUND = 16, - -		// FT_SOUND_WAV = 17, -		// FT_IMAGE_TGA = 18, -		// FT_IMAGE_JPEG = 19, - -		FT_ANIMATION = 20, - -		FT_GESTURE = 21, - -		// FT_SIMSTATE = 22, - -		FT_FAVORITE = 23, - -		FT_ENSEMBLE_START = 26, -		FT_ENSEMBLE_END = 45, -			// This range is reserved for special clothing folder types. - -		FT_CURRENT_OUTFIT = 46, -		FT_OUTFIT = 47, -		FT_MY_OUTFITS = 48, -		 -		FT_INBOX = 49, - -		FT_COUNT = 50, - -		FT_NONE = -1 -	}; - -	static EType 				lookup(const std::string& type_name); -	static const std::string&	lookup(EType folder_type); - -	static bool 				lookupIsProtectedType(EType folder_type); -	static bool 				lookupIsEnsembleType(EType folder_type); - -	static LLAssetType::EType	folderTypeToAssetType(LLFolderType::EType folder_type); -	static LLFolderType::EType	assetTypeToFolderType(LLAssetType::EType asset_type); - -	static const std::string&	badLookup(); // error string when a lookup fails - -protected: -	LLFolderType() {} -	~LLFolderType() {} -}; - -#endif // LL_LLFOLDERTYPE_H diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp index d665deb605..5d3fbe5128 100644 --- a/indra/llinventory/llinventory.cpp +++ b/indra/llinventory/llinventory.cpp @@ -1324,7 +1324,7 @@ BOOL item_date_sort( LLInventoryItem* a, LLInventoryItem* b )  LLInventoryCategory::LLInventoryCategory(  	const LLUUID& uuid,  	const LLUUID& parent_uuid, -	LLFolderType::EType preferred_type, +	LLAssetType::EType preferred_type,  	const std::string& name) :  	LLInventoryObject(uuid, parent_uuid, LLAssetType::AT_CATEGORY, name),  	mPreferredType(preferred_type) @@ -1332,7 +1332,7 @@ LLInventoryCategory::LLInventoryCategory(  }  LLInventoryCategory::LLInventoryCategory() : -	mPreferredType(LLFolderType::FT_NONE) +	mPreferredType(LLAssetType::AT_NONE)  {  	mType = LLAssetType::AT_CATEGORY;  } @@ -1354,12 +1354,12 @@ void LLInventoryCategory::copyCategory(const LLInventoryCategory* other)  	mPreferredType = other->mPreferredType;  } -LLFolderType::EType LLInventoryCategory::getPreferredType() const +LLAssetType::EType LLInventoryCategory::getPreferredType() const  {  	return mPreferredType;  } -void LLInventoryCategory::setPreferredType(LLFolderType::EType type) +void LLInventoryCategory::setPreferredType(LLAssetType::EType type)  {  	mPreferredType = type;  } @@ -1405,13 +1405,13 @@ bool LLInventoryCategory::fromLLSD(const LLSD& sd)      if (sd.has(w))      {          S8 type = (U8)sd[w].asInteger(); -        mPreferredType = static_cast<LLFolderType::EType>(type); +        mPreferredType = static_cast<LLAssetType::EType>(type);      }  	w = INV_ASSET_TYPE_LABEL_WS;  	if (sd.has(w))  	{  		S8 type = (U8)sd[w].asInteger(); -        mPreferredType = static_cast<LLFolderType::EType>(type); +        mPreferredType = static_cast<LLAssetType::EType>(type);  	}      w = INV_NAME_LABEL; @@ -1433,7 +1433,7 @@ void LLInventoryCategory::unpackMessage(LLMessageSystem* msg,  	msg->getUUIDFast(block, _PREHASH_ParentID, mParentUUID, block_num);  	S8 type;  	msg->getS8Fast(block, _PREHASH_Type, type, block_num); -	mPreferredType = static_cast<LLFolderType::EType>(type); +	mPreferredType = static_cast<LLAssetType::EType>(type);  	msg->getStringFast(block, _PREHASH_Name, mName, block_num);  	LLStringUtil::replaceNonstandardASCII(mName, ' ');  } @@ -1482,7 +1482,7 @@ BOOL LLInventoryCategory::importFile(LLFILE* fp)  		}  		else if(0 == strcmp("pref_type", keyword))  		{ -			mPreferredType = LLFolderType::lookup(valuestr); +			mPreferredType = LLAssetType::lookup(valuestr);  		}  		else if(0 == strcmp("name", keyword))  		{ @@ -1514,7 +1514,7 @@ BOOL LLInventoryCategory::exportFile(LLFILE* fp, BOOL) const  	mParentUUID.toString(uuid_str);  	fprintf(fp, "\t\tparent_id\t%s\n", uuid_str.c_str());  	fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType)); -	fprintf(fp, "\t\tpref_type\t%s\n", LLFolderType::lookup(mPreferredType).c_str()); +	fprintf(fp, "\t\tpref_type\t%s\n", LLAssetType::lookup(mPreferredType));  	fprintf(fp, "\t\tname\t%s|\n", mName.c_str());  	fprintf(fp,"\t}\n");  	return TRUE; @@ -1561,7 +1561,7 @@ BOOL LLInventoryCategory::importLegacyStream(std::istream& input_stream)  		}  		else if(0 == strcmp("pref_type", keyword))  		{ -			mPreferredType = LLFolderType::lookup(valuestr); +			mPreferredType = LLAssetType::lookup(valuestr);  		}  		else if(0 == strcmp("name", keyword))  		{ @@ -1593,7 +1593,7 @@ BOOL LLInventoryCategory::exportLegacyStream(std::ostream& output_stream, BOOL)  	mParentUUID.toString(uuid_str);  	output_stream << "\t\tparent_id\t" << uuid_str << "\n";  	output_stream << "\t\ttype\t" << LLAssetType::lookup(mType) << "\n"; -	output_stream << "\t\tpref_type\t" << LLFolderType::lookup(mPreferredType) << "\n"; +	output_stream << "\t\tpref_type\t" << LLAssetType::lookup(mPreferredType) << "\n";  	output_stream << "\t\tname\t" << mName.c_str() << "|\n";  	output_stream << "\t}\n";  	return TRUE; @@ -1629,6 +1629,38 @@ LLSD ll_create_sd_from_inventory_item(LLPointer<LLInventoryItem> item)  	return rv;  } +/* deprecated, use LLInventoryItem::fromLLSD() instead +LLPointer<LLInventoryItem> ll_create_item_from_sd(const LLSD& sd_item) +{ +	LLPointer<LLInventoryItem> rv = new LLInventoryItem; +	rv->setUUID(sd_item[INV_ITEM_ID_LABEL].asUUID()); +	rv->setParent(sd_item[INV_PARENT_ID_LABEL].asUUID()); +	rv->rename(sd_item[INV_NAME_LABEL].asString()); +	rv->setType( +		LLAssetType::lookup(sd_item[INV_ASSET_TYPE_LABEL].asString())); +	if (sd_item.has("shadow_id")) +	{ +		LLUUID asset_id = sd_item["shadow_id"]; +		LLXORCipher cipher(MAGIC_ID.mData, UUID_BYTES); +		cipher.decrypt(asset_id.mData, UUID_BYTES); +		rv->setAssetUUID(asset_id); +	} +	if (sd_item.has(INV_ASSET_ID_LABEL)) +	{ +		rv->setAssetUUID(sd_item[INV_ASSET_ID_LABEL].asUUID()); +	} +	rv->setDescription(sd_item[INV_DESC_LABEL].asString()); +	rv->setSaleInfo(ll_sale_info_from_sd(sd_item[INV_SALE_INFO_LABEL])); +	rv->setPermissions(ll_permissions_from_sd(sd_item[INV_PERMISSIONS_LABEL])); +	rv->setInventoryType( +		LLInventoryType::lookup( +			sd_item[INV_INVENTORY_TYPE_LABEL].asString())); +	rv->setFlags((U32)(sd_item[INV_FLAGS_LABEL].asInteger())); +	rv->setCreationDate(sd_item[INV_CREATION_DATE_LABEL].asInteger()); +	return rv; +} +*/ +  LLSD ll_create_sd_from_inventory_category(LLPointer<LLInventoryCategory> cat)  {  	LLSD rv; @@ -1643,10 +1675,10 @@ LLSD ll_create_sd_from_inventory_category(LLPointer<LLInventoryCategory> cat)  	rv[INV_PARENT_ID_LABEL] = cat->getParentUUID();  	rv[INV_NAME_LABEL] = cat->getName();  	rv[INV_ASSET_TYPE_LABEL] = LLAssetType::lookup(cat->getType()); -	if(LLFolderType::lookupIsProtectedType(cat->getPreferredType())) +	if(LLAssetType::lookupIsProtectedCategoryType(cat->getPreferredType()))  	{  		rv[INV_PREFERRED_TYPE_LABEL] = -			LLFolderType::lookup(cat->getPreferredType()).c_str(); +			LLAssetType::lookup(cat->getPreferredType());  	}  	return rv;  } @@ -1660,7 +1692,7 @@ LLPointer<LLInventoryCategory> ll_create_category_from_sd(const LLSD& sd_cat)  	rv->setType(  		LLAssetType::lookup(sd_cat[INV_ASSET_TYPE_LABEL].asString()));  	rv->setPreferredType( -			LLFolderType::lookup( -				sd_cat[INV_PREFERRED_TYPE_LABEL].asString())); +		LLAssetType::lookup( +			sd_cat[INV_PREFERRED_TYPE_LABEL].asString()));  	return rv;  } diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h index 3de9d14f54..bd581e860f 100644 --- a/indra/llinventory/llinventory.h +++ b/indra/llinventory/llinventory.h @@ -37,7 +37,6 @@  #include "llassetstorage.h"  #include "lldarray.h" -#include "llfoldertype.h"  #include "llinventorytype.h"  #include "llmemtype.h"  #include "llpermissions.h" @@ -322,15 +321,15 @@ protected:  public:  	MEM_TYPE_NEW(LLMemType::MTYPE_INVENTORY);  	LLInventoryCategory(const LLUUID& uuid, const LLUUID& parent_uuid, -						LLFolderType::EType preferred_type, +						LLAssetType::EType preferred_type,  						const std::string& name);  	LLInventoryCategory();  	LLInventoryCategory(const LLInventoryCategory* other);  	void copyCategory(const LLInventoryCategory* other); // LLRefCount requires custom copy  	// accessors and mutators -	LLFolderType::EType getPreferredType() const; -	void setPreferredType(LLFolderType::EType type); +	LLAssetType::EType getPreferredType() const; +	void setPreferredType(LLAssetType::EType type);  	// For messaging system support  	virtual void packMessage(LLMessageSystem* msg) const;  	virtual void unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0); @@ -346,8 +345,10 @@ public:  	virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;  protected: -	// May be the type that this category was "meant" to hold (although it may hold any type).	 -	LLFolderType::EType	mPreferredType;		 +	// The type of asset that this category was "meant" to hold +	// (although it may in fact hold any type). +	LLAssetType::EType	mPreferredType;		 +  }; diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp index 0e71c0d12d..a445466b26 100644 --- a/indra/llinventory/llinventorytype.cpp +++ b/indra/llinventory/llinventorytype.cpp @@ -79,16 +79,24 @@ LLInventoryDictionary::LLInventoryDictionary()  	addEntry(LLInventoryType::IT_SOUND,               new InventoryEntry("sound",     "sound",         1, LLAssetType::AT_SOUND));  	addEntry(LLInventoryType::IT_CALLINGCARD,         new InventoryEntry("callcard",  "calling card",  1, LLAssetType::AT_CALLINGCARD));  	addEntry(LLInventoryType::IT_LANDMARK,            new InventoryEntry("landmark",  "landmark",      1, LLAssetType::AT_LANDMARK)); +	//addEntry(LLInventoryType::IT_SCRIPT,            new InventoryEntry(NULL,NULL)); +	//addEntry(LLInventoryType::IT_CLOTHING,          new InventoryEntry(NULL,NULL));  	addEntry(LLInventoryType::IT_OBJECT,              new InventoryEntry("object",    "object",        1, LLAssetType::AT_OBJECT));  	addEntry(LLInventoryType::IT_NOTECARD,            new InventoryEntry("notecard",  "note card",     1, LLAssetType::AT_NOTECARD));  	addEntry(LLInventoryType::IT_CATEGORY,            new InventoryEntry("category",  "folder"         ));  	addEntry(LLInventoryType::IT_ROOT_CATEGORY,       new InventoryEntry("root",      "root"           ));  	addEntry(LLInventoryType::IT_LSL,                 new InventoryEntry("script",    "script",        2, LLAssetType::AT_LSL_TEXT, LLAssetType::AT_LSL_BYTECODE)); +	//addEntry(LLInventoryType::IT_LSL_BYTECODE,      new InventoryEntry(NULL,NULL)); +	//addEntry(LLInventoryType::IT_TEXTURE_TGA,       new InventoryEntry(NULL,NULL)); +	//addEntry(LLInventoryType::IT_BODYPART,          new InventoryEntry(NULL,NULL)); +	//addEntry(LLInventoryType::IT_TRASH,             new InventoryEntry(NULL,NULL));  	addEntry(LLInventoryType::IT_SNAPSHOT,            new InventoryEntry("snapshot",  "snapshot",      1, LLAssetType::AT_TEXTURE)); +	//addEntry(LLInventoryType::IT_LOST_AND_FOUND,    new InventoryEntry(NULL,NULL, ));  	addEntry(LLInventoryType::IT_ATTACHMENT,          new InventoryEntry("attach",    "attachment",    1, LLAssetType::AT_OBJECT));  	addEntry(LLInventoryType::IT_WEARABLE,            new InventoryEntry("wearable",  "wearable",      2, LLAssetType::AT_CLOTHING, LLAssetType::AT_BODYPART));  	addEntry(LLInventoryType::IT_ANIMATION,           new InventoryEntry("animation", "animation",     1, LLAssetType::AT_ANIMATION));    	addEntry(LLInventoryType::IT_GESTURE,             new InventoryEntry("gesture",   "gesture",       1, LLAssetType::AT_GESTURE));  +	addEntry(LLInventoryType::IT_FAVORITE,            new InventoryEntry("favorite",  "favorite",      1, LLAssetType::AT_FAVORITE));   } @@ -120,9 +128,35 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] =  	LLInventoryType::IT_ANIMATION,		// AT_ANIMATION  	LLInventoryType::IT_GESTURE,		// AT_GESTURE  	LLInventoryType::IT_NONE,			// AT_SIMSTATE +	LLInventoryType::IT_FAVORITE,		// AT_FAVORITE  	LLInventoryType::IT_NONE,			// AT_LINK  	LLInventoryType::IT_NONE,			// AT_LINK_FOLDER + +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE +	LLInventoryType::IT_CATEGORY,		// AT_ENSEMBLE + +	LLInventoryType::IT_CATEGORY,		// AT_CURRENT_OUTFIT +	LLInventoryType::IT_CATEGORY,		// AT_OUTFIT +	LLInventoryType::IT_CATEGORY,		// AT_MY_OUTFITS  };  // static diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h index e515b8a304..14b28bfe4b 100644 --- a/indra/llinventory/llinventorytype.h +++ b/indra/llinventory/llinventorytype.h @@ -67,7 +67,8 @@ public:  		IT_WEARABLE = 18,  		IT_ANIMATION = 19,  		IT_GESTURE = 20, -		IT_COUNT = 21, +		IT_FAVORITE = 21, +		IT_COUNT = 22,  		IT_NONE = -1  	}; diff --git a/indra/llinventory/tests/inventorymisc_test.cpp b/indra/llinventory/tests/inventorymisc_test.cpp index c797a70c50..770594dc9d 100644 --- a/indra/llinventory/tests/inventorymisc_test.cpp +++ b/indra/llinventory/tests/inventorymisc_test.cpp @@ -94,7 +94,7 @@ LLPointer<LLInventoryCategory> create_random_inventory_cat()  	LLPointer<LLInventoryCategory> cat = new LLInventoryCategory(  		item_id,  		parent_id, -		LLFolderType::FT_NONE, +		LLAssetType::AT_NONE,  		std::string("Sample category"));  	return cat;  } @@ -452,7 +452,7 @@ namespace tut  		ensure_equals("4.type::getType() failed", dst->getType(), src->getType());  		ensure_equals("5.preferred type::getPreferredType() failed", dst->getPreferredType(), src->getPreferredType()); -		src->setPreferredType( LLFolderType::FT_TEXTURE); +		src->setPreferredType( LLAssetType::AT_TEXTURE);  		sd = ll_create_sd_from_inventory_category(src);  		dst = ll_create_category_from_sd(sd);  		ensure_equals("6.preferred type::getPreferredType() failed", dst->getPreferredType(), src->getPreferredType()); diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp index 7332f5c954..41f3f3f607 100644 --- a/indra/llmessage/lltransfersourceasset.cpp +++ b/indra/llmessage/lltransfersourceasset.cpp @@ -292,6 +292,7 @@ bool is_asset_id_knowable(LLAssetType::EType type)  		case LLAssetType::AT_BODYPART:  		case LLAssetType::AT_ANIMATION:  		case LLAssetType::AT_GESTURE: +		case LLAssetType::AT_FAVORITE:  		case LLAssetType::AT_LINK:  		case LLAssetType::AT_LINK_FOLDER:  			rv = true; diff --git a/indra/llprimitive/llmediaentry.cpp b/indra/llprimitive/llmediaentry.cpp index 701300163a..fa04bf80e7 100644 --- a/indra/llprimitive/llmediaentry.cpp +++ b/indra/llprimitive/llmediaentry.cpp @@ -164,7 +164,6 @@ void LLMediaEntry::asLLSD(LLSD& sd) const      // "security" fields      sd[WHITELIST_ENABLE_KEY] = mWhiteListEnable; -	sd.erase(WHITELIST_KEY);      for (U32 i=0; i<mWhiteList.size(); i++)   	{          sd[WHITELIST_KEY].append(mWhiteList[i]); diff --git a/indra/llprimitive/tests/llmediaentry_test.cpp b/indra/llprimitive/tests/llmediaentry_test.cpp index cd9608d56b..9ce6560923 100644 --- a/indra/llprimitive/tests/llmediaentry_test.cpp +++ b/indra/llprimitive/tests/llmediaentry_test.cpp @@ -223,7 +223,8 @@ namespace tut  	{  		set_test_name("Test LLMediaEntry Instantiation");  		LLMediaEntry entry; -        ensure_llsd_equals(get_test_name() + " failed", defaultMediaEntryLLSD, entry.asLLSD()); +        ensure_llsd_equals(get_test_name(), defaultMediaEntryLLSD, entry.asLLSD()); +  	}  	template<> template<> @@ -250,27 +251,12 @@ namespace tut          ensure_llsd_equals(get_test_name() + " failed", golden, entry.asLLSD());      } -    template<> template<> -    void object::test<4>() -    { -        set_test_name("Test LLMediaEntry::asLLSD()"); -        LLMediaEntry entry; -        LLSD sd; -		// Put some cruft in the LLSD -        sd[LLMediaEntry::CURRENT_URL_KEY] = "http://www.example.com"; -		LLSD whitelist; -		whitelist.append("*.example.com"); -        sd[LLMediaEntry::WHITELIST_KEY] = whitelist; -        entry.asLLSD(sd); -        ensure_llsd_equals(get_test_name() + " failed", defaultMediaEntryLLSD, sd); -    } -      // limit tests      const char *URL_OK = "http://www.example.com";      const char *URL_TOO_BIG = "http://www.example.com.qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq";      template<> template<> -    void object::test<5>() +    void object::test<4>()      {          set_test_name("Test Limits on setting current URL");          LLMediaEntry entry; @@ -281,7 +267,7 @@ namespace tut      }          template<> template<> -    void object::test<6>() +    void object::test<5>()      {          set_test_name("Test Limits on setting home URL");          LLMediaEntry entry; @@ -292,7 +278,7 @@ namespace tut      }      template<> template<> -    void object::test<7>() +    void object::test<6>()      {          set_test_name("Test Limits on setting whitelist"); @@ -306,7 +292,7 @@ namespace tut      }      template<> template<> -    void object::test<8>() +    void object::test<7>()      {          set_test_name("Test Limits on setting whitelist too big"); @@ -321,7 +307,7 @@ namespace tut      }      template<> template<> -    void object::test<9>() +    void object::test<8>()      {          set_test_name("Test Limits on setting whitelist too many"); @@ -337,7 +323,7 @@ namespace tut      }      template<> template<> -    void object::test<10>() +    void object::test<9>()      {          set_test_name("Test to make sure both setWhiteList() functions behave the same"); @@ -355,7 +341,7 @@ namespace tut      }      template<> template<> -    void object::test<11>() +    void object::test<10>()      {          set_test_name("Test to make sure both setWhiteList() functions behave the same"); @@ -376,7 +362,7 @@ namespace tut      }      template<> template<> -    void object::test<12>() +    void object::test<11>()      {          set_test_name("Test to make sure both setWhiteList() functions behave the same"); @@ -400,99 +386,99 @@ namespace tut      // Check the "empty whitelist" case      template<> template<> -    void object::test<13>() { whitelist_test("", "http://www.example.com", true); } +    void object::test<12>() { whitelist_test("", "http://www.example.com", true); }      // Check the "missing scheme" case      template<> template<> -    void object::test<14>() { whitelist_test("www.example.com", "http://www.example.com", true); } +    void object::test<13>() { whitelist_test("www.example.com", "http://www.example.com", true); }      // Check the "exactly the same" case      template<> template<> -    void object::test<15>() { whitelist_test("http://example.com", "http://example.com", true); } +    void object::test<14>() { whitelist_test("http://example.com", "http://example.com", true); }      // Check the enable flag      template<> template<> -    void object::test<16>() { whitelist_test(false, "www.example.com", "http://www.secondlife.com", true); } +    void object::test<15>() { whitelist_test(false, "www.example.com", "http://www.secondlife.com", true); }      template<> template<> -    void object::test<17>() { whitelist_test(true, "www.example.com", "http://www.secondlife.com", false); } +    void object::test<16>() { whitelist_test(true, "www.example.com", "http://www.secondlife.com", false); }      // Check permutations of trailing slash:      template<> template<> -    void object::test<18>() { whitelist_test("http://www.example.com", "http://www.example.com/", true); } +    void object::test<17>() { whitelist_test("http://www.example.com", "http://www.example.com/", true); }      template<> template<> -    void object::test<19>() { whitelist_test("http://www.example.com/", "http://www.example.com/", true); } +    void object::test<18>() { whitelist_test("http://www.example.com/", "http://www.example.com/", true); }      template<> template<> -    void object::test<20>() { whitelist_test("http://www.example.com/", "http://www.example.com", false); } +    void object::test<19>() { whitelist_test("http://www.example.com/", "http://www.example.com", false); }      template<> template<> -    void object::test<21>() { whitelist_test("http://www.example.com", "http://www.example.com/foobar", true); } +    void object::test<20>() { whitelist_test("http://www.example.com", "http://www.example.com/foobar", true); }      template<> template<> -    void object::test<22>() { whitelist_test("http://www.example.com/", "http://www.example.com/foobar", false); } +    void object::test<21>() { whitelist_test("http://www.example.com/", "http://www.example.com/foobar", false); }      // More cases...      template<> template<> -    void object::test<23>() { whitelist_test("http://example.com", "http://example.com/wiki", true); } +    void object::test<22>() { whitelist_test("http://example.com", "http://example.com/wiki", true); }      template<> template<> -    void object::test<24>() { whitelist_test("www.example.com", "http://www.example.com/help", true); } +    void object::test<23>() { whitelist_test("www.example.com", "http://www.example.com/help", true); }      template<> template<> -    void object::test<25>() { whitelist_test("http://www.example.com", "http://wwwexample.com", false); } +    void object::test<24>() { whitelist_test("http://www.example.com", "http://wwwexample.com", false); }      template<> template<> -    void object::test<26>() { whitelist_test("http://www.example.com", "http://www.example.com/wiki", true); } +    void object::test<25>() { whitelist_test("http://www.example.com", "http://www.example.com/wiki", true); }      template<> template<> -    void object::test<27>() { whitelist_test("example.com", "http://wwwexample.com", false); } +    void object::test<26>() { whitelist_test("example.com", "http://wwwexample.com", false); }      template<> template<> -    void object::test<28>() { whitelist_test("http://www.example.com/", "http://www.amazon.com/wiki", false); } +    void object::test<27>() { whitelist_test("http://www.example.com/", "http://www.amazon.com/wiki", false); }      template<> template<> -    void object::test<29>() { whitelist_test("www.example.com", "http://www.amazon.com", false); } +    void object::test<28>() { whitelist_test("www.example.com", "http://www.amazon.com", false); }      // regexp cases      template<> template<> -    void object::test<30>() { whitelist_test("*.example.com", "http://www.example.com", true); } +    void object::test<29>() { whitelist_test("*.example.com", "http://www.example.com", true); }      template<> template<> -    void object::test<31>() { whitelist_test("*.example.com", "http://www.amazon.com", false); } +    void object::test<30>() { whitelist_test("*.example.com", "http://www.amazon.com", false); }      template<> template<> -    void object::test<32>() { whitelist_test("*.example.com", "http://www.example.com/foo/bar", true); } +    void object::test<31>() { whitelist_test("*.example.com", "http://www.example.com/foo/bar", true); }      template<> template<> -    void object::test<33>() { whitelist_test("*.example.com", "http:/example.com/foo/bar", false); } +    void object::test<32>() { whitelist_test("*.example.com", "http:/example.com/foo/bar", false); }      template<> template<> -    void object::test<34>() { whitelist_test("*example.com", "http://example.com/foo/bar", true); } +    void object::test<33>() { whitelist_test("*example.com", "http://example.com/foo/bar", true); }      template<> template<> -    void object::test<35>() { whitelist_test("*example.com", "http://my.virus.com/foo/bar?example.com", false); } +    void object::test<34>() { whitelist_test("*example.com", "http://my.virus.com/foo/bar?example.com", false); }      template<> template<> -    void object::test<36>() { whitelist_test("example.com", "http://my.virus.com/foo/bar?example.com", false); } +    void object::test<35>() { whitelist_test("example.com", "http://my.virus.com/foo/bar?example.com", false); }      template<> template<> -    void object::test<37>() { whitelist_test("*example.com", "http://my.virus.com/foo/bar?*example.com", false); } +    void object::test<36>() { whitelist_test("*example.com", "http://my.virus.com/foo/bar?*example.com", false); }      template<> template<> -    void object::test<38>() { whitelist_test("http://*example.com", "http://www.example.com", true); } +    void object::test<37>() { whitelist_test("http://*example.com", "http://www.example.com", true); }      template<> template<> -    void object::test<39>() { whitelist_test("http://*.example.com", "http://www.example.com", true); } +    void object::test<38>() { whitelist_test("http://*.example.com", "http://www.example.com", true); }      template<> template<> -    void object::test<40>() { whitelist_test("http://*.e$?^.com", "http://www.e$?^.com", true); } +    void object::test<39>() { whitelist_test("http://*.e$?^.com", "http://www.e$?^.com", true); }      template<> template<> -    void object::test<41>() { whitelist_test("*.example.com/foo/bar", "http://www.example.com/", false); } +    void object::test<40>() { whitelist_test("*.example.com/foo/bar", "http://www.example.com/", false); }      template<> template<> -    void object::test<42>() { whitelist_test("*.example.com/foo/bar", "http://example.com/foo/bar", false); } +    void object::test<41>() { whitelist_test("*.example.com/foo/bar", "http://example.com/foo/bar", false); }      template<> template<> -    void object::test<43>() { whitelist_test("http://*.example.com/foo/bar", "http://www.example.com", false); } +    void object::test<42>() { whitelist_test("http://*.example.com/foo/bar", "http://www.example.com", false); }      template<> template<> -    void object::test<44>() { whitelist_test("http://*.example.com", "https://www.example.com", false); } +    void object::test<43>() { whitelist_test("http://*.example.com", "https://www.example.com", false); }      template<> template<> -    void object::test<45>() { whitelist_test("http*://*.example.com", "rtsp://www.example.com", false); } +    void object::test<44>() { whitelist_test("http*://*.example.com", "rtsp://www.example.com", false); }      template<> template<> -    void object::test<46>() { whitelist_test("http*://*.example.com", "https://www.example.com", true); } +    void object::test<45>() { whitelist_test("http*://*.example.com", "https://www.example.com", true); }      template<> template<> -    void object::test<47>() { whitelist_test("example.com", "http://www.example.com", false); } +    void object::test<46>() { whitelist_test("example.com", "http://www.example.com", false); }      template<> template<> -    void object::test<48>() { whitelist_test("www.example.com", "http://www.example.com:80", false); } +    void object::test<47>() { whitelist_test("www.example.com", "http://www.example.com:80", false); }      template<> template<> -    void object::test<49>() { whitelist_test("www.example.com", "http://www.example.com", true); } +    void object::test<48>() { whitelist_test("www.example.com", "http://www.example.com", true); }      template<> template<> -    void object::test<50>() { whitelist_test("www.example.com/", "http://www.example.com", false); } +    void object::test<49>() { whitelist_test("www.example.com/", "http://www.example.com", false); }      template<> template<> -    void object::test<51>() { whitelist_test("www.example.com/foo/bar/*", "http://www.example.com/foo/bar/baz", true); } +    void object::test<50>() { whitelist_test("www.example.com/foo/bar/*", "http://www.example.com/foo/bar/baz", true); }      // Path only      template<> template<> -    void object::test<52>() { whitelist_test("/foo/*/baz", "http://www.example.com/foo/bar/baz", true); } +    void object::test<51>() { whitelist_test("/foo/*/baz", "http://www.example.com/foo/bar/baz", true); }      template<> template<> -    void object::test<53>() { whitelist_test("/foo/*/baz", "http://www.example.com/foo/bar/", false); } +    void object::test<52>() { whitelist_test("/foo/*/baz", "http://www.example.com/foo/bar/", false); }  } diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 99aebbcb30..8c72b079ee 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -772,12 +772,6 @@ LLMultiFloater* LLFloater::getHost()  	return (LLMultiFloater*)mHostHandle.get();   } -void    LLFloater::applySavedVariables() -{ -	applyRectControl(); -	applyDockState(); -} -  void LLFloater::applyRectControl()  {  	if (mRectControl.size() > 1) diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 95c8dd84f6..ef0d06a58e 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -280,9 +280,6 @@ public:  protected:  	void			setRectControl(const std::string& rectname) { mRectControl = rectname; }; - -	virtual void    applySavedVariables(); -  	void			applyRectControl();  	void			applyDockState();  	void			storeRectControl(); diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index f8e07913fb..aca4dc56ee 100644 --- a/indra/llui/llfloaterreg.cpp +++ b/indra/llui/llfloaterreg.cpp @@ -134,7 +134,8 @@ LLFloater* LLFloaterReg::getInstance(const std::string& name, const LLSD& key)  				// Note: key should eventually be a non optional LLFloater arg; for now, set mKey to be safe  				res->mKey = key;  				res->setInstanceName(name); -				res->applySavedVariables(); // Can't apply rect and dock state until setting instance name +				res->applyRectControl(); // Can't apply rect control until setting instance name +				res->applyDockState();//same...  				if (res->mAutoTile && !res->getHost() && index > 0)  				{  					const LLRect& cur_rect = res->getRect(); diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 643f89068f..e138b431c5 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -216,6 +216,7 @@ set(viewer_SOURCE_FILES      llfloaterwhitelistentry.cpp      llfloaterwindlight.cpp      llfloaterworldmap.cpp +    llfoldertype.cpp      llfolderview.cpp      llfolderviewitem.cpp      llfollowcam.cpp @@ -316,7 +317,6 @@ set(viewer_SOURCE_FILES      llpanelimcontrolpanel.cpp      llpanelland.cpp      llpanellandaudio.cpp -    llpanellandmarkinfo.cpp      llpanellandmarks.cpp      llpanellandmedia.cpp      llpanellogin.cpp @@ -337,7 +337,6 @@ set(viewer_SOURCE_FILES      llpanelpicks.cpp      llpanelplace.cpp      llpanelplaceinfo.cpp -    llpanelplaceprofile.cpp      llpanelplaces.cpp      llpanelplacestab.cpp      llpanelprimmediacontrols.cpp @@ -437,14 +436,12 @@ set(viewer_SOURCE_FILES      llvectorperfoptions.cpp      llviewchildren.cpp      llviewerassetstorage.cpp -    llviewerassettype.cpp      llvieweraudio.cpp      llviewercamera.cpp      llviewercontrol.cpp      llviewercontrollistener.cpp      llviewerdisplay.cpp      llviewerfloaterreg.cpp -    llviewerfoldertype.cpp      llviewergenericmessage.cpp      llviewergesture.cpp          llviewerhelp.cpp @@ -705,6 +702,7 @@ set(viewer_HEADER_FILES      llfloaterwhitelistentry.h      llfloaterwindlight.h      llfloaterworldmap.h +    llfoldertype.h      llfolderview.h      llfoldervieweventlistener.h      llfolderviewitem.h @@ -802,7 +800,6 @@ set(viewer_HEADER_FILES      llpanelimcontrolpanel.h      llpanelland.h      llpanellandaudio.h -    llpanellandmarkinfo.h      llpanellandmarks.h      llpanellandmedia.h      llpanellogin.h @@ -823,7 +820,6 @@ set(viewer_HEADER_FILES      llpanelpicks.h      llpanelplace.h      llpanelplaceinfo.h -    llpanelplaceprofile.h      llpanelplaces.h      llpanelplacestab.h      llpanelprimmediacontrols.h @@ -927,7 +923,6 @@ set(viewer_HEADER_FILES      llvectorperfoptions.h      llviewchildren.h      llviewerassetstorage.h -    llviewerassettype.h      llvieweraudio.h      llviewerbuild.h      llviewercamera.h @@ -935,7 +930,6 @@ set(viewer_HEADER_FILES      llviewercontrollistener.h      llviewerdisplay.h      llviewerfloaterreg.h -    llviewerfoldertype.h      llviewergenericmessage.h      llviewergesture.h          llviewerhelp.h diff --git a/indra/newview/app_settings/foldertypes.xml b/indra/newview/app_settings/foldertypes.xml index 0d539177f3..2038779c4f 100644 --- a/indra/newview/app_settings/foldertypes.xml +++ b/indra/newview/app_settings/foldertypes.xml @@ -1,61 +1,66 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <ensemble_defs>    <ensemble -    foldertype_num="27" +    asset_num="-1" +    xui_name="default" +    icon_name="inv_plain_closed.tga" +     /> +  <ensemble +    asset_num="27"      xui_name="head"      icon_name="inv_folder_outfit_head.tga"  	allowed="hair,eyes"       />    <ensemble -    foldertype_num="28" +    asset_num="28"      xui_name="gloves"      icon_name="inv_folder_outfit_gloves.tga"  	allowed="gloves"       />    <ensemble -    foldertype_num="29" +    asset_num="29"      xui_name="jacket"      icon_name="inv_folder_outfit_jacket.tga"  	allowed="jacket"       />    <ensemble -    foldertype_num="30" +    asset_num="30"      xui_name="pants"      icon_name="inv_folder_outfit_pants.tga"  	allowed="pants,underpants"       />    <ensemble -    foldertype_num="31" +    asset_num="31"      xui_name="shape"      icon_name="inv_folder_outfit_shape.tga"  	allowed="shape,skin,hair,eyes"       />    <ensemble -    foldertype_num="32" +    asset_num="32"      xui_name="shoes"      icon_name="inv_folder_outfit_shoes.tga"  	allowed="shoes,socks"       />    <ensemble -    foldertype_num="33" +    asset_num="33"      xui_name="shirt"      icon_name="inv_folder_outfit_shirt.tga"  	allowed="shirt,undershirt"       />    <ensemble -    foldertype_num="34" +    asset_num="34"      xui_name="skirt"      icon_name="inv_folder_outfit_skirt.tga"  	allowed=""       />    <ensemble -    foldertype_num="35" +    asset_num="35"      xui_name="underpants"      icon_name="inv_folder_outfit_underpants.tga"  	allowed="underpants"       />    <ensemble -    foldertype_num="36" +    asset_num="36"      xui_name="undershirt"      icon_name="inv_folder_outfit_undershirt.tga"  	allowed="undershirt" diff --git a/indra/newview/llagentpicksinfo.cpp b/indra/newview/llagentpicksinfo.cpp index 3c8d0dac42..6e5835bace 100644 --- a/indra/newview/llagentpicksinfo.cpp +++ b/indra/newview/llagentpicksinfo.cpp @@ -47,8 +47,7 @@ public:  	~LLAgentPicksObserver()  	{ -		if (LLAvatarPropertiesProcessor::instanceExists()) -			LLAvatarPropertiesProcessor::getInstance()->removeObserver(gAgent.getID(), this); +		LLAvatarPropertiesProcessor::getInstance()->removeObserver(gAgent.getID(), this);  	}  	void sendAgentPicksRequest() diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp index 2911a35581..09f7c49f23 100644 --- a/indra/newview/llagentui.cpp +++ b/indra/newview/llagentui.cpp @@ -92,10 +92,7 @@ std::string LLAgentUI::buildSLURL(const bool escaped /*= true*/)  //static  BOOL LLAgentUI::checkAgentDistance(const LLVector3& pole, F32 radius)  { -	F32 delta_x = gAgent.getPositionAgent().mV[VX] - pole.mV[VX]; -	F32 delta_y = gAgent.getPositionAgent().mV[VY] - pole.mV[VY]; -	 -	return  sqrt( delta_x* delta_x + delta_y* delta_y ) < radius; +	return  (gAgent.getPositionAgent() - pole).length() < radius;  }  BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const LLVector3& agent_pos_region)  { diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 8c76a219a0..4b3d27767c 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -434,7 +434,7 @@ void LLAgentWearables::saveWearableAs(const EWearableType type,  	if (save_in_lost_and_found)  	{  		category_id = gInventory.findCategoryUUIDForType( -			LLFolderType::FT_LOST_AND_FOUND); +			LLAssetType::AT_LOST_AND_FOUND);  	}  	else  	{ @@ -840,7 +840,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs  		}  		// Get the UUID of the current outfit folder (will be created if it doesn't exist) -		const LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); +		LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);  		LLInitialWearablesFetch* outfit = new LLInitialWearablesFetch(); @@ -981,7 +981,8 @@ void LLAgentWearables::recoverMissingWearable(const EWearableType type, U32 inde  	// Add a new one in the lost and found folder.  	// (We used to overwrite the "not found" one, but that could potentially  	// destory content.) JC -	const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); +	LLUUID lost_and_found_id =  +		gInventory.findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);  	LLPointer<LLInventoryCallback> cb =  		new addWearableToAgentInventoryCallback(  			LLPointer<LLRefCount>(NULL), @@ -1122,8 +1123,8 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,  	// First, make a folder in the Clothes directory.  	LLUUID folder_id = gInventory.createNewCategory( -		gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING), -		LLFolderType::FT_NONE, +		gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING), +		LLAssetType::AT_NONE,  		new_folder_name);  	bool found_first_item = false; @@ -1256,10 +1257,10 @@ LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)  	}  	// First, make a folder in the My Outfits directory. -	const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS); +	LLUUID parent_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_MY_OUTFITS);  	LLUUID folder_id = gInventory.createNewCategory(  		parent_id, -		LLFolderType::FT_OUTFIT, +		LLAssetType::AT_OUTFIT,  		new_folder_name);  	LLAppearanceManager::shallowCopyCategory(LLAppearanceManager::getCOF(),folder_id, NULL); @@ -2031,7 +2032,7 @@ void LLInitialWearablesFetch::processWearablesMessage()  {  	if (!mAgentInitialWearables.empty()) // We have an empty current outfit folder, use the message data instead.  	{ -		const LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); +		LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);  		for (U8 i = 0; i < mAgentInitialWearables.size(); ++i)  		{  			// Populate the current outfit folder with links to the wearables passed in the message diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 80086de3dc..8d0f11e021 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -130,11 +130,11 @@ void LLOutfitObserver::done()  			{  				if(LLInventoryType::IT_GESTURE == item->getInventoryType())  				{ -					pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE); +					pid = gInventory.findCategoryUUIDForType(LLAssetType::AT_GESTURE);  				}  				else  				{ -					pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +					pid = gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  				}  				break;  			} @@ -146,7 +146,7 @@ void LLOutfitObserver::done()  		LLUUID cat_id = gInventory.createNewCategory(  			pid, -			LLFolderType::FT_NONE, +			LLAssetType::AT_NONE,  			name);  		mCatID = cat_id;  		LLPointer<LLInventoryCallback> cb = new LLWearInventoryCategoryCallback(mCatID, mAppend); @@ -353,7 +353,7 @@ void removeDuplicateItems(LLInventoryModel::item_array_t& dst, const LLInventory  /* static */   LLUUID LLAppearanceManager::getCOF()  { -	return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); +	return gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);  }  // Update appearance from outfit folder. @@ -373,12 +373,12 @@ void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, boo  	else  	{  		LLViewerInventoryCategory* catp = gInventory.getCategory(category); -		if (catp->getPreferredType() == LLFolderType::FT_NONE || -			LLFolderType::lookupIsEnsembleType(catp->getPreferredType())) +		if (catp->getPreferredType() == LLAssetType::AT_NONE || +			LLAssetType::lookupIsEnsembleCategoryType(catp->getPreferredType()))  		{  			updateCOFFromCategory(category, append);  // append is false - rebuild COF.  		} -		else if (catp->getPreferredType() == LLFolderType::FT_OUTFIT) +		else if (catp->getPreferredType() == LLAssetType::AT_OUTFIT)  		{  			rebuildCOFFromOutfit(category);  		} @@ -405,7 +405,7 @@ void LLAppearanceManager::updateCOFFromCategory(const LLUUID& category, bool app  		return;  	} -	const LLUUID current_outfit_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); +	const LLUUID ¤t_outfit_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);  	// Processes that take time should show the busy cursor  	//inc_busy_count(); @@ -503,7 +503,7 @@ void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID  		{  			LLViewerInventoryCategory *catp = item->getLinkedCategory();  			// Skip copying outfit links. -			if (catp && catp->getPreferredType() != LLFolderType::FT_OUTFIT) +			if (catp && catp->getPreferredType() != LLAssetType::AT_OUTFIT)  			{  				link_inventory_item(gAgent.getID(),  									item->getLinkedUUID(), @@ -641,7 +641,7 @@ void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID  	// Add link to outfit if category is an outfit.   	LLViewerInventoryCategory* catp = gInventory.getCategory(category); -	if (!append && catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT) +	if (!append && catp && catp->getPreferredType() == LLAssetType::AT_OUTFIT)  	{  		link_inventory_item(gAgent.getID(), category, cof, catp->getName(),  							LLAssetType::AT_LINK_FOLDER, link_waiter); @@ -732,7 +732,7 @@ void LLAppearanceManager::rebuildCOFFromOutfit(const LLUUID& category)  		LLNotifications::instance().add("CouldNotPutOnOutfit");  		return;  	} - +		  	// Processes that take time should show the busy cursor  	//inc_busy_count(); @@ -750,7 +750,7 @@ void LLAppearanceManager::rebuildCOFFromOutfit(const LLUUID& category)  	// Create a link to the outfit that we wore.  	LLViewerInventoryCategory* catp = gInventory.getCategory(category); -	if (catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT) +	if (catp && catp->getPreferredType() == LLAssetType::AT_OUTFIT)  	{  		link_inventory_item(gAgent.getID(), category, current_outfit_id, catp->getName(),  							LLAssetType::AT_LINK_FOLDER, link_waiter); diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index d4df6dfbe7..5dbf57c9be 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -334,7 +334,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)  		LLAssetStorage::LLStoreAssetCallback callback = NULL;  		void *userdata = NULL;  		upload_new_resource(next_file, asset_name, asset_name, -				    0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE, +				    0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,  				    next_owner_perms, group_perms,  				    everyone_perms, display_name,  				    callback, expected_upload_cost, userdata); diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 97e0aa5f46..2f67401301 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -343,7 +343,7 @@ bool LLAvatarActions::callbackAddFriend(const LLSD& notification, const LLSD& re  		// Servers older than 1.25 require the text of the message to be the  		// calling card folder ID for the offering user. JC  		LLUUID calling_card_folder_id =  -			gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); +			gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);  		std::string message = calling_card_folder_id.asString();  		requestFriendship(notification["payload"]["id"].asUUID(),   		    notification["payload"]["name"].asString(), @@ -355,7 +355,7 @@ bool LLAvatarActions::callbackAddFriend(const LLSD& notification, const LLSD& re  // static  void LLAvatarActions::requestFriendship(const LLUUID& target_id, const std::string& target_name, const std::string& message)  { -	const LLUUID calling_card_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); +	LLUUID calling_card_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);  	send_improved_im(target_id,  					 target_name,  					 message, diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 8609ba8b1c..7b2dc02864 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -239,46 +239,11 @@ void LLAvatarList::refresh()  	bool dirty = add_limit_exceeded || (have_filter && !have_names);  	setDirty(dirty); -	// Refreshed all items, lets send refresh_complete signal. -	if(!dirty) -	{ -		std::vector<LLSD> cur_values; -		getValues(cur_values); -		mRefreshCompleteSignal(this, LLSD((S32)cur_values.size())); -	} -  	// Commit if we've added/removed items.  	if (modified)  		onCommit();  } -bool LLAvatarList::filterHasMatches() -{ -	uuid_vector_t values = getIDs(); - -	for (uuid_vector_t::const_iterator it=values.begin(); it != values.end(); it++) -	{ -		std::string name; -		const LLUUID& buddy_id = *it; -		BOOL have_name = gCacheName->getFullName(buddy_id, name); - -		// If name has not been loaded yet we consider it as a match. -		// When the name will be loaded the filter will be applied again(in refresh()). - -		if (have_name && !findInsensitive(name, mNameFilter)) -		{ -			continue; -		} - -		return true; -	} -	return false; -} - -boost::signals2::connection LLAvatarList::setRefreshCompleteCallback(const commit_signal_t::slot_type& cb) -{ -	return mRefreshCompleteSignal.connect(cb); -}  void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is_online, EAddPosition pos)  { diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index 195d9e5b55..51d3760d39 100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -82,11 +82,6 @@ public:  	const std::string getIconParamName() const{return mIconParamName;}  	virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); -	// Return true if filter has at least one match. -	bool filterHasMatches(); - -	boost::signals2::connection setRefreshCompleteCallback(const commit_signal_t::slot_type& cb); -  protected:  	void refresh(); @@ -112,8 +107,6 @@ private:  	uuid_vector_t			mIDs;  	LLAvatarListItem::ContextMenu* mContextMenu; - -	commit_signal_t mRefreshCompleteSignal;  };  /** Abstract comparator for avatar items */ diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index b9e8c5394d..bad61101c1 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -51,7 +51,7 @@  #include "lltransientfloatermgr.h"  static LLDefaultChildRegistry::Register<LLChicletPanel> t1("chiclet_panel"); -static LLDefaultChildRegistry::Register<LLTalkButton> t2("talk_button"); +static LLDefaultChildRegistry::Register<LLTalkButton> t2("chiclet_talk");  static LLDefaultChildRegistry::Register<LLNotificationChiclet> t3("chiclet_notification");  static LLDefaultChildRegistry::Register<LLIMP2PChiclet> t4("chiclet_im_p2p");  static LLDefaultChildRegistry::Register<LLIMGroupChiclet> t5("chiclet_im_group"); @@ -830,21 +830,13 @@ LLChicletPanel::~LLChicletPanel()  void im_chiclet_callback(LLChicletPanel* panel, const LLSD& data){  	LLUUID session_id = data["session_id"].asUUID(); -	S32 unread = data["num_unread"].asInteger(); - -	LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); -	if (im_floater && im_floater->getVisible()) -	{ -		unread = 0; -	} -  	std::list<LLChiclet*> chiclets = LLIMChiclet::sFindChicletsSignal(session_id);  	std::list<LLChiclet *>::iterator iter;  	for (iter = chiclets.begin(); iter != chiclets.end(); iter++) {  		LLChiclet* chiclet = *iter;  		if (chiclet != NULL)  		{ -			chiclet->setCounter(unread); +			chiclet->setCounter(data["num_unread"].asInteger());  		}  	    else  	    { @@ -1265,7 +1257,30 @@ LLTalkButton::Params::Params()   , show_button("show_button")   , monitor("monitor")  { -	// See widgets/talk_button.xml +	// *TODO Vadim: move hardcoded labels (!) and other params to XUI. +	speak_button.name("left"); +	speak_button.label("Speak"); +	speak_button.label_selected("Speak"); +	speak_button.font(LLFontGL::getFontSansSerifSmall()); +	speak_button.tab_stop(false); +	speak_button.is_toggle(true); +	speak_button.picture_style(true); +	// Use default button art. JC +	//speak_button.image_selected(LLUI::getUIImage("SegmentedBtn_Left_Selected")); +	//speak_button.image_unselected(LLUI::getUIImage("SegmentedBtn_Left_Off")); + +	show_button.name("right"); +	show_button.label(LLStringUtil::null); +	show_button.rect(LLRect(0, 0, 20, 0)); +	show_button.tab_stop(false); +	show_button.is_toggle(true); +	show_button.picture_style(true); +	show_button.image_selected(LLUI::getUIImage("ComboButton_Selected")); +	show_button.image_unselected(LLUI::getUIImage("ComboButton_Off")); + +	monitor.name("monitor"); +	// *TODO: Make this data driven. +	monitor.rect(LLRect(0, 18, 18, 0));  }  LLTalkButton::LLTalkButton(const Params& p) @@ -1321,7 +1336,6 @@ LLTalkButton::LLTalkButton(const Params& p)  	// never show "muted" because you can't mute yourself  	mOutputMonitor->setIsMuted(false); -	mOutputMonitor->setIsAgentControl(true);  }  LLTalkButton::~LLTalkButton() diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp index 7b75c77a1e..ed304bdd34 100644 --- a/indra/newview/llcolorswatch.cpp +++ b/indra/newview/llcolorswatch.cpp @@ -228,7 +228,8 @@ void LLColorSwatchCtrl::draw()  	{  		if (!mFallbackImageName.empty())  		{ -			LLPointer<LLViewerTexture> fallback_image = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +			LLPointer<LLViewerTexture> fallback_image = LLViewerTextureManager::getFetchedTextureFromFile(mFallbackImageName, TRUE,  +				LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  			if( fallback_image->getComponents() == 4 )  			{	  				gl_rect_2d_checkerboard( interior ); diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index e087feeaec..5f845c3721 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -144,7 +144,7 @@ void LLStandardBumpmap::restoreGL()  		gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount].mImage =   			LLViewerTextureManager::getFetchedTexture(LLUUID(bump_image_id),  										TRUE,  -										FALSE,  +										LLViewerTexture::BOOST_NONE,   										LLViewerTexture::LOD_TEXTURE,  										0,   										0);																								 diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp index 790e75cfaa..9dc22cddcd 100644 --- a/indra/newview/lldrawpoolterrain.cpp +++ b/indra/newview/lldrawpoolterrain.cpp @@ -72,7 +72,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :  	sDetailScale = 1.f/gSavedSettings.getF32("RenderTerrainScale");  	sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");  	mAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga",  -													TRUE, TRUE,  +													TRUE, LLViewerTexture::BOOST_UI,   													LLViewerTexture::FETCHED_TEXTURE,  													GL_ALPHA8, GL_ALPHA,  													LLUUID("e97cf410-8e61-7005-ec06-629eba4cd1fb")); @@ -81,7 +81,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :  	mAlphaRampImagep->setAddressMode(LLTexUnit::TAM_CLAMP);  	m2DAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c",  -													TRUE, TRUE,  +													TRUE, LLViewerTexture::BOOST_UI,   													LLViewerTexture::FETCHED_TEXTURE,  													GL_ALPHA8, GL_ALPHA,  													LLUUID("38b86f85-2575-52a9-a531-23108d8da837")); diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp index 21e17cc207..107de934df 100644 --- a/indra/newview/lldrawpoolwater.cpp +++ b/indra/newview/lldrawpoolwater.cpp @@ -69,11 +69,11 @@ LLVector3 LLDrawPoolWater::sLightDir;  LLDrawPoolWater::LLDrawPoolWater() :  	LLFacePool(POOL_WATER)  { -	mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, TRUE); +	mHBTex[0] = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);  	gGL.getTexUnit(0)->bind(mHBTex[0]) ;  	mHBTex[0]->setAddressMode(LLTexUnit::TAM_CLAMP); -	mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, TRUE); +	mHBTex[1] = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);  	gGL.getTexUnit(0)->bind(mHBTex[1]);  	mHBTex[1]->setAddressMode(LLTexUnit::TAM_CLAMP); diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 09b3ce1e86..8ec448e281 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -515,8 +515,8 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)  /* removed in lieu of raycast uv detection  void LLFace::renderSelectedUV()  { -	LLViewerTexture* red_blue_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test1.j2c", TRUE, TRUE); -	LLViewerTexture* green_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test2.tga", TRUE, TRUE); +	LLViewerTexture* red_blue_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test1.j2c", TRUE, LLViewerTexture::BOOST_UI); +	LLViewerTexture* green_imagep = LLViewerTextureManager::getFetchedTextureFromFile("uv_test2.tga", TRUE, LLViewerTexture::BOOST_UI);  	LLGLSUVSelect object_select; diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index a3980457b9..a6afbc05be 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -437,7 +437,7 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,  			}  			else  			{ -				const LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); +				LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);  				if (item->getParentUUID() == favorites_id)  				{  					llwarns << "Attemt to copy a favorite item into the same folder." << llendl; @@ -539,7 +539,7 @@ void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, con  	LLToolDragAndDrop* tool_dad = LLToolDragAndDrop::getInstance();  	if (tool_dad->getSource() == LLToolDragAndDrop::SOURCE_NOTECARD)  	{ -		viewer_item->setType(LLAssetType::AT_LANDMARK); +		viewer_item->setType(LLAssetType::AT_FAVORITE);  		copy_inventory_from_notecard(tool_dad->getObjectID(), tool_dad->getSourceID(), viewer_item.get(), gInventoryCallbacks.registerCB(cb));  	}  	else @@ -561,7 +561,7 @@ void LLFavoritesBarCtrl::changed(U32 mask)  {  	if (mFavoriteFolderId.isNull())  	{ -		mFavoriteFolderId = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); +		mFavoriteFolderId = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);  		if (mFavoriteFolderId.notNull())  		{ diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index 095fe0a220..55b7ed0c99 100644 --- a/indra/newview/llfloateranimpreview.cpp +++ b/indra/newview/llfloateranimpreview.cpp @@ -989,7 +989,7 @@ void LLFloaterAnimPreview::onBtnOK(void* userdata)  						    name,  						    desc,  						    0, -						    LLFolderType::FT_NONE, +						    LLAssetType::AT_NONE,  						    LLInventoryType::IT_ANIMATION,  						    LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),  						    name, diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp index 538b44c056..7cb8987879 100644 --- a/indra/newview/llfloaterbulkpermission.cpp +++ b/indra/newview/llfloaterbulkpermission.cpp @@ -264,6 +264,7 @@ void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, Invent  			( asstype == LLAssetType::AT_BODYPART  && gSavedSettings.getBOOL("BulkChangeIncludeBodyParts" )) ||  			( asstype == LLAssetType::AT_CLOTHING  && gSavedSettings.getBOOL("BulkChangeIncludeClothing"  )) ||  			( asstype == LLAssetType::AT_GESTURE   && gSavedSettings.getBOOL("BulkChangeIncludeGestures"  )) || +			( asstype == LLAssetType::AT_FAVORITE  && gSavedSettings.getBOOL("BulkChangeIncludeFavourite" )) ||  			( asstype == LLAssetType::AT_NOTECARD  && gSavedSettings.getBOOL("BulkChangeIncludeNotecards" )) ||  			( asstype == LLAssetType::AT_OBJECT    && gSavedSettings.getBOOL("BulkChangeIncludeObjects"   )) ||  			( asstype == LLAssetType::AT_LSL_TEXT  && gSavedSettings.getBOOL("BulkChangeIncludeScripts"   )) || diff --git a/indra/newview/llfloaterbuy.cpp b/indra/newview/llfloaterbuy.cpp index cefd7a3808..3da06fa7b3 100644 --- a/indra/newview/llfloaterbuy.cpp +++ b/indra/newview/llfloaterbuy.cpp @@ -293,7 +293,7 @@ void LLFloaterBuy::onClickBuy()  {  	// Put the items where we put new folders.  	LLUUID category_id; -	category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT); +	category_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_OBJECT);  	// *NOTE: doesn't work for multiple object buy, which UI does not  	// currently support sale info is used for verification only, if diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp index 32802f6a20..f3eaa0c916 100644 --- a/indra/newview/llfloaterbuycontents.cpp +++ b/indra/newview/llfloaterbuycontents.cpp @@ -286,7 +286,7 @@ void LLFloaterBuyContents::onClickBuy()  	// Put the items where we put new folders.  	LLUUID category_id; -	category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CATEGORY); +	category_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CATEGORY);  	// *NOTE: doesn't work for multiple object buy, which UI does not  	// currently support sale info is used for verification only, if diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp index 92778510e7..8570b5eb4a 100644 --- a/indra/newview/llfloaterinventory.cpp +++ b/indra/newview/llfloaterinventory.cpp @@ -40,7 +40,6 @@  #include "llinventorymodel.h"  #include "llpanelmaininventory.h"  #include "llresmgr.h" -#include "llviewerfoldertype.h"  ///----------------------------------------------------------------------------  /// LLFloaterInventory diff --git a/indra/newview/llfloaterinventory.h b/indra/newview/llfloaterinventory.h index c0de89bff2..f2f2963a33 100644 --- a/indra/newview/llfloaterinventory.h +++ b/indra/newview/llfloaterinventory.h @@ -35,7 +35,6 @@  #define LL_LLFLOATERINVENTORY_H  #include "llfloater.h" -#include "llfoldertype.h"  class LLInventoryPanel;  class LLPanelMainInventory; diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp index b7296518d4..ed7d2c71ea 100644 --- a/indra/newview/llfloaternamedesc.cpp +++ b/indra/newview/llfloaternamedesc.cpp @@ -176,7 +176,7 @@ void LLFloaterNameDesc::onBtnOK( )  	upload_new_resource(mFilenameAndPath, // file  			    childGetValue("name_form").asString(),   			    childGetValue("description_form").asString(),  -			    0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE, +			    0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,  			    LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),  			    display_name, callback, expected_upload_cost, nruserdata);  	closeFloater(false); diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp index e277aba493..b6ec0868cf 100644 --- a/indra/newview/llfloateropenobject.cpp +++ b/indra/newview/llfloateropenobject.cpp @@ -158,14 +158,14 @@ void LLFloaterOpenObject::moveToInventory(bool wear)  	if (wear)  	{  		parent_category_id = gInventory.findCategoryUUIDForType( -			LLFolderType::FT_CLOTHING); +			LLAssetType::AT_CLOTHING);  	}  	else  	{  		parent_category_id = gInventory.getRootFolderID();  	}  	LLUUID category_id = gInventory.createNewCategory(parent_category_id,  -		LLFolderType::FT_NONE,  +		LLAssetType::AT_NONE,   		name);  	LLCatAndWear* data = new LLCatAndWear; diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index b146ed9b38..ad2fe34e95 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -770,7 +770,7 @@ void LLFloaterReporter::takeScreenshot()  	if (COMPLAINT_REPORT == mReportType)  	{  		mResourceDatap->mAssetInfo.mType = LLAssetType::AT_TEXTURE; -		mResourceDatap->mPreferredLocation = LLFolderType::EType(LLResourceData::INVALID_LOCATION); +		mResourceDatap->mPreferredLocation = LLAssetType::EType(-2);  	}  	else  	{ @@ -789,7 +789,7 @@ void LLFloaterReporter::takeScreenshot()  	// store in the image list so it doesn't try to fetch from the server  	LLPointer<LLViewerFetchedTexture> image_in_list =  -		LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid, TRUE, FALSE, LLViewerTexture::FETCHED_TEXTURE); +		LLViewerTextureManager::getFetchedTexture(mResourceDatap->mAssetInfo.mUuid, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::FETCHED_TEXTURE);  	image_in_list->createGLTexture(0, raw);  	// the texture picker then uses that texture @@ -838,7 +838,7 @@ void LLFloaterReporter::uploadDoneCallback(const LLUUID &uuid, void *user_data,  	}  	EReportType report_type = UNKNOWN_REPORT; -	if (data->mPreferredLocation == LLResourceData::INVALID_LOCATION) +	if (data->mPreferredLocation == -2)  	{  		report_type = COMPLAINT_REPORT;  	} diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp index 3bf1848efb..eeea71cc4c 100644 --- a/indra/newview/llfloaterscriptdebug.cpp +++ b/indra/newview/llfloaterscriptdebug.cpp @@ -106,7 +106,7 @@ void LLFloaterScriptDebug::addScriptLine(const std::string &utf8mesg, const std:  	if (objectp)  	{ -		objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, TRUE)); +		objectp->setIcon(LLViewerTextureManager::getFetchedTextureFromFile("script_error.j2c", TRUE, LLViewerTexture::BOOST_UI));  		floater_label = llformat("%s(%.2f, %.2f)", user_name.c_str(), objectp->getPositionRegion().mV[VX], objectp->getPositionRegion().mV[VY]);  	}  	else diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 541e2a2664..235e819218 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -980,7 +980,7 @@ void LLSnapshotLivePreview::saveTexture()  				    "Snapshot : " + pos_string,  				    "Taken by " + who_took_it + " at " + pos_string,  				    0, -				    LLFolderType::FT_SNAPSHOT_CATEGORY, +				    LLAssetType::AT_SNAPSHOT_CATEGORY,  				    LLInventoryType::IT_SNAPSHOT,  				    PERM_ALL,  // Note: Snapshots to inventory is a special case of content upload  				    PERM_NONE, // that ignores the user's premissions preferences and continues to diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 6567c1a649..f3f600149f 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -327,7 +327,7 @@ void LLFloaterWorldMap::onOpen(const LLSD& key)  		LLFirstUse::useMap();  		// Start speculative download of landmarks -		const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); +		LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);  		gInventory.startBackgroundFetch(landmark_folder_id);  		childSetFocus("location", TRUE); diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 7863c373c6..a963c96da4 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -55,7 +55,6 @@  #include "llviewermenu.h"  #include "lluictrlfactory.h"  #include "llviewercontrol.h" -#include "llviewerfoldertype.h"  #include "llviewerwindow.h"  #include "llvoavatar.h"  #include "llfloaterproperties.h" @@ -1109,7 +1108,7 @@ void LLFolderView::propertiesSelectedItems( void )  	}  } -void LLFolderView::changeType(LLInventoryModel *model, LLFolderType::EType new_folder_type) +void LLFolderView::changeType(LLInventoryModel *model, LLAssetType::EType new_folder_type)  {  	LLFolderBridge *folder_bridge = LLFolderBridge::sSelf; @@ -1959,7 +1958,7 @@ bool LLFolderView::doToSelected(LLInventoryModel* model, const LLSD& userdata)  	if (action.length() > change_folder_string.length() &&   		(action.compare(0,change_folder_string.length(),"change_folder_type_") == 0))  	{ -		LLFolderType::EType new_folder_type = LLViewerFolderType::lookupTypeFromXUIName(action.substr(change_folder_string.length())); +		LLAssetType::EType new_folder_type = LLFolderType::lookupTypeFromXUIName(action.substr(change_folder_string.length()));  		changeType(model, new_folder_type);  		return true;  	} diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 0bd65b5f90..ebfb4efde2 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -192,7 +192,7 @@ public:  	void propertiesSelectedItems( void );  	// change the folder type -	void changeType(LLInventoryModel *model, LLFolderType::EType new_folder_type); +	void changeType(LLInventoryModel *model, LLAssetType::EType new_folder_type);  	void autoOpenItem(LLFolderViewFolder* item);  	void closeAutoOpenedFolders(); diff --git a/indra/newview/llfoldervieweventlistener.h b/indra/newview/llfoldervieweventlistener.h index 60ece75cea..ff38da279a 100644 --- a/indra/newview/llfoldervieweventlistener.h +++ b/indra/newview/llfoldervieweventlistener.h @@ -32,7 +32,6 @@  #define LLFOLDERVIEWEVENTLISTENER_H  #include "lldarray.h"	// JAMESDEBUG convert to std::vector -#include "llfoldertype.h"  #include "llfontgl.h"	// just for StyleFlags enum  #include "llpointer.h" @@ -58,7 +57,7 @@ public:  	virtual const LLUUID& getUUID() const = 0;  	virtual time_t getCreationDate() const = 0;	// UTC seconds  	virtual PermissionMask getPermissionMask() const = 0; -	virtual LLFolderType::EType getPreferredType() const = 0; +	virtual LLAssetType::EType getPreferredType() const = 0;  	virtual LLPointer<LLUIImage> getIcon() const = 0;  	virtual LLFontGL::StyleFlags getLabelStyle() const = 0;  	virtual std::string getLabelSuffix() const = 0; diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index 6fdaefd21a..f83a426cda 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -248,13 +248,13 @@ void LLFolderViewItem::refreshFromListener()  	if(mListener)  	{  		mLabel = mListener->getDisplayName(); -		LLFolderType::EType preferred_type = mListener->getPreferredType(); +		LLAssetType::EType preferred_type = mListener->getPreferredType();  		// *TODO: to be removed when database supports multi language. This is a  		// temporary attempt to display the inventory folder in the user locale.  		// mantipov: *NOTE: be sure this code is synchronized with LLFriendCardsManager::findChildFolderUUID  		//		it uses the same way to find localized string -		if (LLFolderType::lookupIsProtectedType(preferred_type)) +		if (LLAssetType::lookupIsProtectedCategoryType(preferred_type))  		{  			LLTrans::findString(mLabel, "InvFolder " + mLabel);  		}; @@ -1753,7 +1753,7 @@ bool LLFolderViewFolder::isTrash() const  {  	if (mAmTrash == LLFolderViewFolder::UNKNOWN)  	{ -		mAmTrash = mListener->getUUID() == gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH, false) ? LLFolderViewFolder::TRASH : LLFolderViewFolder::NOT_TRASH; +		mAmTrash = mListener->getUUID() == gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH, false) ? LLFolderViewFolder::TRASH : LLFolderViewFolder::NOT_TRASH;  	}  	return mAmTrash == LLFolderViewFolder::TRASH;  } @@ -2167,7 +2167,7 @@ BOOL LLFolderViewFolder::handleDoubleClick( S32 x, S32 y, MASK mask )  {  	const LLUUID &cat_uuid = getListener()->getUUID();  	const LLViewerInventoryCategory *cat = gInventory.getCategory(cat_uuid); -	if (cat && cat->getPreferredType() == LLFolderType::FT_OUTFIT) +	if (cat && cat->getPreferredType() == LLAssetType::AT_OUTFIT)  	{  		getListener()->performAction(NULL, NULL,"replaceoutfit");  		return TRUE; @@ -2490,7 +2490,7 @@ bool LLInventorySort::operator()(const LLFolderViewItem* const& a, const LLFolde  		&& b->getListener()->getInventoryType() == LLInventoryType::IT_LANDMARK)  	{ -		static const LLUUID& favorites_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); +		static LLUUID favorites_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);  		LLUUID a_uuid = a->getParentFolder()->getListener()->getUUID();  		LLUUID b_uuid = b->getParentFolder()->getListener()->getUUID(); diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp index 5f79fe8b20..fbcaeee01f 100644 --- a/indra/newview/llfriendcard.cpp +++ b/indra/newview/llfriendcard.cpp @@ -135,14 +135,14 @@ const LLUUID LLFriendCardsManager::extractAvatarID(const LLUUID& avatarID)  // and this method must be called before any actions with friend list  void LLFriendCardsManager::ensureFriendFoldersExist()  { -	const LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); +	LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);  	LLUUID friendFolderUUID = findFriendFolderUUIDImpl();  	if (friendFolderUUID.isNull())  	{  		friendFolderUUID = gInventory.createNewCategory(callingCardsFolderID, -			LLFolderType::FT_CALLINGCARD, get_friend_folder_name()); +			LLAssetType::AT_CALLINGCARD, get_friend_folder_name());  	}  	LLUUID friendAllSubfolderUUID = findFriendAllSubfolderUUIDImpl(); @@ -150,7 +150,7 @@ void LLFriendCardsManager::ensureFriendFoldersExist()  	if (friendAllSubfolderUUID.isNull())  	{  		friendAllSubfolderUUID = gInventory.createNewCategory(friendFolderUUID, -			LLFolderType::FT_CALLINGCARD, get_friend_all_subfolder_name()); +			LLAssetType::AT_CALLINGCARD, get_friend_all_subfolder_name());  	}  } @@ -351,7 +351,7 @@ void LLFriendCardsManager::collectFriendsLists(folderid_buddies_map_t& folderBud  /************************************************************************/  const LLUUID& LLFriendCardsManager::findFriendFolderUUIDImpl() const  { -	const LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); +	LLUUID callingCardsFolderID = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);  	std::string friendFolderName = get_friend_folder_name(); diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 19fa66fd0e..dee86f4a22 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -106,8 +106,6 @@ void LLIMFloater::onFocusReceived()  // virtual  void LLIMFloater::onClose(bool app_quitting)  { -	if (!gIMMgr->hasSession(mSessionID)) return; -	  	setTyping(false);  	gIMMgr->leaveSession(mSessionID);  } @@ -236,10 +234,7 @@ BOOL LLIMFloater::postBuild()  	mChatHistory = getChild<LLChatHistory>("chat_history"); -	std::string session_name(LLIMModel::instance().getName(mSessionID)); -	LLStringUtil::toUpper(session_name); -	setTitle(session_name); - +	setTitle(LLIMModel::instance().getName(mSessionID));  	setDocked(true);  	mTypingStart = LLTrans::getString("IM_typing_start_string"); diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 9989a3b473..bfad2b1624 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -188,8 +188,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)  {  	mCommitCallbackRegistrar.add("InspectAvatar.ViewProfile",	boost::bind(&LLInspectAvatar::onClickViewProfile, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.AddFriend",	boost::bind(&LLInspectAvatar::onClickAddFriend, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.IM", -		boost::bind(&LLInspectAvatar::onClickIM, this));	 +	mCommitCallbackRegistrar.add("InspectAvatar.IM",	boost::bind(&LLInspectAvatar::onClickIM, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.Teleport",	boost::bind(&LLInspectAvatar::onClickTeleport, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.InviteToGroup",	boost::bind(&LLInspectAvatar::onClickInviteToGroup, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.Pay",	boost::bind(&LLInspectAvatar::onClickPay, this));	 @@ -307,21 +306,7 @@ void LLInspectAvatar::requestUpdate()  	// You can't re-add someone as a friend if they are already your friend  	bool is_friend = LLAvatarTracker::instance().getBuddyInfo(mAvatarID) != NULL;  	bool is_self = (mAvatarID == gAgentID); -	if (is_self) -	{ -		getChild<LLUICtrl>("add_friend_btn")->setVisible(false); -		getChild<LLUICtrl>("im_btn")->setVisible(false); -	} -	else if (is_friend) -	{ -		getChild<LLUICtrl>("add_friend_btn")->setVisible(false); -		getChild<LLUICtrl>("im_btn")->setVisible(true); -	} -	else -	{ -		getChild<LLUICtrl>("add_friend_btn")->setVisible(true); -		getChild<LLUICtrl>("im_btn")->setVisible(false); -	} +	childSetEnabled("add_friend_btn", !is_friend && !is_self);  	// Use an avatar_icon even though the image id will come down with the  	// avatar properties because the avatar_icon code maintains a cache of icons diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index b9a25d5dc7..b9775cf0e9 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -78,7 +78,6 @@  #include "llscrollcontainer.h"  #include "llimview.h"  #include "lltooldraganddrop.h" -#include "llviewerfoldertype.h"  #include "llviewertexturelist.h"  #include "llviewerinventory.h"  #include "llviewerobjectlist.h" @@ -86,7 +85,6 @@  #include "llvoavatar.h"  #include "llwearable.h"  #include "llwearablelist.h" -#include "llviewerassettype.h"  #include "llviewermessage.h"  #include "llviewerregion.h"  #include "llvoavatarself.h" @@ -204,9 +202,9 @@ PermissionMask LLInvFVBridge::getPermissionMask() const  }  // virtual -LLFolderType::EType LLInvFVBridge::getPreferredType() const +LLAssetType::EType LLInvFVBridge::getPreferredType() const  { -	return LLFolderType::FT_NONE; +	return LLAssetType::AT_NONE;  } @@ -341,7 +339,7 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*  	LLInventoryModel* model = getInventoryModel();  	if(!model) return;  	LLMessageSystem* msg = gMessageSystem; -	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);  	LLViewerInventoryItem* item = NULL;  	LLViewerInventoryCategory* cat = NULL;  	std::vector<LLUUID> move_ids; @@ -506,7 +504,7 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const  			}  		}  		const LLViewerInventoryCategory *cat = model->getCategory(objects.get(i)); -		if (cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType())) +		if (cat && !LLAssetType::lookupCanLink(cat->getPreferredType()))  		{  			return FALSE;  		} @@ -647,7 +645,7 @@ BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const  	if(obj)  	{ -		*type = LLViewerAssetType::lookupDragAndDropType(obj->getActualType()); +		*type = LLAssetType::lookupDragAndDropType(obj->getActualType());  		if(*type == DAD_NONE)  		{  			return FALSE; @@ -688,7 +686,7 @@ BOOL LLInvFVBridge::isInTrash() const  {  	LLInventoryModel* model = getInventoryModel();  	if(!model) return FALSE; -	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); +	const LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);  	return model->isObjectDescendentOf(mUUID, trash_id);  } @@ -701,7 +699,7 @@ BOOL LLInvFVBridge::isLinkedObjectInTrash() const  	{  		LLInventoryModel* model = getInventoryModel();  		if(!model) return FALSE; -		const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); +		const LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);  		return model->isObjectDescendentOf(obj->getLinkedUUID(), trash_id);  	}  	return FALSE; @@ -719,7 +717,7 @@ BOOL LLInvFVBridge::isCOFFolder() const  {  	const LLInventoryModel* model = getInventoryModel();  	if(!model) return TRUE; -	const LLUUID cof_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); +	const LLUUID cof_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);  	if (mUUID == cof_id || model->isObjectDescendentOf(mUUID, cof_id))  	{  		return TRUE; @@ -1046,7 +1044,7 @@ void LLItemBridge::restoreItem()  	if(item)  	{  		LLInventoryModel* model = getInventoryModel(); -		const LLUUID new_parent = model->findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(item->getType())); +		const LLUUID new_parent = model->findCategoryUUIDForType(item->getType());  		// do not restamp on restore.  		LLInvFVBridge::changeItemParent(model, item, new_parent, FALSE);  	} @@ -1079,7 +1077,7 @@ void LLItemBridge::restoreToWorld()  	}  	// Check if it's in the trash. (again similar to the normal rez logic) -	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  	if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id))  	{  		remove_from_inventory = TRUE; @@ -1274,7 +1272,7 @@ BOOL LLItemBridge::removeItem()  	LLPreview::hide(mUUID, TRUE);  	LLInventoryModel* model = getInventoryModel();  	if(!model) return FALSE; -	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);  	LLViewerInventoryItem* item = getItem();  	// if item is not already in trash @@ -1367,7 +1365,7 @@ BOOL LLFolderBridge::isItemMovable() const  	LLInventoryObject* obj = getInventoryObject();  	if(obj)  	{ -		return (!LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)obj)->getPreferredType())); +		return (!LLAssetType::lookupIsProtectedCategoryType(((LLInventoryCategory*)obj)->getPreferredType()));  	}  	return FALSE;  } @@ -1403,7 +1401,7 @@ BOOL LLFolderBridge::isItemRemovable()  		return FALSE;  	} -	if(LLFolderType::lookupIsProtectedType(category->getPreferredType())) +	if(LLAssetType::lookupIsProtectedCategoryType(category->getPreferredType()))  	{  		return FALSE;  	} @@ -1416,7 +1414,7 @@ BOOL LLFolderBridge::isItemRemovable()  	for( i = 0; i < descendent_categories.count(); i++ )  	{  		LLInventoryCategory* category = descendent_categories[i]; -		if(LLFolderType::lookupIsProtectedType(category->getPreferredType())) +		if(LLAssetType::lookupIsProtectedCategoryType(category->getPreferredType()))  		{  			return FALSE;  		} @@ -1593,20 +1591,20 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  		const LLUUID& cat_id = inv_cat->getUUID();  		// Is the destination the trash? -		const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); +		const LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);  		BOOL move_is_into_trash = (mUUID == trash_id)  				|| model->isObjectDescendentOf(mUUID, trash_id); -		BOOL is_movable = (!LLFolderType::lookupIsProtectedType(inv_cat->getPreferredType())); -		const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); +		BOOL is_movable = (!LLAssetType::lookupIsProtectedCategoryType(inv_cat->getPreferredType())); +		LLUUID current_outfit_id = model->findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);  		BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); -		BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); +		BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLAssetType::AT_OUTFIT);  		if (move_is_into_current_outfit || move_is_into_outfit)  		{  			// BAP - restrictions?  			is_movable = true;  		} -		if (mUUID == gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE)) +		if (mUUID == gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE))  		{  			is_movable = FALSE; // It's generally movable but not into Favorites folder. EXT-1604  		} @@ -1618,7 +1616,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,  			for( i = 0; i < descendent_categories.count(); i++ )  			{  				LLInventoryCategory* category = descendent_categories[i]; -				if(LLFolderType::lookupIsProtectedType(category->getPreferredType())) +				if(LLAssetType::lookupIsProtectedCategoryType(category->getPreferredType()))  				{  					// ...can't move "special folders" like Textures  					is_movable = FALSE; @@ -1851,8 +1849,8 @@ bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat,  		LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory(); // BAP - safe?  		// BAP remove AT_NONE support after ensembles are fully working?  		return (linked_category && -				((linked_category->getPreferredType() == LLFolderType::FT_NONE) || -				 (LLFolderType::lookupIsEnsembleType(linked_category->getPreferredType())))); +				((linked_category->getPreferredType() == LLAssetType::AT_NONE) || +				 (LLAssetType::lookupIsEnsembleCategoryType(linked_category->getPreferredType()))));  	}  } @@ -2154,7 +2152,7 @@ void LLFolderBridge::determineFolderType()  BOOL LLFolderBridge::isItemRenameable() const  {  	LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)getCategory(); -	if(cat && !LLFolderType::lookupIsProtectedType(cat->getPreferredType()) +	if(cat && !LLAssetType::lookupIsProtectedCategoryType(cat->getPreferredType())  	   && (cat->getOwnerID() == gAgent.getID()))  	{  		return TRUE; @@ -2169,15 +2167,15 @@ void LLFolderBridge::restoreItem()  	if(cat)  	{  		LLInventoryModel* model = getInventoryModel(); -		const LLUUID new_parent = model->findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(cat->getType())); +		LLUUID new_parent = model->findCategoryUUIDForType(cat->getType());  		// do not restamp children on restore  		LLInvFVBridge::changeCategoryParent(model, cat, new_parent, FALSE);  	}  } -LLFolderType::EType LLFolderBridge::getPreferredType() const +LLAssetType::EType LLFolderBridge::getPreferredType() const  { -	LLFolderType::EType preferred_type = LLFolderType::FT_NONE; +	LLAssetType::EType preferred_type = LLAssetType::AT_NONE;  	LLViewerInventoryCategory* cat = getCategory();  	if(cat)  	{ @@ -2190,7 +2188,7 @@ LLFolderType::EType LLFolderBridge::getPreferredType() const  // Icons for folders are based on the preferred type  LLUIImagePtr LLFolderBridge::getIcon() const  { -	LLFolderType::EType preferred_type = LLFolderType::FT_NONE; +	LLAssetType::EType preferred_type = LLAssetType::AT_NONE;  	LLViewerInventoryCategory* cat = getCategory();  	if(cat)  	{ @@ -2199,7 +2197,7 @@ LLUIImagePtr LLFolderBridge::getIcon() const  	return getIcon(preferred_type);  } -LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type) +LLUIImagePtr LLFolderBridge::getIcon(LLAssetType::EType preferred_type)  {  	// we only have one folder image now  	return LLUI::getUIImage("Inv_FolderClosed"); @@ -2238,7 +2236,7 @@ BOOL LLFolderBridge::removeItem()  	LLInventoryModel* model = getInventoryModel();  	if(!model) return FALSE; -	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);  	// Look for any gestures and deactivate them  	LLInventoryModel::cat_array_t	descendent_categories; @@ -2356,11 +2354,11 @@ void LLFolderBridge::folderOptionsMenu()  	if(!model) return;  	const LLInventoryCategory* category = model->getCategory(mUUID); -	LLFolderType::EType type = category->getPreferredType(); -	const bool is_default_folder = category && LLFolderType::lookupIsProtectedType(type); +	LLAssetType::EType type = category->getPreferredType(); +	const bool is_default_folder = category && LLAssetType::lookupIsProtectedCategoryType(type);  	// BAP change once we're no longer treating regular categories as ensembles. -	const bool is_ensemble = category && (type == LLFolderType::FT_NONE || -										  LLFolderType::lookupIsEnsembleType(type)); +	const bool is_ensemble = category && (type == LLAssetType::AT_NONE || +										  LLAssetType::lookupIsEnsembleCategoryType(type));  	// calling card related functionality for folders. @@ -2426,8 +2424,8 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  //	std::vector<std::string> disabled_items;  	LLInventoryModel* model = getInventoryModel();  	if(!model) return; -	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); -	const LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); +	LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH); +	LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);  	mItems.clear(); //adding code to clear out member Items (which means Items should not have other data here at this point)  	mDisabledItems.clear(); //adding code to clear out disabled members from previous @@ -2457,6 +2455,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  	else if(isAgentInventory()) // do not allow creating in library  	{  		LLViewerInventoryCategory *cat =  getCategory(); +  		// BAP removed protected check to re-enable standard ops in untyped folders.  		// Not sure what the right thing is to do here.  		if (!isCOFFolder() && cat /*&& @@ -2473,7 +2472,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  			mItems.push_back(std::string("Change Type"));  			LLViewerInventoryCategory *cat = getCategory(); -			if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType())) +			if (cat && LLAssetType::lookupIsProtectedCategoryType(cat->getPreferredType()))  			{  				mDisabledItems.push_back(std::string("Change Type"));  			} @@ -2483,7 +2482,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)  		else  		{  			// Want some but not all of the items from getClipboardEntries for outfits. -			if (cat && cat->getPreferredType()==LLFolderType::FT_OUTFIT) +			if (cat && cat->getPreferredType()==LLAssetType::AT_OUTFIT)  			{  				mItems.push_back(std::string("Rename"));  				mItems.push_back(std::string("Delete")); @@ -2619,7 +2618,7 @@ void LLFolderBridge::createNewCategory(void* user_data)  	if(!model) return;  	LLUUID id;  	id = model->createNewCategory(bridge->getUUID(), -								  LLFolderType::FT_NONE, +								  LLAssetType::AT_NONE,  								  LLStringUtil::null);  	model->notifyObservers(); @@ -2704,7 +2703,7 @@ void LLFolderBridge::createWearable(LLFolderBridge* bridge, EWearableType type)  // Separate function so can be called by global menu as well as right-click  // menu.  // static -void LLFolderBridge::createWearable(const LLUUID &parent_id, EWearableType type) +void LLFolderBridge::createWearable(LLUUID parent_id, EWearableType type)  {  	LLWearable* wearable = LLWearableList::instance().createNewWearable(type);  	LLAssetType::EType asset_type = wearable->getAssetType(); @@ -2847,17 +2846,17 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  			break;  		case LLAssetType::AT_CATEGORY: -			is_movable = !LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)inv_item)->getPreferredType()); +			is_movable = !LLAssetType::lookupIsProtectedCategoryType(((LLInventoryCategory*)inv_item)->getPreferredType());  			break;  		default:  			break;  		} -		const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); +		LLUUID trash_id = model->findCategoryUUIDForType(LLAssetType::AT_TRASH);  		BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id); -		const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); +		LLUUID current_outfit_id = model->findCategoryUUIDForType(LLAssetType::AT_CURRENT_OUTFIT);  		BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); -		BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); +		BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLAssetType::AT_OUTFIT);  		if(is_movable && move_is_into_trash)  		{ @@ -2887,7 +2886,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  				.isObjDirectDescendentOfCategory (inv_item, getCategory());  		} -		const LLUUID& favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE); +		LLUUID favorites_id = model->findCategoryUUIDForType(LLAssetType::AT_FAVORITE);  		// we can move item inside a folder only if this folder is Favorites. See EXT-719  		accept = is_movable && ((mUUID != inv_item->getParentUUID()) || (mUUID == favorites_id)); @@ -4935,7 +4934,7 @@ void	LLLSLTextBridgeAction::doIt()  BOOL LLWearableBridgeAction::isInTrash() const  {  	if(!mModel) return FALSE; -	const LLUUID trash_id = mModel->findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id = mModel->findCategoryUUIDForType(LLAssetType::AT_TRASH);  	return mModel->isObjectDescendentOf(mUUID, trash_id);  } @@ -5074,7 +5073,7 @@ std::string LLLinkFolderBridge::sPrefix("Link: ");  LLUIImagePtr LLLinkFolderBridge::getIcon() const  { -	LLFolderType::EType preferred_type = LLFolderType::FT_NONE; +	LLAssetType::EType preferred_type = LLAssetType::AT_NONE;  	if (LLViewerInventoryItem *item = getItem())  	{  		if (const LLViewerInventoryCategory* cat = item->getLinkedCategory()) diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index f95e8f9361..3f3513a665 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -159,7 +159,7 @@ public:  	virtual const std::string& getName() const;  	virtual const std::string& getDisplayName() const;  	virtual PermissionMask getPermissionMask() const; -	virtual LLFolderType::EType getPreferredType() const; +	virtual LLAssetType::EType getPreferredType() const;  	virtual time_t getCreationDate() const;  	virtual LLFontGL::StyleFlags getLabelStyle() const  	{ @@ -298,9 +298,9 @@ public:  	virtual void selectItem();  	virtual void restoreItem(); -	virtual LLFolderType::EType getPreferredType() const; +	virtual LLAssetType::EType getPreferredType() const;  	virtual LLUIImagePtr getIcon() const; -	static LLUIImagePtr getIcon(LLFolderType::EType preferred_type); +	static LLUIImagePtr getIcon(LLAssetType::EType asset_type);  	virtual BOOL renameItem(const std::string& new_name);  	virtual BOOL removeItem(); @@ -321,7 +321,7 @@ public:  	virtual BOOL copyToClipboard() const;  	static void createWearable(LLFolderBridge* bridge, EWearableType type); -	static void createWearable(const LLUUID &parent_folder_id, EWearableType type); +	static void createWearable(LLUUID parent_folder_id, EWearableType type);  	LLViewerInventoryCategory* getCategory() const; diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 75218e98e0..77121bd922 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -317,6 +317,10 @@ const std::string& get_item_icon_name(LLAssetType::EType asset_type,  	case LLAssetType::AT_GESTURE:  		idx = GESTURE_ICON_NAME;  		break; +	case LLAssetType::AT_FAVORITE: +		//TODO - need bette idx +		idx = LANDMARK_ICON_NAME; +		break;  	case LLAssetType::AT_LINK:  		idx = LINKITEM_ICON_NAME;  		break; diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index baf34b42ff..23439191f3 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -49,7 +49,6 @@  #include "llinventoryfunctions.h"  #include "llinventorypanel.h"  #include "llfloaterinventory.h" -#include "llviewerfoldertype.h"  #include "llviewerinventory.h"  #include "llviewermessage.h"  #include "llviewerwindow.h" @@ -317,7 +316,7 @@ void LLInventoryModel::unlockDirectDescendentArrays(const LLUUID& cat_id)  // specifies 'type' as what it defaults to containing. The category is  // not necessarily only for that type. *NOTE: This will create a new  // inventory category on the fly if one does not exist. -const LLUUID LLInventoryModel::findCategoryUUIDForType(LLFolderType::EType t, bool create_folder) +LLUUID LLInventoryModel::findCategoryUUIDForType(LLAssetType::EType t, bool create_folder)  {  	const LLUUID &rv = findCatUUID(t);  	if(rv.isNull() && isInventoryUsable() && create_folder) @@ -333,10 +332,10 @@ const LLUUID LLInventoryModel::findCategoryUUIDForType(LLFolderType::EType t, bo  // Internal method which looks for a category with the specified  // preferred type. Returns LLUUID::null if not found. -const LLUUID &LLInventoryModel::findCatUUID(LLFolderType::EType preferred_type) const +const LLUUID &LLInventoryModel::findCatUUID(LLAssetType::EType preferred_type) const  {  	const LLUUID &root_id = gInventory.getRootFolderID(); -	if(LLFolderType::FT_CATEGORY == preferred_type) +	if(LLAssetType::AT_CATEGORY == preferred_type)  	{  		return root_id;  	} @@ -364,7 +363,7 @@ const LLUUID &LLInventoryModel::findCatUUID(LLFolderType::EType preferred_type)  // version will take care of details like what the name should be  // based on preferred type. Returns the UUID of the new category.  LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id, -										   LLFolderType::EType preferred_type, +										   LLAssetType::EType preferred_type,  										   const std::string& pname)  {  	LLUUID id; @@ -374,9 +373,9 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id,  		return id;  	} -	if(LLFolderType::lookup(preferred_type) == LLFolderType::badLookup()) +	if(preferred_type == LLAssetType::AT_SIMSTATE)  	{ -		lldebugs << "Attempt to create undefined category." << llendl; +		lldebugs << "Attempt to create simstate category." << llendl;  		return id;  	} @@ -388,7 +387,7 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id,  	}  	else  	{ -		name.assign(LLViewerFolderType::lookupNewCategoryName(preferred_type)); +		name.assign(LLAssetType::lookupCategoryName(preferred_type));  	}  	// Add the category to the internal representation @@ -452,7 +451,7 @@ void LLInventoryModel::collectDescendentsIf(const LLUUID& id,  	// Start with categories  	if(!include_trash)  	{ -		const LLUUID trash_id = findCategoryUUIDForType(LLFolderType::FT_TRASH); +		const LLUUID trash_id = findCategoryUUIDForType(LLAssetType::AT_TRASH);  		if(trash_id.notNull() && (trash_id == id))  			return;  	} @@ -486,7 +485,7 @@ void LLInventoryModel::collectDescendentsIf(const LLUUID& id,  			if (item->getActualType() == LLAssetType::AT_LINK_FOLDER)  			{  				LLViewerInventoryCategory *linked_cat = item->getLinkedCategory(); -				if (linked_cat && linked_cat->getPreferredType() != LLFolderType::FT_OUTFIT) +				if (linked_cat && linked_cat->getPreferredType() != LLAssetType::AT_OUTFIT)  					// BAP - was   					// LLAssetType::lookupIsEnsembleCategoryType(linked_cat->getPreferredType()))  					// Change back once ensemble typing is in place. @@ -666,7 +665,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item)  		if(item->getParentUUID().isNull())  		{ -			const LLUUID category_id = findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(new_item->getType())); +			LLUUID category_id = findCategoryUUIDForType(new_item->getType());  			new_item->setParent(category_id);  			item_array_t* item_array = get_ptr_in_map(mParentChildItemTree, category_id);  			if( item_array ) @@ -690,7 +689,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item)  			LLUUID parent_id = item->getParentUUID();  			if(parent_id == CATEGORIZE_LOST_AND_FOUND_ID)  			{ -				parent_id = findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); +				parent_id = findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);  				new_item->setParent(parent_id);  			}  			item_array_t* item_array = get_ptr_in_map(mParentChildItemTree, parent_id); @@ -703,7 +702,7 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item)  				// Whoops! No such parent, make one.  				llinfos << "Lost item: " << new_item->getUUID() << " - "  						<< new_item->getName() << llendl; -				parent_id = findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); +				parent_id = findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);  				new_item->setParent(parent_id);  				item_array = get_ptr_in_map(mParentChildItemTree, parent_id);  				if(item_array) @@ -1185,7 +1184,7 @@ void LLInventoryModel::mock(const LLUUID& root_id)  		root_id,  		LLUUID::null,  		LLAssetType::AT_CATEGORY, -		LLFolderType::lookupNewCategoryName(LLFolderType::FT_ROOT_CATEGORY), +		LLAssetType::lookupCategoryName(LLAssetType::AT_ROOT_CATEGORY),  		gAgent.getID());  	addCategory(cat);  	gInventory.buildParentChildMap(); @@ -1343,7 +1342,7 @@ void  fetchDescendentsResponder::result(const LLSD& content)  				    item_it != folder_sd["items"].endArray();  				    ++item_it)  			    {	 -                    const LLUUID lost_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); +                    LLUUID lost_uuid = gInventory.findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);                      if (lost_uuid.notNull())                      {  				        LLSD item = *item_it; @@ -2050,11 +2049,11 @@ bool LLInventoryModel::loadSkeleton(  			cat->setUUID(folder_id.asUUID());  			cat->setParent(parent_id.asUUID()); -			LLFolderType::EType preferred_type = LLFolderType::FT_NONE; +			LLAssetType::EType preferred_type = LLAssetType::AT_NONE;  			LLSD type_default = (*it)["type_default"];  			if(type_default.isDefined())              { -				preferred_type = (LLFolderType::EType)type_default.asInteger(); +				preferred_type = (LLAssetType::EType)type_default.asInteger();              }              cat->setPreferredType(preferred_type);  			cat->setVersion(version.asInteger()); @@ -2401,12 +2400,12 @@ void LLInventoryModel::buildParentChildMap()  					<< cat->getName() << llendl;  			++lost;  			// plop it into the lost & found. -			LLFolderType::EType pref = cat->getPreferredType(); -			if(LLFolderType::FT_NONE == pref) +			LLAssetType::EType pref = cat->getPreferredType(); +			if(LLAssetType::AT_NONE == pref)  			{ -				cat->setParent(findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND)); +				cat->setParent(findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND));  			} -			else if(LLFolderType::FT_CATEGORY == pref) +			else if(LLAssetType::AT_CATEGORY == pref)  			{  				// it's the root  				cat->setParent(LLUUID::null); @@ -2465,7 +2464,7 @@ void LLInventoryModel::buildParentChildMap()  			++lost;  			// plop it into the lost & found.  			// -			item->setParent(findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND)); +			item->setParent(findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND));  			// move it later using a special message to move items. If  			// we update server here, the client might crash.  			//item->updateServer(); @@ -2486,7 +2485,7 @@ void LLInventoryModel::buildParentChildMap()  		llwarns << "Found " << lost << " lost items." << llendl;  		LLMessageSystem* msg = gMessageSystem;  		BOOL start_new_message = TRUE; -		const LLUUID lnf = findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); +		LLUUID lnf = findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);  		for(std::vector<LLUUID>::iterator it = lost_item_ids.begin() ; it < lost_item_ids.end(); ++it)  		{  			if(start_new_message) @@ -2939,7 +2938,7 @@ void LLInventoryModel::processUpdateInventoryFolder(LLMessageSystem* msg,  		lastfolder = tfolder;  		tfolder->unpackMessage(msg, _PREHASH_FolderData, i);  		// make sure it's not a protected folder -		tfolder->setPreferredType(LLFolderType::FT_NONE); +		tfolder->setPreferredType(LLAssetType::AT_NONE);  		folders.push_back(tfolder);  		// examine update for changes.  		LLViewerInventoryCategory* folderp = gInventory.getCategory(tfolder->getUUID()); @@ -3326,31 +3325,31 @@ void LLInventoryModel::processMoveInventoryItem(LLMessageSystem* msg, void**)  //---------------------------------------------------------------------------- -// Trash: LLFolderType::FT_TRASH, "ConfirmEmptyTrash" -// Lost&Found: LLFolderType::FT_LOST_AND_FOUND, "ConfirmEmptyLostAndFound" +// Trash: LLAssetType::AT_TRASH, "ConfirmEmptyTrash" +// Lost&Found: LLAssetType::AT_LOST_AND_FOUND, "ConfirmEmptyLostAndFound" -bool LLInventoryModel::callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLFolderType::EType preferred_type) +bool LLInventoryModel::callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLAssetType::EType folder_type)  {  	S32 option = LLNotification::getSelectedOption(notification, response);  	if (option == 0) // YES  	{ -		const LLUUID folder_id = findCategoryUUIDForType(preferred_type); +		LLUUID folder_id = findCategoryUUIDForType(folder_type);  		purgeDescendentsOf(folder_id);  		notifyObservers();  	}  	return false;  } -void LLInventoryModel::emptyFolderType(const std::string notification, LLFolderType::EType preferred_type) +void LLInventoryModel::emptyFolderType(const std::string notification, LLAssetType::EType folder_type)  {  	if (!notification.empty())  	{  		LLNotifications::instance().add(notification, LLSD(), LLSD(), -										boost::bind(&LLInventoryModel::callbackEmptyFolderType, this, _1, _2, preferred_type)); +										boost::bind(&LLInventoryModel::callbackEmptyFolderType, this, _1, _2, folder_type));  	}  	else  	{ -		const LLUUID folder_id = findCategoryUUIDForType(preferred_type); +		LLUUID folder_id = findCategoryUUIDForType(folder_type);  		purgeDescendentsOf(folder_id);  		notifyObservers();  	} @@ -3361,7 +3360,7 @@ void LLInventoryModel::emptyFolderType(const std::string notification, LLFolderT  void LLInventoryModel::removeItem(const LLUUID& item_id)  {  	LLViewerInventoryItem* item = getItem(item_id); -	const LLUUID new_parent = findCategoryUUIDForType(LLFolderType::FT_TRASH); +	const LLUUID new_parent = findCategoryUUIDForType(LLAssetType::AT_TRASH);  	if (item && item->getParentUUID() != new_parent)  	{  		LLInventoryModel::update_list_t update; diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index aba0a619db..d51460b374 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -34,7 +34,6 @@  #define LL_LLINVENTORYMODEL_H  #include "llassettype.h" -#include "llfoldertype.h"  #include "lldarray.h"  #include "llframetimer.h"  #include "llhttpclient.h" @@ -281,7 +280,7 @@ public:  	// SDK: Added flag to specify whether the folder should be created if not found.  This fixes the horrible  	// multiple trash can bug. -	const LLUUID findCategoryUUIDForType(LLFolderType::EType preferred_type, bool create_folder = true); +	LLUUID findCategoryUUIDForType(LLAssetType::EType preferred_type, bool create_folder = true);  	// Call this method when it's time to update everyone on a new  	// state, by default, the inventory model will not update @@ -330,7 +329,7 @@ public:  	// category. If you want to use the default name based on type,  	// pass in a NULL to the 'name parameter.  	LLUUID createNewCategory(const LLUUID& parent_id, -							 LLFolderType::EType preferred_type, +							 LLAssetType::EType preferred_type,  							 const std::string& name);  	// methods to load up inventory skeleton & meat. These are used @@ -386,9 +385,9 @@ public:  	bool isCategoryComplete(const LLUUID& cat_id) const;  	// callbacks -	// Trigger a notification and empty the folder type (FT_TRASH or FT_LOST_AND_FOUND) if confirmed -	void emptyFolderType(const std::string notification, LLFolderType::EType folder_type); -	bool callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLFolderType::EType preferred_type); +	// Trigger a notification and empty the folder type (AT_TRASH or AT_LOST_AND_FOUND) if confirmed +	void emptyFolderType(const std::string notification, LLAssetType::EType folder_type); +	bool callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLAssetType::EType folder_type);  	// Utility Functions  	void removeItem(const LLUUID& item_id); @@ -432,7 +431,7 @@ protected:  	//   	// Internal method which looks for a category with the specified  	// preferred type. Returns LLUUID::null if not found - 	const LLUUID &findCatUUID(LLFolderType::EType preferred_type) const; + 	const LLUUID &findCatUUID(LLAssetType::EType preferred_type) const;  	// Empty the entire contents  	void empty(); diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 178e7d0823..d1ca0efed3 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -78,7 +78,6 @@  #include "lltabcontainer.h"  #include "lltooldraganddrop.h"  #include "lluictrlfactory.h" -#include "llviewerfoldertype.h"  #include "llviewerinventory.h"  #include "llviewermessage.h"  #include "llviewerobjectlist.h" @@ -111,8 +110,8 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :  	// contex menu callbacks  	mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLInventoryPanel::doToSelected, this, _2)); -	mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH)); -	mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND)); +	mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLAssetType::AT_TRASH)); +	mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLAssetType::AT_LOST_AND_FOUND));  	mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLInventoryPanel::doCreate, this, _2));  	mCommitCallbackRegistrar.add("Inventory.AttachObject", boost::bind(&LLInventoryPanel::attachObject, this, _2));  	mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this)); @@ -170,19 +169,19 @@ BOOL LLInventoryPanel::postBuild()  	// determine the root folder, if any, so inventory contents show just the children  	// of that folder (i.e. not including the folder itself). -	const LLFolderType::EType preferred_type = LLViewerFolderType::lookupTypeFromNewCategoryName(mStartFolderString); +	const LLAssetType::EType preferred_type = LLAssetType::lookupHumanReadable(mStartFolderString); -	if ("INVENTORY" == mStartFolderString) +	if ("inventory" == mStartFolderString)  	{  		mStartFolderID = gInventory.getRootFolderID();  	} -	else if ("LIBRARY" == mStartFolderString) +	else if ("library" == mStartFolderString)  	{  		mStartFolderID = gInventory.getLibraryRootFolderID();  	}  	else  	{ -		mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null); +		mStartFolderID = (preferred_type != LLAssetType::AT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null);  	}  	// build view of inventory if we need default full hierarchy and inventory ready, otherwise wait for modelChanged() callback @@ -193,7 +192,7 @@ BOOL LLInventoryPanel::postBuild()  	}  	// bit of a hack to make sure the inventory is open. -	mFolders->openFolder(preferred_type != LLFolderType::FT_NONE ? LLViewerFolderType::lookupNewCategoryName(preferred_type) : "My Inventory"); +	mFolders->openFolder(preferred_type != LLAssetType::AT_NONE ? LLAssetType::lookupCategoryName(preferred_type) : "My Inventory");  	if (mSortOrderSetting != INHERIT_SORT_ORDER)  	{ @@ -383,19 +382,6 @@ void LLInventoryPanel::modelChanged(U32 mask)  							view_item->getParentFolder()->extractItem(view_item);  							view_item->addToFolder(new_parent, mFolders);  						} -/* -						 on the other side in case Inventory Panel has content of the any folder -						 it is possible that item moved to some folder which is absent in current -						 Panel. For ex. removing item (via moving to trash). -						 In this case we need to check if new parent is other then inventory start folder -						 and simply remove its View from the hierarchy. -						 See details in EXT-2098. -*/ -						// So, let check if item was moved into folder out of this Inventory Panel. -						else if (mStartFolderID.notNull() && NULL == new_parent && model_item->getParentUUID() != mStartFolderID) -						{ -							view_item->getParentFolder()->extractItem(view_item); -						}  					}  				}  				else @@ -664,7 +650,7 @@ void LLInventoryPanel::openAllFolders()  	mFolders->arrangeAll();  } -void LLInventoryPanel::openDefaultFolderForType(LLFolderType::EType type) +void LLInventoryPanel::openDefaultFolderForType(LLAssetType::EType type)  {  	LLUUID category_id = mInventory->findCategoryUUIDForType(type);  	LLOpenFolderByID opener(category_id); diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 9f74fad5c1..997678a478 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -122,7 +122,7 @@ public:  	// Call this method to set the selection.  	void openAllFolders(); -	void openDefaultFolderForType(LLFolderType::EType); +	void openDefaultFolderForType(LLAssetType::EType);  	void setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus);  	void setSelectCallback(const LLFolderView::signal_t::slot_type& cb) { if (mFolders) mFolders->setSelectCallback(cb); }  	void clearSelection(); diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp index b1829b3945..0b07dd4f21 100644 --- a/indra/newview/lllandmarkactions.cpp +++ b/indra/newview/lllandmarkactions.cpp @@ -135,13 +135,13 @@ public:  // Returns true if the given inventory item is a landmark pointing to the current parcel.  // Used to find out if there is at least one landmark from current parcel. -class LLFirstAgentParcelLandmark : public LLInventoryCollectFunctor +class LLFistAgentParcelLandmark : public LLInventoryCollectFunctor  {  private:	  	bool mFounded;// to avoid unnecessary  check  public: -	LLFirstAgentParcelLandmark(): mFounded(false){} +	LLFistAgentParcelLandmark(): mFounded(false){}  	/*virtual*/ bool operator()(LLInventoryCategory* cat, LLInventoryItem* item)  	{ @@ -165,7 +165,8 @@ static void fetch_landmarks(LLInventoryModel::cat_array_t& cats,  							LLInventoryCollectFunctor& add)  {  	// Look in "My Favorites" -	const LLUUID favorites_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); +	LLUUID favorites_folder_id = +		gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);  	gInventory.collectDescendentsIf(favorites_folder_id,  		cats,  		items, @@ -173,7 +174,8 @@ static void fetch_landmarks(LLInventoryModel::cat_array_t& cats,  		add);  	// Look in "Landmarks" -	const LLUUID landmarks_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); +	LLUUID landmarks_folder_id =  +		gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);  	gInventory.collectDescendentsIf(landmarks_folder_id,  		cats,  		items, @@ -200,7 +202,7 @@ bool LLLandmarkActions::landmarkAlreadyExists()  //static  bool LLLandmarkActions::hasParcelLandmark()  { -	LLFirstAgentParcelLandmark get_first_agent_landmark; +	LLFistAgentParcelLandmark get_first_agent_landmark;  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items;  	fetch_landmarks(cats, items, get_first_agent_landmark); @@ -285,7 +287,7 @@ void LLLandmarkActions::createLandmarkHere()  	LLAgentUI::buildLocationString(landmark_name, LLAgentUI::LOCATION_FORMAT_LANDMARK);  	LLAgentUI::buildLocationString(landmark_desc, LLAgentUI::LOCATION_FORMAT_FULL); -	const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); +	LLUUID folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);  	createLandmarkHere(landmark_name, landmark_desc, folder_id);  } diff --git a/indra/newview/lllandmarkactions.h b/indra/newview/lllandmarkactions.h index 1c524c820c..312426cab0 100644 --- a/indra/newview/lllandmarkactions.h +++ b/indra/newview/lllandmarkactions.h @@ -55,7 +55,7 @@ public:  	static bool landmarkAlreadyExists();  	/** -	 * @brief Checks whether landmark exists for current agent parcel. +	 * @brief Checks whether landmark exists for current parcel.  	 */  	static bool hasParcelLandmark(); diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index b35fd6134b..e63daac4af 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -50,7 +50,6 @@  #include "llslurl.h"  #include "llurlsimstring.h"  #include "llviewerinventory.h" -#include "llviewermenu.h"  #include "llviewerparcelmgr.h"  #include "llworldmap.h"  #include "llappviewer.h" @@ -272,12 +271,6 @@ void LLNavigationBar::draw()  	LLPanel::draw();  } -BOOL LLNavigationBar::handleRightMouseDown(S32 x, S32 y, MASK mask) -{ -	show_navbar_context_menu(this,x,y); -	return TRUE; -} -  void LLNavigationBar::onBackButtonClicked()  {  	LLTeleportHistory::getInstance()->goBack(); diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h index 52f5a827e4..04707d8d48 100644 --- a/indra/newview/llnavigationbar.h +++ b/indra/newview/llnavigationbar.h @@ -54,7 +54,6 @@ public:  	virtual ~LLNavigationBar();  	/*virtual*/ void	draw(); -	/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);  	/*virtual*/ BOOL	postBuild();  	void handleLoginComplete(); diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 81d033d7f9..12638ab855 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -97,39 +97,14 @@ BOOL LLNearbyChat::postBuild()  	if (getDockControl() == NULL)  	{  		setDockControl(new LLDockControl( -			LLBottomTray::getInstance()->getNearbyChatBar(), this, -			getDockTongue(), LLDockControl::LEFT, boost::bind(&LLNearbyChat::getAllowedRect, this, _1))); +				LLBottomTray::getInstance()->getNearbyChatBar(), this, +				getDockTongue(), LLDockControl::LEFT, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));  	}  	return true;  } -void    LLNearbyChat::applySavedVariables() -{ - -	if (mRectControl.size() > 1) -	{ -		const LLRect& rect = LLUI::sSettingGroups["floater"]->getRect(mRectControl); -		reshape(rect.getWidth(), rect.getHeight()); -		setRect(rect); -	} - - -	if(!LLUI::sSettingGroups["floater"]->controlExists(mDocStateControl)) -	{ -		setDocked(true); -	} -	else -	{ -		if (mDocStateControl.size() > 1) -		{ -			bool dockState = LLUI::sSettingGroups["floater"]->getBOOL(mDocStateControl); -			setDocked(dockState); -		} -	} -} -  LLColor4 nearbychat_get_text_color(const LLChat& chat)  {  	LLColor4 text_color; @@ -290,5 +265,11 @@ void LLNearbyChat::getAllowedRect(LLRect& rect)  {  	rect = gViewerWindow->getWorldViewRect();  } - +void LLNearbyChat::setVisible	(BOOL visible) +{ +	LLDockableFloater::setVisible(visible); +} +void LLNearbyChat::toggleWindow() +{ +} diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index cb4654654a..20cbf7537d 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -52,15 +52,16 @@ public:  	void	onNearbyChatContextMenuItemClicked(const LLSD& userdata);  	bool	onNearbyChatCheckContextMenuItem(const LLSD& userdata); -	void	setDocked			(bool docked, bool pop_on_undock = true); +	void	setDocked			(bool docked, bool pop_on_undock); +	void	toggleWindow		();  	/*virtual*/ void	onOpen	(const LLSD& key); +	virtual void setVisible		(BOOL visible); +  	virtual void setRect		(const LLRect &rect);  private: -	virtual void    applySavedVariables(); -  	void	getAllowedRect		(LLRect& rect);  	void	onNearbySpeakers	(); diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index d7a5ff289c..32dc5e5927 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -77,10 +77,6 @@ LLGestureComboBox::LLGestureComboBox(const LLGestureComboBox::Params& p)  	// refresh list from current active gestures  	refreshGestures(); - -	// This forces using of halign from xml, since LLComboBox -	// sets it to LLFontGL::LEFT, if text entry is disabled -	mButton->setHAlign(p.drop_down_button.font_halign);  }  LLGestureComboBox::~LLGestureComboBox() @@ -211,7 +207,6 @@ LLNearbyChatBar::LLNearbyChatBar()  	: LLPanel()  	, mChatBox(NULL)  { -	mSpeakerMgr = LLLocalSpeakerMgr::getInstance();  }  //virtual @@ -521,8 +516,8 @@ void LLNearbyChatBar::displaySpeakingIndicator()  	LLUUID id;  	id.setNull(); -	mSpeakerMgr->update(TRUE); -	mSpeakerMgr->getSpeakerList(&speaker_list, FALSE); +	mSpeakerMgr.update(TRUE); +	mSpeakerMgr.getSpeakerList(&speaker_list, FALSE);  	for (LLSpeakerMgr::speaker_list_t::iterator i = speaker_list.begin(); i != speaker_list.end(); ++i)  	{ diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h index 0307eee7bf..06204e6367 100644 --- a/indra/newview/llnearbychatbar.h +++ b/indra/newview/llnearbychatbar.h @@ -127,7 +127,7 @@ protected:  	LLLineEditor*		mChatBox;  	LLTalkButton*		mTalkBtn;  	LLOutputMonitorCtrl* mOutputMonitor; -	LLLocalSpeakerMgr*  mSpeakerMgr; +	LLActiveSpeakerMgr  mSpeakerMgr;  };  #endif diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp index 39381e3faa..8bac9937f0 100644 --- a/indra/newview/lloutputmonitorctrl.cpp +++ b/indra/newview/lloutputmonitorctrl.cpp @@ -80,8 +80,7 @@ LLOutputMonitorCtrl::LLOutputMonitorCtrl(const LLOutputMonitorCtrl::Params& p)  	mImageLevel2(p.image_level_2),  	mImageLevel3(p.image_level_3),  	mAutoUpdate(p.auto_update), -	mSpeakerId(p.speaker_id), -	mIsAgentControl(false) +	mSpeakerId(p.speaker_id)  {  	//static LLUIColor output_monitor_muted_color = LLUIColorTable::instance().getColor("OutputMonitorMutedColor", LLColor4::orange);  	//static LLUIColor output_monitor_overdriven_color = LLUIColorTable::instance().getColor("OutputMonitorOverdrivenColor", LLColor4::red); @@ -133,14 +132,7 @@ void LLOutputMonitorCtrl::draw()  	if (getVisible() && mAutoUpdate && !mIsMuted && mSpeakerId.notNull())  	{  		setPower(gVoiceClient->getCurrentPower(mSpeakerId)); -		if(mIsAgentControl) -		{ -			setIsTalking(gVoiceClient->getUserPTTState()); -		} -		else -		{ -			setIsTalking(gVoiceClient->getIsSpeaking(mSpeakerId)); -		} +		setIsTalking(gVoiceClient->getIsSpeaking(mSpeakerId));  	}  	LLPointer<LLUIImage> icon; diff --git a/indra/newview/lloutputmonitorctrl.h b/indra/newview/lloutputmonitorctrl.h index 85ea552a57..7a7b8bc3a1 100644 --- a/indra/newview/lloutputmonitorctrl.h +++ b/indra/newview/lloutputmonitorctrl.h @@ -81,8 +81,6 @@ public:  	// For the current user, need to know the PTT state to show  	// correct button image. -	void			setIsAgentControl(bool val) { mIsAgentControl = val; } -  	void			setIsTalking(bool val) { mIsTalking = val; }  	void			setSpeakerId(const LLUUID& speaker_id); @@ -102,7 +100,6 @@ private:  	F32				mPower; -	bool			mIsAgentControl;  	bool			mIsMuted;  	bool			mIsTalking;  	LLPointer<LLUIImage> mImageMute; diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp index 9d591ef43d..c28792a711 100644 --- a/indra/newview/llpanelcontents.cpp +++ b/indra/newview/llpanelcontents.cpp @@ -59,7 +59,6 @@  #include "lltoolcomp.h"  #include "lltoolmgr.h"  #include "lltrans.h" -#include "llviewerassettype.h"  #include "llviewerobject.h"  #include "llviewerregion.h"  #include "llviewerwindow.h" @@ -168,7 +167,7 @@ void LLPanelContents::onClickNewScript(void *userdata)  			PERM_NONE,  			PERM_MOVE | PERM_TRANSFER);  		std::string desc; -		LLViewerAssetType::generateDescriptionFor(LLAssetType::AT_LSL_TEXT, desc); +		LLAssetType::generateDescriptionFor(LLAssetType::AT_LSL_TEXT, desc);  		LLPointer<LLViewerInventoryItem> new_item =  			new LLViewerInventoryItem(  				LLUUID::null, diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index 21e88b6d07..b54975b76b 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -112,32 +112,21 @@ BOOL LLPanelIMControlPanel::postBuild()  	childSetAction("add_friend_btn", boost::bind(&LLPanelIMControlPanel::onAddFriendButtonClicked, this));  	childSetAction("share_btn", boost::bind(&LLPanelIMControlPanel::onShareButtonClicked, this)); -	childSetAction("teleport_btn", boost::bind(&LLPanelIMControlPanel::onTeleportButtonClicked, this)); -	childSetAction("pay_btn", boost::bind(&LLPanelIMControlPanel::onPayButtonClicked, this));  	childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(getChild<LLAvatarIconCtrl>("avatar_icon")->getAvatarId()));  	return LLPanelChatControlPanel::postBuild();  } -void LLPanelIMControlPanel::onTeleportButtonClicked() -{ -	LLAvatarActions::offerTeleport(mAvatarID); -} -void LLPanelIMControlPanel::onPayButtonClicked() -{ -	LLAvatarActions::pay(mAvatarID); -} -  void LLPanelIMControlPanel::onViewProfileButtonClicked()  { -	LLAvatarActions::showProfile(mAvatarID); +	LLAvatarActions::showProfile(getChild<LLAvatarIconCtrl>("avatar_icon")->getAvatarId());  }  void LLPanelIMControlPanel::onAddFriendButtonClicked()  {  	LLAvatarIconCtrl* avatar_icon = getChild<LLAvatarIconCtrl>("avatar_icon");  	std::string full_name = avatar_icon->getFirstName() + " " + avatar_icon->getLastName(); -	LLAvatarActions::requestFriendshipDialog(mAvatarID, full_name); +	LLAvatarActions::requestFriendshipDialog(avatar_icon->getAvatarId(), full_name);  }  void LLPanelIMControlPanel::onShareButtonClicked() @@ -151,12 +140,12 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)  	LLIMModel& im_model = LLIMModel::instance(); -	mAvatarID = im_model.getOtherParticipantID(session_id); +	LLUUID avatar_id = im_model.getOtherParticipantID(session_id);  	// Disable "Add friend" button for friends. -	childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(mAvatarID)); +	childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(avatar_id)); -	getChild<LLAvatarIconCtrl>("avatar_icon")->setValue(mAvatarID); +	getChild<LLAvatarIconCtrl>("avatar_icon")->setValue(avatar_id);  	// Disable profile button if participant is not realy SL avatar  	LLIMModel::LLIMSession* im_session = @@ -199,20 +188,6 @@ void LLPanelGroupControlPanel::onGroupInfoButtonClicked()  	LLGroupActions::show(mGroupID);  } -void LLPanelGroupControlPanel::onSortMenuItemClicked(const LLSD& userdata) -{ -	// TODO: Check this code when when sort order menu will be added. (EM) -	if (false && !mParticipantList) -		return; - -	std::string chosen_item = userdata.asString(); - -	if (chosen_item == "sort_name") -	{ -		mParticipantList->setSortOrder(LLParticipantList::E_SORT_BY_NAME); -	} - -}  void LLPanelGroupControlPanel::setSessionId(const LLUUID& session_id)  { diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h index fa101f4280..d25f33935a 100644 --- a/indra/newview/llpanelimcontrolpanel.h +++ b/indra/newview/llpanelimcontrolpanel.h @@ -73,8 +73,6 @@ private:  	void onViewProfileButtonClicked();  	void onAddFriendButtonClicked();  	void onShareButtonClicked(); -	void onTeleportButtonClicked(); -	void onPayButtonClicked();  	LLUUID mAvatarID;  }; @@ -99,7 +97,6 @@ protected:  private:  	void onGroupInfoButtonClicked(); -	void onSortMenuItemClicked(const LLSD& userdata);  };  class LLPanelAdHocControlPanel : public LLPanelGroupControlPanel diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp deleted file mode 100644 index 1152ca6873..0000000000 --- a/indra/newview/llpanellandmarkinfo.cpp +++ /dev/null @@ -1,437 +0,0 @@ -/** - * @file llpanellandmarkinfo.cpp - * @brief Displays landmark info in Side Tray. - * - * $LicenseInfo:firstyear=2009&license=viewergpl$ - * - * Copyright (c) 2004-2009, Linden Research, Inc. - * - * 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 - * - * 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 - * - * 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. - * - * 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$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llpanellandmarkinfo.h" - -#include "llinventory.h" - -#include "llcombobox.h" -#include "lllineeditor.h" -#include "lltextbox.h" -#include "lltexteditor.h" -#include "lltrans.h" - -#include "llagent.h" -#include "llagentui.h" -#include "llinventorymodel.h" -#include "lllandmarkactions.h" -#include "llviewerinventory.h" -#include "llviewerparcelmgr.h" -#include "llviewerregion.h" - -//---------------------------------------------------------------------------- -// Aux types and methods -//---------------------------------------------------------------------------- - -typedef std::pair<LLUUID, std::string> folder_pair_t; - -static bool cmp_folders(const folder_pair_t& left, const folder_pair_t& right); -static void collectLandmarkFolders(LLInventoryModel::cat_array_t& cats); - -static LLRegisterPanelClassWrapper<LLPanelLandmarkInfo> t_landmark_info("panel_landmark_info"); - -LLPanelLandmarkInfo::LLPanelLandmarkInfo() -:	LLPanelPlaceInfo() -{} - -// virtual -LLPanelLandmarkInfo::~LLPanelLandmarkInfo() -{} - -// virtual -BOOL LLPanelLandmarkInfo::postBuild() -{ -	LLPanelPlaceInfo::postBuild(); - -	mOwner = getChild<LLTextBox>("owner"); -	mCreator = getChild<LLTextBox>("creator"); -	mCreated = getChild<LLTextBox>("created"); - -	mTitleEditor = getChild<LLLineEditor>("title_editor"); -	mNotesEditor = getChild<LLTextEditor>("notes_editor"); -	mFolderCombo = getChild<LLComboBox>("folder_combo"); - -	return TRUE; -} - -// virtual -void LLPanelLandmarkInfo::resetLocation() -{ -	LLPanelPlaceInfo::resetLocation(); - -	std::string not_available = getString("not_available"); -	mCreator->setText(not_available); -	mOwner->setText(not_available); -	mCreated->setText(not_available); -	mTitleEditor->setText(LLStringUtil::null); -	mNotesEditor->setText(LLStringUtil::null); -} - -// virtual -void LLPanelLandmarkInfo::setInfoType(INFO_TYPE type) -{ -	LLPanel* landmark_info_panel = getChild<LLPanel>("landmark_info_panel"); - -	bool is_info_type_create_landmark = type == CREATE_LANDMARK; -	bool is_info_type_landmark = type == LANDMARK; - -	landmark_info_panel->setVisible(is_info_type_landmark); - -	getChild<LLTextBox>("folder_label")->setVisible(is_info_type_create_landmark); -	mFolderCombo->setVisible(is_info_type_create_landmark); - -	switch(type) -	{ -		case CREATE_LANDMARK: -			mCurrentTitle = getString("title_create_landmark"); - -			mTitleEditor->setEnabled(TRUE); -			mNotesEditor->setEnabled(TRUE); -		break; - -		case LANDMARK: -		default: -			mCurrentTitle = getString("title_landmark"); - -			mTitleEditor->setEnabled(FALSE); -			mNotesEditor->setEnabled(FALSE); -		break; -	} - -	populateFoldersList(); - -	LLPanelPlaceInfo::setInfoType(type); -} - -// virtual -void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data) -{ -	LLPanelPlaceInfo::processParcelInfo(parcel_data); - -	// HACK: Flag 0x2 == adult region, -	// Flag 0x1 == mature region, otherwise assume PG -	std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG); -	if (parcel_data.flags & 0x2) -	{ -		rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT); -	} -	else if (parcel_data.flags & 0x1) -	{ -		rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE); -	} - -	mMaturityRatingText->setValue(rating); - -	S32 region_x; -	S32 region_y; -	S32 region_z; - -	// If the region position is zero, grab position from the global -	if(mPosRegion.isExactlyZero()) -	{ -		region_x = llround(parcel_data.global_x) % REGION_WIDTH_UNITS; -		region_y = llround(parcel_data.global_y) % REGION_WIDTH_UNITS; -		region_z = llround(parcel_data.global_z); -	} -	else -	{ -		region_x = llround(mPosRegion.mV[VX]); -		region_y = llround(mPosRegion.mV[VY]); -		region_z = llround(mPosRegion.mV[VZ]); -	} - -	if (mInfoType == CREATE_LANDMARK) -	{ -		if (parcel_data.name.empty()) -		{ -			mTitleEditor->setText(llformat("%s (%d, %d, %d)", -								  parcel_data.sim_name.c_str(), region_x, region_y, region_z)); -		} -		else -		{ -			mTitleEditor->setText(parcel_data.name); -		} - -		std::string desc; -		LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_FULL, gAgent.getPositionAgent()); -		mNotesEditor->setText(desc); - -		if (!LLLandmarkActions::landmarkAlreadyExists()) -		{ -			createLandmark(mFolderCombo->getValue().asUUID()); -		} -	} -} - -void LLPanelLandmarkInfo::displayItemInfo(const LLInventoryItem* pItem) -{ -	if (!pItem) -		return; - -	if(!gCacheName) -		return; - -	const LLPermissions& perm = pItem->getPermissions(); - -	////////////////// -	// CREATOR NAME // -	////////////////// -	if (pItem->getCreatorUUID().notNull()) -	{ -		std::string name; -		LLUUID creator_id = pItem->getCreatorUUID(); -		if (!gCacheName->getFullName(creator_id, name)) -		{ -			gCacheName->get(creator_id, FALSE, -							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mCreator, _2, _3)); -		} -		mCreator->setText(name); -	} -	else -	{ -		mCreator->setText(getString("unknown")); -	} - -	//////////////// -	// OWNER NAME // -	//////////////// -	if(perm.isOwned()) -	{ -		std::string name; -		if (perm.isGroupOwned()) -		{ -			LLUUID group_id = perm.getGroup(); -			if (!gCacheName->getGroupName(group_id, name)) -			{ -				gCacheName->get(group_id, TRUE, -								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mOwner, _2, _3)); -			} -		} -		else -		{ -			LLUUID owner_id = perm.getOwner(); -			if (!gCacheName->getFullName(owner_id, name)) -			{ -				gCacheName->get(owner_id, FALSE, -								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mOwner, _2, _3)); -			} -		} -		mOwner->setText(name); -	} -	else -	{ -		mOwner->setText(getString("public")); -	} - -	////////////////// -	// ACQUIRE DATE // -	////////////////// -	time_t time_utc = pItem->getCreationDate(); -	if (0 == time_utc) -	{ -		mCreated->setText(getString("unknown")); -	} -	else -	{ -		std::string timeStr = getString("acquired_date"); -		LLSD substitution; -		substitution["datetime"] = (S32) time_utc; -		LLStringUtil::format (timeStr, substitution); -		mCreated->setText(timeStr); -	} - -	mTitleEditor->setText(pItem->getName()); -	mNotesEditor->setText(pItem->getDescription()); -} - -void LLPanelLandmarkInfo::toggleLandmarkEditMode(BOOL enabled) -{ -	// If switching to edit mode while creating landmark -	// the "Create Landmark" title remains. -	if (enabled && mInfoType != CREATE_LANDMARK) -	{ -		mTitle->setText(getString("title_edit_landmark")); -	} -	else -	{ -		mTitle->setText(mCurrentTitle); -	} - -	if (mNotesEditor->getReadOnly() ==  (enabled == TRUE)) -	{ -		mTitleEditor->setEnabled(enabled); -		mNotesEditor->setReadOnly(!enabled); -		mFolderCombo->setVisible(enabled); -		getChild<LLTextBox>("folder_label")->setVisible(enabled); - -		// HACK: To change the text color in a text editor -		// when it was enabled/disabled we set the text once again. -		mNotesEditor->setText(mNotesEditor->getText()); -	} -} - -const std::string& LLPanelLandmarkInfo::getLandmarkTitle() const -{ -	return mTitleEditor->getText(); -} - -const std::string LLPanelLandmarkInfo::getLandmarkNotes() const -{ -	return mNotesEditor->getText(); -} - -const LLUUID LLPanelLandmarkInfo::getLandmarkFolder() const -{ -	return mFolderCombo->getValue().asUUID(); -} - -BOOL LLPanelLandmarkInfo::setLandmarkFolder(const LLUUID& id) -{ -	return mFolderCombo->setCurrentByID(id); -} - -void LLPanelLandmarkInfo::createLandmark(const LLUUID& folder_id) -{ -	std::string name = mTitleEditor->getText(); -	std::string desc = mNotesEditor->getText(); - -	LLStringUtil::trim(name); -	LLStringUtil::trim(desc); - -	// If typed name is empty use the parcel name instead. -	if (name.empty()) -	{ -		name = mParcelName->getText(); - -		// If no parcel exists use the region name instead. -		if (name.empty()) -		{ -			name = mRegionName->getText(); -		} -	} - -	LLStringUtil::replaceChar(desc, '\n', ' '); -	// If no folder chosen use the "Landmarks" folder. -	LLLandmarkActions::createLandmarkHere(name, desc, -		folder_id.notNull() ? folder_id : gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK)); -} - -// static -std::string LLPanelLandmarkInfo::getFullFolderName(const LLViewerInventoryCategory* cat) -{ -	std::string name = cat->getName(); -	LLUUID parent_id; - -	// translate category name, if it's right below the root -	// FIXME: it can throw notification about non existent string in strings.xml -	if (cat->getParentUUID().notNull() && cat->getParentUUID() == gInventory.getRootFolderID()) -	{ -		LLTrans::findString(name, "InvFolder " + name); -	} - -	// we don't want "My Inventory" to appear in the name -	while ((parent_id = cat->getParentUUID()).notNull() && parent_id != gInventory.getRootFolderID()) -	{ -		cat = gInventory.getCategory(parent_id); -		name = cat->getName() + "/" + name; -	} - -	return name; -} - -void LLPanelLandmarkInfo::populateFoldersList() -{ -	// Collect all folders that can contain landmarks. -	LLInventoryModel::cat_array_t cats; -	collectLandmarkFolders(cats); - -	mFolderCombo->removeall(); - -	// Put the "Landmarks" folder first in list. -	LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK); -	const LLViewerInventoryCategory* cat = gInventory.getCategory(landmarks_id); -	if (!cat) -	{ -		llwarns << "Cannot find the landmarks folder" << llendl; -	} -	std::string cat_full_name = getFullFolderName(cat); -	mFolderCombo->add(cat_full_name, cat->getUUID()); - -	typedef std::vector<folder_pair_t> folder_vec_t; -	folder_vec_t folders; -	// Sort the folders by their full name. -	for (S32 i = 0; i < cats.count(); i++) -	{ -		cat = cats.get(i); -		cat_full_name = getFullFolderName(cat); -		folders.push_back(folder_pair_t(cat->getUUID(), cat_full_name)); -	} -	sort(folders.begin(), folders.end(), cmp_folders); - -	// Finally, populate the combobox. -	for (folder_vec_t::const_iterator it = folders.begin(); it != folders.end(); it++) -		mFolderCombo->add(it->second, LLSD(it->first)); -} - -static bool cmp_folders(const folder_pair_t& left, const folder_pair_t& right) -{ -	return left.second < right.second; -} - -static void collectLandmarkFolders(LLInventoryModel::cat_array_t& cats) -{ -	LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK); - -	// Add descendent folders of the "Landmarks" category. -	LLInventoryModel::item_array_t items; // unused -	LLIsType is_category(LLAssetType::AT_CATEGORY); -	gInventory.collectDescendentsIf( -		landmarks_id, -		cats, -		items, -		LLInventoryModel::EXCLUDE_TRASH, -		is_category); - -	// Add the "My Favorites" category. -	LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE); -	LLViewerInventoryCategory* favorites_cat = gInventory.getCategory(favorites_id); -	if (!favorites_cat) -	{ -		llwarns << "Cannot find the favorites folder" << llendl; -	} -	else -	{ -		cats.put(favorites_cat); -	} -} diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h deleted file mode 100644 index 03377986b3..0000000000 --- a/indra/newview/llpanellandmarkinfo.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * @file llpanellandmarkinfo.h - * @brief Displays landmark info in Side Tray. - * - * $LicenseInfo:firstyear=2009&license=viewergpl$ - * - * Copyright (c) 2004-2009, Linden Research, Inc. - * - * 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 - * - * 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 - * - * 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. - * - * 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$ - */ - -#ifndef LL_LLPANELLANDMARKINFO_H -#define LL_LLPANELLANDMARKINFO_H - -#include "llpanelplaceinfo.h" - -class LLComboBox; -class LLLineEditor; -class LLTextEditor; - -class LLPanelLandmarkInfo : public LLPanelPlaceInfo -{ -public: -	LLPanelLandmarkInfo(); -	/*virtual*/ ~LLPanelLandmarkInfo(); - -	/*virtual*/ BOOL postBuild(); - -	/*virtual*/ void resetLocation(); - -	/*virtual*/ void setInfoType(INFO_TYPE type); - -	/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); - -	// Displays landmark owner, creator and creation date info. -	void displayItemInfo(const LLInventoryItem* pItem); - -	void toggleLandmarkEditMode(BOOL enabled); - -	const std::string& getLandmarkTitle() const; -	const std::string getLandmarkNotes() const; -	const LLUUID getLandmarkFolder() const; - -	// Select current landmark folder in combobox. -	BOOL setLandmarkFolder(const LLUUID& id); - -	// Create a landmark for the current location -	// in a folder specified by folder_id. -	void createLandmark(const LLUUID& folder_id); - -	static std::string getFullFolderName(const LLViewerInventoryCategory* cat); - -private: -	void populateFoldersList(); - -	LLTextBox*			mOwner; -	LLTextBox*			mCreator; -	LLTextBox*			mCreated; -	LLLineEditor*		mTitleEditor; -	LLTextEditor*		mNotesEditor; -	LLComboBox*			mFolderCombo; -}; - -#endif // LL_LLPANELLANDMARKINFO_H diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 6d6fd38cce..91e1590dc3 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -553,16 +553,14 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const  	std::string command_name = userdata.asString();  	if("add_landmark" == command_name)  	{ -		LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos(); -		if(landmark) -		{ -			LLSideTray::getInstance()->showPanel("panel_places",  -								LLSD().insert("type", "landmark").insert("id",landmark->getUUID())); -		} -		else +		if(LLLandmarkActions::landmarkAlreadyExists())  		{ -			LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark")); +			std::string location; +			LLAgentUI::buildLocationString(location, LLAgentUI::LOCATION_FORMAT_FULL); +			llwarns<<" Landmark already exists at location:  "<< location<<llendl; +			return;  		} +		LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));  	}   	else if ("category" == command_name)  	{ @@ -586,7 +584,7 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const  			menu_create_inventory_item(mCurrentSelectedList->getRootFolder(),  					dynamic_cast<LLFolderBridge*> (folder_bridge), LLSD(  							"category"), gInventory.findCategoryUUIDForType( -							LLFolderType::FT_LANDMARK)); +							LLAssetType::AT_LANDMARK));  		}  	}  } @@ -618,21 +616,19 @@ void LLLandmarksPanel::onClipboardAction(const LLSD& userdata) const  void LLLandmarksPanel::onFoldingAction(const LLSD& userdata)  { -	LLFolderView* landmarks_folder = mLandmarksInventoryPanel->getRootFolder(); -	LLFolderView* fav_folder = mFavoritesInventoryPanel->getRootFolder(); +	if(!mCurrentSelectedList) return; + +	LLFolderView* root_folder = mCurrentSelectedList->getRootFolder();  	std::string command_name = userdata.asString();  	if ("expand_all" == command_name)  	{ -		landmarks_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN); -		fav_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN); -		landmarks_folder->arrangeAll(); -		fav_folder->arrangeAll(); +		root_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN); +		root_folder->arrangeAll();  	}  	else if ("collapse_all" == command_name)  	{ -		landmarks_folder->closeAllFolders(); -		fav_folder->closeAllFolders(); +		root_folder->closeAllFolders();  	}  	else if ( "sort_by_date" == command_name)  	{ @@ -643,9 +639,6 @@ void LLLandmarksPanel::onFoldingAction(const LLSD& userdata)  	}  	else  	{ -		if(!mCurrentSelectedList) return; - -		LLFolderView* root_folder = mCurrentSelectedList->getRootFolder();  		root_folder->doToSelected(&gInventory, userdata);  	}  } diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index 25be09fa24..617445a27f 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -84,8 +84,8 @@ LLPanelMainInventory::LLPanelMainInventory()  	// Menu Callbacks (non contex menus)  	mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLPanelMainInventory::doToSelected, this, _2));  	mCommitCallbackRegistrar.add("Inventory.CloseAllFolders", boost::bind(&LLPanelMainInventory::closeAllFolders, this)); -	mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH)); -	mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND)); +	mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLAssetType::AT_TRASH)); +	mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLAssetType::AT_LOST_AND_FOUND));  	mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLPanelMainInventory::doCreate, this, _2));   	mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));  	mCommitCallbackRegistrar.add("Inventory.ShowFilters", boost::bind(&LLPanelMainInventory::toggleFindOptions, this)); diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index 79b33e29f5..68181f12b9 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -60,7 +60,6 @@  #include "llsidetray.h"  #include "llstatusbar.h"  #include "lltrans.h" -#include "llviewerassettype.h"  #include "llviewerregion.h"  #include "llviewerobjectlist.h"  #include "llviewermessage.h" @@ -103,7 +102,7 @@ public:  	virtual const std::string& getName() const;  	virtual const std::string& getDisplayName() const;  	virtual PermissionMask getPermissionMask() const { return PERM_NONE; } -	/*virtual*/ LLFolderType::EType getPreferredType() const { return LLFolderType::FT_NONE; } +	/*virtual*/ LLAssetType::EType getPreferredType() const { return LLAssetType::AT_NONE; }  	virtual const LLUUID& getUUID() const { return mUUID; }  	virtual time_t getCreationDate() const;  	virtual LLUIImagePtr getIcon() const; @@ -276,7 +275,7 @@ bool LLTaskInvFVBridge::commitBuyItem(const LLSD& notification, const LLSD& resp  		msg->addUUIDFast(_PREHASH_ObjectID, notification["payload"]["task_id"].asUUID());  		msg->addUUIDFast(_PREHASH_ItemID, notification["payload"]["item_id"].asUUID());  		msg->addUUIDFast(_PREHASH_FolderID, -			gInventory.findCategoryUUIDForType((LLFolderType::EType)notification["payload"]["type"].asInteger())); +			gInventory.findCategoryUUIDForType((LLAssetType::EType)notification["payload"]["type"].asInteger()));  		msg->sendReliable(object->getRegion()->getHost());  	}  	return false; @@ -574,7 +573,7 @@ BOOL LLTaskInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const  //				   || gAgent.isGodlike())  				{ -					*type = LLViewerAssetType::lookupDragAndDropType(inv->getType()); +					*type = LLAssetType::lookupDragAndDropType(inv->getType());  					*id = inv->getUUID();  					return TRUE; @@ -779,7 +778,7 @@ BOOL LLTaskCategoryBridge::startDrag(EDragAndDropType* type, LLUUID* id) const  //				   || gAgent.isGodlike())  				{ -					*type = LLViewerAssetType::lookupDragAndDropType(inv->getType()); +					*type = LLAssetType::lookupDragAndDropType(inv->getType());  					*id = inv->getUUID();  					return TRUE; @@ -1462,6 +1461,7 @@ LLTaskInvFVBridge* LLTaskInvFVBridge::createObjectBridge(LLPanelObjectInventory*  											  item->getFlags());  		break;  	case LLAssetType::AT_CATEGORY: +	case LLAssetType::AT_FAVORITE:  		new_bridge = new LLTaskCategoryBridge(panel,  											  object->getUUID(),  											  object->getName()); @@ -1503,8 +1503,8 @@ LLPanelObjectInventory::LLPanelObjectInventory(const LLPanelObjectInventory::Par  {  	// Setup context menu callbacks  	mCommitCallbackRegistrar.add("Inventory.DoToSelected", boost::bind(&LLPanelObjectInventory::doToSelected, this, _2)); -	mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH)); -	mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND)); +	mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLAssetType::AT_TRASH)); +	mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLAssetType::AT_LOST_AND_FOUND));  	mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&do_nothing));  	mCommitCallbackRegistrar.add("Inventory.AttachObject", boost::bind(&do_nothing));  	mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&do_nothing)); diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 2f8fae0f5d..4580eeb336 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -42,7 +42,6 @@  #include "llpanelpeople.h"  // newview -#include "llaccordionctrl.h"  #include "llaccordionctrltab.h"  #include "llagent.h"  #include "llavataractions.h" @@ -517,9 +516,6 @@ BOOL LLPanelPeople::postBuild()  	// call this method in case some list is empty and buttons can be in inconsistent state  	updateButtons(); -	mOnlineFriendList->setRefreshCompleteCallback(boost::bind(&LLPanelPeople::onFriendListRefreshComplete, this, _1, _2)); -	mAllFriendList->setRefreshCompleteCallback(boost::bind(&LLPanelPeople::onFriendListRefreshComplete, this, _1, _2)); -  	return TRUE;  } @@ -564,8 +560,6 @@ void LLPanelPeople::updateFriendList()  	mOnlineFriendList->setDirty();  	mAllFriendList->setDirty(); - -	showFriendsAccordionsIfNeeded();  }  void LLPanelPeople::updateNearbyList() @@ -803,15 +797,14 @@ void LLPanelPeople::reSelectedCurrentTab()  void LLPanelPeople::onFilterEdit(const std::string& search_string)  { -	std::string search_upper = search_string; -	// Searches are case-insensitive -	LLStringUtil::toUpper(search_upper); -	LLStringUtil::trimHead(search_upper); - -	if (mFilterSubString == search_upper) +	if (mFilterSubString == search_string)  		return; -	mFilterSubString = search_upper; +	mFilterSubString = search_string; + +	// Searches are case-insensitive +	LLStringUtil::toUpper(mFilterSubString); +	LLStringUtil::trimHead(mFilterSubString);  	// Apply new filter.  	mNearbyList->setNameFilter(mFilterSubString); @@ -819,8 +812,6 @@ void LLPanelPeople::onFilterEdit(const std::string& search_string)  	mAllFriendList->setNameFilter(mFilterSubString);  	mRecentList->setNameFilter(mFilterSubString);  	mGroupList->setNameFilter(mFilterSubString); - -	showFriendsAccordionsIfNeeded();  }  void LLPanelPeople::onTabSelected(const LLSD& param) @@ -1133,49 +1124,3 @@ void	LLPanelPeople::onOpen(const LLSD& key)  	else  		reSelectedCurrentTab();  } - -void LLPanelPeople::showAccordion(const std::string name, bool show) -{ -	if(name.empty()) -	{ -		llwarns << "No name provided" << llendl; -		return; -	} - -	LLAccordionCtrlTab* tab = getChild<LLAccordionCtrlTab>(name); -	tab->setVisible(show); -	if(show) -	{ -		// expand accordion -		tab->changeOpenClose(false); -	} -} - -void LLPanelPeople::showFriendsAccordionsIfNeeded() -{ -	if(FRIENDS_TAB_NAME == getActiveTabName()) -	{ -		// Expand and show accordions if needed, else - hide them -		showAccordion("tab_online", mOnlineFriendList->filterHasMatches()); -		showAccordion("tab_all", mAllFriendList->filterHasMatches()); - -		// Rearrange accordions -		LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("friends_accordion"); -		accordion->arrange(); -	} -} - -void LLPanelPeople::onFriendListRefreshComplete(LLUICtrl*ctrl, const LLSD& param) -{ -	if(ctrl == mOnlineFriendList) -	{ -		showAccordion("tab_online", param.asInteger()); -	} -	else if(ctrl == mAllFriendList) -	{ -		showAccordion("tab_all", param.asInteger()); -	} - -	LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("friends_accordion"); -	accordion->arrange(); -} diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index 9bf9befe90..dc0aaeb70f 100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -124,12 +124,6 @@ private:  	void					onFriendsAccordionExpandedCollapsed(const LLSD& param, LLAvatarList* avatar_list); -	void					showAccordion(const std::string name, bool show); - -	void					showFriendsAccordionsIfNeeded(); - -	void					onFriendListRefreshComplete(LLUICtrl*ctrl, const LLSD& param); -  	LLFilterEditor*			mFilterEditor;  	LLTabContainer*			mTabContainer;  	LLAvatarList*			mOnlineFriendList; diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index 2c5f4b5afa..34644cfe42 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -1,6 +1,6 @@  /**   * @file llpanelplaceinfo.cpp - * @brief Base class for place information in Side Tray. + * @brief Displays place information in Side Tray.   *   * $LicenseInfo:firstyear=2009&license=viewergpl$   *  @@ -39,34 +39,66 @@  #include "llsecondlifeurls.h"  #include "llinventory.h" +#include "llparcel.h" -#include "llsdutil_math.h" +#include "llqueryflags.h" +#include "llbutton.h" +#include "llcombobox.h" +#include "lliconctrl.h"  #include "llscrollcontainer.h"  #include "lltextbox.h" +#include "lltrans.h" +#include "llaccordionctrl.h" +#include "llaccordionctrltab.h"  #include "llagent.h" +#include "llagentui.h" +#include "llappviewer.h"  #include "llavatarpropertiesprocessor.h" +#include "llcallbacklist.h"  #include "llexpandabletextbox.h"  #include "llfloaterworldmap.h" +#include "llfloaterbuycurrency.h"  #include "llinventorymodel.h" +#include "lllandmarkactions.h"  #include "llpanelpick.h"  #include "lltexturectrl.h" +#include "llstatusbar.h"  #include "llviewerinventory.h"  #include "llviewerparcelmgr.h"  #include "llviewerregion.h" +#include "llviewercontrol.h"   #include "llviewertexteditor.h"  #include "llworldmap.h" +#include "llsdutil_math.h" + +//---------------------------------------------------------------------------- +// Aux types and methods +//---------------------------------------------------------------------------- + +typedef std::pair<LLUUID, std::string> folder_pair_t; + +static bool cmp_folders(const folder_pair_t& left, const folder_pair_t& right); +static void collectLandmarkFolders(LLInventoryModel::cat_array_t& cats); + +static LLRegisterPanelClassWrapper<LLPanelPlaceInfo> t_place_info("panel_place_info");  LLPanelPlaceInfo::LLPanelPlaceInfo()  :	LLPanel(),  	mParcelID(),  	mRequestedID(),  	mPosRegion(), -	mMinHeight(0) +	mLandmarkID(), +	mMinHeight(0), +	mScrollingPanel(NULL), +	mInfoPanel(NULL), +	mMediaPanel(NULL), +	mForSalePanel(NULL), +	mYouAreHerePanel(NULL), +	mSelectedParcelID(-1)  {} -//virtual  LLPanelPlaceInfo::~LLPanelPlaceInfo()  {  	if (mParcelID.notNull()) @@ -75,41 +107,220 @@ LLPanelPlaceInfo::~LLPanelPlaceInfo()  	}  } -//virtual  BOOL LLPanelPlaceInfo::postBuild()  { -	mTitle = getChild<LLTextBox>("title"); +	mTitle = getChild<LLTextBox>("panel_title");  	mCurrentTitle = mTitle->getText(); +	mForSalePanel = getChild<LLPanel>("for_sale_panel"); +	mYouAreHerePanel = getChild<LLPanel>("here_panel"); +	gIdleCallbacks.addFunction(&LLPanelPlaceInfo::updateYouAreHereBanner, this); +	 +	//Icon value should contain sale price of last selected parcel.  +	mForSalePanel->getChild<LLIconCtrl>("icon_for_sale")-> +				setMouseDownCallback(boost::bind(&LLPanelPlaceInfo::onForSaleBannerClick, this)); +  	mSnapshotCtrl = getChild<LLTextureCtrl>("logo");  	mRegionName = getChild<LLTextBox>("region_title");  	mParcelName = getChild<LLTextBox>("parcel_title");  	mDescEditor = getChild<LLExpandableTextBox>("description");  	mMaturityRatingText = getChild<LLTextBox>("maturity_value"); +	mParcelOwner = getChild<LLTextBox>("owner_value"); +	mLastVisited = getChild<LLTextBox>("last_visited_value"); + +	mRatingText = getChild<LLTextBox>("rating_value"); +	mVoiceText = getChild<LLTextBox>("voice_value"); +	mFlyText = getChild<LLTextBox>("fly_value"); +	mPushText = getChild<LLTextBox>("push_value"); +	mBuildText = getChild<LLTextBox>("build_value"); +	mScriptsText = getChild<LLTextBox>("scripts_value"); +	mDamageText = getChild<LLTextBox>("damage_value"); + +	mRegionNameText = getChild<LLTextBox>("region_name"); +	mRegionTypeText = getChild<LLTextBox>("region_type"); +	mRegionRatingText = getChild<LLTextBox>("region_rating"); +	mRegionOwnerText = getChild<LLTextBox>("region_owner"); +	mRegionGroupText = getChild<LLTextBox>("region_group"); + +	mEstateNameText = getChild<LLTextBox>("estate_name"); +	mEstateRatingText = getChild<LLTextBox>("estate_rating"); +	mEstateOwnerText = getChild<LLTextBox>("estate_owner"); +	mCovenantText = getChild<LLTextEditor>("covenant"); + +	mSalesPriceText = getChild<LLTextBox>("sales_price"); +	mAreaText = getChild<LLTextBox>("area"); +	mTrafficText = getChild<LLTextBox>("traffic"); +	mPrimitivesText = getChild<LLTextBox>("primitives"); +	mParcelScriptsText = getChild<LLTextBox>("parcel_scripts"); +	mTerraformLimitsText = getChild<LLTextBox>("terraform_limits"); +	mSubdivideText = getChild<LLTextEditor>("subdivide"); +	mResaleText = getChild<LLTextEditor>("resale"); +	mSaleToText = getChild<LLTextBox>("sale_to"); -	LLScrollContainer* scroll_container = getChild<LLScrollContainer>("place_scroll"); +	mOwner = getChild<LLTextBox>("owner"); +	mCreator = getChild<LLTextBox>("creator"); +	mCreated = getChild<LLTextBox>("created"); + +	mTitleEditor = getChild<LLLineEditor>("title_editor"); +	mNotesEditor = getChild<LLTextEditor>("notes_editor"); +	mFolderCombo = getChild<LLComboBox>("folder_combo"); + +	LLScrollContainer* scroll_container = getChild<LLScrollContainer>("scroll_container");  	scroll_container->setBorderVisible(FALSE);  	mMinHeight = scroll_container->getScrolledViewRect().getHeight(); +	mScrollingPanel = getChild<LLPanel>("scrolling_panel"); +	mInfoPanel = getChild<LLPanel>("info_panel"); +	mMediaPanel = getChild<LLMediaPanel>("media_panel"); +	if (!mMediaPanel) +		return FALSE; +  	return TRUE;  } -//virtual +void LLPanelPlaceInfo::displayItemInfo(const LLInventoryItem* pItem) +{ +	if (!pItem) +		return; + +	mLandmarkID = pItem->getUUID(); + +	if(!gCacheName) +		return; + +	const LLPermissions& perm = pItem->getPermissions(); + +	////////////////// +	// CREATOR NAME // +	////////////////// +	if (pItem->getCreatorUUID().notNull()) +	{ +		std::string name; +		LLUUID creator_id = pItem->getCreatorUUID(); +		if (!gCacheName->getFullName(creator_id, name)) +		{ +			gCacheName->get(creator_id, FALSE, +							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mCreator, _2, _3)); +		} +		mCreator->setText(name); +	} +	else +	{ +		mCreator->setText(getString("unknown")); +	} + +	//////////////// +	// OWNER NAME // +	//////////////// +	if(perm.isOwned()) +	{ +		std::string name; +		if (perm.isGroupOwned()) +		{ +			LLUUID group_id = perm.getGroup(); +			if (!gCacheName->getGroupName(group_id, name)) +			{ +				gCacheName->get(group_id, TRUE, +								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mOwner, _2, _3)); +			} +		} +		else +		{ +			LLUUID owner_id = perm.getOwner(); +			if (!gCacheName->getFullName(owner_id, name)) +			{ +				gCacheName->get(owner_id, FALSE, +								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mOwner, _2, _3)); +			} +		} +		mOwner->setText(name); +	} +	else +	{ +		mOwner->setText(getString("public")); +	} +	 +	////////////////// +	// ACQUIRE DATE // +	////////////////// +	time_t time_utc = pItem->getCreationDate(); +	if (0 == time_utc) +	{ +		mCreated->setText(getString("unknown")); +	} +	else +	{ +		std::string timeStr = getString("acquired_date"); +		LLSD substitution; +		substitution["datetime"] = (S32) time_utc; +		LLStringUtil::format (timeStr, substitution); +		mCreated->setText(timeStr); +	} + +	mTitleEditor->setText(pItem->getName()); +	mNotesEditor->setText(pItem->getDescription()); +} + +void LLPanelPlaceInfo::nameUpdatedCallback( +	LLTextBox* text, +	const std::string& first, +	const std::string& last) +{ +	text->setText(first + " " + last); +} +  void LLPanelPlaceInfo::resetLocation()  {  	mParcelID.setNull();  	mRequestedID.setNull(); +	mLandmarkID.setNull();  	mPosRegion.clearVec(); - +	mForSalePanel->setVisible(FALSE); +	mYouAreHerePanel->setVisible(FALSE);  	std::string not_available = getString("not_available");  	mMaturityRatingText->setValue(not_available); +	mParcelOwner->setValue(not_available); +	mLastVisited->setValue(not_available);  	mRegionName->setText(not_available);  	mParcelName->setText(not_available);  	mDescEditor->setText(not_available); - +	mCreator->setText(not_available); +	mOwner->setText(not_available); +	mCreated->setText(not_available); +	mTitleEditor->setText(LLStringUtil::null); +	mNotesEditor->setText(LLStringUtil::null);  	mSnapshotCtrl->setImageAssetID(LLUUID::null);  	mSnapshotCtrl->setFallbackImageName("default_land_picture.j2c"); + +	mRatingText->setText(not_available); +	mVoiceText->setText(not_available); +	mFlyText->setText(not_available); +	mPushText->setText(not_available); +	mBuildText->setText(not_available); +	mParcelScriptsText->setText(not_available); +	mDamageText->setText(not_available); + +	mRegionNameText->setValue(not_available); +	mRegionTypeText->setValue(not_available); +	mRegionRatingText->setValue(not_available); +	mRegionOwnerText->setValue(not_available); +	mRegionGroupText->setValue(not_available); + +	mEstateNameText->setValue(not_available); +	mEstateRatingText->setValue(not_available); +	mEstateOwnerText->setValue(not_available); +	mCovenantText->setValue(not_available); + +	mSalesPriceText->setValue(not_available); +	mAreaText->setValue(not_available); +	mTrafficText->setValue(not_available); +	mPrimitivesText->setValue(not_available); +	mParcelScriptsText->setValue(not_available); +	mTerraformLimitsText->setValue(not_available); +	mSubdivideText->setValue(not_available); +	mResaleText->setValue(not_available); +	mSaleToText->setValue(not_available);  }  //virtual @@ -119,55 +330,108 @@ void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id)  	sendParcelInfoRequest();  } -//virtual  void LLPanelPlaceInfo::setInfoType(INFO_TYPE type)  { -	mTitle->setText(mCurrentTitle); +	LLPanel* landmark_info_panel = getChild<LLPanel>("landmark_info_panel"); +	LLPanel* landmark_edit_panel = getChild<LLPanel>("landmark_edit_panel"); -	mInfoType = type; -} +	bool is_info_type_agent = type == AGENT; +	bool is_info_type_create_landmark = type == CREATE_LANDMARK; +	bool is_info_type_landmark = type == LANDMARK; +	bool is_info_type_teleport_history = type == TELEPORT_HISTORY; -void LLPanelPlaceInfo::sendParcelInfoRequest() -{ -	if (mParcelID != mRequestedID) +	getChild<LLTextBox>("maturity_label")->setVisible(!is_info_type_agent); +	mMaturityRatingText->setVisible(!is_info_type_agent); + +	getChild<LLTextBox>("owner_label")->setVisible(is_info_type_agent); +	mParcelOwner->setVisible(is_info_type_agent); + +	getChild<LLTextBox>("last_visited_label")->setVisible(is_info_type_teleport_history); +	mLastVisited->setVisible(is_info_type_teleport_history); + +	landmark_info_panel->setVisible(is_info_type_landmark); +	landmark_edit_panel->setVisible(is_info_type_landmark || is_info_type_create_landmark); + +	getChild<LLTextBox>("folder_lable")->setVisible(is_info_type_create_landmark); +	mFolderCombo->setVisible(is_info_type_create_landmark); + +	getChild<LLAccordionCtrl>("advanced_info_accordion")->setVisible(is_info_type_agent); + +	switch(type)  	{ -		LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this); -		LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID); +		case CREATE_LANDMARK: +			mCurrentTitle = getString("title_create_landmark"); -		mRequestedID = mParcelID; +			mTitleEditor->setEnabled(TRUE); +			mNotesEditor->setEnabled(TRUE); + +			populateFoldersList(); +		break; + +		case AGENT: +		case PLACE: +			mCurrentTitle = getString("title_place"); + +			if (!isMediaPanelVisible()) +			{ +				mTitle->setText(mCurrentTitle); +			} +		break; + +		case LANDMARK: +			mCurrentTitle = getString("title_landmark"); + +			mTitleEditor->setEnabled(FALSE); +			mNotesEditor->setEnabled(FALSE); + +			populateFoldersList(); +		break; + +		case TELEPORT_HISTORY: +			mCurrentTitle = getString("title_teleport_history"); +		break;  	} + +	if (type != AGENT) +		toggleMediaPanel(FALSE); + +	mInfoType = type;  } -void LLPanelPlaceInfo::displayParcelInfo(const LLUUID& region_id, -										 const LLVector3d& pos_global) +BOOL LLPanelPlaceInfo::isMediaPanelVisible()  { -	LLViewerRegion* region = gAgent.getRegion(); -	if (!region) -		return; +	if (!mMediaPanel) +		return FALSE; -	mPosRegion.setVec((F32)fmod(pos_global.mdV[VX], (F64)REGION_WIDTH_METERS), -					  (F32)fmod(pos_global.mdV[VY], (F64)REGION_WIDTH_METERS), -					  (F32)pos_global.mdV[VZ]); +	return mMediaPanel->getVisible(); +} -	LLSD body; -	std::string url = region->getCapability("RemoteParcelRequest"); -	if (!url.empty()) +void LLPanelPlaceInfo::toggleMediaPanel(BOOL visible) +{ +    if (!mMediaPanel) +        return; + +    if (visible)  	{ -		body["location"] = ll_sd_from_vector3(mPosRegion); -		if (!region_id.isNull()) -		{ -			body["region_id"] = region_id; -		} -		if (!pos_global.isExactlyZero()) -		{ -			U64 region_handle = to_region_handle(pos_global); -			body["region_handle"] = ll_sd_from_U64(region_handle); -		} -		LLHTTPClient::post(url, body, new LLRemoteParcelRequestResponder(getObserverHandle())); +		mTitle->setText(getString("title_media"));  	}  	else  	{ -		mDescEditor->setText(getString("server_update_text")); +		mTitle->setText(mCurrentTitle); +	} + +    mInfoPanel->setVisible(!visible); +    mMediaPanel->setVisible(visible); +} + +void LLPanelPlaceInfo::sendParcelInfoRequest() +{ +	if (mParcelID != mRequestedID) +	{ +		LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this); +		LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID); + +		mRequestedID = mParcelID;  	}  } @@ -209,6 +473,27 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data)  		mDescEditor->setText(parcel_data.desc);  	} +	// HACK: Flag 0x2 == adult region, +	// Flag 0x1 == mature region, otherwise assume PG +	std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG); +	if (parcel_data.flags & 0x2) +	{ +		rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT); +	} +	else if (parcel_data.flags & 0x1) +	{ +		rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE); +	} + +	mMaturityRatingText->setValue(rating); +	mRatingText->setValue(rating); + +	//update for_sale banner, here we should use DFQ_FOR_SALE instead of PF_FOR_SALE +	//because we deal with remote parcel response format +	bool is_for_sale = (parcel_data.flags & DFQ_FOR_SALE) && +					 mInfoType == AGENT ? TRUE : FALSE; +	mForSalePanel->setVisible(is_for_sale); +  	S32 region_x;  	S32 region_y;  	S32 region_z; @@ -236,25 +521,408 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data)  	{  		mParcelName->setText(getString("not_available"));  	} + +	if (mInfoType == CREATE_LANDMARK) +	{ +		if (parcel_data.name.empty()) +		{ +			mTitleEditor->setText(llformat("%s (%d, %d, %d)", +								  parcel_data.sim_name.c_str(), region_x, region_y, region_z)); +		} +		else +		{ +			mTitleEditor->setText(parcel_data.name); +		} + +		// FIXME: Creating landmark works only for current agent location. +		std::string desc; +		LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_FULL, gAgent.getPositionAgent()); +		mNotesEditor->setText(desc); + +		if (!LLLandmarkActions::landmarkAlreadyExists()) +		{ +			createLandmark(mFolderCombo->getValue().asUUID()); +		} +	}  } -// virtual -void LLPanelPlaceInfo::handleVisibilityChange(BOOL new_visibility) +void LLPanelPlaceInfo::displayParcelInfo(const LLUUID& region_id, +										 const LLVector3d& pos_global)  { -	LLPanel::handleVisibilityChange(new_visibility); +	LLViewerRegion* region = gAgent.getRegion(); +	if (!region) +		return; -	LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); -	if (!parcel_mgr) +	mPosRegion.setVec((F32)fmod(pos_global.mdV[VX], (F64)REGION_WIDTH_METERS), +					  (F32)fmod(pos_global.mdV[VY], (F64)REGION_WIDTH_METERS), +					  (F32)pos_global.mdV[VZ]); + +	LLSD body; +	std::string url = region->getCapability("RemoteParcelRequest"); +	if (!url.empty()) +	{ +		body["location"] = ll_sd_from_vector3(mPosRegion); +		if (!region_id.isNull()) +		{ +			body["region_id"] = region_id; +		} +		if (!pos_global.isExactlyZero()) +		{ +			U64 region_handle = to_region_handle(pos_global); +			body["region_handle"] = ll_sd_from_U64(region_handle); +		} +		LLHTTPClient::post(url, body, new LLRemoteParcelRequestResponder(getObserverHandle())); +	} +	else +	{ +		mDescEditor->setText(getString("server_update_text")); +	} +} + +void LLPanelPlaceInfo::displaySelectedParcelInfo(LLParcel* parcel, +											  LLViewerRegion* region, +											  const LLVector3d& pos_global, +											  bool is_current_parcel) +{ +	if (!region || !parcel)  		return; -	// Remove land selection when panel hides. -	if (!new_visibility) +	// send EstateCovenantInfo message +	LLMessageSystem *msg = gMessageSystem; +	msg->newMessage("EstateCovenantRequest"); +	msg->nextBlockFast(_PREHASH_AgentData); +	msg->addUUIDFast(_PREHASH_AgentID,	gAgent.getID()); +	msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); +	msg->sendReliable(region->getHost()); + +	LLParcelData parcel_data; + +	// HACK: Converting sim access flags to the format +	// returned by remote parcel response. +	switch(region->getSimAccess())  	{ -		if (!parcel_mgr->selectionEmpty()) +	case SIM_ACCESS_MATURE: +		parcel_data.flags = 0x1; +		break; + +	case SIM_ACCESS_ADULT: +		parcel_data.flags = 0x2; +		break; + +	default: +		parcel_data.flags = 0; +	} +	parcel_data.desc = parcel->getDesc(); +	parcel_data.name = parcel->getName(); +	parcel_data.sim_name = region->getName(); +	parcel_data.snapshot_id = parcel->getSnapshotID(); +	mPosRegion.setVec((F32)fmod(pos_global.mdV[VX], (F64)REGION_WIDTH_METERS), +					  (F32)fmod(pos_global.mdV[VY], (F64)REGION_WIDTH_METERS), +					  (F32)pos_global.mdV[VZ]); +	parcel_data.global_x = pos_global.mdV[VX]; +	parcel_data.global_y = pos_global.mdV[VY]; +	parcel_data.global_z = pos_global.mdV[VZ]; + +	std::string on = getString("on"); +	std::string off = getString("off"); + +	// Processing parcel characteristics +	if (parcel->getParcelFlagAllowVoice()) +	{ +		mVoiceText->setText(on); +	} +	else +	{ +		mVoiceText->setText(off); +	} + +	if (!region->getBlockFly() && parcel->getAllowFly()) +	{ +		mFlyText->setText(on); +	} +	else +	{ +		mFlyText->setText(off); +	} + +	if (region->getRestrictPushObject() || parcel->getRestrictPushObject()) +	{ +		mPushText->setText(off); +	} +	else +	{ +		mPushText->setText(on); +	} + +	if (parcel->getAllowModify()) +	{ +		mBuildText->setText(on); +	} +	else +	{ +		mBuildText->setText(off); +	} + +	if((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) || +	   (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) || +	   !parcel->getAllowOtherScripts()) +	{ +		mScriptsText->setText(off); +	} +	else +	{ +		mScriptsText->setText(on); +	} + +	if (region->getAllowDamage() || parcel->getAllowDamage()) +	{ +		mDamageText->setText(on); +	} +	else +	{ +		mDamageText->setText(off); +	} + +	mRegionNameText->setText(region->getName()); +	mRegionTypeText->setText(region->getSimProductName()); +	mRegionRatingText->setText(region->getSimAccessString()); + +	// Determine parcel owner +	if (parcel->isPublic()) +	{ +		mParcelOwner->setText(getString("public")); +		mRegionOwnerText->setText(getString("public")); +	} +	else +	{ +		if (parcel->getIsGroupOwned())  		{ -			parcel_mgr->deselectLand(); +			mRegionOwnerText->setText(getString("group_owned_text")); + +			if(!parcel->getGroupID().isNull()) +			{ +				// FIXME: Using parcel group as region group. +				gCacheName->get(parcel->getGroupID(), TRUE, +								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mRegionGroupText, _2, _3)); + +				gCacheName->get(parcel->getGroupID(), TRUE, +								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mParcelOwner, _2, _3)); +			} +			else +			{ +				std::string owner = getString("none_text"); +				mRegionGroupText->setText(owner); +				mParcelOwner->setText(owner); +			} +		} +		else +		{ +			// Figure out the owner's name +			gCacheName->get(parcel->getOwnerID(), FALSE, +							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mParcelOwner, _2, _3)); +			gCacheName->get(region->getOwner(), FALSE, +							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mRegionOwnerText, _2, _3)); +		} + +		if(LLParcel::OS_LEASE_PENDING == parcel->getOwnershipStatus()) +		{ +			mRegionOwnerText->setText(mRegionOwnerText->getText() + getString("sale_pending_text")); +		} +	} + +	mEstateRatingText->setText(region->getSimAccessString()); + +	S32 area; +	S32 claim_price; +	S32 rent_price; +	F32 dwell; +	BOOL for_sale = parcel->getForSale(); +	LLViewerParcelMgr::getInstance()->getDisplayInfo(&area, +													 &claim_price, +													 &rent_price, +													 &for_sale, +													 &dwell); +	if (for_sale) +	{ +		// Adding "For Sale" flag in remote parcel response format. +		parcel_data.flags |= DFQ_FOR_SALE; + +		const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID(); +		if(auth_buyer_id.notNull()) +		{ +			gCacheName->get(auth_buyer_id, TRUE, +							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, this, mSaleToText, _2, _3)); + +			// Show sales info to a specific person or a group he belongs to. +			if (auth_buyer_id != gAgent.getID() && !gAgent.isInGroup(auth_buyer_id)) +			{ +				for_sale = FALSE; +			} +		} +		else +		{ +			mSaleToText->setText(getString("anyone")); +		} + +		const U8* sign = (U8*)getString("price_text").c_str(); +		const U8* sqm = (U8*)getString("area_text").c_str(); + +		mSalesPriceText->setText(llformat("%s%d ", sign, parcel->getSalePrice())); +		mAreaText->setText(llformat("%d %s", area, sqm)); +		mTrafficText->setText(llformat("%.0f", dwell)); + +		// Can't have more than region max tasks, regardless of parcel +		// object bonus factor. +		S32 primitives = llmin(llround(parcel->getMaxPrimCapacity() * parcel->getParcelPrimBonus()), +							   (S32)region->getMaxTasks()); + +		const U8* available = (U8*)getString("available").c_str(); +		const U8* allocated = (U8*)getString("allocated").c_str(); + +		mPrimitivesText->setText(llformat("%d %s, %d %s", primitives, available, parcel->getPrimCount(), allocated)); + +		if (parcel->getAllowOtherScripts()) +		{ +			mParcelScriptsText->setText(getString("all_residents_text")); +		} +		else if (parcel->getAllowGroupScripts()) +		{ +			mParcelScriptsText->setText(getString("group_text")); +		} +		else +		{ +			mParcelScriptsText->setText(off); +		} + +		mTerraformLimitsText->setText(parcel->getAllowTerraform() ? on : off); + +		if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES) +		{ +			mSubdivideText->setText(getString("can_change")); +		} +		else +		{ +			mSubdivideText->setText(getString("can_not_change")); +		} +		if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL) +		{ +			mResaleText->setText(getString("can_not_resell")); +		} +		else +		{ +			mResaleText->setText(getString("can_resell")); +		} +	} + +	mSelectedParcelID = parcel->getLocalID(); +	mLastSelectedRegionID = region->getRegionID(); +	processParcelInfo(parcel_data); + +	mYouAreHerePanel->setVisible(is_current_parcel); +	getChild<LLAccordionCtrlTab>("sales_tab")->setVisible(for_sale); +} + +void LLPanelPlaceInfo::updateEstateName(const std::string& name) +{ +	mEstateNameText->setText(name); +} + +void LLPanelPlaceInfo::updateEstateOwnerName(const std::string& name) +{ +	mEstateOwnerText->setText(name); +} + +void LLPanelPlaceInfo::updateCovenantText(const std::string &text) +{ +	mCovenantText->setText(text); +} + +void LLPanelPlaceInfo::updateLastVisitedText(const LLDate &date) +{ +	if (date.isNull()) +	{ +		mLastVisited->setText(getString("unknown")); +	} +	else +	{ +		std::string timeStr = getString("acquired_date"); +		LLSD substitution; +		substitution["datetime"] = (S32) date.secondsSinceEpoch(); +		LLStringUtil::format (timeStr, substitution); +		mLastVisited->setText(timeStr); +	} +} + +void LLPanelPlaceInfo::toggleLandmarkEditMode(BOOL enabled) +{ +	// If switching to edit mode while creating landmark +	// the "Create Landmark" title remains. +	if (enabled && mInfoType != CREATE_LANDMARK) +	{ +		mTitle->setText(getString("title_edit_landmark")); +	} +	else +	{ +		mTitle->setText(mCurrentTitle); +	} + +	if (mNotesEditor->getReadOnly() ==  (enabled == TRUE)) +	{ +		mTitleEditor->setEnabled(enabled); +		mNotesEditor->setReadOnly(!enabled); +		mFolderCombo->setVisible(enabled); +		getChild<LLTextBox>("folder_lable")->setVisible(enabled); + +		// HACK: To change the text color in a text editor +		// when it was enabled/disabled we set the text once again. +		mNotesEditor->setText(mNotesEditor->getText()); +	} +} + +const std::string& LLPanelPlaceInfo::getLandmarkTitle() const +{ +	return mTitleEditor->getText(); +} + +const std::string LLPanelPlaceInfo::getLandmarkNotes() const +{ +	return mNotesEditor->getText(); +} + +const LLUUID LLPanelPlaceInfo::getLandmarkFolder() const +{ +	return mFolderCombo->getValue().asUUID(); +} + +BOOL LLPanelPlaceInfo::setLandmarkFolder(const LLUUID& id) +{ +	return mFolderCombo->setCurrentByID(id); +} + +void LLPanelPlaceInfo::createLandmark(const LLUUID& folder_id) +{ +	std::string name = mTitleEditor->getText(); +	std::string desc = mNotesEditor->getText(); + +	LLStringUtil::trim(name); +	LLStringUtil::trim(desc); + +	// If typed name is empty use the parcel name instead. +	if (name.empty()) +	{ +		name = mParcelName->getText(); + +		// If no parcel exists use the region name instead. +		if (name.empty()) +		{ +			name = mRegionName->getText();  		}  	} + +	LLStringUtil::replaceChar(desc, '\n', ' '); +	// If no folder chosen use the "Landmarks" folder. +	LLLandmarkActions::createLandmarkHere(name, desc, +		folder_id.notNull() ? folder_id : gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK));  }  void LLPanelPlaceInfo::createPick(const LLVector3d& pos_global, LLPanelPickEdit* pick_panel) @@ -274,10 +942,159 @@ void LLPanelPlaceInfo::createPick(const LLVector3d& pos_global, LLPanelPickEdit*  	pick_panel->setPickData(&data);  } -// static -void LLPanelPlaceInfo::nameUpdatedCallback(LLTextBox* text, -										   const std::string& first, -										   const std::string& last) +// virtual +void LLPanelPlaceInfo::handleVisibilityChange (BOOL new_visibility)  { -	text->setText(first + " " + last); +	LLPanel::handleVisibilityChange(new_visibility); + +	LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); +	if (!parcel_mgr) +		return; + +	// Remove land selection when panel hides. +	if (!new_visibility) +	{ +		if (!parcel_mgr->selectionEmpty()) +		{ +			parcel_mgr->deselectLand(); +		} +	} +} + +void LLPanelPlaceInfo::populateFoldersList() +{ +	// Collect all folders that can contain landmarks. +	LLInventoryModel::cat_array_t cats; +	collectLandmarkFolders(cats); + +	mFolderCombo->removeall(); + +	// Put the "Landmarks" folder first in list. +	LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK); +	const LLViewerInventoryCategory* cat = gInventory.getCategory(landmarks_id); +	if (!cat) +	{ +		llwarns << "Cannot find the landmarks folder" << llendl; +	} +	std::string cat_full_name = getFullFolderName(cat); +	mFolderCombo->add(cat_full_name, cat->getUUID()); + +	typedef std::vector<folder_pair_t> folder_vec_t; +	folder_vec_t folders; +	// Sort the folders by their full name. +	for (S32 i = 0; i < cats.count(); i++) +	{ +		cat = cats.get(i); +		cat_full_name = getFullFolderName(cat); +		folders.push_back(folder_pair_t(cat->getUUID(), cat_full_name)); +	} +	sort(folders.begin(), folders.end(), cmp_folders); + +	// Finally, populate the combobox. +	for (folder_vec_t::const_iterator it = folders.begin(); it != folders.end(); it++) +		mFolderCombo->add(it->second, LLSD(it->first)); +} + +//static +void LLPanelPlaceInfo::updateYouAreHereBanner(void* userdata) +{ +	//YouAreHere Banner should be displayed only for selected places,  +	// If you want to display it for landmark or teleport history item, you should check by mParcelId +	 +	LLPanelPlaceInfo* self  = static_cast<LLPanelPlaceInfo*>(userdata); +	if(!self->getVisible()) +		return; +	if(!gDisconnected) +	{ +		static F32 radius  = gSavedSettings.getF32("YouAreHereDistance"); + +		BOOL display_banner = gAgent.getRegion()->getRegionID() == self->mLastSelectedRegionID &&  +			LLAgentUI::checkAgentDistance(self->mPosRegion, radius); + +		self->mYouAreHerePanel->setVisible(display_banner); +	} +} + +void LLPanelPlaceInfo::onForSaleBannerClick() +{ +	LLViewerParcelMgr* mgr = LLViewerParcelMgr::getInstance(); +	LLParcelSelectionHandle hParcel = mgr->getFloatingParcelSelection(); +	LLViewerRegion* selected_region =  mgr->getSelectionRegion(); +	if(!hParcel.isNull() && selected_region) +	{ +		if(hParcel->getParcel()->getLocalID() == mSelectedParcelID &&  +				mLastSelectedRegionID ==selected_region->getRegionID()) +		{ +			if(hParcel->getParcel()->getSalePrice() - gStatusBar->getBalance() > 0) +			{ +				LLFloaterBuyCurrency::buyCurrency("Buying selected land ", hParcel->getParcel()->getSalePrice()); +			} +			else +			{ +				LLViewerParcelMgr::getInstance()->startBuyLand(); +			} +		} +		else +		{ +			LL_WARNS("Places") << "User  is trying  to buy remote parcel.Operation is not supported"<< LL_ENDL;  +		} +		 +	} +	 +	 +} + +/*static*/ +std::string LLPanelPlaceInfo::getFullFolderName(const LLViewerInventoryCategory* cat) +{ +	std::string name = cat->getName(); +	LLUUID parent_id; + +	// translate category name, if it's right below the root +	// FIXME: it can throw notification about non existent string in strings.xml +	if (cat->getParentUUID().notNull() && cat->getParentUUID() == gInventory.getRootFolderID()) +	{ +		LLTrans::findString(name, "InvFolder " + name); +	} + +	// we don't want "My Inventory" to appear in the name +	while ((parent_id = cat->getParentUUID()).notNull() && parent_id != gInventory.getRootFolderID()) +	{ +		cat = gInventory.getCategory(parent_id); +		name = cat->getName() + "/" + name; +	} + +	return name; +} + +static bool cmp_folders(const folder_pair_t& left, const folder_pair_t& right) +{ +	return left.second < right.second; +} + +static void collectLandmarkFolders(LLInventoryModel::cat_array_t& cats) +{ +	LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK); + +	// Add descendent folders of the "Landmarks" category. +	LLInventoryModel::item_array_t items; // unused +	LLIsType is_category(LLAssetType::AT_CATEGORY); +	gInventory.collectDescendentsIf( +		landmarks_id, +		cats, +		items, +		LLInventoryModel::EXCLUDE_TRASH, +		is_category); + +	// Add the "My Favorites" category. +	LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE); +	LLViewerInventoryCategory* favorites_cat = gInventory.getCategory(favorites_id); +	if (!favorites_cat) +	{ +		llwarns << "Cannot find the favorites folder" << llendl; +	} +	else +	{ +		cats.put(favorites_cat); +	}  } diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h index c9e1347542..07a2434d59 100644 --- a/indra/newview/llpanelplaceinfo.h +++ b/indra/newview/llpanelplaceinfo.h @@ -1,6 +1,6 @@  /**    * @file llpanelplaceinfo.h - * @brief Base class for place information in Side Tray. + * @brief Displays place information in Side Tray.   *   * $LicenseInfo:firstyear=2009&license=viewergpl$   *  @@ -38,13 +38,19 @@  #include "v3dmath.h"  #include "lluuid.h" +#include "llpanelmedia.h"  #include "llremoteparcelrequest.h" +class LLButton; +class LLComboBox;  class LLExpandableTextBox;  class LLInventoryItem; +class LLLineEditor;  class LLPanelPickEdit;  class LLParcel; +class LLIconCtrl;  class LLTextBox; +class LLTextEditor;  class LLTextureCtrl;  class LLViewerRegion;  class LLViewerInventoryCategory; @@ -68,18 +74,30 @@ public:  	// Ignore all old location information, useful if you are   	// recycling an existing dialog and need to clear it. -	virtual void resetLocation(); +	void resetLocation();  	// Sends a request for data about the given parcel, which will  	// only update the location if there is none already available.  	/*virtual*/ void setParcelID(const LLUUID& parcel_id); -	// Depending on how the panel was triggered -	// (from landmark or current location, or other) +	// Depending on how the panel was triggered  +	// (from landmark or current location, or other)   	// sets a corresponding title and contents. -	virtual void setInfoType(INFO_TYPE type); +	void setInfoType(INFO_TYPE type); + +	// Create a landmark for the current location +	// in a folder specified by folder_id. +	void createLandmark(const LLUUID& folder_id); +	 +	// Create a pick for the location specified +	// by global_pos. +	void createPick(const LLVector3d& pos_global, LLPanelPickEdit* pick_panel); + +	BOOL isMediaPanelVisible(); +	void toggleMediaPanel(BOOL visible); +	void displayItemInfo(const LLInventoryItem* pItem); +	/*virtual*/ void setErrorStatus(U32 status, const std::string& reason); -	// Requests remote parcel info by parcel ID.  	void sendParcelInfoRequest();  	// Displays information about a remote parcel. @@ -87,37 +105,109 @@ public:  	void displayParcelInfo(const LLUUID& region_id,  						   const LLVector3d& pos_global); -	/*virtual*/ void setErrorStatus(U32 status, const std::string& reason); +	// Displays information about the currently selected parcel +	// without sending a request to the server. +	// If is_current_parcel true shows "You Are Here" banner. +	void displaySelectedParcelInfo(LLParcel* parcel, +								LLViewerRegion* region, +								const LLVector3d& pos_global, +								bool is_current_parcel); -	/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); +	void updateEstateName(const std::string& name); +	void updateEstateOwnerName(const std::string& name); +	void updateCovenantText(const std::string &text); +	void updateLastVisitedText(const LLDate &date); + +	void nameUpdatedCallback(LLTextBox* text, +							 const std::string& first, +							 const std::string& last); + +	void toggleLandmarkEditMode(BOOL enabled); +	const std::string& getLandmarkTitle() const; +	const std::string getLandmarkNotes() const; +	const LLUUID getLandmarkFolder() const; + +	// Select current landmark folder in combobox. +	BOOL setLandmarkFolder(const LLUUID& id); + +	/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);  	/*virtual*/ void handleVisibilityChange (BOOL new_visibility); +	 +	 static std::string getFullFolderName(const LLViewerInventoryCategory* cat); -	// Create a pick for the location specified -	// by global_pos. -	void createPick(const LLVector3d& pos_global, LLPanelPickEdit* pick_panel); +private: -protected: -	static void nameUpdatedCallback(LLTextBox* text, -									const std::string& first, -									const std::string& last); +	void populateFoldersList(); +	static void updateYouAreHereBanner(void*);// added to gIdleCallbacks +	void onForSaleBannerClick();  	/**  	 * mParcelID is valid only for remote places, in other cases it's null. See resetLocation()   	 */ -	LLUUID					mParcelID; -	LLUUID					mRequestedID; -	LLVector3				mPosRegion; -	std::string				mCurrentTitle; -	S32						mMinHeight; -	INFO_TYPE 				mInfoType; - -	LLTextBox*				mTitle; -	LLTextureCtrl*			mSnapshotCtrl; -	LLTextBox*				mRegionName; -	LLTextBox*				mParcelName; -	LLExpandableTextBox*	mDescEditor; -	LLTextBox*				mMaturityRatingText; +	LLUUID			mParcelID; +	LLUUID			mRequestedID; +	LLUUID			mLandmarkID; +	LLVector3		mPosRegion; +	std::string		mCurrentTitle; +	S32				mMinHeight; +	INFO_TYPE 		mInfoType; + +	/** +	 * Hold last displayed parcel. Needs for YouAreHere banner. +	 */ +	S32			mSelectedParcelID; +	LLUUID		mLastSelectedRegionID; + +	LLTextBox*			mTitle; +	LLPanel*			mForSalePanel; +	LLPanel*			mYouAreHerePanel; +	LLTextureCtrl*		mSnapshotCtrl; +	LLTextBox*			mRegionName; +	LLTextBox*			mParcelName; +	LLExpandableTextBox*mDescEditor; +	LLTextBox*			mMaturityRatingText; +	LLTextBox*			mParcelOwner; +	LLTextBox*			mLastVisited; + +	LLTextBox*			mRatingText; +	LLTextBox*			mVoiceText; +	LLTextBox*			mFlyText; +	LLTextBox*			mPushText; +	LLTextBox*			mBuildText; +	LLTextBox*			mScriptsText; +	LLTextBox*			mDamageText; + +	LLTextBox*			mRegionNameText; +	LLTextBox*			mRegionTypeText; +	LLTextBox*			mRegionRatingText; +	LLTextBox*			mRegionOwnerText; +	LLTextBox*			mRegionGroupText; + +	LLTextBox*			mEstateNameText; +	LLTextBox*			mEstateRatingText; +	LLTextBox*			mEstateOwnerText; +	LLTextEditor*		mCovenantText; + +	LLTextBox*			mSalesPriceText; +	LLTextBox*			mAreaText; +	LLTextBox*			mTrafficText; +	LLTextBox*			mPrimitivesText; +	LLTextBox*			mParcelScriptsText; +	LLTextBox*			mTerraformLimitsText; +	LLTextEditor*		mSubdivideText; +	LLTextEditor*		mResaleText; +	LLTextBox*			mSaleToText; + +	LLTextBox*			mOwner; +	LLTextBox*			mCreator; +	LLTextBox*			mCreated; +	LLLineEditor*		mTitleEditor; +	LLTextEditor*		mNotesEditor; +	LLComboBox*			mFolderCombo; +	LLPanel*            mScrollingPanel; +	LLPanel*			mInfoPanel; +	LLMediaPanel*		mMediaPanel;  };  #endif // LL_LLPANELPLACEINFO_H diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp deleted file mode 100644 index 9ba72fe6cf..0000000000 --- a/indra/newview/llpanelplaceprofile.cpp +++ /dev/null @@ -1,541 +0,0 @@ -/** - * @file llpanelplaceprofile.cpp - * @brief Displays place profile in Side Tray. - * - * $LicenseInfo:firstyear=2009&license=viewergpl$ - * - * Copyright (c) 2004-2009, Linden Research, Inc. - * - * 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 - * - * 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 - * - * 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. - * - * 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$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llpanelplaceprofile.h" - -#include "llparcel.h" - -#include "llqueryflags.h" - -#include "lliconctrl.h" -#include "lllineeditor.h" -#include "lltextbox.h" -#include "lltexteditor.h" - -#include "llaccordionctrl.h" -#include "llaccordionctrltab.h" -#include "llagent.h" -#include "llagentui.h" -#include "llappviewer.h" -#include "llcallbacklist.h" -#include "llfloaterbuycurrency.h" -#include "llstatusbar.h" -#include "llviewercontrol.h" -#include "llviewerparcelmgr.h" -#include "llviewerregion.h" - -static LLRegisterPanelClassWrapper<LLPanelPlaceProfile> t_place_profile("panel_place_profile"); - -LLPanelPlaceProfile::LLPanelPlaceProfile() -:	LLPanelPlaceInfo(), -	mForSalePanel(NULL), -	mYouAreHerePanel(NULL), -	mSelectedParcelID(-1) -{} - -// virtual -LLPanelPlaceProfile::~LLPanelPlaceProfile() -{} - -// virtual -BOOL LLPanelPlaceProfile::postBuild() -{ -	LLPanelPlaceInfo::postBuild(); - -	mForSalePanel = getChild<LLPanel>("for_sale_panel"); -	mYouAreHerePanel = getChild<LLPanel>("here_panel"); -	gIdleCallbacks.addFunction(&LLPanelPlaceProfile::updateYouAreHereBanner, this); - -	//Icon value should contain sale price of last selected parcel. -	mForSalePanel->getChild<LLIconCtrl>("icon_for_sale")-> -				setMouseDownCallback(boost::bind(&LLPanelPlaceProfile::onForSaleBannerClick, this)); - -	mParcelOwner = getChild<LLTextBox>("owner_value"); -	mLastVisited = getChild<LLTextBox>("last_visited_value"); - -	mRatingText = getChild<LLTextBox>("rating_value"); -	mVoiceText = getChild<LLTextBox>("voice_value"); -	mFlyText = getChild<LLTextBox>("fly_value"); -	mPushText = getChild<LLTextBox>("push_value"); -	mBuildText = getChild<LLTextBox>("build_value"); -	mScriptsText = getChild<LLTextBox>("scripts_value"); -	mDamageText = getChild<LLTextBox>("damage_value"); - -	mRegionNameText = getChild<LLTextBox>("region_name"); -	mRegionTypeText = getChild<LLTextBox>("region_type"); -	mRegionRatingText = getChild<LLTextBox>("region_rating"); -	mRegionOwnerText = getChild<LLTextBox>("region_owner"); -	mRegionGroupText = getChild<LLTextBox>("region_group"); - -	mEstateNameText = getChild<LLTextBox>("estate_name"); -	mEstateRatingText = getChild<LLTextBox>("estate_rating"); -	mEstateOwnerText = getChild<LLTextBox>("estate_owner"); -	mCovenantText = getChild<LLTextEditor>("covenant"); - -	mSalesPriceText = getChild<LLTextBox>("sales_price"); -	mAreaText = getChild<LLTextBox>("area"); -	mTrafficText = getChild<LLTextBox>("traffic"); -	mPrimitivesText = getChild<LLTextBox>("primitives"); -	mParcelScriptsText = getChild<LLTextBox>("parcel_scripts"); -	mTerraformLimitsText = getChild<LLTextBox>("terraform_limits"); -	mSubdivideText = getChild<LLTextEditor>("subdivide"); -	mResaleText = getChild<LLTextEditor>("resale"); -	mSaleToText = getChild<LLTextBox>("sale_to"); - -	return TRUE; -} - -// virtual -void LLPanelPlaceProfile::resetLocation() -{ -	LLPanelPlaceInfo::resetLocation(); - -	mForSalePanel->setVisible(FALSE); -	mYouAreHerePanel->setVisible(FALSE); - -	std::string not_available = getString("not_available"); -	mParcelOwner->setValue(not_available); -	mLastVisited->setValue(not_available); - -	mRatingText->setText(not_available); -	mVoiceText->setText(not_available); -	mFlyText->setText(not_available); -	mPushText->setText(not_available); -	mBuildText->setText(not_available); -	mParcelScriptsText->setText(not_available); -	mDamageText->setText(not_available); - -	mRegionNameText->setValue(not_available); -	mRegionTypeText->setValue(not_available); -	mRegionRatingText->setValue(not_available); -	mRegionOwnerText->setValue(not_available); -	mRegionGroupText->setValue(not_available); - -	mEstateNameText->setValue(not_available); -	mEstateRatingText->setValue(not_available); -	mEstateOwnerText->setValue(not_available); -	mCovenantText->setValue(not_available); - -	mSalesPriceText->setValue(not_available); -	mAreaText->setValue(not_available); -	mTrafficText->setValue(not_available); -	mPrimitivesText->setValue(not_available); -	mParcelScriptsText->setValue(not_available); -	mTerraformLimitsText->setValue(not_available); -	mSubdivideText->setValue(not_available); -	mResaleText->setValue(not_available); -	mSaleToText->setValue(not_available); -} - -// virtual -void LLPanelPlaceProfile::setInfoType(INFO_TYPE type) -{ -	bool is_info_type_agent = type == AGENT; -	bool is_info_type_teleport_history = type == TELEPORT_HISTORY; - -	getChild<LLTextBox>("maturity_label")->setVisible(!is_info_type_agent); -	mMaturityRatingText->setVisible(!is_info_type_agent); - -	getChild<LLTextBox>("owner_label")->setVisible(is_info_type_agent); -	mParcelOwner->setVisible(is_info_type_agent); - -	getChild<LLTextBox>("last_visited_label")->setVisible(is_info_type_teleport_history); -	mLastVisited->setVisible(is_info_type_teleport_history); - -	getChild<LLAccordionCtrl>("advanced_info_accordion")->setVisible(is_info_type_agent); - -	switch(type) -	{ -		case AGENT: -		case PLACE: -		default: -			mCurrentTitle = getString("title_place"); -		break; - -		case TELEPORT_HISTORY: -			mCurrentTitle = getString("title_teleport_history"); -		break; -	} - -	LLPanelPlaceInfo::setInfoType(type); -} - -// virtual -void LLPanelPlaceProfile::processParcelInfo(const LLParcelData& parcel_data) -{ -	LLPanelPlaceInfo::processParcelInfo(parcel_data); - -	// HACK: Flag 0x2 == adult region, -	// Flag 0x1 == mature region, otherwise assume PG -	std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG); -	if (parcel_data.flags & 0x2) -	{ -		rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT); -	} -	else if (parcel_data.flags & 0x1) -	{ -		rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE); -	} - -	mMaturityRatingText->setValue(rating); -	mRatingText->setValue(rating); - -	//update for_sale banner, here we should use DFQ_FOR_SALE instead of PF_FOR_SALE -	//because we deal with remote parcel response format -	bool is_for_sale = (parcel_data.flags & DFQ_FOR_SALE) && -					 mInfoType == AGENT ? TRUE : FALSE; -	mForSalePanel->setVisible(is_for_sale); -} - -void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, -													LLViewerRegion* region, -													const LLVector3d& pos_global, -													bool is_current_parcel) -{ -	if (!region || !parcel) -		return; - -	// send EstateCovenantInfo message -	LLMessageSystem *msg = gMessageSystem; -	msg->newMessage("EstateCovenantRequest"); -	msg->nextBlockFast(_PREHASH_AgentData); -	msg->addUUIDFast(_PREHASH_AgentID,	gAgent.getID()); -	msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); -	msg->sendReliable(region->getHost()); - -	LLParcelData parcel_data; - -	// HACK: Converting sim access flags to the format -	// returned by remote parcel response. -	switch(region->getSimAccess()) -	{ -	case SIM_ACCESS_MATURE: -		parcel_data.flags = 0x1; -		break; - -	case SIM_ACCESS_ADULT: -		parcel_data.flags = 0x2; -		break; - -	default: -		parcel_data.flags = 0; -	} -	parcel_data.desc = parcel->getDesc(); -	parcel_data.name = parcel->getName(); -	parcel_data.sim_name = region->getName(); -	parcel_data.snapshot_id = parcel->getSnapshotID(); -	mPosRegion.setVec((F32)fmod(pos_global.mdV[VX], (F64)REGION_WIDTH_METERS), -					  (F32)fmod(pos_global.mdV[VY], (F64)REGION_WIDTH_METERS), -					  (F32)pos_global.mdV[VZ]); -	parcel_data.global_x = pos_global.mdV[VX]; -	parcel_data.global_y = pos_global.mdV[VY]; -	parcel_data.global_z = pos_global.mdV[VZ]; - -	std::string on = getString("on"); -	std::string off = getString("off"); - -	// Processing parcel characteristics -	if (parcel->getParcelFlagAllowVoice()) -	{ -		mVoiceText->setText(on); -	} -	else -	{ -		mVoiceText->setText(off); -	} - -	if (!region->getBlockFly() && parcel->getAllowFly()) -	{ -		mFlyText->setText(on); -	} -	else -	{ -		mFlyText->setText(off); -	} - -	if (region->getRestrictPushObject() || parcel->getRestrictPushObject()) -	{ -		mPushText->setText(off); -	} -	else -	{ -		mPushText->setText(on); -	} - -	if (parcel->getAllowModify()) -	{ -		mBuildText->setText(on); -	} -	else -	{ -		mBuildText->setText(off); -	} - -	if((region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) || -	   (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) || -	   !parcel->getAllowOtherScripts()) -	{ -		mScriptsText->setText(off); -	} -	else -	{ -		mScriptsText->setText(on); -	} - -	if (region->getAllowDamage() || parcel->getAllowDamage()) -	{ -		mDamageText->setText(on); -	} -	else -	{ -		mDamageText->setText(off); -	} - -	mRegionNameText->setText(region->getName()); -	mRegionTypeText->setText(region->getSimProductName()); -	mRegionRatingText->setText(region->getSimAccessString()); - -	// Determine parcel owner -	if (parcel->isPublic()) -	{ -		mParcelOwner->setText(getString("public")); -		mRegionOwnerText->setText(getString("public")); -	} -	else -	{ -		if (parcel->getIsGroupOwned()) -		{ -			mRegionOwnerText->setText(getString("group_owned_text")); - -			if(!parcel->getGroupID().isNull()) -			{ -				// FIXME: Using parcel group as region group. -				gCacheName->get(parcel->getGroupID(), TRUE, -								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mRegionGroupText, _2, _3)); - -				gCacheName->get(parcel->getGroupID(), TRUE, -								boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mParcelOwner, _2, _3)); -			} -			else -			{ -				std::string owner = getString("none_text"); -				mRegionGroupText->setText(owner); -				mParcelOwner->setText(owner); -			} -		} -		else -		{ -			// Figure out the owner's name -			gCacheName->get(parcel->getOwnerID(), FALSE, -							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mParcelOwner, _2, _3)); -			gCacheName->get(region->getOwner(), FALSE, -							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mRegionOwnerText, _2, _3)); -		} - -		if(LLParcel::OS_LEASE_PENDING == parcel->getOwnershipStatus()) -		{ -			mRegionOwnerText->setText(mRegionOwnerText->getText() + getString("sale_pending_text")); -		} -	} - -	mEstateRatingText->setText(region->getSimAccessString()); - -	S32 area; -	S32 claim_price; -	S32 rent_price; -	F32 dwell; -	BOOL for_sale = parcel->getForSale(); -	LLViewerParcelMgr::getInstance()->getDisplayInfo(&area, -													 &claim_price, -													 &rent_price, -													 &for_sale, -													 &dwell); -	if (for_sale) -	{ -		// Adding "For Sale" flag in remote parcel response format. -		parcel_data.flags |= DFQ_FOR_SALE; - -		const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID(); -		if(auth_buyer_id.notNull()) -		{ -			gCacheName->get(auth_buyer_id, TRUE, -							boost::bind(&LLPanelPlaceInfo::nameUpdatedCallback, mSaleToText, _2, _3)); - -			// Show sales info to a specific person or a group he belongs to. -			if (auth_buyer_id != gAgent.getID() && !gAgent.isInGroup(auth_buyer_id)) -			{ -				for_sale = FALSE; -			} -		} -		else -		{ -			mSaleToText->setText(getString("anyone")); -		} - -		const U8* sign = (U8*)getString("price_text").c_str(); -		const U8* sqm = (U8*)getString("area_text").c_str(); - -		mSalesPriceText->setText(llformat("%s%d ", sign, parcel->getSalePrice())); -		mAreaText->setText(llformat("%d %s", area, sqm)); -		mTrafficText->setText(llformat("%.0f", dwell)); - -		// Can't have more than region max tasks, regardless of parcel -		// object bonus factor. -		S32 primitives = llmin(llround(parcel->getMaxPrimCapacity() * parcel->getParcelPrimBonus()), -							   (S32)region->getMaxTasks()); - -		const U8* available = (U8*)getString("available").c_str(); -		const U8* allocated = (U8*)getString("allocated").c_str(); - -		mPrimitivesText->setText(llformat("%d %s, %d %s", primitives, available, parcel->getPrimCount(), allocated)); - -		if (parcel->getAllowOtherScripts()) -		{ -			mParcelScriptsText->setText(getString("all_residents_text")); -		} -		else if (parcel->getAllowGroupScripts()) -		{ -			mParcelScriptsText->setText(getString("group_text")); -		} -		else -		{ -			mParcelScriptsText->setText(off); -		} - -		mTerraformLimitsText->setText(parcel->getAllowTerraform() ? on : off); - -		if (region->getRegionFlags() & REGION_FLAGS_ALLOW_PARCEL_CHANGES) -		{ -			mSubdivideText->setText(getString("can_change")); -		} -		else -		{ -			mSubdivideText->setText(getString("can_not_change")); -		} -		if (region->getRegionFlags() & REGION_FLAGS_BLOCK_LAND_RESELL) -		{ -			mResaleText->setText(getString("can_not_resell")); -		} -		else -		{ -			mResaleText->setText(getString("can_resell")); -		} -	} - -	mSelectedParcelID = parcel->getLocalID(); -	mLastSelectedRegionID = region->getRegionID(); -	processParcelInfo(parcel_data); - -	mYouAreHerePanel->setVisible(is_current_parcel); -	getChild<LLAccordionCtrlTab>("sales_tab")->setVisible(for_sale); -} - -void LLPanelPlaceProfile::updateEstateName(const std::string& name) -{ -	mEstateNameText->setText(name); -} - -void LLPanelPlaceProfile::updateEstateOwnerName(const std::string& name) -{ -	mEstateOwnerText->setText(name); -} - -void LLPanelPlaceProfile::updateCovenantText(const std::string &text) -{ -	mCovenantText->setText(text); -} - -void LLPanelPlaceProfile::updateLastVisitedText(const LLDate &date) -{ -	if (date.isNull()) -	{ -		mLastVisited->setText(getString("unknown")); -	} -	else -	{ -		std::string timeStr = getString("acquired_date"); -		LLSD substitution; -		substitution["datetime"] = (S32) date.secondsSinceEpoch(); -		LLStringUtil::format (timeStr, substitution); -		mLastVisited->setText(timeStr); -	} -} - -void LLPanelPlaceProfile::onForSaleBannerClick() -{ -	LLViewerParcelMgr* mgr = LLViewerParcelMgr::getInstance(); -	LLParcelSelectionHandle hParcel = mgr->getFloatingParcelSelection(); -	LLViewerRegion* selected_region =  mgr->getSelectionRegion(); -	if(!hParcel.isNull() && selected_region) -	{ -		if(hParcel->getParcel()->getLocalID() == mSelectedParcelID && -				mLastSelectedRegionID ==selected_region->getRegionID()) -		{ -			if(hParcel->getParcel()->getSalePrice() - gStatusBar->getBalance() > 0) -			{ -				LLFloaterBuyCurrency::buyCurrency("Buying selected land ", hParcel->getParcel()->getSalePrice()); -			} -			else -			{ -				LLViewerParcelMgr::getInstance()->startBuyLand(); -			} -		} -		else -		{ -			LL_WARNS("Places") << "User  is trying  to buy remote parcel.Operation is not supported"<< LL_ENDL; -		} - -	} -} - -// static -void LLPanelPlaceProfile::updateYouAreHereBanner(void* userdata) -{ -	//YouAreHere Banner should be displayed only for selected places, -	// If you want to display it for landmark or teleport history item, you should check by mParcelId - -	LLPanelPlaceProfile* self = static_cast<LLPanelPlaceProfile*>(userdata); -	if(!self->getVisible()) -		return; - -	if(!gDisconnected) -	{ -		static F32 radius = gSavedSettings.getF32("YouAreHereDistance"); - -		BOOL display_banner = gAgent.getRegion()->getRegionID() == self->mLastSelectedRegionID && -										LLAgentUI::checkAgentDistance(self->mPosRegion, radius); - -		self->mYouAreHerePanel->setVisible(display_banner); -	} -} diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h deleted file mode 100644 index d8e4bcb6bd..0000000000 --- a/indra/newview/llpanelplaceprofile.h +++ /dev/null @@ -1,114 +0,0 @@ -/** - * @file llpanelplaceprofile.h - * @brief Displays place profile in Side Tray. - * - * $LicenseInfo:firstyear=2009&license=viewergpl$ - * - * Copyright (c) 2004-2009, Linden Research, Inc. - * - * 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 - * - * 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 - * - * 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. - * - * 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$ - */ - -#ifndef LL_LLPANELPLACEPROFILE_H -#define LL_LLPANELPLACEPROFILE_H - -#include "llpanelplaceinfo.h" - -class LLTextEditor; - -class LLPanelPlaceProfile : public LLPanelPlaceInfo -{ -public: -	LLPanelPlaceProfile(); -	/*virtual*/ ~LLPanelPlaceProfile(); - -	/*virtual*/ BOOL postBuild(); - -	/*virtual*/ void resetLocation(); - -	/*virtual*/ void setInfoType(INFO_TYPE type); - -	/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); - -	// Displays information about the currently selected parcel -	// without sending a request to the server. -	// If is_current_parcel true shows "You Are Here" banner. -	void displaySelectedParcelInfo(LLParcel* parcel, -								   LLViewerRegion* region, -								   const LLVector3d& pos_global, -								   bool is_current_parcel); - -	void updateEstateName(const std::string& name); -	void updateEstateOwnerName(const std::string& name); -	void updateCovenantText(const std::string &text); -	void updateLastVisitedText(const LLDate &date); - -private: -	void onForSaleBannerClick(); - -	static void updateYouAreHereBanner(void*);// added to gIdleCallbacks - -	/** -	 * Holds last displayed parcel. Needed for YouAreHere banner. -	 */ -	S32					mSelectedParcelID; -	LLUUID				mLastSelectedRegionID; - -	LLPanel*			mForSalePanel; -	LLPanel*			mYouAreHerePanel; - -	LLTextBox*			mParcelOwner; -	LLTextBox*			mLastVisited; - -	LLTextBox*			mRatingText; -	LLTextBox*			mVoiceText; -	LLTextBox*			mFlyText; -	LLTextBox*			mPushText; -	LLTextBox*			mBuildText; -	LLTextBox*			mScriptsText; -	LLTextBox*			mDamageText; - -	LLTextBox*			mRegionNameText; -	LLTextBox*			mRegionTypeText; -	LLTextBox*			mRegionRatingText; -	LLTextBox*			mRegionOwnerText; -	LLTextBox*			mRegionGroupText; - -	LLTextBox*			mEstateNameText; -	LLTextBox*			mEstateRatingText; -	LLTextBox*			mEstateOwnerText; -	LLTextEditor*		mCovenantText; - -	LLTextBox*			mSalesPriceText; -	LLTextBox*			mAreaText; -	LLTextBox*			mTrafficText; -	LLTextBox*			mPrimitivesText; -	LLTextBox*			mParcelScriptsText; -	LLTextBox*			mTerraformLimitsText; -	LLTextEditor*		mSubdivideText; -	LLTextEditor*		mResaleText; -	LLTextBox*			mSaleToText; -}; - -#endif // LL_LLPANELPLACEPROFILE_H diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 66efb96fc7..b2e9110e96 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -57,10 +57,9 @@  #include "llinventorymodel.h"  #include "lllandmarkactions.h"  #include "lllandmarklist.h" -#include "llpanellandmarkinfo.h" +#include "llpanelplaceinfo.h"  #include "llpanellandmarks.h"  #include "llpanelpick.h" -#include "llpanelplaceprofile.h"  #include "llpanelteleporthistory.h"  #include "llteleporthistorystorage.h"  #include "lltoggleablemenu.h" @@ -122,8 +121,7 @@ LLPanelPlaces::LLPanelPlaces()  		mFilterSubString(LLStringUtil::null),  		mActivePanel(NULL),  		mFilterEditor(NULL), -		mPlaceProfile(NULL), -		mLandmarkInfo(NULL), +		mPlaceInfo(NULL),  		mPickPanel(NULL),  		mItem(NULL),  		mPlaceMenu(NULL), @@ -137,7 +135,7 @@ LLPanelPlaces::LLPanelPlaces()  	gInventory.addObserver(mInventoryObserver);  	LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback( -			boost::bind(&LLPanelPlaces::updateVerbs, this)); +			boost::bind(&LLPanelPlaces::onAgentParcelChange, this));  	//LLUICtrlFactory::getInstance()->buildPanel(this, "panel_places.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()  } @@ -208,32 +206,25 @@ BOOL LLPanelPlaces::postBuild()  		mFilterEditor->setCommitCallback(boost::bind(&LLPanelPlaces::onFilterEdit, this, _2, false));  	} -	mPlaceProfile = getChild<LLPanelPlaceProfile>("panel_place_profile"); -	mLandmarkInfo = getChild<LLPanelLandmarkInfo>("panel_landmark_info"); -	if (!mPlaceProfile || !mLandmarkInfo) -		return FALSE; +	mPlaceInfo = getChild<LLPanelPlaceInfo>("panel_place_info"); -	LLButton* back_btn = mPlaceProfile->getChild<LLButton>("back_btn"); +	LLButton* back_btn = mPlaceInfo->getChild<LLButton>("back_btn");  	back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); -	back_btn = mLandmarkInfo->getChild<LLButton>("back_btn"); -	back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); - -	LLLineEditor* title_editor = mLandmarkInfo->getChild<LLLineEditor>("title_editor"); +	LLLineEditor* title_editor = mPlaceInfo->getChild<LLLineEditor>("title_editor");  	title_editor->setKeystrokeCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this), NULL); -	LLTextEditor* notes_editor = mLandmarkInfo->getChild<LLTextEditor>("notes_editor"); +	LLTextEditor* notes_editor = mPlaceInfo->getChild<LLTextEditor>("notes_editor");  	notes_editor->setKeystrokeCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this)); -	LLComboBox* folder_combo = mLandmarkInfo->getChild<LLComboBox>("folder_combo"); +	LLComboBox* folder_combo = mPlaceInfo->getChild<LLComboBox>("folder_combo");  	folder_combo->setSelectionCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this)); -  	return TRUE;  }  void LLPanelPlaces::onOpen(const LLSD& key)  { -	if(!mPlaceProfile || !mLandmarkInfo || key.size() == 0) +	if(mPlaceInfo == NULL || key.size() == 0)  		return;  	mFilterEditor->clear(); @@ -248,11 +239,11 @@ void LLPanelPlaces::onOpen(const LLSD& key)  	if (mPlaceInfoType == AGENT_INFO_TYPE)  	{ -		mPlaceProfile->setInfoType(LLPanelPlaceInfo::AGENT); +		mPlaceInfo->setInfoType(LLPanelPlaceInfo::AGENT);  	}  	else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE)  	{ -		mLandmarkInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK); +		mPlaceInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK);  		if (key.has("x") && key.has("y") && key.has("z"))  		{ @@ -265,11 +256,11 @@ void LLPanelPlaces::onOpen(const LLSD& key)  			mPosGlobal = gAgent.getPositionGlobal();  		} -		mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal); +		mPlaceInfo->displayParcelInfo(LLUUID(), mPosGlobal);  	}  	else if (mPlaceInfoType == LANDMARK_INFO_TYPE)  	{ -		mLandmarkInfo->setInfoType(LLPanelPlaceInfo::LANDMARK); +		mPlaceInfo->setInfoType(LLPanelPlaceInfo::LANDMARK);  		LLInventoryItem* item = gInventory.getItem(key["id"].asUUID());  		if (!item) @@ -279,12 +270,17 @@ void LLPanelPlaces::onOpen(const LLSD& key)  	}  	else if (mPlaceInfoType == REMOTE_PLACE_INFO_TYPE)  	{ +		if (mPlaceInfo->isMediaPanelVisible()) +		{ +			toggleMediaPanel(); +		} +  		mPosGlobal = LLVector3d(key["x"].asReal(),  								key["y"].asReal(),  								key["z"].asReal()); -		mPlaceProfile->setInfoType(LLPanelPlaceInfo::PLACE); -		mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal); +		mPlaceInfo->setInfoType(LLPanelPlaceInfo::PLACE); +		mPlaceInfo->displayParcelInfo(LLUUID(), mPosGlobal);  	}  	else if (mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE)  	{ @@ -295,9 +291,9 @@ void LLPanelPlaces::onOpen(const LLSD& key)  		mPosGlobal = hist_items[index].mGlobalPos; -		mPlaceProfile->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY); -		mPlaceProfile->updateLastVisitedText(hist_items[index].mDate); -		mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal); +		mPlaceInfo->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY); +		mPlaceInfo->updateLastVisitedText(hist_items[index].mDate); +		mPlaceInfo->displayParcelInfo(LLUUID(), mPosGlobal);  	}  	LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); @@ -325,7 +321,7 @@ void LLPanelPlaces::onOpen(const LLSD& key)  void LLPanelPlaces::setItem(LLInventoryItem* item)  { -	if (!mLandmarkInfo || !item) +	if (!mPlaceInfo || !item)  		return;  	mItem = item; @@ -355,19 +351,19 @@ void LLPanelPlaces::setItem(LLInventoryItem* item)  	if (is_landmark_editable)  	{ -		if(!mLandmarkInfo->setLandmarkFolder(mItem->getParentUUID()) && !mItem->getParentUUID().isNull()) +		if(!mPlaceInfo->setLandmarkFolder(mItem->getParentUUID()) && !mItem->getParentUUID().isNull())  		{  			const LLViewerInventoryCategory* cat = gInventory.getCategory(mItem->getParentUUID()); -			if (cat) +			if(cat)  			{ -				std::string cat_fullname = LLPanelLandmarkInfo::getFullFolderName(cat); -				LLComboBox* folderList = mLandmarkInfo->getChild<LLComboBox>("folder_combo"); -				folderList->add(cat_fullname, cat->getUUID(), ADD_TOP); +				std::string cat_fullname = LLPanelPlaceInfo::getFullFolderName(cat); +				LLComboBox* folderList = mPlaceInfo->getChild<LLComboBox>("folder_combo"); +				folderList->add(cat_fullname, cat->getUUID(),ADD_TOP);  			}  		}  	} -	mLandmarkInfo->displayItemInfo(mItem); +	mPlaceInfo->displayItemInfo(mItem);  	LLLandmark* lm = gLandmarkList.getAsset(mItem->getAssetUUID(),  											boost::bind(&LLPanelPlaces::onLandmarkLoaded, this, _1)); @@ -379,13 +375,13 @@ void LLPanelPlaces::setItem(LLInventoryItem* item)  void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)  { -	if (!mLandmarkInfo) +	if (!mPlaceInfo)  		return;  	LLUUID region_id;  	landmark->getRegionID(region_id);  	landmark->getGlobalPos(mPosGlobal); -	mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal); +	mPlaceInfo->displayParcelInfo(region_id, mPosGlobal);  }  void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_filter) @@ -422,8 +418,10 @@ void LLPanelPlaces::onShareButtonClicked()  void LLPanelPlaces::onTeleportButtonClicked()  { -	LLPanelPlaceInfo* panel = getCurrentInfoPanel(); -	if (panel && panel->getVisible()) +	if (!mPlaceInfo) +		return; + +	if (mPlaceInfo->getVisible())  	{  		if (mPlaceInfoType == LANDMARK_INFO_TYPE)  		{ @@ -452,8 +450,10 @@ void LLPanelPlaces::onTeleportButtonClicked()  void LLPanelPlaces::onShowOnMapButtonClicked()  { -	LLPanelPlaceInfo* panel = getCurrentInfoPanel(); -	if (panel && panel->getVisible()) +	if (!mPlaceInfo) +		return; + +	if (mPlaceInfo->getVisible())  	{  		LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();  		if(!worldmap_instance) @@ -496,31 +496,31 @@ void LLPanelPlaces::onShowOnMapButtonClicked()  void LLPanelPlaces::onEditButtonClicked()  { -	if (!mLandmarkInfo || isLandmarkEditModeOn) +	if (!mPlaceInfo || isLandmarkEditModeOn)  		return;  	isLandmarkEditModeOn = true; -	mLandmarkInfo->toggleLandmarkEditMode(TRUE); +	mPlaceInfo->toggleLandmarkEditMode(TRUE);  	updateVerbs();  }  void LLPanelPlaces::onSaveButtonClicked()  { -	if (!mLandmarkInfo || mItem.isNull()) +	if (!mPlaceInfo || mItem.isNull())  		return; -	std::string current_title_value = mLandmarkInfo->getLandmarkTitle(); +	std::string current_title_value = mPlaceInfo->getLandmarkTitle();  	std::string item_title_value = mItem->getName(); -	std::string current_notes_value = mLandmarkInfo->getLandmarkNotes(); +	std::string current_notes_value = mPlaceInfo->getLandmarkNotes();  	std::string item_notes_value = mItem->getDescription();  	LLStringUtil::trim(current_title_value);  	LLStringUtil::trim(current_notes_value);  	LLUUID item_id = mItem->getUUID(); -	LLUUID folder_id = mLandmarkInfo->getLandmarkFolder(); +	LLUUID folder_id = mPlaceInfo->getLandmarkFolder();  	LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(mItem); @@ -553,7 +553,7 @@ void LLPanelPlaces::onSaveButtonClicked()  void LLPanelPlaces::onCancelButtonClicked()  { -	if (!mLandmarkInfo) +	if (!mPlaceInfo)  		return;  	if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE) @@ -562,13 +562,13 @@ void LLPanelPlaces::onCancelButtonClicked()  	}  	else  	{ -		mLandmarkInfo->toggleLandmarkEditMode(FALSE); +		mPlaceInfo->toggleLandmarkEditMode(FALSE);  		isLandmarkEditModeOn = false;  		updateVerbs();  		// Reload the landmark properties. -		mLandmarkInfo->displayItemInfo(mItem); +		mPlaceInfo->displayItemInfo(mItem);  	}  } @@ -597,7 +597,7 @@ void LLPanelPlaces::onOverflowButtonClicked()  		if (mItem.notNull())  		{  			const LLUUID& item_id = mItem->getUUID(); -			const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +			const LLUUID& trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  			is_landmark_removable = gInventory.isObjectDescendentOf(item_id, gInventory.getRootFolderID()) &&  									!gInventory.isObjectDescendentOf(item_id, trash_id);  		} @@ -652,6 +652,9 @@ void LLPanelPlaces::onOverflowMenuItemClicked(const LLSD& param)  	}  	else if (item == "pick")  	{ +		if (!mPlaceInfo) +			return; +  		if (mPickPanel == NULL)  		{  			mPickPanel = LLPanelPickEdit::create(); @@ -664,12 +667,7 @@ void LLPanelPlaces::onOverflowMenuItemClicked(const LLSD& param)  		togglePickPanel(TRUE);  		mPickPanel->onOpen(LLSD()); - -		LLPanelPlaceInfo* panel = getCurrentInfoPanel(); -		if (panel) -		{ -			panel->createPick(mPosGlobal, mPickPanel); -		} +		mPlaceInfo->createPick(mPosGlobal, mPickPanel);  		LLRect rect = getRect();  		mPickPanel->reshape(rect.getWidth(), rect.getHeight()); @@ -679,7 +677,7 @@ void LLPanelPlaces::onOverflowMenuItemClicked(const LLSD& param)      {          if ( mItem.notNull() )           { -            const LLUUID& favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); +            LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);              if ( favorites_id.notNull() )              {                  copy_inventory_item(gAgent.getID(), @@ -696,16 +694,39 @@ void LLPanelPlaces::onOverflowMenuItemClicked(const LLSD& param)  void LLPanelPlaces::onBackButtonClicked()  { -	togglePlaceInfoPanel(FALSE); +	if (!mPlaceInfo) +		return; +	 +	if (mPlaceInfo->isMediaPanelVisible()) +	{ +		toggleMediaPanel(); +	} +	else +	{ +		togglePlaceInfoPanel(FALSE); -	// Resetting mPlaceInfoType when Place Info panel is closed. -	mPlaceInfoType = LLStringUtil::null; +		// Resetting mPlaceInfoType when Place Info panel is closed. +		mPlaceInfoType = LLStringUtil::null; -	isLandmarkEditModeOn = false; +		isLandmarkEditModeOn = false; +	}  	updateVerbs();  } +void LLPanelPlaces::toggleMediaPanel() +{ +	if (!mPlaceInfo) +		return; + +	mPlaceInfo->toggleMediaPanel(!mPlaceInfo->isMediaPanelVisible()); + +	// Refresh the current place info because +	// the media panel controls can't refer to +	// the remote parcel media. +	onOpen(LLSD().insert("type", AGENT_INFO_TYPE)); +} +  void LLPanelPlaces::togglePickPanel(BOOL visible)  {  	setAllChildrenVisible(this, !visible); @@ -716,50 +737,26 @@ void LLPanelPlaces::togglePickPanel(BOOL visible)  void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible)  { -	if (!mPlaceProfile || !mLandmarkInfo) +	if (!mPlaceInfo)  		return; +	mPlaceInfo->setVisible(visible);  	mFilterEditor->setVisible(!visible);  	mTabContainer->setVisible(!visible); -	if (mPlaceInfoType == AGENT_INFO_TYPE || -		mPlaceInfoType == REMOTE_PLACE_INFO_TYPE || -		mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE) +	if (visible)  	{ -		mPlaceProfile->setVisible(visible); +		mPlaceInfo->resetLocation(); -		if (visible) -		{ -			mPlaceProfile->resetLocation(); - -			LLRect rect = getRect(); -			LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom); -			mPlaceProfile->reshape(new_rect.getWidth(), new_rect.getHeight()); - -			mLandmarkInfo->setVisible(FALSE); -		} -	} -	else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE || -			 mPlaceInfoType == LANDMARK_INFO_TYPE) -	{ -		mLandmarkInfo->setVisible(visible); - -		if (visible) -		{ -			mLandmarkInfo->resetLocation(); - -			LLRect rect = getRect(); -			LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom); -			mLandmarkInfo->reshape(new_rect.getWidth(), new_rect.getHeight()); - -			mPlaceProfile->setVisible(FALSE); -		} +		LLRect rect = getRect(); +		LLRect new_rect = LLRect(rect.mLeft, rect.mTop, rect.mRight, mTabContainer->getRect().mBottom); +		mPlaceInfo->reshape(new_rect.getWidth(),new_rect.getHeight());  	}  }  void LLPanelPlaces::changedParcelSelection()  { -	if (!mPlaceProfile) +	if (!mPlaceInfo)  		return;  	LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); @@ -785,8 +782,8 @@ void LLPanelPlaces::changedParcelSelection()  		}  	} -	mPlaceProfile->resetLocation(); -	mPlaceProfile->displaySelectedParcelInfo(parcel, region, mPosGlobal, is_current_parcel); +	mPlaceInfo->resetLocation(); +	mPlaceInfo->displaySelectedParcelInfo(parcel, region, mPosGlobal, is_current_parcel);  	updateVerbs();  } @@ -833,22 +830,30 @@ void LLPanelPlaces::changedInventory(U32 mask)  	gInventory.removeObserver(mInventoryObserver);  } -void LLPanelPlaces::updateVerbs() +void LLPanelPlaces::onAgentParcelChange()  { -	bool is_place_info_visible; +	if (!mPlaceInfo) +		return; -	LLPanelPlaceInfo* panel = getCurrentInfoPanel(); -	if (panel) +	if (mPlaceInfo->isMediaPanelVisible())  	{ -		is_place_info_visible = panel->getVisible(); +		onOpen(LLSD().insert("type", AGENT_INFO_TYPE));  	}  	else  	{ -		is_place_info_visible = false; +		updateVerbs();  	} +} +void LLPanelPlaces::updateVerbs() +{ +	if (!mPlaceInfo) +		return; + +	bool is_place_info_visible = mPlaceInfo->getVisible();  	bool is_agent_place_info_visible = mPlaceInfoType == AGENT_INFO_TYPE;  	bool is_create_landmark_visible = mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE; +	bool is_media_panel_visible = mPlaceInfo->isMediaPanelVisible();  	mTeleportBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);  	mShowOnMapBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn); @@ -859,7 +864,7 @@ void LLPanelPlaces::updateVerbs()  	mCancelBtn->setVisible(isLandmarkEditModeOn);  	mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn); -	mOverflowBtn->setEnabled(is_place_info_visible && !is_create_landmark_visible); +	mOverflowBtn->setEnabled(is_place_info_visible && !is_media_panel_visible && !is_create_landmark_visible);  	if (is_place_info_visible)  	{ @@ -867,13 +872,16 @@ void LLPanelPlaces::updateVerbs()  		{  			// We don't need to teleport to the current location  			// so check if the location is not within the current parcel. -			mTeleportBtn->setEnabled(!mPosGlobal.isExactlyZero() && +			mTeleportBtn->setEnabled(!is_media_panel_visible && +									 !mPosGlobal.isExactlyZero() &&  									 !LLViewerParcelMgr::getInstance()->inAgentParcel(mPosGlobal));  		}  		else if (mPlaceInfoType == LANDMARK_INFO_TYPE || mPlaceInfoType == REMOTE_PLACE_INFO_TYPE)  		{  			mTeleportBtn->setEnabled(TRUE);  		} + +		mShowOnMapBtn->setEnabled(!is_media_panel_visible);  	}  	else  	{ @@ -882,23 +890,6 @@ void LLPanelPlaces::updateVerbs()  	}  } -LLPanelPlaceInfo* LLPanelPlaces::getCurrentInfoPanel() -{ -	if (mPlaceInfoType == AGENT_INFO_TYPE || -		mPlaceInfoType == REMOTE_PLACE_INFO_TYPE || -		mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE) -	{ -		return mPlaceProfile; -	} -	else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE || -			 mPlaceInfoType == LANDMARK_INFO_TYPE) -	{ -		return mLandmarkInfo; -	} - -	return NULL; -} -  static bool is_agent_in_selected_parcel(LLParcel* parcel)  {  	LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index 39eb5261db..e2d281dd84 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -37,10 +37,6 @@  class LLInventoryItem;  class LLFilterEditor;  class LLLandmark; - -class LLPanelLandmarkInfo; -class LLPanelPlaceProfile; -  class LLPanelPickEdit;  class LLPanelPlaceInfo;  class LLPanelPlacesTab; @@ -89,16 +85,13 @@ private:  	void togglePickPanel(BOOL visible);  	void togglePlaceInfoPanel(BOOL visible); +	void onAgentParcelChange();  	void updateVerbs(); -	LLPanelPlaceInfo* getCurrentInfoPanel(); -  	LLFilterEditor*				mFilterEditor;  	LLPanelPlacesTab*			mActivePanel;  	LLTabContainer*				mTabContainer; -	LLPanelPlaceProfile*		mPlaceProfile; -	LLPanelLandmarkInfo*		mLandmarkInfo; - +	LLPanelPlaceInfo*			mPlaceInfo;  	LLPanelPickEdit*			mPickPanel;  	LLToggleableMenu*			mPlaceMenu;  	LLToggleableMenu*			mLandmarkMenu; diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h index 45c2fc116e..b59d1d42f3 100644 --- a/indra/newview/llpanelprofileview.h +++ b/indra/newview/llpanelprofileview.h @@ -36,8 +36,6 @@  #include "llpanel.h"  #include "llpanelprofile.h"  #include "llavatarpropertiesprocessor.h" -#include "llagent.h" -#include "lltooldraganddrop.h"  class LLPanelProfile;  class LLPanelProfileTab; @@ -66,18 +64,6 @@ public:  	/*virtual*/ void togglePanel(LLPanel* panel); -	BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, -						   BOOL drop, EDragAndDropType cargo_type, -						   void *cargo_data, EAcceptance *accept, -						   std::string& tooltip_msg) -	{ -		LLToolDragAndDrop::handleGiveDragAndDrop(getAvatarId(), gAgent.getSessionID(), drop, -				 cargo_type, cargo_data, accept); - -		return TRUE; -	} - -  protected:  	void onBackBtnClick(); diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index 9450bee315..e97eb1df2b 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -32,11 +32,6 @@  #include "llviewerprecompiledheaders.h" -// common includes -#include "lltrans.h" -#include "llavataractions.h" -#include "llagent.h" -  #include "llparticipantlist.h"  #include "llavatarlist.h"  #include "llspeakers.h" @@ -44,18 +39,15 @@  //LLParticipantList retrieves add, clear and remove events and updates view accordingly   LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* avatar_list):  	mSpeakerMgr(data_source), -	mAvatarList(avatar_list), -	mSpeakerAddListener(*this), -	mSpeakerRemoveListener(*this), -	mSpeakerClearListener(*this), -	mSortOrder(E_SORT_BY_NAME) +	mAvatarList(avatar_list)  { -	mSpeakerMgr->addListener(&mSpeakerAddListener, "add"); -	mSpeakerMgr->addListener(&mSpeakerRemoveListener, "remove"); -	mSpeakerMgr->addListener(&mSpeakerClearListener, "clear"); +	mSpeakerAddListener = new SpeakerAddListener(mAvatarList); +	mSpeakerRemoveListener = new SpeakerRemoveListener(mAvatarList); +	mSpeakerClearListener = new SpeakerClearListener(mAvatarList); -	mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData")); -	mAvatarList->setDoubleClickCallback(boost::bind(&LLParticipantList::onAvatarListDoubleClicked, this, mAvatarList)); +	mSpeakerMgr->addListener(mSpeakerAddListener, "add"); +	mSpeakerMgr->addListener(mSpeakerRemoveListener, "remove"); +	mSpeakerMgr->addListener(mSpeakerClearListener, "clear");  	//Lets fill avatarList with existing speakers  	LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs(); @@ -66,33 +58,24 @@ LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* av  	{  		group_members.push_back((*it)->mID);  	} -	sort(); +	mAvatarList->setDirty(); +	mAvatarList->sortByName();  }  LLParticipantList::~LLParticipantList()  { +	delete mSpeakerAddListener; +	delete mSpeakerRemoveListener; +	delete mSpeakerClearListener; +	mSpeakerAddListener = NULL; +	mSpeakerRemoveListener = NULL; +	mSpeakerClearListener = NULL;  } -void LLParticipantList::onAvatarListDoubleClicked(LLAvatarList* list) -{ -	LLUUID clicked_id = list->getSelectedUUID(); - -	if (clicked_id.isNull() || clicked_id == gAgent.getID()) -		return; -	 -	LLAvatarActions::startIM(clicked_id); -} - -void LLParticipantList::setSortOrder(EParticipantSortOrder order) -{ -	if ( mSortOrder != order ) -	{ -		mSortOrder = order; -		sort(); -	} -} - -bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata) +// +// LLParticipantList::SpeakerAddListener +// +bool LLParticipantList::SpeakerAddListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)  {  	LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();  	LLUUID uu_id = event->getValue().asUUID(); @@ -105,11 +88,15 @@ bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, co  	}  	group_members.push_back(uu_id); -	sort(); +	mAvatarList->setDirty(); +	mAvatarList->sortByName();  	return true;  } -bool LLParticipantList::onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata) +// +// LLParticipantList::SpeakerRemoveListener +// +bool LLParticipantList::SpeakerRemoveListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)  {  	LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();  	LLAvatarList::uuid_vector_t::iterator pos = std::find(group_members.begin(), group_members.end(), event->getValue().asUUID()); @@ -121,7 +108,10 @@ bool LLParticipantList::onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event,  	return true;  } -bool LLParticipantList::onClearListEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata) +// +// LLParticipantList::SpeakerClearListener +// +bool LLParticipantList::SpeakerClearListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)  {  	LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();  	group_members.clear(); @@ -129,45 +119,3 @@ bool LLParticipantList::onClearListEvent(LLPointer<LLOldEvents::LLEvent> event,  	return true;  } -void LLParticipantList::sort() -{ -	if ( !mAvatarList ) -		return; - -	// Mark AvatarList as dirty one -	mAvatarList->setDirty(); - -	// TODO: Implement more sorting orders after specs updating (EM) -	switch ( mSortOrder ) { -	case E_SORT_BY_NAME : -		mAvatarList->sortByName(); -		break; -	default : -		llwarns << "Unrecognized sort order for " << mAvatarList->getName() << llendl; -		return; -	} -} - -// -// LLParticipantList::SpeakerAddListener -// -bool LLParticipantList::SpeakerAddListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata) -{ -	return mParent.onAddItemEvent(event, userdata); -} - -// -// LLParticipantList::SpeakerRemoveListener -// -bool LLParticipantList::SpeakerRemoveListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata) -{ -	return mParent.onRemoveItemEvent(event, userdata); -} - -// -// LLParticipantList::SpeakerClearListener -// -bool LLParticipantList::SpeakerClearListener::handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata) -{ -	return mParent.onClearListEvent(event, userdata); -} diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h index 04d9e29256..68aae0aee5 100644 --- a/indra/newview/llparticipantlist.h +++ b/indra/newview/llparticipantlist.h @@ -38,74 +38,46 @@ class LLAvatarList;  class LLParticipantList  { -	LOG_CLASS(LLParticipantList);  	public:  		LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* avatar_list);  		~LLParticipantList(); -		typedef enum e_participant_sort_oder { -			E_SORT_BY_NAME = 0, -		} EParticipantSortOrder; - -		/** -		  * Set and sort Avatarlist by given order -		  */ -		void setSortOrder(EParticipantSortOrder order = E_SORT_BY_NAME); -  	protected: -		/** -		 * LLSpeakerMgr event handlers -		 */ -		bool onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata); -		bool onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata); -		bool onClearListEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata); - -		/** -		 * Sorts the Avatarlist by stored order -		 */ -		void sort();  		//List of listeners implementing LLOldEvents::LLSimpleListener.  		//There is no way to handle all the events in one listener as LLSpeakerMgr registers listeners in such a way  		//that one listener can handle only one type of event -		class BaseSpeakerListner : public LLOldEvents::LLSimpleListener +		class SpeakerAddListener : public LLOldEvents::LLSimpleListener  		{  		public: -			BaseSpeakerListner(LLParticipantList& parent) : mParent(parent) {} -		protected: -			LLParticipantList& mParent; -		}; +			SpeakerAddListener(LLAvatarList* avatar_list) : mAvatarList(avatar_list) {} -		class SpeakerAddListener : public BaseSpeakerListner -		{ -		public: -			SpeakerAddListener(LLParticipantList& parent) : BaseSpeakerListner(parent) {}  			/*virtual*/ bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata); +			LLAvatarList* mAvatarList;  		}; -		class SpeakerRemoveListener : public BaseSpeakerListner +		class SpeakerRemoveListener : public LLOldEvents::LLSimpleListener  		{  		public: -			SpeakerRemoveListener(LLParticipantList& parent) : BaseSpeakerListner(parent) {} +			SpeakerRemoveListener(LLAvatarList* avatar_list) : mAvatarList(avatar_list) {} +  			/*virtual*/ bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata); +			LLAvatarList* mAvatarList;  		}; -		class SpeakerClearListener : public BaseSpeakerListner +		class SpeakerClearListener : public LLOldEvents::LLSimpleListener  		{  		public: -			SpeakerClearListener(LLParticipantList& parent) : BaseSpeakerListner(parent) {} +			SpeakerClearListener(LLAvatarList* avatar_list) : mAvatarList(avatar_list) {} +  			/*virtual*/ bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata); +			LLAvatarList* mAvatarList;  		}; -  	private: -		void onAvatarListDoubleClicked(LLAvatarList* list); -  		LLSpeakerMgr*		mSpeakerMgr; -		LLAvatarList*		mAvatarList; - -		SpeakerAddListener		mSpeakerAddListener; -		SpeakerRemoveListener	mSpeakerRemoveListener; -		SpeakerClearListener	mSpeakerClearListener; +		LLAvatarList* 		mAvatarList; -		EParticipantSortOrder	mSortOrder; +		SpeakerAddListener* mSpeakerAddListener; +		SpeakerRemoveListener* mSpeakerRemoveListener; +		SpeakerClearListener* mSpeakerClearListener;  }; diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp index 34e78b5c46..b06e70c00a 100644 --- a/indra/newview/llpreview.cpp +++ b/indra/newview/llpreview.cpp @@ -45,7 +45,6 @@  #include "lltooldraganddrop.h"  #include "llradiogroup.h"  #include "llassetstorage.h" -#include "llviewerassettype.h"  #include "llviewerobject.h"  #include "llviewerobjectlist.h"  #include "lldbstrings.h" @@ -318,7 +317,7 @@ BOOL LLPreview::handleHover(S32 x, S32 y, MASK mask)  		   && LLToolDragAndDrop::getInstance()->isOverThreshold(screen_x, screen_y))  		{  			EDragAndDropType type; -			type = LLViewerAssetType::lookupDragAndDropType(item->getType()); +			type = LLAssetType::lookupDragAndDropType(item->getType());  			LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_LIBRARY;  			if(!mObjectUUID.isNull())  			{ @@ -407,7 +406,7 @@ void LLPreview::onDiscardBtn(void* data)  	*/  	// Move the item to the trash -	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  	if (item->getParentUUID() != trash_id)  	{  		LLInventoryModel::update_list_t update; diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 7b3a20d102..ab2afb8056 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -130,10 +130,10 @@ LLPreviewGesture* LLPreviewGesture::show(const LLUUID& item_id, const LLUUID& ob  	preview->setObjectID(object_id);  	// Start speculative download of sounds and animations -	const LLUUID animation_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_ANIMATION); +	LLUUID animation_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_ANIMATION);  	gInventory.startBackgroundFetch(animation_folder_id); -	const LLUUID sound_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_SOUND); +	LLUUID sound_folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_SOUND);  	gInventory.startBackgroundFetch(sound_folder_id);  	// this will call refresh when we have everything. diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 9c21faa3be..86fa2c4695 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -552,7 +552,7 @@ void LLPreviewTexture::onAspectRatioCommit(LLUICtrl* ctrl, void* userdata)  void LLPreviewTexture::loadAsset()  { -	mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +	mImage = LLViewerTextureManager::getFetchedTexture(mImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  	mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);  	mAssetStatus = PREVIEW_ASSET_LOADING;  	updateDimensions(); diff --git a/indra/newview/llresourcedata.h b/indra/newview/llresourcedata.h index b4b9042689..46b79150bb 100644 --- a/indra/newview/llresourcedata.h +++ b/indra/newview/llresourcedata.h @@ -39,12 +39,11 @@  struct LLResourceData  {  	LLAssetInfo mAssetInfo; -	LLFolderType::EType mPreferredLocation; +	LLAssetType::EType mPreferredLocation;  	LLInventoryType::EType mInventoryType;  	U32 mNextOwnerPerm;  	S32 mExpectedUploadCost;  	void *mUserData; -	static const S8 INVALID_LOCATION = -2;  };  #endif diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index abfb51b6e1..b8ceef0899 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -1448,7 +1448,7 @@ void LLSelectMgr::selectionSetImage(const LLUUID& imageid)  				// Texture picker defaults aren't inventory items  				// * Don't need to worry about permissions for them  				// * Can just apply the texture and be done with it. -				objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE)); +				objectp->setTEImage(te, LLViewerTextureManager::getFetchedTexture(mImageID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));  			}  			return true;  		} @@ -1604,7 +1604,7 @@ BOOL LLSelectMgr::selectionRevertTextures()  					}  					else  					{ -						object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE)); +						object->setTEImage(te, LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));  					}  				}  			} @@ -2827,7 +2827,7 @@ bool LLSelectMgr::confirmDelete(const LLSD& notification, const LLSD& response,  	case 0:  		{  			// TODO: Make sure you have delete permissions on all of them. -			const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +			LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  			// attempt to derez into the trash.  			LLDeRezInfo* info = new LLDeRezInfo(DRD_TRASH, trash_id);  			LLSelectMgr::getInstance()->sendListToRegions("DeRezObject", @@ -4604,7 +4604,7 @@ void LLSelectMgr::updateSilhouettes()  	if (!mSilhouetteImagep)  	{ -		mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", TRUE, TRUE); +		mSilhouetteImagep = LLViewerTextureManager::getFetchedTextureFromFile("silhouette.j2c", TRUE, LLViewerTexture::BOOST_UI);  	}  	mHighlightedObjects->cleanupNodes(); diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 9f317803ce..279e143851 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -2704,7 +2704,7 @@ void renderTexturePriority(LLDrawable* drawable)  		drawBox(center, size);  		/*S32 boost = imagep->getBoostLevel(); -		if (boost) +		if (boost>LLViewerTexture::BOOST_NONE)  		{  			F32 t = (F32) boost / (F32) (LLViewerTexture::BOOST_MAX_LEVEL-1);  			LLVector4 col = lerp(boost_cold, boost_hot, t); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index b23e7feda2..9bdea57491 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -334,7 +334,7 @@ void populate_favorites_bar()  	S32 count = lib_cats->count();  	for(S32 i = 0; i < count; ++i)  	{ -		if(lib_cats->get(i)->getPreferredType() == LLFolderType::FT_LANDMARK) +		if(lib_cats->get(i)->getPreferredType() == LLAssetType::AT_LANDMARK)  		{  			lib_landmarks = lib_cats->get(i)->getUUID();  			break; @@ -351,7 +351,7 @@ void populate_favorites_bar()  	gInventory.getDirectDescendentsOf(lib_landmarks, lm_cats, lm_items);  	if (!lm_items) return; -	const LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); +	LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE);  	if (favorites_id.isNull())  	{  		llerror("My Inventory is missing My Favorites", 0); @@ -1673,7 +1673,7 @@ bool idle_startup()  		gInventory.buildParentChildMap();  		//all categories loaded. lets create "My Favorites" category -		gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE,true); +		gInventory.findCategoryUUIDForType(LLAssetType::AT_FAVORITE,true);  		// lets create "Friends" and "Friends/All" in the Inventory "Calling Cards" and fill it with buddies  		LLFriendCardsManager::instance().syncFriendsFolder(); diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index cb7b29dfc6..efe8804742 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -426,7 +426,7 @@ BOOL LLFloaterTexturePicker::postBuild()  		mInventoryPanel->getRootFolder()->getFilter()->markDefault();  		// Commented out to stop opening all folders with textures -		// mInventoryPanel->openDefaultFolderForType(LLFolderType::FT_TEXTURE); +		// mInventoryPanel->openDefaultFolderForType(LLAssetType::AT_TEXTURE);  		// don't put keyboard focus on selected item, because the selection callback  		// will assume that this was user input @@ -529,7 +529,7 @@ void LLFloaterTexturePicker::draw()  		mTexturep = NULL;  		if(mImageAssetID.notNull())  		{ -			mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES, IMMEDIATE_NO); +			mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES);  			mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);  		}  		else if (!mFallbackImageName.empty()) @@ -1073,7 +1073,7 @@ BOOL LLTextureCtrl::handleMouseDown(S32 x, S32 y, MASK mask)  	{  		showPicker(FALSE);  		//grab textures first... -		gInventory.startBackgroundFetch(gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE)); +		gInventory.startBackgroundFetch(gInventory.findCategoryUUIDForType(LLAssetType::AT_TEXTURE));  		//...then start full inventory fetch.  		gInventory.startBackgroundFetch();  		handled = TRUE; @@ -1190,7 +1190,7 @@ void LLTextureCtrl::draw()  	}  	else if (!mImageAssetID.isNull())  	{ -		mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES, IMMEDIATE_NO); +		mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES);  		mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW);  	}  	else if (!mFallbackImageName.empty()) diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index ea675c5a6e..dafa4f25ca 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -168,7 +168,7 @@ void LLTextureBar::draw()  	{  		color = LLColor4::green4;  	} -	else if (mImagep->getBoostLevel()) +	else if (mImagep->getBoostLevel() > LLViewerTexture::BOOST_NONE)  	{  		color = LLColor4::magenta;  	} diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index f82573f46c..e78737fe0d 100644 --- a/indra/newview/lltoastgroupnotifypanel.cpp +++ b/indra/newview/lltoastgroupnotifypanel.cpp @@ -220,6 +220,7 @@ bool LLToastGroupNotifyPanel::isAttachmentOpenable(LLAssetType::EType type)  	switch(type)  	{  	case LLAssetType::AT_LANDMARK: +	case LLAssetType::AT_FAVORITE:  	case LLAssetType::AT_NOTECARD:  	case LLAssetType::AT_IMAGE_JPEG:  	case LLAssetType::AT_IMAGE_TGA: diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 959cb3f182..9a63f07a7e 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -92,7 +92,7 @@ public:  	virtual bool operator()(LLInventoryCategory* cat,  							LLInventoryItem* item)  	{ -		if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE)) +		if(cat && (cat->getPreferredType() == LLAssetType::AT_NONE))  		{  			return true;  		} @@ -109,7 +109,7 @@ public:  							LLInventoryItem* item)  	{  		if(item) return true; -		if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE)) +		if(cat && (cat->getPreferredType() == LLAssetType::AT_NONE))  		{  			return true;  		} @@ -1317,7 +1317,8 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,  	// Check if it's in the trash.  	bool is_in_trash = false; -	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id; +	trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		is_in_trash = true; @@ -2087,7 +2088,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(  	if(!item || !item->isComplete()) return ACCEPT_NO;  	// must not be in the trash -	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id(gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH));  	if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )  	{  		return ACCEPT_NO; @@ -2169,7 +2170,8 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(  	}  	// Check if it's in the trash. -	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id; +	trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		accept = ACCEPT_YES_SINGLE; @@ -2247,7 +2249,8 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(  	}  	// Check if it's in the trash. -	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id; +	trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  	{  		accept = ACCEPT_YES_SINGLE; @@ -2385,7 +2388,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(  	if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)  	{  		// it's in the agent inventory -		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +		LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  		if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )  		{  			return ACCEPT_NO; @@ -2440,7 +2443,7 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(  	if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)  	{  		// it's in the agent inventory -		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +		LLUUID trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  		if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )  		{  			return ACCEPT_NO; @@ -2499,7 +2502,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(  	if(mSource == SOURCE_AGENT)  	{ -		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +		LLUUID trash_id(gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH));  		if( gInventory.isObjectDescendentOf( category->getUUID(), trash_id ) )  		{  			return ACCEPT_NO; diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp deleted file mode 100644 index c974171c2c..0000000000 --- a/indra/newview/llviewerassettype.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/**  - * @file llassettype.cpp - * @brief Implementatino of LLViewerAssetType functionality. - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - *  - * Copyright (c) 2001-2009, Linden Research, Inc. - *  - * 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 - *  - * 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 - *  - * 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. - *  - * 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$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llviewerassettype.h" -#include "lldictionary.h" -#include "llmemory.h" -#include "llsingleton.h" - -static const std::string empty_string; - -struct ViewerAssetEntry : public LLDictionaryEntry -{ -	ViewerAssetEntry(EDragAndDropType dad_type // drag and drop type -		) -		: -		LLDictionaryEntry(empty_string), // no reverse lookup needed for now, so just leave this blank -		mDadType(dad_type) -	{ -	} -	EDragAndDropType mDadType; -}; - -class LLViewerAssetDictionary : public LLSingleton<LLViewerAssetDictionary>, -						  public LLDictionary<LLViewerAssetType::EType, ViewerAssetEntry> -{ -public: -	LLViewerAssetDictionary(); -}; - -LLViewerAssetDictionary::LLViewerAssetDictionary() -{ -	//       												      	   	   	 DRAG&DROP TYPE		     -	//   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	   	|--------------------| -	addEntry(LLViewerAssetType::AT_TEXTURE, 			new ViewerAssetEntry(DAD_TEXTURE)); -	addEntry(LLViewerAssetType::AT_SOUND, 				new ViewerAssetEntry(DAD_SOUND)); -	addEntry(LLViewerAssetType::AT_CALLINGCARD, 		new ViewerAssetEntry(DAD_CALLINGCARD)); -	addEntry(LLViewerAssetType::AT_LANDMARK, 			new ViewerAssetEntry(DAD_LANDMARK)); -	addEntry(LLViewerAssetType::AT_SCRIPT, 				new ViewerAssetEntry(DAD_NONE)); -	addEntry(LLViewerAssetType::AT_CLOTHING, 			new ViewerAssetEntry(DAD_CLOTHING)); -	addEntry(LLViewerAssetType::AT_OBJECT, 				new ViewerAssetEntry(DAD_OBJECT)); -	addEntry(LLViewerAssetType::AT_NOTECARD, 			new ViewerAssetEntry(DAD_NOTECARD)); -	addEntry(LLViewerAssetType::AT_CATEGORY, 			new ViewerAssetEntry(DAD_CATEGORY)); -	addEntry(LLViewerAssetType::AT_ROOT_CATEGORY, 		new ViewerAssetEntry(DAD_ROOT_CATEGORY)); -	addEntry(LLViewerAssetType::AT_LSL_TEXT, 			new ViewerAssetEntry(DAD_SCRIPT)); -	addEntry(LLViewerAssetType::AT_LSL_BYTECODE, 		new ViewerAssetEntry(DAD_NONE)); -	addEntry(LLViewerAssetType::AT_TEXTURE_TGA, 		new ViewerAssetEntry(DAD_NONE)); -	addEntry(LLViewerAssetType::AT_BODYPART, 			new ViewerAssetEntry(DAD_BODYPART)); -	addEntry(LLViewerAssetType::AT_SOUND_WAV, 			new ViewerAssetEntry(DAD_NONE)); -	addEntry(LLViewerAssetType::AT_IMAGE_TGA, 			new ViewerAssetEntry(DAD_NONE)); -	addEntry(LLViewerAssetType::AT_IMAGE_JPEG, 			new ViewerAssetEntry(DAD_NONE)); -	addEntry(LLViewerAssetType::AT_ANIMATION, 			new ViewerAssetEntry(DAD_ANIMATION)); -	addEntry(LLViewerAssetType::AT_GESTURE, 			new ViewerAssetEntry(DAD_GESTURE)); -	addEntry(LLViewerAssetType::AT_SIMSTATE, 			new ViewerAssetEntry(DAD_NONE)); - -	addEntry(LLViewerAssetType::AT_LINK, 				new ViewerAssetEntry(DAD_LINK)); -	addEntry(LLViewerAssetType::AT_LINK_FOLDER, 		new ViewerAssetEntry(DAD_LINK)); - -	addEntry(LLViewerAssetType::AT_NONE, 				new ViewerAssetEntry(DAD_NONE)); -}; - -EDragAndDropType LLViewerAssetType::lookupDragAndDropType(EType asset_type) -{ -	const LLViewerAssetDictionary *dict = LLViewerAssetDictionary::getInstance(); -	const ViewerAssetEntry *entry = dict->lookup(asset_type); -	if (entry) -		return entry->mDadType; -	else -		return DAD_NONE; -} - -// Generate a good default description -void LLViewerAssetType::generateDescriptionFor(LLViewerAssetType::EType asset_type, -											   std::string& description) -{ -	const S32 BUF_SIZE = 30; -	char time_str[BUF_SIZE];	/* Flawfinder: ignore */ -	time_t now; -	time(&now); -	memset(time_str, '\0', BUF_SIZE); -	strftime(time_str, BUF_SIZE - 1, "%Y-%m-%d %H:%M:%S ", localtime(&now)); -	description.assign(time_str); -	description.append(LLAssetType::lookupHumanReadable(asset_type)); -} diff --git a/indra/newview/llviewerassettype.h b/indra/newview/llviewerassettype.h deleted file mode 100644 index 01158885ce..0000000000 --- a/indra/newview/llviewerassettype.h +++ /dev/null @@ -1,54 +0,0 @@ -/**  - * @file llviewerassettype.h - * @brief Declaration of LLViewerViewerAssetType. - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - *  - * Copyright (c) 2001-2009, Linden Research, Inc. - *  - * 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 - *  - * 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 - *  - * 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. - *  - * 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$ - */ - -#ifndef LL_LLVIEWERASSETTYPE_H -#define LL_LLVIEWERASSETTYPE_H - -#include <string> -#include "llassettype.h" - -// This class is similar to llassettype, but contains methods -// only used by the viewer. -class LLViewerAssetType : public LLAssetType -{ -public: -	// Generate a good default description. You may want to add a verb -	// or agent name after this depending on your application. -	static void 				generateDescriptionFor(LLViewerAssetType::EType asset_type, -													   std::string& description); -	static EDragAndDropType   	lookupDragAndDropType(EType asset_type); -protected: -	LLViewerAssetType() {} -	~LLViewerAssetType() {} -}; - -#endif // LL_LLVIEWERASSETTYPE_H diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp deleted file mode 100644 index 384538364f..0000000000 --- a/indra/newview/llviewerfoldertype.cpp +++ /dev/null @@ -1,263 +0,0 @@ -/**  - * @file llfoldertype.cpp - * @brief Implementation of LLViewerFolderType functionality. - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - *  - * Copyright (c) 2001-2009, Linden Research, Inc. - *  - * 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 - *  - * 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 - *  - * 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. - *  - * 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$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llviewerfoldertype.h" -#include "lldictionary.h" -#include "llmemory.h" -#include "llvisualparam.h" - -static const std::string empty_string; - -struct ViewerFolderEntry : public LLDictionaryEntry -{ -	// Constructor for non-ensembles -	ViewerFolderEntry(const std::string &new_category_name, // default name when creating a new category of this type -					  const std::string &icon_name 			// name of the folder icon -		)  -		: -		LLDictionaryEntry(empty_string), // no reverse lookup needed on non-ensembles, so just leave this blank -		mIconName(icon_name), -		mNewCategoryName(new_category_name) -	{ -		mAllowedNames.clear(); -	} - -	// Constructor for ensembles -	ViewerFolderEntry(const std::string &xui_name, 			// name of the xui menu item -					  const std::string &new_category_name, // default name when creating a new category of this type -					  const std::string &icon_name, 		// name of the folder icon -					  const std::string allowed_names 		// allowed item typenames for this folder type -		)  -		: -		LLDictionaryEntry(xui_name), -		mIconName(icon_name), -		mNewCategoryName(new_category_name) -	{ -		const std::string delims (","); -		LLStringUtilBase<char>::getTokens(allowed_names, mAllowedNames, delims); -	} - -	bool getIsAllowedName(const std::string &name) const -	{ -		if (mAllowedNames.empty()) -			return false; -		for (name_vec_t::const_iterator iter = mAllowedNames.begin(); -			 iter != mAllowedNames.end(); -			 iter++) -		{ -			if (name == (*iter)) -				return true; -		} -		return false; -	} -	const std::string mIconName; -	const std::string mNewCategoryName; -	typedef std::vector<std::string> name_vec_t; -	name_vec_t mAllowedNames; -}; - -class LLViewerFolderDictionary : public LLSingleton<LLViewerFolderDictionary>, -								 public LLDictionary<LLFolderType::EType, ViewerFolderEntry> -{ -public: -	LLViewerFolderDictionary(); -protected: -	bool initEnsemblesFromFile(); // Reads in ensemble information from foldertypes.xml -}; - -LLViewerFolderDictionary::LLViewerFolderDictionary() -{ -	initEnsemblesFromFile(); - -	//       													    	  NEW CATEGORY NAME         FOLDER ICON NAME -	//      												  		     |-------------------------|---------------------------| -	addEntry(LLFolderType::FT_TEXTURE, 				new ViewerFolderEntry("Textures",				"inv_folder_texture.tga")); -	addEntry(LLFolderType::FT_SOUND, 				new ViewerFolderEntry("Sounds",					"inv_folder_sound.tga")); -	addEntry(LLFolderType::FT_CALLINGCARD, 			new ViewerFolderEntry("Calling Cards",			"inv_folder_callingcard.tga")); -	addEntry(LLFolderType::FT_LANDMARK, 			new ViewerFolderEntry("Landmarks",				"inv_folder_landmark.tga")); -	addEntry(LLFolderType::FT_CLOTHING, 			new ViewerFolderEntry("Clothing",				"inv_folder_clothing.tga")); -	addEntry(LLFolderType::FT_OBJECT, 				new ViewerFolderEntry("Objects",				"inv_folder_object.tga")); -	addEntry(LLFolderType::FT_NOTECARD, 			new ViewerFolderEntry("Notecards",				"inv_folder_notecard.tga")); -	addEntry(LLFolderType::FT_CATEGORY, 			new ViewerFolderEntry("New Folder",				"inv_folder_plain_closed.tga")); -	addEntry(LLFolderType::FT_ROOT_CATEGORY, 		new ViewerFolderEntry("Inventory",				"")); -	addEntry(LLFolderType::FT_LSL_TEXT, 			new ViewerFolderEntry("Scripts",				"inv_folder_script.tga")); -	addEntry(LLFolderType::FT_BODYPART, 			new ViewerFolderEntry("Body Parts",				"inv_folder_bodypart.tga")); -	addEntry(LLFolderType::FT_TRASH, 				new ViewerFolderEntry("Trash",					"inv_folder_trash.tga")); -	addEntry(LLFolderType::FT_SNAPSHOT_CATEGORY, 	new ViewerFolderEntry("Photo Album",			"inv_folder_snapshot.tga")); -	addEntry(LLFolderType::FT_LOST_AND_FOUND, 		new ViewerFolderEntry("Lost And Found",	   		"inv_folder_lostandfound.tga")); -	addEntry(LLFolderType::FT_ANIMATION, 			new ViewerFolderEntry("Animations",				"inv_folder_animation.tga")); -	addEntry(LLFolderType::FT_GESTURE, 				new ViewerFolderEntry("Gestures",				"inv_folder_gesture.tga")); -	addEntry(LLFolderType::FT_FAVORITE, 			new ViewerFolderEntry("Favorite",				"inv_folder_plain_closed.tga")); - -	addEntry(LLFolderType::FT_CURRENT_OUTFIT, 		new ViewerFolderEntry("Current Outfit",			"inv_folder_current_outfit.tga")); -	addEntry(LLFolderType::FT_OUTFIT, 				new ViewerFolderEntry("New Outfit",				"inv_folder_outfit.tga")); -	addEntry(LLFolderType::FT_MY_OUTFITS, 			new ViewerFolderEntry("My Outfits",				"inv_folder_my_outfits.tga")); -	addEntry(LLFolderType::FT_INBOX, 				new ViewerFolderEntry("Inbox",					"inv_folder_inbox.tga")); -		  -	addEntry(LLFolderType::FT_NONE, 				new ViewerFolderEntry("New Folder",				"inv_folder_plain_closed.tga")); -} - -bool LLViewerFolderDictionary::initEnsemblesFromFile() -{ -	std::string xml_filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"foldertypes.xml"); -	LLXmlTree folder_def; -	if (!folder_def.parseFile(xml_filename)) -	{ -		llerrs << "Failed to parse folders file " << xml_filename << llendl; -		return false; -	} - -	LLXmlTreeNode* rootp = folder_def.getRoot(); -	for (LLXmlTreeNode* ensemble = rootp->getFirstChild(); -		 ensemble; -		 ensemble = rootp->getNextChild()) -	{ -		if (!ensemble->hasName("ensemble")) -		{ -			llwarns << "Invalid ensemble definition node " << ensemble->getName() << llendl; -			continue; -		} - -		S32 ensemble_type; -		static LLStdStringHandle ensemble_num_string = LLXmlTree::addAttributeString("foldertype_num"); -		if (!ensemble->getFastAttributeS32(ensemble_num_string, ensemble_type)) -		{ -			llwarns << "No ensemble type defined" << llendl; -			continue; -		} - - -		if (ensemble_type < S32(LLFolderType::FT_ENSEMBLE_START) || ensemble_type > S32(LLFolderType::FT_ENSEMBLE_END)) -		{ -			llwarns << "Exceeded maximum ensemble index" << LLFolderType::FT_ENSEMBLE_END << llendl; -			break; -		} - -		std::string xui_name; -		static LLStdStringHandle xui_name_string = LLXmlTree::addAttributeString("xui_name"); -		if (!ensemble->getFastAttributeString(xui_name_string, xui_name)) -		{ -			llwarns << "No xui name defined" << llendl; -			continue; -		} - -		std::string icon_name; -		static LLStdStringHandle icon_name_string = LLXmlTree::addAttributeString("icon_name"); -		if (!ensemble->getFastAttributeString(icon_name_string, icon_name)) -		{ -			llwarns << "No ensemble icon name defined" << llendl; -			continue; -		} - -		std::string allowed_names; -		static LLStdStringHandle allowed_names_string = LLXmlTree::addAttributeString("allowed"); -		if (!ensemble->getFastAttributeString(allowed_names_string, allowed_names)) -		{ -		} - -		// Add the entry and increment the asset number. -		const static std::string new_ensemble_name = "New Ensemble"; -		addEntry(LLFolderType::EType(ensemble_type), new ViewerFolderEntry(xui_name, new_ensemble_name, icon_name, allowed_names)); -	} - -	return true; -} - - -const std::string &LLViewerFolderType::lookupXUIName(LLFolderType::EType folder_type) -{ -	const ViewerFolderEntry *entry = LLViewerFolderDictionary::getInstance()->lookup(folder_type); -	if (entry) -	{ -		return entry->mName; -	} -	return badLookup(); -} - -LLFolderType::EType LLViewerFolderType::lookupTypeFromXUIName(const std::string &name) -{ -	return LLViewerFolderDictionary::getInstance()->lookup(name); -} - -const std::string &LLViewerFolderType::lookupIconName(LLFolderType::EType folder_type) -{ -	const ViewerFolderEntry *entry = LLViewerFolderDictionary::getInstance()->lookup(folder_type); -	if (entry) -	{ -		return entry->mIconName; -	} -	return badLookup(); -} - -const std::string &LLViewerFolderType::lookupNewCategoryName(LLFolderType::EType folder_type) -{ -	const ViewerFolderEntry *entry = LLViewerFolderDictionary::getInstance()->lookup(folder_type); -	if (entry) -	{ -		return entry->mNewCategoryName; -	} -	return badLookup(); -} - -LLFolderType::EType LLViewerFolderType::lookupTypeFromNewCategoryName(const std::string& name) -{ -	for (LLViewerFolderDictionary::const_iterator iter = LLViewerFolderDictionary::getInstance()->begin(); -		 iter != LLViewerFolderDictionary::getInstance()->end(); -		 iter++) -	{ -		const ViewerFolderEntry *entry = iter->second; -		if (entry->mNewCategoryName == name) -		{ -			return iter->first; -		} -	} -	return FT_NONE; -} - - -U64 LLViewerFolderType::lookupValidFolderTypes(const std::string& item_name) -{ -	U64 matching_folders = 0; -	for (LLViewerFolderDictionary::const_iterator iter = LLViewerFolderDictionary::getInstance()->begin(); -		 iter != LLViewerFolderDictionary::getInstance()->end(); -		 iter++) -	{ -		const ViewerFolderEntry *entry = iter->second; -		if (entry->getIsAllowedName(item_name)) -		{ -			matching_folders |= 1LL << iter->first; -		} -	} -	return matching_folders; -} diff --git a/indra/newview/llviewerfoldertype.h b/indra/newview/llviewerfoldertype.h deleted file mode 100644 index a6aea62b2a..0000000000 --- a/indra/newview/llviewerfoldertype.h +++ /dev/null @@ -1,57 +0,0 @@ -/**  - * @file llviewerfoldertype.h - * @brief Declaration of LLAssetType. - * - * $LicenseInfo:firstyear=2001&license=viewergpl$ - *  - * Copyright (c) 2001-2009, Linden Research, Inc. - *  - * 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 - *  - * 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 - *  - * 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. - *  - * 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$ - */ - -#ifndef LL_LLVIEWERFOLDERTYPE_H -#define LL_LLVIEWERFOLDERTYPE_H - -#include <string> -#include "llfoldertype.h" - -// This class is similar to llfoldertype, but contains methods -// only used by the viewer.  This also handles ensembles. -class LLViewerFolderType : public LLFolderType -{ -public: -	static const std::string&   lookupXUIName(EType folder_type); // name used by the UI -	static LLFolderType::EType 	lookupTypeFromXUIName(const std::string& name); - -	static const std::string&   lookupIconName(EType asset_type); // folder icon name -	static const std::string&	lookupNewCategoryName(EType folder_type); // default name when creating new category -	static LLFolderType::EType	lookupTypeFromNewCategoryName(const std::string& name); // default name when creating new category - -	static U64					lookupValidFolderTypes(const std::string& item_name); // which folders allow an item of this type? -protected: -	LLViewerFolderType() {} -	~LLViewerFolderType() {} -}; - -#endif // LL_LLVIEWERFOLDERTYPE_H diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 1d62ead843..470739baa9 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -37,7 +37,7 @@  #include "indra_constants.h"  #include "llagent.h" -#include "llviewerfoldertype.h" +#include "llfoldertype.h"  #include "llfolderview.h"  #include "llviewercontrol.h"  #include "llconsole.h" @@ -48,7 +48,6 @@  #include "llinventorybridge.h"  #include "llfloaterinventory.h" -#include "llviewerassettype.h"  #include "llviewerregion.h"  #include "llviewerobjectlist.h"  #include "llpreviewgesture.h" @@ -360,7 +359,7 @@ void LLViewerInventoryItem::updateParentOnServer(BOOL restamp) const  LLViewerInventoryCategory::LLViewerInventoryCategory(const LLUUID& uuid,  													 const LLUUID& parent_uuid, -													 LLFolderType::EType pref, +													 LLAssetType::EType pref,  													 const std::string& name,  													 const LLUUID& owner_id) :  	LLInventoryCategory(uuid, parent_uuid, pref, name), @@ -417,7 +416,7 @@ void LLViewerInventoryCategory::updateServer(BOOL is_new) const  {  	// communicate that change with the server. -	if (LLFolderType::lookupIsProtectedType(mPreferredType)) +	if (LLAssetType::lookupIsProtectedCategoryType(mPreferredType))  	{  		LLNotifications::instance().add("CannotModifyProtectedCategories");  		return; @@ -441,7 +440,7 @@ void LLViewerInventoryCategory::removeFromServer( void )  	llinfos << "Removing inventory category " << mUUID << " from server."  			<< llendl;  	// communicate that change with the server. -	if(LLFolderType::lookupIsProtectedType(mPreferredType)) +	if(LLAssetType::lookupIsProtectedCategoryType(mPreferredType))  	{  		LLNotifications::instance().add("CannotRemoveProtectedCategories");  		return; @@ -544,7 +543,7 @@ bool LLViewerInventoryCategory::importFileLocal(LLFILE* fp)  		}  		else if(0 == strcmp("pref_type", keyword))  		{ -			mPreferredType = LLFolderType::lookup(valuestr); +			mPreferredType = LLAssetType::lookup(valuestr);  		}  		else if(0 == strcmp("name", keyword))  		{ @@ -582,7 +581,7 @@ bool LLViewerInventoryCategory::exportFileLocal(LLFILE* fp) const  	mParentUUID.toString(uuid_str);  	fprintf(fp, "\t\tparent_id\t%s\n", uuid_str.c_str());  	fprintf(fp, "\t\ttype\t%s\n", LLAssetType::lookup(mType)); -	fprintf(fp, "\t\tpref_type\t%s\n", LLFolderType::lookup(mPreferredType).c_str()); +	fprintf(fp, "\t\tpref_type\t%s\n", LLAssetType::lookup(mPreferredType));  	fprintf(fp, "\t\tname\t%s|\n", mName.c_str());  	mOwnerID.toString(uuid_str);  	fprintf(fp, "\t\towner_id\t%s\n", uuid_str.c_str()); @@ -593,8 +592,8 @@ bool LLViewerInventoryCategory::exportFileLocal(LLFILE* fp) const  void LLViewerInventoryCategory::determineFolderType()  { -	LLFolderType::EType original_type = getPreferredType(); -	if (LLFolderType::lookupIsProtectedType(original_type)) +	LLAssetType::EType original_type = getPreferredType(); +	if (LLAssetType::lookupIsProtectedCategoryType(original_type))  		return;  	U64 folder_valid = 0; @@ -617,28 +616,28 @@ void LLViewerInventoryCategory::determineFolderType()  			{  				const EWearableType wearable_type = item->getWearableType();  				const std::string& wearable_name = LLWearableDictionary::getTypeName(wearable_type); -				U64 valid_folder_types = LLViewerFolderType::lookupValidFolderTypes(wearable_name); +				U64 valid_folder_types = LLFolderType::lookupValidFolderTypes(wearable_name);  				folder_valid |= valid_folder_types;  				folder_invalid |= ~valid_folder_types;  			}  		} -		for (U8 i = LLFolderType::FT_ENSEMBLE_START; i <= LLFolderType::FT_ENSEMBLE_END; i++) +		for (U8 i = LLAssetType::AT_FOLDER_ENSEMBLE_START; i <= LLAssetType::AT_FOLDER_ENSEMBLE_END; i++)  		{  			if ((folder_valid & (1LL << i)) &&  				!(folder_invalid & (1LL << i)))  			{ -				changeType((LLFolderType::EType)i); +				changeType((LLAssetType::EType)i);  				return;  			}  		}  	} -	if (LLFolderType::lookupIsEnsembleType(original_type)) +	if (LLAssetType::lookupIsEnsembleCategoryType(original_type))  	{ -		changeType(LLFolderType::FT_NONE); +		changeType(LLAssetType::AT_NONE);  	}  } -void LLViewerInventoryCategory::changeType(LLFolderType::EType new_folder_type) +void LLViewerInventoryCategory::changeType(LLAssetType::EType new_folder_type)  {  	const LLUUID &folder_id = getUUID();  	const LLUUID &parent_id = getParentUUID(); @@ -949,7 +948,7 @@ void copy_inventory_from_notecard(const LLUUID& object_id, const LLUUID& notecar      body["notecard-id"] = notecard_inv_id;      body["object-id"] = object_id;      body["item-id"] = src->getUUID(); -	body["folder-id"] = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(src->getType())); +    body["folder-id"] = gInventory.findCategoryUUIDForType(src->getType());      body["callback-id"] = (LLSD::Integer)callback_id;      request["message"] = "CopyInventoryFromNotecard"; @@ -965,7 +964,7 @@ void create_new_item(const std::string& name,  				   U32 next_owner_perm)  {  	std::string desc; -	LLViewerAssetType::generateDescriptionFor(asset_type, desc); +	LLAssetType::generateDescriptionFor(asset_type, desc);  	next_owner_perm = (next_owner_perm) ? next_owner_perm : PERM_MOVE | PERM_TRANSFER; @@ -990,14 +989,19 @@ const std::string NEW_LSL_NAME = "New Script"; // *TODO:Translate? (probably not  const std::string NEW_NOTECARD_NAME = "New Note"; // *TODO:Translate? (probably not)  const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probably not) -// ! REFACTOR ! Really need to refactor this so that it's not a bunch of if-then statements...  void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, const LLSD& userdata, const LLUUID& default_parent_uuid)  { -	std::string type_name = userdata.asString(); +	std::string type = userdata.asString(); -	if (("category" == type_name) || ("current" == type_name) || ("outfit" == type_name) || ("my_otfts" == type_name)) +	if (("category" == type) || ("current" == type) || ("outfit" == type) || ("my_otfts" == type) )  	{ -		LLFolderType::EType preferred_type = LLFolderType::lookup(type_name); +		LLAssetType::EType a_type = LLAssetType::AT_NONE; +		if ("current" == type) +			a_type = LLAssetType::AT_CURRENT_OUTFIT; +		if ("outfit" == type) +			a_type = LLAssetType::AT_OUTFIT; +		if ("my_otfts" == type) +			a_type = LLAssetType::AT_MY_OUTFITS;  		LLUUID parent_id;  		if (bridge) @@ -1013,100 +1017,100 @@ void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, co  			parent_id = gInventory.getRootFolderID();  		} -		LLUUID category = gInventory.createNewCategory(parent_id, preferred_type, LLStringUtil::null); +		LLUUID category = gInventory.createNewCategory(parent_id, a_type, LLStringUtil::null);  		gInventory.notifyObservers();  		folder->setSelectionByID(category, TRUE);  	} -	else if ("lsl" == type_name) +	else if ("lsl" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_LSL_TEXT); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_LSL_TEXT);  		create_new_item(NEW_LSL_NAME,  					  parent_id,  					  LLAssetType::AT_LSL_TEXT,  					  LLInventoryType::IT_LSL,  					  PERM_MOVE | PERM_TRANSFER);  	} -	else if ("notecard" == type_name) +	else if ("notecard" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_NOTECARD); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_NOTECARD);  		create_new_item(NEW_NOTECARD_NAME,  					  parent_id,  					  LLAssetType::AT_NOTECARD,  					  LLInventoryType::IT_NOTECARD,  					  PERM_ALL);  	} -	else if ("gesture" == type_name) +	else if ("gesture" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_GESTURE);  		create_new_item(NEW_GESTURE_NAME,  					  parent_id,  					  LLAssetType::AT_GESTURE,  					  LLInventoryType::IT_GESTURE,  					  PERM_ALL);  	} -	else if ("shirt" == type_name) +	else if ("shirt" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  		LLFolderBridge::createWearable(parent_id, WT_SHIRT);  	} -	else if ("pants" == type_name) +	else if ("pants" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  		LLFolderBridge::createWearable(parent_id, WT_PANTS);  	} -	else if ("shoes" == type_name) +	else if ("shoes" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  		LLFolderBridge::createWearable(parent_id, WT_SHOES);  	} -	else if ("socks" == type_name) +	else if ("socks" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  		LLFolderBridge::createWearable(parent_id, WT_SOCKS);  	} -	else if ("jacket" == type_name) +	else if ("jacket" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  		LLFolderBridge::createWearable(parent_id, WT_JACKET);  	} -	else if ("skirt" == type_name) +	else if ("skirt" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  		LLFolderBridge::createWearable(parent_id, WT_SKIRT);  	} -	else if ("gloves" == type_name) +	else if ("gloves" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  		LLFolderBridge::createWearable(parent_id, WT_GLOVES);  	} -	else if ("undershirt" == type_name) +	else if ("undershirt" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  		LLFolderBridge::createWearable(parent_id, WT_UNDERSHIRT);  	} -	else if ("underpants" == type_name) +	else if ("underpants" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_CLOTHING);  		LLFolderBridge::createWearable(parent_id, WT_UNDERPANTS);  	} -	else if ("shape" == type_name) +	else if ("shape" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_BODYPART); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART);  		LLFolderBridge::createWearable(parent_id, WT_SHAPE);  	} -	else if ("skin" == type_name) +	else if ("skin" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_BODYPART); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART);  		LLFolderBridge::createWearable(parent_id, WT_SKIN);  	} -	else if ("hair" == type_name) +	else if ("hair" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_BODYPART); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART);  		LLFolderBridge::createWearable(parent_id, WT_HAIR);  	} -	else if ("eyes" == type_name) +	else if ("eyes" == type)  	{ -		const LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_BODYPART); +		LLUUID parent_id = bridge ? bridge->getUUID() : gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART);  		LLFolderBridge::createWearable(parent_id, WT_EYES);  	} diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h index 529425aa25..d523bf2859 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -185,7 +185,7 @@ protected:  public:  	LLViewerInventoryCategory(const LLUUID& uuid, const LLUUID& parent_uuid, -							  LLFolderType::EType preferred_type, +							  LLAssetType::EType preferred_type,  							  const std::string& name,  							  const LLUUID& owner_id);  	LLViewerInventoryCategory(const LLUUID& owner_id); @@ -221,7 +221,7 @@ public:  	bool exportFileLocal(LLFILE* fp) const;  	bool importFileLocal(LLFILE* fp);  	void determineFolderType(); -	void changeType(LLFolderType::EType new_folder_type); +	void changeType(LLAssetType::EType new_folder_type);  protected:  	LLUUID mOwnerID;  	S32 mVersion; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 9a98264847..23ceb1e72d 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -4176,10 +4176,12 @@ void handle_take_copy()  {  	if (LLSelectMgr::getInstance()->getSelection()->isEmpty()) return; -	const LLUUID category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT); +	LLUUID category_id = +		gInventory.findCategoryUUIDForType(LLAssetType::AT_OBJECT);  	derez_objects(DRD_ACQUIRE_TO_AGENT_INVENTORY, category_id);  } +  // You can return an object to its owner if it is on your land.  class LLObjectReturn : public view_listener_t  { @@ -4260,7 +4262,7 @@ class LLObjectEnableReturn : public view_listener_t  void force_take_copy(void*)  {  	if (LLSelectMgr::getInstance()->getSelection()->isEmpty()) return; -	const LLUUID category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT); +	const LLUUID& category_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_OBJECT);  	derez_objects(DRD_FORCE_TO_GOD_INVENTORY, category_id);  } @@ -4321,7 +4323,8 @@ void handle_take()  		if(category_id.notNull())  		{  		        // check trash -			const LLUUID trash = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +			LLUUID trash; +			trash = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  			if(category_id == trash || gInventory.isObjectDescendentOf(category_id, trash))  			{  				category_id.setNull(); @@ -4337,7 +4340,7 @@ void handle_take()  	}  	if(category_id.isNull())  	{ -		category_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT); +		category_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_OBJECT);  	}  	LLSD payload;  	payload["folder_id"] = category_id; @@ -6916,7 +6919,7 @@ void handle_grab_texture(void* data)  		LL_INFOS("texture") << "Adding baked texture " << asset_id << " to inventory." << llendl;  		LLAssetType::EType asset_type = LLAssetType::AT_TEXTURE;  		LLInventoryType::EType inv_type = LLInventoryType::IT_TEXTURE; -		const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(asset_type)); +		LLUUID folder_id(gInventory.findCategoryUUIDForType(asset_type));  		if(folder_id.notNull())  		{  			std::string name = "Unknown"; diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index d17c7e486f..d3a9e1cef8 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -319,7 +319,7 @@ class LLFileUploadBulk : public view_listener_t  			LLAssetStorage::LLStoreAssetCallback callback = NULL;  			S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();  			void *userdata = NULL; -			upload_new_resource(filename, asset_name, asset_name, 0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE, +			upload_new_resource(filename, asset_name, asset_name, 0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,  				LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),  					    display_name,  					    callback, expected_upload_cost, userdata); @@ -493,7 +493,7 @@ void handle_compress_image(void*)  void upload_new_resource(const std::string& src_filename, std::string name,  			 std::string desc, S32 compression_info, -			 LLFolderType::EType destination_folder_type, +			 LLAssetType::EType destination_folder_type,  			 LLInventoryType::EType inv_type,  			 U32 next_owner_perms,  			 U32 group_perms, @@ -810,7 +810,7 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt  	if(result >= 0)  	{ -		LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation; +		LLAssetType::EType dest_loc = (data->mPreferredLocation == LLAssetType::AT_NONE) ? data->mAssetInfo.mType : data->mPreferredLocation;  		if (LLAssetType::AT_SOUND == data->mAssetInfo.mType ||  			LLAssetType::AT_TEXTURE == data->mAssetInfo.mType || @@ -856,7 +856,7 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt  		{  			// Actually add the upload to inventory  			llinfos << "Adding " << uuid << " to inventory." << llendl; -			const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc); +			LLUUID folder_id(gInventory.findCategoryUUIDForType(dest_loc));  			if(folder_id.notNull())  			{  				U32 next_owner_perms = data->mNextOwnerPerm; @@ -903,7 +903,7 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt  		LLAssetStorage::LLStoreAssetCallback callback = NULL;  		void *userdata = NULL;  		upload_new_resource(next_file, asset_name, asset_name,	// file -				    0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE, +				    0, LLAssetType::AT_NONE, LLInventoryType::IT_NONE,  				    PERM_NONE, PERM_NONE, PERM_NONE,  				    display_name,  				    callback, @@ -915,7 +915,7 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt  void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_type,  			 std::string name,  			 std::string desc, S32 compression_info, -			 LLFolderType::EType destination_folder_type, +			 LLAssetType::EType destination_folder_type,  			 LLInventoryType::EType inv_type,  			 U32 next_owner_perms,  			 U32 group_perms, @@ -973,14 +973,14 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty  	llinfos << "Name: " << name << llendl;  	llinfos << "Desc: " << desc << llendl;  	llinfos << "Expected Upload Cost: " << expected_upload_cost << llendl; -	lldebugs << "Folder: " << gInventory.findCategoryUUIDForType((destination_folder_type == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(asset_type) : destination_folder_type) << llendl; +	lldebugs << "Folder: " << gInventory.findCategoryUUIDForType((destination_folder_type == LLAssetType::AT_NONE) ? asset_type : destination_folder_type) << llendl;  	lldebugs << "Asset Type: " << LLAssetType::lookup(asset_type) << llendl;  	std::string url = gAgent.getRegion()->getCapability("NewFileAgentInventory");  	if (!url.empty())  	{  		llinfos << "New Agent Inventory via capability" << llendl;  		LLSD body; -		body["folder_id"] = gInventory.findCategoryUUIDForType((destination_folder_type == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(asset_type) : destination_folder_type); +		body["folder_id"] = gInventory.findCategoryUUIDForType((destination_folder_type == LLAssetType::AT_NONE) ? asset_type : destination_folder_type);  		body["asset_type"] = LLAssetType::lookup(asset_type);  		body["inventory_type"] = LLInventoryType::lookup(inv_type);  		body["name"] = name; diff --git a/indra/newview/llviewermenufile.h b/indra/newview/llviewermenufile.h index da78537a29..bf21292082 100644 --- a/indra/newview/llviewermenufile.h +++ b/indra/newview/llviewermenufile.h @@ -33,7 +33,7 @@  #ifndef LLVIEWERMENUFILE_H  #define LLVIEWERMENUFILE_H -#include "llfoldertype.h" +#include "llassettype.h"  #include "llinventorytype.h"  class LLTransactionID; @@ -45,7 +45,7 @@ void upload_new_resource(const std::string& src_filename,  			 std::string name,  			 std::string desc,   			 S32 compression_info, -			 LLFolderType::EType destination_folder_type, +			 LLAssetType::EType destination_folder_type,  			 LLInventoryType::EType inv_type,  			 U32 next_owner_perms,  			 U32 group_perms, @@ -60,7 +60,7 @@ void upload_new_resource(const LLTransactionID &tid,  			 std::string name,  			 std::string desc,   			 S32 compression_info, -			 LLFolderType::EType destination_folder_type, +			 LLAssetType::EType destination_folder_type,  			 LLInventoryType::EType inv_type,  			 U32 next_owner_perms,  			 U32 group_perms, diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index d8e6c52c8c..ff1c7b526f 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -140,7 +140,7 @@  #include "llgroupactions.h"  #include "llagentui.h"  #include "llpanelblockedlist.h" -#include "llpanelplaceprofile.h" +#include "llpanelplaceinfo.h"  #include <boost/tokenizer.hpp>  #include <boost/algorithm/string/split.hpp> @@ -209,6 +209,7 @@ const BOOL SCRIPT_QUESTION_IS_CAUTION[SCRIPT_PERMISSION_EOF] =  bool friendship_offer_callback(const LLSD& notification, const LLSD& response)  {  	S32 option = LLNotification::getSelectedOption(notification, response); +	LLUUID fid;  	LLMessageSystem* msg = gMessageSystem;  	const LLSD& payload = notification["payload"]; @@ -218,11 +219,10 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response)  	switch(option)  	{  	case 0: -	{  		// accept  		LLAvatarTracker::formFriendship(payload["from_id"]); -		const LLUUID fid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); +		fid = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);  		// This will also trigger an onlinenotification if the user is online  		msg->newMessageFast(_PREHASH_AcceptFriendship); @@ -235,9 +235,7 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response)  		msg->addUUIDFast(_PREHASH_FolderID, fid);  		msg->sendReliable(LLHost(payload["sender"].asString()));  		break; -	}  	case 1: -	{  		// decline  		// We no longer notify other viewers, but we DO still send  		// the rejection to the simulator to delete the pending userop. @@ -249,7 +247,6 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response)  		msg->addUUIDFast(_PREHASH_TransactionID, payload["session_id"]);  		msg->sendReliable(LLHost(payload["sender"].asString()));  		break; -	}  	default:  		// close button probably, possibly timed out  		break; @@ -770,7 +767,8 @@ public:  	virtual void done()  	{  		LL_DEBUGS("Messaging") << "LLDiscardAgentOffer::done()" << LL_ENDL; -		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +		LLUUID trash_id; +		trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  		bool notify = false;  		if(trash_id.notNull() && mObjectID.notNull())  		{ @@ -877,7 +875,7 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name)  {  	std::vector<LLUUID>::const_iterator it = items.begin();  	std::vector<LLUUID>::const_iterator end = items.end(); -	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +	LLUUID trash_id(gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH));  	LLInventoryItem* item;  	for(; it != end; ++it)  	{ @@ -948,12 +946,13 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name)  		}  		//Trash Check -		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +		LLUUID trash_id; +		trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);  		if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))  		{  			return;  		} -		const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); +		LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LOST_AND_FOUND);  		//BOOL inventory_has_focus = gFocusMgr.childHasKeyboardFocus(view);  		BOOL user_is_away = gAwayTimer.getStarted(); @@ -1717,7 +1716,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				info->mFromGroup = from_group;  				info->mTransactionID = session_id;  				info->mType = (LLAssetType::EType) asset_type; -				info->mFolderID = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(info->mType)); +				info->mFolderID = gInventory.findCategoryUUIDForType(info->mType);  				std::string from_name;  				from_name += "A group member named "; @@ -1851,7 +1850,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			info->mFromID = from_id;  			info->mFromGroup = from_group;  			info->mTransactionID = session_id; -			info->mFolderID = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(info->mType)); +			info->mFolderID = gInventory.findCategoryUUIDForType(info->mType);  			if (dialog == IM_TASK_INVENTORY_OFFERED)  			{ @@ -2145,7 +2144,7 @@ bool callingcard_offer_callback(const LLSD& notification, const LLSD& response)  		msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());  		msg->nextBlockFast(_PREHASH_TransactionBlock);  		msg->addUUIDFast(_PREHASH_TransactionID, notification["payload"]["transaction_id"].asUUID()); -		fid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); +		fid = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD);  		msg->nextBlockFast(_PREHASH_FolderData);  		msg->addUUIDFast(_PREHASH_FolderID, fid);  		msg->sendReliable(LLHost(notification["payload"]["sender"].asString())); @@ -2598,10 +2597,11 @@ BOOL LLPostTeleportNotifiers::tick()  	{  		// get callingcards and landmarks available to the user arriving.  		LLInventoryFetchDescendentsObserver::folder_ref_t folders; -		const LLUUID callingcard_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD); -		if(callingcard_id.notNull())  -			folders.push_back(callingcard_id); -		const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); +		LLUUID folder_id; +		folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_CALLINGCARD); +		if(folder_id.notNull())  +			folders.push_back(folder_id); +		folder_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_LANDMARK);  		if(folder_id.notNull())   			folders.push_back(folder_id);  		if(!folders.empty()) @@ -4819,7 +4819,7 @@ void container_inventory_arrived(LLViewerObject* object,  		// create a new inventory category to put this in  		LLUUID cat_id;  		cat_id = gInventory.createNewCategory(gInventory.getRootFolderID(), -											  LLFolderType::FT_NONE, +											  LLAssetType::AT_NONE,  											  LLTrans::getString("AcquiredItems"));  		InventoryObjectList::const_iterator it = inventory->begin(); @@ -4869,7 +4869,7 @@ void container_inventory_arrived(LLViewerObject* object,  		}  		LLInventoryItem* item = (LLInventoryItem*)((LLInventoryObject*)(*it)); -		const LLUUID category = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(item->getType())); +		LLUUID category = gInventory.findCategoryUUIDForType(item->getType());  		LLUUID item_id;  		item_id.generate(); @@ -5549,7 +5549,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**)  	LLPanelLandCovenant::updateEstateOwnerName(owner_name);  	LLFloaterBuyLand::updateEstateOwnerName(owner_name); -	LLPanelPlaceProfile* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceProfile>("panel_place_profile"); +	LLPanelPlaceInfo* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceInfo>("panel_place_info");  	if (panel)  	{  		panel->updateEstateName(estate_name); @@ -5683,7 +5683,7 @@ void onCovenantLoadComplete(LLVFS *vfs,  	LLPanelLandCovenant::updateCovenantText(covenant_text);  	LLFloaterBuyLand::updateCovenantText(covenant_text, asset_uuid); -	LLPanelPlaceProfile* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceProfile>("panel_place_profile"); +	LLPanelPlaceInfo* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceInfo>("panel_place_info");  	if (panel)  	{  		panel->updateCovenantText(covenant_text); diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 20cd516fa0..26411ce152 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -2928,7 +2928,7 @@ void LLViewerObject::boostTexturePriority(BOOL boost_children /* = TRUE */)  	{  		LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);  		LLUUID sculpt_id = sculpt_params->getSculptTexture(); -		LLViewerTextureManager::getFetchedTexture(sculpt_id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLViewerTexture::BOOST_SELECTED); +		LLViewerTextureManager::getFetchedTexture(sculpt_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE)->setBoostLevel(LLViewerTexture::BOOST_SELECTED);  	}  	if (boost_children) @@ -3691,7 +3691,7 @@ void LLViewerObject::setTE(const U8 te, const LLTextureEntry &texture_entry)  //	if (mDrawable.notNull() && mDrawable->isVisible())  //	{  		const LLUUID& image_id = getTE(te)->getID(); -		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  //	}  } @@ -3717,7 +3717,7 @@ S32 LLViewerObject::setTETextureCore(const U8 te, const LLUUID& uuid, LLHost hos  		uuid == LLUUID::null)  	{  		retval = LLPrimitive::setTETexture(te, uuid); -		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(uuid, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); +		mTEImages[te] = LLViewerTextureManager::getFetchedTexture(uuid, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host);  		setChanged(TEXTURE);  		if (mDrawable.notNull())  		{ diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index 90dff465c9..5c40f2a540 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -62,7 +62,6 @@  #include "lltooltip.h"  #include "lltrans.h"  #include "lluictrlfactory.h" -#include "llviewerassettype.h"  #include "llviewercontrol.h"  #include "llviewerinventory.h"  #include "llviewertexturelist.h" @@ -506,17 +505,19 @@ LLUIImagePtr LLEmbeddedItems::getItemImage(llwchar ext_char) const  				}  				break; -			case LLAssetType::AT_SOUND:			img_name = "Inv_Sound";		break; +			case LLAssetType::AT_SOUND:			img_name = "Inv_Sound";	break;  			case LLAssetType::AT_CLOTHING:		img_name = "Inv_Clothing";	break; -			case LLAssetType::AT_OBJECT:		img_name = "Inv_Object"; 	break; +			case LLAssetType::AT_OBJECT:		img_name = "Inv_Object"; break;  			case LLAssetType::AT_CALLINGCARD:	img_name = "Inv_CallingCard"; break; -			case LLAssetType::AT_LANDMARK:		img_name = "Inv_Landmark"; 	break; +			case LLAssetType::AT_LANDMARK:		img_name = "Inv_Landmark"; break;  			case LLAssetType::AT_NOTECARD:		img_name = "Inv_Notecard";	break;  			case LLAssetType::AT_LSL_TEXT:		img_name = "Inv_Script";	break; -			case LLAssetType::AT_BODYPART:		img_name = "Inv_Skin";		break; -			case LLAssetType::AT_ANIMATION:		img_name = "Inv_Animation";	break; -			case LLAssetType::AT_GESTURE:		img_name = "Inv_Gesture";	break; -			default: llassert(0); +			case LLAssetType::AT_BODYPART:		img_name = "Inv_Skin";	break; +			case LLAssetType::AT_ANIMATION:		img_name = "Inv_Animation";break; +			case LLAssetType::AT_GESTURE:			img_name = "Inv_Gesture";	break; +				//TODO need img_name +			case LLAssetType::AT_FAVORITE:		img_name = "Inv_Landmark";	 break; +			default: llassert(0);   		}  		return LLUI::getUIImage(img_name); @@ -731,10 +732,11 @@ BOOL LLViewerTextEditor::handleHover(S32 x, S32 y, MASK mask)  		if( LLToolDragAndDrop::getInstance()->isOverThreshold( screen_x, screen_y ) )  		{  			LLToolDragAndDrop::getInstance()->beginDrag( -				LLViewerAssetType::lookupDragAndDropType( mDragItem->getType() ), +				LLAssetType::lookupDragAndDropType( mDragItem->getType() ),  				mDragItem->getUUID(),  				LLToolDragAndDrop::SOURCE_NOTECARD,  				mPreviewID, mObjectID); +  			return LLToolDragAndDrop::getInstance()->handleHover( x, y, mask );  		}  		getWindow()->setCursor(UI_CURSOR_HAND); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 758bf8c1aa..6b8c8c01d4 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -198,6 +198,7 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTexture(  												   LLGLenum primary_format,  												   LLHost request_from_host)  { +	llassert_always(boost_priority >= LLViewerTexture::BOOST_NONE) ;  	return gTextureList.getImage(image_id, usemipmaps, boost_priority, texture_type, internal_format, primary_format, request_from_host) ;  } @@ -210,6 +211,7 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromFile(  												   LLGLenum primary_format,   												   const LLUUID& force_id)  { +	llassert_always(boost_priority >= LLViewerTexture::BOOST_NONE) ;  	return gTextureList.getImageFromFile(filename, usemipmaps, boost_priority, texture_type, internal_format, primary_format, force_id) ;  } @@ -256,10 +258,10 @@ void LLViewerTextureManager::init()  	image_raw = NULL;  	LLViewerFetchedTexture::sDefaultImagep->dontDiscard();  #else - 	LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, TRUE); + 	LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);  #endif - 	LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, TRUE); + 	LLViewerFetchedTexture::sSmokeImagep = LLViewerTextureManager::getFetchedTexture(IMG_SMOKE, TRUE, LLViewerTexture::BOOST_UI);  	LLViewerFetchedTexture::sSmokeImagep->setNoDelete() ;  	LLViewerTexture::initClass() ; @@ -1240,7 +1242,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()  		{  			ddiscard+=2;  		} -		else if (mGLTexturep.notNull() && !mGLTexturep->getBoundRecently() && mBoostLevel == 0) +		else if (mGLTexturep.notNull() && !mGLTexturep->getBoundRecently() && mBoostLevel == LLViewerTexture::BOOST_NONE)  		{  			ddiscard-=2;  		} @@ -1252,11 +1254,11 @@ F32 LLViewerFetchedTexture::calcDecodePriority()  		pixel_priority = llclamp(pixel_priority, 0.0f, priority-1.f); // priority range = 100000-900000  		if ( mBoostLevel > BOOST_HIGH)  		{ -			priority = 1000000.f + pixel_priority + 1000.f * mBoostLevel; +			priority = 1000000.f + pixel_priority + 1000.f * (mBoostLevel - LLViewerTexture::BOOST_NONE);  		}  		else  		{ -			priority +=      0.f + pixel_priority + 1000.f * mBoostLevel; +			priority +=      0.f + pixel_priority + 1000.f * (mBoostLevel - LLViewerTexture::BOOST_NONE);  		}  	}  	return priority; @@ -1436,7 +1438,7 @@ bool LLViewerFetchedTexture::updateFetch()  		}  		if (!mDontDiscard)  		{ -			if (mBoostLevel == 0) +			if (mBoostLevel == LLViewerTexture::BOOST_NONE)  			{  				desired_discard = llmax(desired_discard, current_discard-1);  			} diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 020478beef..ff8f14e879 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -107,11 +107,12 @@ public:  	enum EBoostLevel  	{ -		BOOST_NONE 			= 0, -		BOOST_AVATAR_BAKED	= 1, -		BOOST_AVATAR		= 2, -		BOOST_CLOUDS		= 3, -		BOOST_SCULPTED      = 4, +		//skip 0 and 1 to avoid mistakenly mixing boost level with boolean numbers. +		BOOST_NONE 			= 2, +		BOOST_AVATAR_BAKED	= 3, +		BOOST_AVATAR		= 4, +		BOOST_CLOUDS		= 5, +		BOOST_SCULPTED      = 6,  		BOOST_HIGH 			= 10,  		BOOST_TERRAIN		= 11, // has to be high priority for minimap / low detail @@ -601,7 +602,7 @@ public:  	static LLViewerFetchedTexture* getFetchedTexture(const LLUUID &image_id,									   									 BOOL usemipmap = TRUE, -									 BOOL level_immediate = FALSE,		// Get the requested level immediately upon creation. +									 S32 boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.  									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,  									 LLGLint internal_format = 0,  									 LLGLenum primary_format = 0, @@ -610,7 +611,7 @@ public:  	static LLViewerFetchedTexture* getFetchedTextureFromFile(const std::string& filename,									   									 BOOL usemipmap = TRUE, -									 BOOL level_immediate = FALSE,		// Get the requested level immediately upon creation. +									 S32 boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.  									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,  									 LLGLint internal_format = 0,  									 LLGLenum primary_format = 0, diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index b5986c70f5..d2be1ac9b5 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -197,7 +197,7 @@ void LLViewerTextureList::doPrefetchImages()  		if(LLViewerTexture::FETCHED_TEXTURE == texture_type || LLViewerTexture::LOD_TEXTURE == texture_type)  		{ -			LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, MIPMAP_TRUE, FALSE, texture_type); +			LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(uuid, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, texture_type);  			if (image)  			{  				image->addTextureStats((F32)pixel_area); @@ -325,14 +325,14 @@ LLViewerFetchedTexture* LLViewerTextureList::getImageFromFile(const std::string&  	{  		// Never mind that this ignores image_set_id;  		// getImage() will handle that later. -		return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, TRUE); +		return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);  	}  	std::string full_path = gDirUtilp->findSkinnedFilename("textures", filename);  	if (full_path.empty())  	{  		llwarns << "Failed to find local image file: " << filename << llendl; -		return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, TRUE); +		return LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI);  	}  	// generate UUID based on hash of filename @@ -400,7 +400,7 @@ LLViewerFetchedTexture* LLViewerTextureList::getImage(const LLUUID &image_id,  	if ((&image_id == NULL) || image_id.isNull())  	{ -		return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, TRUE)); +		return (LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI));  	}  	LLPointer<LLViewerFetchedTexture> imagep = findImage(image_id); @@ -1171,7 +1171,7 @@ void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_d  	U8 *data = new U8[data_size];  	msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size); -	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  	if (!image)  	{  		delete [] data; @@ -1235,7 +1235,7 @@ void LLViewerTextureList::receiveImagePacket(LLMessageSystem *msg, void **user_d  	U8 *data = new U8[data_size];  	msg->getBinaryDataFast(_PREHASH_ImageData, _PREHASH_Data, data, data_size); -	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +	LLViewerFetchedTexture *image = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  	if (!image)  	{  		delete [] data; diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index fda57ce981..6948db70f8 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -131,7 +131,7 @@ private:  	LLViewerFetchedTexture * getImage(const LLUUID &image_id,									   									 BOOL usemipmap = TRUE, -									 BOOL level_immediate = FALSE,		// Get the requested level immediately upon creation. +									 S32 boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.  									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,  									 LLGLint internal_format = 0,  									 LLGLenum primary_format = 0, @@ -140,7 +140,7 @@ private:  	LLViewerFetchedTexture * getImageFromFile(const std::string& filename,									   									 BOOL usemipmap = TRUE, -									 BOOL level_immediate = FALSE,		// Get the requested level immediately upon creation. +									 S32 boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.  									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,  									 LLGLint internal_format = 0,  									 LLGLenum primary_format = 0, @@ -149,7 +149,7 @@ private:  	LLViewerFetchedTexture* createImage(const LLUUID &image_id,  									 BOOL usemipmap = TRUE, -									 BOOL level_immediate = FALSE,		// Get the requested level immediately upon creation. +									 S32 boost_priority = LLViewerTexture::BOOST_NONE,		// Get the requested level immediately upon creation.  									 S8 texture_type = LLViewerTexture::FETCHED_TEXTURE,  									 LLGLint internal_format = 0,  									 LLGLenum primary_format = 0, @@ -159,7 +159,7 @@ private:  	// Request image from a specific host, used for baked avatar textures.  	// Implemented in header in case someone changes default params above. JC  	LLViewerFetchedTexture* getImageFromHost(const LLUUID& image_id, LLHost host) -	{ return getImage(image_id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); } +	{ return getImage(image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE, 0, 0, host); }  public:  	typedef std::set<LLPointer<LLViewerFetchedTexture> > image_list_t;	 diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 4bf66ba17e..240f87d104 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -6520,7 +6520,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  			&& baked_index != BAKED_SKIRT)  		{  			setTEImage(mBakedTextureDatas[baked_index].mTextureIndex,  -				LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureIndex, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE)); +				LLViewerTextureManager::getFetchedTexture(mBakedTextureDatas[baked_index].mLastTextureIndex, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));  		}  	} diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index e7a43924db..a964f43171 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -41,22 +41,53 @@  #include "llvoavatarself.h"  #include "llvoavatar.h" -#include "pipeline.h" +#include <stdio.h> +#include <ctype.h> + +#include "llaudioengine.h" +#include "noise.h" +// TODO: Seraph - Remove unnecessary headers.  These are copied from llvoavatar.h.  #include "llagent.h" //  Get state values from here  #include "llagentwearables.h" +#include "llviewercontrol.h" +#include "lldrawpoolavatar.h" +#include "lldriverparam.h" +#include "lleditingmotion.h" +#include "llemote.h" +#include "llface.h" +#include "llfirstuse.h" +#include "llheadrotmotion.h"  #include "llhudeffecttrail.h"  #include "llhudmanager.h" +#include "llkeyframefallmotion.h" +#include "llkeyframestandmotion.h" +#include "llkeyframewalkmotion.h" +#include "llmutelist.h"  #include "llselectmgr.h" +#include "llsprite.h" +#include "lltargetingmotion.h" +#include "lltexlayer.h" +#include "lltexglobalcolor.h"  #include "lltoolgrab.h"	// for needsRenderBeam  #include "lltoolmgr.h" // for needsRenderBeam  #include "lltoolmorph.h"  #include "lltrans.h"  #include "llviewercamera.h" +#include "llviewertexturelist.h"  #include "llviewermenu.h"  #include "llviewerobjectlist.h" +#include "llviewerparcelmgr.h"  #include "llviewerstats.h" -#include "llviewerregion.h" +#include "llvovolume.h" +#include "llworld.h" +#include "pipeline.h" +#include "llviewershadermgr.h" +#include "llsky.h" +#include "llanimstatelabels.h" +#include "llgesturemgr.h" //needed to trigger the voice gesticulations +#include "llvoiceclient.h" +#include "llvoicevisualizer.h" // Ventrella  #include "llappearancemgr.h"  #if LL_MSVC diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp index 570a3334b9..110433a27d 100644 --- a/indra/newview/llvograss.cpp +++ b/indra/newview/llvograss.cpp @@ -106,7 +106,7 @@ void LLVOGrass::updateSpecies()  		SpeciesMap::const_iterator it = sSpeciesTable.begin();  		mSpecies = (*it).first;  	} -	setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE)); +	setTEImage(0, LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE));  } diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index d44c543266..d37deaf53d 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -376,9 +376,9 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)  	mSun.setIntensity(SUN_INTENSITY);  	mMoon.setIntensity(0.1f * SUN_INTENSITY); -	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, TRUE); +	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);  	mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP); -	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, TRUE); +	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);  	mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);  	mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);  	mBloomTexturep->setNoDelete() ; @@ -472,9 +472,9 @@ void LLVOSky::restoreGL()  	{  		mSkyTex[i].restoreGL();  	} -	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, TRUE); +	mSunTexturep = LLViewerTextureManager::getFetchedTexture(gSunTextureID, TRUE, LLViewerTexture::BOOST_UI);  	mSunTexturep->setAddressMode(LLTexUnit::TAM_CLAMP); -	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, TRUE); +	mMoonTexturep = LLViewerTextureManager::getFetchedTexture(gMoonTextureID, TRUE, LLViewerTexture::BOOST_UI);  	mMoonTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);  	mBloomTexturep = LLViewerTextureManager::getFetchedTexture(IMG_BLOOM1);  	mBloomTexturep->setNoDelete() ; diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index 615ae13bc2..ec118d89bc 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -311,7 +311,7 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,  	//  	//  Load Species-Specific data   	// -	mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +	mTreeImagep = LLViewerTextureManager::getFetchedTexture(sSpeciesTable[mSpecies]->mTextureID, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  	mBranchLength = sSpeciesTable[mSpecies]->mBranchLength;  	mTrunkLength = sSpeciesTable[mSpecies]->mTrunkLength;  	mLeafScale = sSpeciesTable[mSpecies]->mLeafScale; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 7d4bef3f7d..1d94e9118e 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -665,7 +665,7 @@ void LLVOVolume::updateTextures()  	{  		LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);  		LLUUID id =  sculpt_params->getSculptTexture();  -		mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +		mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  		if (mSculptTexture.notNull())  		{  			S32 lod = llmin(mLOD, 3); @@ -876,7 +876,7 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail  		if (isSculpted())  		{ -			mSculptTexture = LLViewerTextureManager::getFetchedTexture(volume_params.getSculptID(), TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +			mSculptTexture = LLViewerTextureManager::getFetchedTexture(volume_params.getSculptID(), TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  			if (mSculptTexture.notNull())  			{  				//ignore sculpt GL usage since bao fixed this in a separate branch diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index e647f479e1..f2cf84c228 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -661,7 +661,7 @@ void LLWearable::writeToAvatar( BOOL set_by_user, BOOL update_customize_floater  			{	  				image_id = LLVOAvatarDictionary::getDefaultTextureImageID((ETextureIndex) te);  			} -			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, FALSE, LLViewerTexture::LOD_TEXTURE ); +			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );  			// MULTI-WEARABLE: replace hard-coded 0  			avatar->setLocalTextureTE(te, image, set_by_user, 0);  		} @@ -1123,7 +1123,7 @@ void LLWearable::saveNewAsset() const  		{  			llinfos << "Update Agent Inventory via capability" << llendl;  			LLSD body; -			body["folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::assetToFolderType(getAssetType())); +			body["folder_id"] = gInventory.findCategoryUUIDForType(getAssetType());  			body["asset_type"] = LLAssetType::lookup(getAssetType());  			body["inventory_type"] = LLInventoryType::lookup(LLInventoryType::IT_WEARABLE);  			body["name"] = getName(); diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp index f198f3a0cf..355d4141c3 100644 --- a/indra/newview/llworldmap.cpp +++ b/indra/newview/llworldmap.cpp @@ -525,7 +525,7 @@ void LLWorldMap::processMapLayerReply(LLMessageSystem* msg, void**)  		LLWorldMapLayer new_layer;  		new_layer.LayerDefined = TRUE;  		msg->getUUIDFast(_PREHASH_LayerData, _PREHASH_ImageID, new_layer.LayerImageID, block); -		new_layer.LayerImage = LLViewerTextureManager::getFetchedTexture(new_layer.LayerImageID, MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +		new_layer.LayerImage = LLViewerTextureManager::getFetchedTexture(new_layer.LayerImageID, MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  		gGL.getTexUnit(0)->bind(new_layer.LayerImage);  		new_layer.LayerImage->setAddressMode(LLTexUnit::TAM_CLAMP); @@ -640,14 +640,15 @@ void LLWorldMap::processMapBlockReply(LLMessageSystem* msg, void**)  			siminfo->mMapImageID[agent_flags] = image_id;  #ifdef IMMEDIATE_IMAGE_LOAD -			siminfo->mCurrentImage = LLViewerTextureManager::getFetchedTexture(siminfo->mMapImageID[LLWorldMap::getInstance()->mCurrentMap], MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +			siminfo->mCurrentImage = LLViewerTextureManager::getFetchedTexture(siminfo->mMapImageID[LLWorldMap::getInstance()->mCurrentMap],  +				MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  			siminfo->mCurrentImage->setAddressMode(LLTexUnit::TAM_CLAMP);  #endif  			if (siminfo->mMapImageID[2].notNull())  			{  #ifdef IMMEDIATE_IMAGE_LOAD -				siminfo->mOverlayImage = LLViewerTextureManager::getFetchedTexture(siminfo->mMapImageID[2], MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +				siminfo->mOverlayImage = LLViewerTextureManager::getFetchedTexture(siminfo->mMapImageID[2], MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  #endif  			}  			else diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 823db027ee..920415873e 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -511,7 +511,8 @@ void LLWorldMapView::draw()  				 (textures_requested_this_tick < MAX_REQUEST_PER_TICK)))  			{  				textures_requested_this_tick++; -				info->mCurrentImage = LLViewerTextureManager::getFetchedTexture(info->mMapImageID[LLWorldMap::getInstance()->mCurrentMap], MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +				info->mCurrentImage = LLViewerTextureManager::getFetchedTexture(info->mMapImageID[LLWorldMap::getInstance()->mCurrentMap],  +					MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);                  info->mCurrentImage->setAddressMode(LLTexUnit::TAM_CLAMP);  				simimage = info->mCurrentImage;  				gGL.getTexUnit(0)->bind(simimage); @@ -524,7 +525,7 @@ void LLWorldMapView::draw()  				 (textures_requested_this_tick < MAX_REQUEST_PER_TICK)))  			{  				textures_requested_this_tick++; -				info->mOverlayImage = LLViewerTextureManager::getFetchedTexture(info->mMapImageID[2], MIPMAP_TRUE, FALSE, LLViewerTexture::LOD_TEXTURE); +				info->mOverlayImage = LLViewerTextureManager::getFetchedTexture(info->mMapImageID[2], MIPMAP_TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);  				info->mOverlayImage->setAddressMode(LLTexUnit::TAM_CLAMP);  				overlayimage = info->mOverlayImage;  				gGL.getTexUnit(0)->bind(overlayimage); diff --git a/indra/newview/skins/default/textures/inv_folder_inbox.tga b/indra/newview/skins/default/textures/inv_folder_inbox.tgaBinary files differ deleted file mode 100644 index 04539c2cc4..0000000000 --- a/indra/newview/skins/default/textures/inv_folder_inbox.tga +++ /dev/null diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index 88aca005cf..26d2f4e497 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -3,7 +3,7 @@   legacy_header_height="18"   background_visible="true"   follows="left|top|right|bottom" - height="359" + height="270"   layout="topleft"   left="0"   name="panel_im" @@ -12,13 +12,13 @@   can_dock="true"   can_minimize="true"   visible="true"  - width="400" + width="365"   can_resize="true"   min_width="200"   min_height="150">    <layout_stack follows="left|top|right|bottom" -                height="344" -                width="400" +                height="255" +                width="365"                  layout="topleft"                  orientation="horizontal"                  name="im_panels" @@ -28,13 +28,13 @@        name="panel_im_control_panel"        layout="topleft"        top_delta="-3" -      height="344" +      width="146" +      height="255"        follows="left"        label="IM Control Panel" -      auto_resize="false"        user_resize="false" /> -    <layout_panel height="344" -                  width="235" +    <layout_panel height="255" +                  width="200"                    left_delta="146"                     top="0"                    user_resize="false"> @@ -56,14 +56,14 @@         length="1"         follows="left|top|right|bottom"         font="SansSerif" -       height="290" +       height="205"         layout="topleft"         name="chat_history"         parse_highlights="true"         allow_html="true"  -       width="230"> +       width="195">        </chat_history> -      <line_editor follows="left|right" name="chat_editor" height="20" layout="topleft" width="225"> +      <line_editor follows="left|right" name="chat_editor" height="20" layout="topleft" width="190">        </line_editor>      </layout_panel>    </layout_stack> diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml index e2ae81e0b9..6b13e2f1c7 100644 --- a/indra/newview/skins/default/xui/en/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml @@ -128,8 +128,6 @@       left_delta="110"       tab_stop="false"       width="18" /> -  <!-- Overlapping buttons for default actions -    llinspectavatar.cpp makes visible the most likely default action -->      <button       follows="bottom|left"       height="23" @@ -138,16 +136,6 @@       top="246"       name="add_friend_btn"       width="100" /> -    <button -     follows="bottom|left" -     height="23" -     label="IM" -     left_delta="0" -     top_delta="0" -     name="im_btn" -     width="100" -     commit_callback.function="InspectAvatar.IM" -     />      <menu_button       follows="top|left"       height="18" diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml index 8ee67b9a02..6049476a43 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml @@ -7,6 +7,7 @@           name="Gear Menu">
    <menu_item_call
     label="View Profile"
 +   layout="topleft"
     enabled="true" 
     name="view_profile">
      <menu_item_call.on_click
 @@ -14,42 +15,49 @@    </menu_item_call>
    <menu_item_call
     label="Add Friend"
 +   layout="topleft"
     name="add_friend">
      <menu_item_call.on_click
       function="InspectAvatar.AddFriend"/>
    </menu_item_call>
    <menu_item_call
     label="IM"
 +   layout="topleft"
     name="im">
      <menu_item_call.on_click
       function="InspectAvatar.IM"/>
    </menu_item_call>
    <menu_item_call
     label="Call"
 +   layout="topleft"
     enabled="true"
     name="call">
    </menu_item_call>
    <menu_item_call
     label="Teleport"
 +   layout="topleft"
     name="teleport">
      <menu_item_call.on_click
       function="InspectAvatar.Teleport"/>
    </menu_item_call>
    <menu_item_call
     label="Invite to Group"
 +   layout="topleft"
     name="invite_to_group">
      <menu_item_call.on_click
       function="InspectAvatar.InviteToGroup"/>
    </menu_item_call>
 -  <menu_item_separator />
 +  <menu_item_separator layout="topleft" />
    <menu_item_call
     label="Block"
 +   layout="topleft"
     name="block">
      <menu_item_call.on_click
       function="InspectAvatar.Block"/>
    </menu_item_call>
    <menu_item_call
     label="Report"
 +   layout="topleft"
     name="report">
      <menu_item_call.on_click
       function="InspectAvatar.Report"/>
 @@ -80,6 +88,7 @@    </menu_item_call>
    <menu_item_call
     label="Find On Map"
 +   layout="topleft"
     name="find_on_map">
      <menu_item_call.on_click
       function="InspectAvatar.FindOnMap"/>
 @@ -88,14 +97,16 @@    </menu_item_call>
    <menu_item_call
     label="Zoom In"
 +   layout="topleft"
     name="zoom_in">
      <menu_item_call.on_click
       function="InspectAvatar.ZoomIn"/>
    </menu_item_call>  
    <menu_item_call
     label="Pay"
 +   layout="topleft"
     name="pay">
      <menu_item_call.on_click
       function="InspectAvatar.Pay"/>
    </menu_item_call>
 -</menu>
 +</menu>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml index ce5ee83f55..19c2bf3496 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml @@ -7,6 +7,7 @@           name="Gear Menu">    <menu_item_call     label="Stand Up" +   layout="topleft"     enabled="true"     name="stand_up">      <menu_item_call.on_click @@ -17,6 +18,7 @@    </menu_item_call>    <menu_item_call     label="My Appearance" +   layout="topleft"     name="my_appearance">      <menu_item_call.on_click       function="ShowFloater" @@ -26,6 +28,7 @@    </menu_item_call>    <menu_item_call     label="My Profile" +   layout="topleft"     enabled="true"      name="my_profile">      <menu_item_call.on_click @@ -34,6 +37,7 @@    </menu_item_call>    <menu_item_call     label="My Friends" +   layout="topleft"     name="my_friends">      <menu_item_call.on_click       function="Self.Friends" @@ -41,8 +45,9 @@    </menu_item_call>    <menu_item_call     label="My Groups" +   layout="topleft"     name="my_groups">      <menu_item_call.on_click       function="Self.Groups" />    </menu_item_call> -</menu> +</menu>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml index 87c4e2787f..f50acc224f 100644 --- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel   name="panel_im_control_panel" - width="180" + width="146"   height="215"   border="false">      <avatar_list @@ -16,11 +16,10 @@       show_info_btn="false"       show_profile_btn="false"       top="10" -     width="180" /> +     width="140" />      <button       name="call_btn"       label="Call" -     left_delta="27"       width="125"       height="20" />      <button diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index b5051523e5..61bd1d186e 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -60,7 +60,7 @@           min_width="96"           name="speak_panel"           user_resize="false"> -         <talk_button +         <chiclet_talk            follows="right"            height="23"            speak_button.tab_stop="true" @@ -93,7 +93,7 @@           min_width="76"           name="gesture_panel"           user_resize="false"> -         <gesture_combo_box +         <button             follows="right"            height="23"            label="Gesture" diff --git a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml index 3358015335..9ed510dff3 100644 --- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel   name="panel_im_control_panel" - width="180" + width="146"   height="238"   border="false">      <avatar_list @@ -16,11 +16,11 @@       show_info_btn="false"       show_profile_btn="false"       top="10" -     width="180" /> +     width="140" />      <button       name="group_info_btn"       label="Group Info" -     left_delta="27" +     left_delta="3"       width="125"       height="20" />      <button diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml index 4f24c7a745..a85c55f9b2 100644 --- a/indra/newview/skins/default/xui/en/panel_group_general.xml +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml @@ -1,14 +1,14 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel   follows="all" -     height="380" + height="412"   label="General"   class="panel_group_general"   layout="topleft"   left="0"   top="0"   name="general_tab" - width="303"> + width="313">      <panel.string       name="help_text">          The General tab contains general information about this group, a list of members, general Group Preferences and member options. @@ -41,7 +41,7 @@ Hover your mouse over the options for more help.       draw_heading="true"       follows="left|top"       heading_height="16" -     height="130" +     height="160"       layout="topleft"       left_delta="0"       name="visible_members" diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index ab0f956da0..d8d47c4008 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -5,7 +5,7 @@ background_visible="true"   height="570"   label="Group Info"   layout="topleft" - min_height="425" + min_height="350"   left="0"   top="20"   name="GroupInfo" @@ -47,7 +47,7 @@ background_visible="true"       text_color="white"       top="0"       value="(Loading...)" -     use_ellipses="true" +     use_elipsis="true"       width="300" />      <line_editor       follows="left|top" @@ -60,7 +60,7 @@ background_visible="true"       top_delta="5"       width="250"       height="20" -     visible="false" /> +     visible="true" />      <texture_picker       follows="left|top"       height="113" @@ -112,46 +112,33 @@ background_visible="true"       left_delta="0"       top_pad="6"       height="23" -     label="JOIN NOW!" +     label="Join now!" +     label_selected="Join now!"       name="btn_join"       visible="true"       width="120" />     <accordion               follows="all" -             height="425" +             height="405"               layout="topleft"               left="0" -             multiple_expansion="false"               name="groups_accordion" -             top_pad="15" -             width="336"> +             top_pad="20" +             width="333">               <accordion_tab                   can_resize="false" -                 expanded="true"                   layout="topleft"                   name="tab_general"                   title="General"> -         <scroll_container -         color="DkGray2" -         opaque="true" -         height="323" -         follows="all" +        <panel +        border="false" +         filename="panel_group_general.xml"           layout="topleft"           left="0" +         help_topic="group_general_tab" +         name="general_tab"           top="0" -         name="general_scroll" -         reserve_scroll_corner="false" -         width="333"> -            <panel -            border="false" -             filename="panel_group_general.xml" -             layout="topleft" -             left="0" -             help_topic="group_general_tab" -             name="general_tab" -             top="0" -             width="303" /> -         </scroll_container> +         width="333" />           </accordion_tab>           <accordion_tab                   can_resize="false" @@ -159,27 +146,15 @@ background_visible="true"                   layout="topleft"                   name="tab_roles"                   title="Roles"> -               <scroll_container -                  color="DkGray2" -                  opaque="true" -                  height="323" -                  follows="all" -                  layout="topleft" -                  left="0" -                  top="0" -                  name="roles_scroll" -                  reserve_scroll_corner="false" -                  width="333"> -                 <panel -                 border="false" -                  filename="panel_group_roles.xml" -                  layout="topleft" -                  left="0" -                  help_topic="group_roles_tab" -                  name="roles_tab" -                  top="0" -             width="303" /> -         </scroll_container> +        <panel +        border="false" +         filename="panel_group_roles.xml" +         layout="topleft" +         left="0" +         help_topic="group_roles_tab" +         name="roles_tab" +         top="0" +         width="333" />           </accordion_tab>           <accordion_tab                   can_resize="false" @@ -187,45 +162,21 @@ background_visible="true"                   layout="topleft"                   name="tab_notices"                   title="Notices"> -            <scroll_container -                  color="DkGray2" -                  opaque="true" -                  height="323" -                  follows="all" -                  layout="topleft" -                  left="0" -                  top="0" -                  name="notices_scroll" -                  reserve_scroll_corner="false" -                  width="333">          <panel -        border="false"           filename="panel_group_notices.xml"           layout="topleft"           left="0"           help_topic="group_notices_tab"           name="notices_tab"           top="0" -         width="303" /> -         </scroll_container> +         width="333" />           </accordion_tab> -        <accordion_tab +                  <accordion_tab                   can_resize="false"                   expanded="false"                   layout="topleft"                   name="tab_notices"                   title="Land/Assets"> -           <scroll_container -                  color="DkGray2" -                  opaque="true" -                  height="323" -                  follows="all" -                  layout="topleft" -                  left="0" -                  top="0" -                  name="land_scroll" -                  reserve_scroll_corner="false" -                  width="333">          <panel          border="false"           filename="panel_group_land_money.xml" @@ -234,43 +185,41 @@ background_visible="true"           help_topic="group_land_money_tab"           name="land_money_tab"           top="0" -         width="313" /> -         </scroll_container> +         width="333" />           </accordion_tab>           </accordion> -   <button +    <button       follows="top|left" -     height="22" +     height="20"       image_overlay="Refresh_Off"       layout="topleft" -     left="5"       name="btn_refresh"       picture_style="true" -     top_pad="-15" -     width="23" /> -         <button +     left="5" +     width="20" /> +     <button +     height="20" +     font="SansSerifSmall" +     label="Save" +     label_selected="Save" +     name="btn_apply" +     left_pad="5" +     width="65" /> +    <button       height="20"       label="Create" -     label_selected="New group" +     label_selected="Create"       name="btn_create" -     left_pad="10" +     left_pad="5"       visible="false" -     width="100" /> -   <!-- <button -     left_pad="10" +     width="65" /> +    <button +     left_pad="5"       height="20"       label="Cancel"       label_selected="Cancel"       name="btn_cancel"       visible="false" -     width="65" />--> -     <button -     height="20" -     font="SansSerifSmall" -     label="Save" -     label_selected="Save" -     name="btn_apply" -     left_pad="10" -     right="-10"       width="65" /> +  </panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml index 99fc39c466..c81c7113ae 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -1,25 +1,25 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel - border="false" + border="true"   follows="all"   height="510"   label="Land & L$"   layout="topleft"   left="1"   name="land_money_tab" - top="0" - width="313"> + top="490" + width="280">      <panel.string       name="help_text"> -        Parcels owned by a group are listed along with contribution details. A warning appears until the Total Land in Use is less than or = to the Total Contribution. +        Parcels owned by the group are listed along with contribution details. A warning appears until the Total Land in Use is less than or equal to the Total Contribution. The Planning, Details, and Sales tabs provide information about the group's finances.      </panel.string>      <panel.string       name="cant_view_group_land_text"> -        You don't have permission to view group owned land +        You do not have permission to view group owned land.      </panel.string>      <panel.string       name="cant_view_group_accounting_text"> -        You don't have permission to view the group's accounting information. +        You do not have permission to view the group's accounting information.      </panel.string>      <panel.string       name="loading_txt"> @@ -27,7 +27,7 @@      </panel.string>      <panel.string       name="land_contrib_error"> -        Unable to set your land contribution +        Unable to set your land contribution.      </panel.string>     <!-- <text       type="string" @@ -44,29 +44,29 @@      <scroll_list       draw_heading="true"       follows="top" -     heading_height="20" -     height="150" +     heading_height="14" +     height="100"       layout="topleft" -     left="0" +     left="5"       name="group_parcel_list" -     top_pad="0" -     width="313"> +     top_pad="10" +     width="265">          <scroll_list.columns           label="Parcel"           name="name" -         width="78" /> +         width="67" />          <scroll_list.columns           label="Region"           name="location" -         width="78" /> +         width="72" />          <scroll_list.columns           label="Type"           name="type" -         width="70" /> +         width="60" />          <scroll_list.columns           label="Area"           name="area" -         width="50" /> +         width="20" />          <scroll_list.columns           label=""           name="hidden" @@ -74,14 +74,14 @@      </scroll_list>      <button       follows="top" -     height="23" +     height="20"       label="Map"       label_selected="Map"       layout="topleft" +     left="150"       name="map_button" -     right="-10" -     top_pad="5" -     width="95" +     top_pad="10" +     width="125"       enabled="false" />      <text       type="string" @@ -91,12 +91,11 @@       layout="topleft"       left="5"       name="total_contributed_land_label" -     top_pad="0" +     top_pad="10"       width="130">          Total Contribution:      </text>      <text -    text_color="EmphasisColor"       type="string"       follows="left|top"       height="16" @@ -120,7 +119,6 @@          Total Land In Use:      </text>      <text -    text_color="EmphasisColor"       type="string"       follows="left|top"       height="16" @@ -144,7 +142,6 @@          Land Available:      </text>      <text -    text_color="EmphasisColor"       type="string"       follows="left|top"       height="16" @@ -171,19 +168,19 @@       border_style="line"       border_thickness="1"       follows="left|top" -     height="19" +     height="16"       layout="topleft"       left_pad="5"       max_length="10"       name="your_contribution_line_editor" -     top_delta="0" +     top_delta="-2"       width="95" />      <text       type="string"       follows="left|top"       height="16"       layout="topleft" -     left_pad="3" +     left_pad="5"       name="your_contribution_units"       top_delta="2">          m² @@ -196,13 +193,13 @@       layout="topleft"       left="140"       name="your_contribution_max_value" -     top_pad="2" +     top_pad="0"       width="95">          ([AMOUNT] max)      </text>      <icon       height="16" -     image_name="notify_next" +     image_name="smicon_warn.tga"       layout="topleft"       left="9"       name="group_over_limit_icon" @@ -214,14 +211,14 @@       type="string"       word_wrap="true"       font="SansSerifSmall" -     height="35" +     height="40"       layout="topleft" -     left_pad="0" +     left_pad="5"       name="group_over_limit_text" -     text_color="EmphasisColor" +     text_color="GroupOverTierColor"       top_delta="0" -     width="290"> -        Group members must contribute more land credits to support land in use +     width="250"> +        Group members must contribute more land credits to support land in use.      </text>      <text       type="string" @@ -245,126 +242,128 @@       name="group_money_tab_container"       tab_position="top"       tab_height="20" -     top_pad="2" -     tab_min_width="70" -     width="300"> +     top_pad="10" +     width="265">          <panel -         border="false" +         border="true"           follows="all"           height="180" -         label="PLANNING" +         label="Planning"           layout="topleft" -         left="0" +         left="1"           help_topic="group_money_planning_tab"           name="group_money_planning_tab"           top="5" -         width="300"> +         width="265">              <text_editor               type="string" +             bg_readonly_color="0.784314 0.819608 0.8 1"               follows="all" -             font="SansSerif" -             height="140" +             font="Monospace" +             height="168"               layout="topleft" -             left="0" +             left="8"               max_length="4096"               name="group_money_planning_text" -             top="0" -             width="300" +             top="5" +             width="250"               word_wrap="true"> -                Loading... +                Computing...              </text_editor>          </panel>        <panel -         border="false" -         follows="all" +         border="true" +         follows="left|top|right|bottom"           height="180" -         label="DETAILS" +         label="Details"           layout="topleft" -         left="0" +         left_delta="0"           help_topic="group_money_details_tab"           name="group_money_details_tab" -         top="5" -         width="300"> +         top_delta="0" +         width="265">            <text_editor               type="string" +             bg_readonly_color="0.784314 0.819608 0.8 1"               follows="all" +             font="Monospace"               height="140"               layout="topleft" -             left="0" +             left="8"               max_length="4096"               name="group_money_details_text" -             top="0" -             width="300" +             top="7" +             width="250"               word_wrap="true"> -                Loading... +                Computing...              </text_editor> +          <button +             height="20" +             label="< Earlier" +             label_selected="< Earlier" +             layout="topleft" +             left="5" +             name="earlier_details_button" +             tool_tip="Go back in time" +             top_pad="10" +             width="125" />              <button -	     follows="left|top" -	     height="23" -	     image_overlay="Arrow_Left_Off" -	     layout="topleft" -	     name="earlier_details_button" -	     picture_style="true" -	     tool_tip="Back" -	     top_pad="3" -             right="-35" -	     width="31" /> -             <button -	     follows="left|top" -	     height="23" -	     image_overlay="Arrow_Right_Off" -	     layout="topleft" -	     left_pad="10" +             height="20" +             label="Later >" +             label_selected="Later >" +             layout="topleft" +             left_pad="5"               name="later_details_button" -	     picture_style="true" -	     tool_tip="Next" -	     width="31" /> +             tool_tip="Go forward in time" +             top_delta="0" +             width="125" />          </panel>        <panel -         border="false" -         follows="all" +         border="true" +         follows="left|top|right|bottom"           height="180" -         label="SALES" +         label="Sales"           layout="topleft"           left_delta="0"           help_topic="group_money_sales_tab"           name="group_money_sales_tab"           top_delta="-1" -         width="300"> +         width="265">              <text_editor               type="string" +             bg_readonly_color="0.784314 0.819608 0.8 1"               follows="all" +             font="Monospace"               height="140"               layout="topleft" -             left="0" +             left="8"               max_length="4096"               name="group_money_sales_text" -             top="0" -             width="300" +             top="7" +             width="250"               word_wrap="true"> -                Loading... +                Computing...              </text_editor> -                         <button -	     follows="left|top" -	     height="23" -	     image_overlay="Arrow_Left_Off" -	     layout="topleft" -	     name="earlier_sales_button" -	     picture_style="true" -	     tool_tip="Back" -	     top_pad="3" -             right="-35" -	     width="31" /> -             <button -	     follows="left|top" -	     height="23" -	     image_overlay="Arrow_Right_Off" -	     layout="topleft" -	     left_pad="10" +            <button +             height="20" +             label="< Earlier" +             label_selected="< Earlier" +             layout="topleft" +             left="5" +             name="earlier_sales_button" +             tool_tip="Go back in time" +             top_pad="10" +             width="125" /> +            <button +             height="20" +             label="Later >" +             label_selected="Later >" +             layout="topleft" +             left_pad="5"               name="later_sales_button" -	     picture_style="true" -	     tool_tip="Next" -	     width="31" /> +             tool_tip="Go forward in time" +             top_delta="0" +             width="125" />          </panel>      </tab_container>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml index bfb49a60c2..0e4d490369 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml @@ -1,13 +1,14 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel + border="true"   follows="all"   height="485"   label="Notices"   layout="topleft" - left="0" + left="1"   name="notices_tab" - top="0" - width="313"> + top="485" + width="280">      <panel.string       name="help_text">          Notices are a quick way to communicate across a  @@ -19,48 +20,60 @@ the General tab.      </panel.string>      <panel.string       name="no_notices_text"> -        There are no past notices +        There are no past notices.      </panel.string> +     <!--<text +      follows="left|top" +     type="string" +     font="SansSerifBig" +     height="16" +     layout="topleft" +     left="10" +     name="lbl" +     top_pad="10" +     width="269"> +        Group Notices Archive +    </text> -->      <text        follows="left|top"       type="string"       word_wrap="true" -     height="30" +     height="40"       layout="topleft" -     left="10" +     left_delta="10"       name="lbl2" -     top="5" -     width="300"> -     Notices are kept for 14 days -Groups are limited to 200 notices/group daily +     text_color="EmphasisColor" +     top_pad="10" +     width="270"> +        Notices are kept for 14 days. Notice lists are limited to 200 notices per group on a daily basis.      </text>      <scroll_list        follows="left|top"       column_padding="0"       draw_heading="true" -     heading_height="16" -     height="125" +     heading_height="14" +     height="109"       layout="topleft" -     left="0" +     left_delta="0"       name="notice_list"       top_pad="0" -     width="303"> +     width="265">          <scroll_list.columns           label=""           name="icon" -         width="20" /> +         width="16" />          <scroll_list.columns           label="Subject"           name="subject" -         width="125" /> +         width="100" />          <scroll_list.columns           label="From"           name="from" -         width="90" /> +         width="83" />          <scroll_list.columns           label="Date"           name="date" -         width="30" /> +         width="50" />          <scroll_list.columns           name="sort"           width="-1" /> @@ -71,42 +84,39 @@ Groups are limited to 200 notices/group daily       layout="topleft"       name="notice_list_none_found"       visible="false"> -        None found +        None found.      </text> -         <button -       follows="bottom|left" -       height="18" -       image_selected="AddItem_Press" -       image_unselected="AddItem_Off" -       image_disabled="AddItem_Disabled" -       layout="topleft" -       label="Create a new notice" -       left="15" -       name="create_new_notice" -       picture_style="true" -       tool_tip="Create a new notice" -     top_delta="-5" -       width="18" /> -     <button -     follows="top|left" -     height="22" -     image_overlay="Refresh_Off" +    <button +      follows="left|top" +     height="20" +     font="SansSerifSmall" +     label="New Notice" +     label_selected="Create New Notice" +     layout="topleft" +     left_delta="0" +     name="create_new_notice" +     top_delta="4" +     width="125" /> +    <button +      follows="left|top" +     height="20" +     font="SansSerifSmall" +     label="Refresh" +     label_selected="Refresh List"       layout="topleft" +     left_pad="12"       name="refresh_notices" -     picture_style="true" -     right="-5" -     top_delta="5" -     width="23" /> +     top_delta="0" +     width="125" />      <panel       follows="left|top" -     height="300" +     height="268"       label="Create New Notice"       layout="topleft"       left="0" -     top_pad="10" -     visible="false"       name="panel_create_new_notice" -     width="303"> +     top_pad="10" +     width="265">          <text           follows="left|top"           type="string" @@ -117,16 +127,30 @@ Groups are limited to 200 notices/group daily           mouse_opaque="false"           name="lbl"           text_color="EmphasisColor" -         top="0" -         width="200"> +         top_pad="0" +         width="265">              Create a Notice          </text>          <text           follows="left|top"           type="string" +         word_wrap="true" +         height="90" +         layout="topleft" +         left_delta="0" +         name="lbl2" +         text_color="EmphasisColor" +         top_pad="4" +         width="195"> +            You can add a single item to a notice by dragging it from your inventory to this panel. Attached items must be copiable and transferrable, and you can't send a folder. +        </text> +        <text +         follows="left|top" +         type="string"           halign="left"           height="16"           layout="topleft" +         left_delta="0"           name="lbl3"           top_pad="10"           width="60"> @@ -140,7 +164,8 @@ Groups are limited to 200 notices/group daily           left_pad="3"           max_length="63"           name="create_subject" -         width="220" /> +         top_delta="-1" +         width="200" />          <text           follows="left|top"           type="string" @@ -149,100 +174,106 @@ Groups are limited to 200 notices/group daily           layout="topleft"           left="10"           name="lbl4" -         top_pad="5" +         top_pad="10"           width="60">              Message:          </text>          <text_editor -         height="90" +         height="75"           layout="topleft"           left_pad="3"           max_length="511"           name="create_message"           top_delta="0" -         width="220" +         width="200"           word_wrap="true" />          <text           follows="left|top"           type="string"           halign="left" -         height="14" +         height="16"           layout="topleft"           left="10"           name="lbl5" -         width="200"> +         top_pad="10" +         width="60">              Attach:          </text>          <line_editor           enabled="false" -         height="19" +         height="16"           layout="topleft" -         max_length="90" +         left_pad="3" +         max_length="63"           mouse_opaque="false"           name="create_inventory_name" -         top_pad="2" -         width="285" /> -        <text -        text_color="EmphasisColor" -         follows="left|top" -         type="string" -         halign="right" -         height="34" -         layout="topleft" -         left="10" -         name="string" -         top_pad="15" -         word_wrap="true" -         width="150"> -            Drag here to attach something -- > -        </text> +         top_delta="0" +         width="200" />          <icon -         height="72" -         image_name="DropTarget" +         height="16"           layout="topleft" -         left_pad="10" -         mouse_opaque="true" -         name="drop_icon" -         top_delta="-10" -         width="72" /> +         left_delta="0" +         name="create_inv_icon" +         top_delta="0" +         width="16" />          <button           follows="left|top" -         height="23" -         label="Remove" +         height="20" +         font="SansSerifSmall" +         label="Remove Attachment" +         label_selected="Remove Attachment"           layout="topleft" -         left="70" +         left="10"           name="remove_attachment" -         top_delta="45" -         width="90" /> +         top_pad="10" +         width="135" />          <button           follows="left|top" -         height="23" +         height="20" +         font="SansSerifSmall"           label="Send"           label_selected="Send Notice"           layout="topleft" -         right="-10" -         top_pad="20" +         left_delta="138"           name="send_notice" -         width="100" /> -      <group_drop_target +         top_delta="0" +         width="125" /> +        <panel +         bevel_style="in" +         border="true" +         height="71" +         layout="topleft" +         left="200" +         name="drop_target2" +         top="20" +         width="71" /> +        <icon +         height="59" +         image_name="icon_groupnoticeinventory.tga" +         layout="topleft" +         left_delta="6" +         mouse_opaque="true" +         name="drop_icon" +         top="26" +         width="59" /> +        <group_drop_target           height="466" -         top="0" -         left="0"           layout="topleft" +         left="0"           name="drop_target"           tool_tip="Drag an inventory item onto the message box to send it with the notice. You must have permission to copy and transfer the object to send it with the notice." -         width="295" /> +         top="-198" +         width="280" />     </panel>       <panel       follows="left|top" -     height="300" +     height="268"       label="View Past Notice"       layout="topleft"       left="0" -     visible="true"       name="panel_view_past_notice" -     top="180" -     width="303"> +     top="197" +     width="265">          <text           type="string"           font="SansSerifBig" @@ -263,9 +294,9 @@ Groups are limited to 200 notices/group daily           layout="topleft"           left_delta="0"           name="lbl2" -         top_pad="2" +         top_pad="4"           width="265"> -            To send a new notice, click the + button +            To send a new notice, click the 'New Notice' button above.          </text>          <text           type="string" @@ -274,7 +305,7 @@ Groups are limited to 200 notices/group daily           layout="topleft"           left_delta="0"           name="lbl3" -         top_pad="15" +         top_pad="24"           visible="false"           width="60">              Subject: @@ -305,13 +336,13 @@ Groups are limited to 200 notices/group daily          </text>          <text_editor           enabled="false" -         height="205" +         height="150"           layout="topleft"           left="10"           max_length="511"           name="view_message"           top_delta="-35" -         width="285" +         width="260"           word_wrap="true" />          <line_editor           enabled="false" @@ -322,7 +353,7 @@ Groups are limited to 200 notices/group daily           mouse_opaque="false"           name="view_inventory_name"           top_pad="10" -         width="285" /> +         width="260" />          <icon           height="16"           layout="topleft" @@ -332,12 +363,14 @@ Groups are limited to 200 notices/group daily           width="16" />          <button           follows="left|top" -         height="23" -         label="Open attachment" +         height="20" +         font="SansSerifSmall" +         label="Open Attachment" +         label_selected="Open Attachment"           layout="topleft" -         right="-10" +         left_delta="0"           name="open_attachment" -         top_pad="5" +         top_pad="10"           width="135" />          </panel>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index 5ed464bcec..e87859f788 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel   border="false" - height="552" + height="412"   label="Members & Roles"   layout="topleft"   left="0" @@ -18,28 +18,158 @@      </panel.string>      <panel.string       name="help_text" /> +    <!--<panel +     follows="left|top" +     height="80" +     layout="topleft" +     left="10" +     name="members_header" +     top_pad="10" +     width="270"> +        <text +         type="string" +         font="SansSerifBig" +         height="16" +         layout="topleft" +         left="0" +         name="static" +         top="0" +         width="270"> +            Members & Roles +        </text> +        <text +         type="string" +         word_wrap="true" +         height="40" +         layout="topleft" +         left_delta="0" +         name="static2" +         top_pad="4" +         width="270"> +            Group Members are assigned Roles with Abilities. These settings can easily be customized, allowing for greater organization and flexibility. +        </text> +    </panel> +    <panel +     follows="left|top" +     height="24" +     layout="topleft" +     left_delta="0" +     name="roles_header" +     top_delta="0" +     visible="false" +     width="270"> +        <text +         type="string" +         font="SansSerifBig" +         height="16" +         layout="topleft" +         left="0" +         name="static" +         top="0" +         width="270"> +            Roles +        </text> +        <text +         type="string" +         word_wrap="true" +         height="40" +         layout="topleft" +         left_delta="0" +         name="role_properties_modifiable" +         top_pad="4" +         visible="false" +         width="270"> +            Select a Role below.  You can modify its Name, Description and Member Title. +        </text> +        <text +         type="string" +         word_wrap="true" +         height="40" +         layout="topleft" +         left_delta="0" +         name="role_properties_not_modifiable" +         top_delta="0" +         width="270"> +            Select a Role below to see its properties, Members and allowed Abilities. +        </text> +        <text +         type="string" +         word_wrap="true" +         height="16" +         layout="topleft" +         left_delta="0" +         name="role_actions_modifiable" +         top_delta="24" +         visible="false" +         width="270"> +            You can also assign Abilities to the Role. +        </text> +        <text +         type="string" +         word_wrap="true" +         height="16" +         layout="topleft" +         left_delta="0" +         name="role_actions_not_modifiable" +         top_delta="0" +         width="270"> +            You may view, but not modify, assigned Abilities. +        </text> +    </panel> +    <panel +     follows="left|top" +     height="24" +     layout="topleft" +     left_delta="0" +     name="actions_header" +     top_delta="0" +     visible="false" +     width="270"> +        <text +         type="string" +         font="SansSerifBig" +         height="16" +         layout="topleft" +         left="0" +         name="static" +         top="0" +         width="270"> +            Abilities +        </text> +        <text +         type="string" +         word_wrap="true" +         height="40" +         layout="topleft" +         left_delta="0" +         name="static2" +         top_pad="4" +         width="270"> +            You can view an Ability's Description and which Roles and Members can execute the Ability. +        </text> +    </panel> -->      <tab_container -    border="false" +    border="true"       follows="left|top" -     height="245" +     height="260"       halign="center"       layout="topleft"       left="5"       name="roles_tab_container"       tab_position="top"       tab_height="20" -     tab_min_width="96" -     top="3" +     top="0"       width="303">          <panel           border="false" -         height="220" -         label="MEMBERS" +         height="260" +         label="Members"           layout="topleft" -         left="0" +         left="1"           help_topic="roles_members_tab"           name="members_sub_tab"           tool_tip="Members" +         top="17"           class="panel_group_members_subtab"           width="300">              <panel.string @@ -57,7 +187,8 @@ clicking on their names.           follows="left|top|right"           max_length="250"           label="Filter Members" -         name="filter_input" /> +         name="filter_input" +         font="SansSerif" />            <!--  <button               enabled="false"               font="SansSerifSmall" @@ -98,7 +229,6 @@ clicking on their names.               font="SansSerifSmall"               label="Invite"               layout="topleft" -             left="5"               name="member_invite"               top_pad="3"               width="100" /> @@ -108,10 +238,8 @@ clicking on their names.               label="Eject"               layout="topleft"               left_pad="5" -             right="-5"               name="member_eject"               width="100" /> -             <!--What is this?-->              <icon               height="16"               image_name="Inv_FolderClosed" @@ -122,14 +250,15 @@ clicking on their names.          </panel>          <panel           border="false" -         height="220" -         label="ROLES" +         height="164" +         label="Roles"           layout="topleft" -         left="0" +         left_delta="0"           help_topic="roles_roles_tab"           name="roles_sub_tab"           class="panel_group_roles_subtab" -         width="300"> +         top="17" +         width="265">              <panel.string               name="help_text">                  Roles have a title and an allowed list of Abilities @@ -153,19 +282,40 @@ including the Everyone and Owner Roles.               name="power_partial_icon">                  checkbox_enabled_false.tga              </panel.string> -         <filter_editor -         layout="topleft" -         top="10" -         left="4" -         width="280" -         height="20" -         follows="left|top|right" -         max_length="250" -         label="Filter Roles" -         name="filter_input" /> -            <!-- +            <filter_editor +            layout="topleft" +            top="10" +            left="4" +            width="260" +            height="20" +            follows="left|top|right" +            max_length="250" +            label="Filter Roles" +            name="filter_input" +            font="SansSerif" /> +            <!--<line_editor +             border_style="line" +             border_thickness="1" +             follows="left|top" +             height="16" +             layout="topleft" +             left="4" +             max_length="63" +             name="search_text" +             top="10" +             width="90" /> +            <button +             font="SansSerifSmall" +             height="20" +             label="Search" +             layout="topleft" +             left_pad="5" +             name="search_button" +             top_delta="-2" +             width="80" />              <button               enabled="false" +             font="SansSerifSmall"               height="20"               label="Show All"               layout="topleft" @@ -176,13 +326,11 @@ including the Everyone and Owner Roles.              <scroll_list               column_padding="0"               draw_heading="true" -             draw_stripes="false"               follows="left|top"               heading_height="20"               height="150"               layout="topleft" -             search_column="1" -             left="0" +             left="4"               name="role_list"               top_pad="4"               width="300"> @@ -204,7 +352,7 @@ including the Everyone and Owner Roles.               font="SansSerifSmall"               label="Add Role"               layout="topleft" -             left="5" +             left_delta="0"               name="role_create"               top_pad="6"               width="125" /> @@ -214,20 +362,20 @@ including the Everyone and Owner Roles.               label="Delete Role"               layout="topleft"               left_pad="5" -             right="-5"               name="role_delete"               top_delta="0"               width="125" />          </panel>          <panel           border="false" -         height="220" -         label="ABILITIES" +         height="164" +         label="Abilities"           layout="topleft" -         left="0" +         left_delta="0"           help_topic="roles_actions_tab"           name="actions_sub_tab"           class="panel_group_actions_subtab" +         top="17"           tool_tip="You can view an Ability's Description and which Roles and Members can execute the Ability."           width="300">              <panel.string @@ -235,17 +383,37 @@ including the Everyone and Owner Roles.                  Abilities allow Members in Roles to do specific  things in this group. There's a broad variety of Abilities.              </panel.string> -         <filter_editor -         layout="topleft" -         top="10" -         left="4" -         width="280" -         height="20" -         follows="left|top|right" -         max_length="250" -         label="Filter Abilities" -         name="filter_input" /> -            <!-- +            <filter_editor +            layout="topleft" +            top="10" +            left="4" +            width="255" +            height="20" +            follows="left|top|right" +            max_length="250" +            label="Filter Abilities" +            name="filter_input" +            font="SansSerif" /> +            <!--<line_editor +             border_style="line" +             border_thickness="1" +             follows="left|top" +             height="16" +             layout="topleft" +             left="4" +             max_length="63" +             name="search_text" +             top="10" +             width="90" /> +            <button +             font="SansSerifSmall" +             height="20" +             label="Search" +             layout="topleft" +             left_pad="5" +             name="search_button" +             top_delta="-2" +             width="80" />              <button               enabled="false"               font="SansSerifSmall" @@ -260,19 +428,19 @@ things in this group. There's a broad variety of Abilities.               column_padding="0"               draw_stripes="false"               follows="left|top" -             height="160" +             height="100"               layout="topleft" -             left="0" +             left="6"               multi_select="true"               name="action_list"               search_column="1"               tool_tip="Select an Ability to view more details"               top_pad="6" -             width="300"> +             width="255">                  <scroll_list.columns                   label=""                   name="icon" -                 width="16" /> +                 width="18" />                  <scroll_list.columns                   label=""                   name="action" @@ -280,7 +448,7 @@ things in this group. There's a broad variety of Abilities.              </scroll_list>              <icon               height="16" -             image_name="Inv_FolderClosed" +             image_name="inv_folder_plain_closed.tga"               layout="topleft"               name="power_folder_icon"               visible="false" @@ -288,93 +456,105 @@ things in this group. There's a broad variety of Abilities.          </panel>      </tab_container>      <panel -     height="252" +     height="150"       layout="topleft"       follows="left|top"       left="10"       name="members_footer" -     top_pad="10" -     top_delta="0" +     top_pad="2"       width="300">          <text           type="string" +         font="SansSerif"           height="16"           layout="topleft"           follows="left|top"           left="0"           name="static" -         top_pad="5" -         width="295"> +         top_pad="0" +         width="100">              Assigned Roles          </text> +        <text +         type="string" +         font="SansSerif" +         height="16" +         layout="topleft" +         follows="left|top" +         left_pad="35" +         name="static2" +         top_delta="0" +         width="100"> +            Allowed Abilities +        </text>          <scroll_list           draw_stripes="false"           follows="left|top" -         height="80" +         height="150"           layout="topleft"           left="0"           name="member_assigned_roles" -         top_pad="0" -         width="295"> +         top_pad="5" +         width="130">              <scroll_list.columns               label=""               name="checkbox" -             width="30" /> +             width="18" />              <scroll_list.columns               label=""               name="role" -             width="265" /> +             width="107" />          </scroll_list> -                 <text -         type="string" -         height="16" -         layout="topleft" -         follows="left|top" -         left="0" -         name="static2" -         top_pad="5" -         width="295"> -            Allowed Abilities -        </text> -         <scroll_list +        <scroll_list           draw_stripes="false" -         height="80" +         height="150"           layout="topleft" -         left="0" +         follows="left|top" +         left_pad="5"           name="member_allowed_actions" -         search_column="2"           tool_tip="For details of each allowed ability see the abilities tab" -         top_pad="0" -         width="295"> +         top_delta="0" +         width="130">              <scroll_list.columns               label=""               name="icon" -             width="20" /> +             width="14" />              <scroll_list.columns               label=""               name="action" -             width="275" /> +             width="126" />          </scroll_list>      </panel>      <panel -     height="297" +     height="252"       layout="topleft" -     left="10" +     left_delta="0"       name="roles_footer"       top_delta="0" -     top="245"       visible="false" -     width="300"> +     width="270">          <text           type="string" +         font="SansSerif"           height="16"           layout="topleft"           left="0"           name="static"           top="0" -         width="140"> +         width="100">              Name          </text> +        <text +         type="string" +         font="SansSerif" +         height="16" +         layout="topleft" +         left_pad="35" +         name="static2" +         top_delta="0" +         width="100"> +            Description +        </text>          <line_editor           type="string"           border_style="line" @@ -383,19 +563,21 @@ things in this group. There's a broad variety of Abilities.           height="20"           layout="topleft"           left="0" -         max_length="295" +         max_length="20"           name="role_name"           top_pad="0" -         width="295"> +         width="130">              Employees          </line_editor>          <text           type="string" +         font="SansSerif"           height="16"           layout="topleft" +         left_delta="0"           name="static3" -         top_pad="5" -         width="295"> +         top_pad="10" +         width="100">              Title          </text>          <line_editor @@ -405,159 +587,158 @@ things in this group. There's a broad variety of Abilities.           follows="left|top"           height="20"           layout="topleft" -         max_length="295" +         left_delta="0" +         max_length="20"           name="role_title"           top_pad="0" -         width="295"> -          (waiting) +         width="130"> +            (waiting)          </line_editor> -                <text -         type="string" -         height="16" -         layout="topleft" -         left="0" -         name="static2" -         top_pad="5" -         width="100"> -            Description -        </text>          <text_editor           type="string"           halign="left" -         height="35" +         height="48"           layout="topleft" -         left="0" -         max_length="295" +         left="135" +         max_length="254"           name="role_description" -         top_pad="0" -         width="295" +         top="16" +         width="130"           word_wrap="true"> -          (waiting) +            (waiting)          </text_editor>          <text           type="string" +         font="SansSerif"           height="16"           layout="topleft" -         follows="left|top"           left="0" -         name="static" -         top_pad="5" -         width="295"> -            Assigned Roles +         name="static4" +         top="85" +         width="120"> +            Assigned Members +        </text> +        <text +         type="string" +         font="SansSerif" +         height="16" +         layout="topleft" +         left_pad="15" +         name="static5" +         tool_tip="A list of abilities the currently selected role can perform" +         top_delta="0" +         width="100"> +            Allowed Abilities          </text>          <name_list           draw_stripes="false" -         height="50" +         height="150"           layout="topleft"           left="0"           name="role_assigned_members"           top_pad="0" -         width="295" /> +         width="130" />          <check_box -         height="15" -         label="Reveal members" +         height="16" +         label="Members are visible"           layout="topleft" +         left_delta="0"           name="role_visible_in_list"           tool_tip="Sets whether members of this role are visible in the General tab to people outside of the group." -         top_pad="3" -         width="290" /> -         <text -         type="string" -         height="16" -         layout="topleft" -         follows="left|top" -         left="0" -         name="static2" -         top_pad="5" -         width="295"> -            Allowed Abilities -        </text> +         top_pad="10" +         width="130" />          <scroll_list           draw_stripes="false" -         height="50" +         height="150"           layout="topleft" -         left="0" +         left="135"           name="role_allowed_actions"           search_column="2"           tool_tip="For details of each allowed ability see the abilities tab" -         top_pad="0" -         width="295"> +         top="101" +         width="130">              <scroll_list.columns               label=""               name="icon" -             width="20" /> +             width="2" />              <scroll_list.columns               label=""               name="checkbox" -             width="20" /> +             width="16" />              <scroll_list.columns               label=""               name="action" -             width="250" /> +             width="220" />          </scroll_list>      </panel>     <panel -     height="303" +     height="215"       layout="topleft" -     left="10" +     left_delta="0"       name="actions_footer"       top_delta="0" -     top="245"       visible="false" -     width="300"> +     width="265">          <text           type="string" +         font="SansSerif"           height="16"           layout="topleft" +         left="0"           name="static" +         top="0"           width="200"> -            Ability description +            Description          </text>          <text_editor           type="string"           enabled="false"           halign="left" -         height="80" +         height="48"           layout="topleft"           left_delta="0"           max_length="512"           name="action_description"           top_pad="0" -         width="295" +         width="265"           word_wrap="true">              This Ability is 'Eject Members from this Group'. Only an Owner can eject another Owner.          </text_editor>          <text           type="string" +         font="SansSerif"           height="16"           layout="topleft"           left_delta="0"           name="static2" -         top_pad="5" -         width="295"> -            Roles with this ability +         top_pad="10" +         width="125"> +            Roles with Ability          </text> -        <scroll_list -         height="60" -         layout="topleft" -         left="0" -         name="action_roles" -         top_pad="0" -         width="295" /> -                 <text +        <text           type="string" +         font="SansSerif"           height="16"           layout="topleft" +         left_pad="10"           name="static3" -         top_pad="5" -         width="295"> -            Members with this ability +         top_delta="0" +         width="125"> +            Members with Ability          </text> +        <scroll_list +         height="150" +         layout="topleft" +         left="0" +         name="action_roles" +         top="90" +         width="130" />          <name_list -         height="100" +         height="150"           layout="topleft" +         left_pad="5"           name="action_members" -         top_pad="0" -         width="295" /> +         top_delta="0" +         width="130" />      </panel>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml index 0dd3878426..c4cdaa41f9 100644 --- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml @@ -1,35 +1,30 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel name="panel_im_control_panel" -       width="128" -       height="327" +       width="125" +       height="248"         border="false">    <avatar_icon name="avatar_icon" -               follows="left|top" -               left_delta="3" -               width="125" -               height="125" /> +               width="96" +               height="96" />    <button name="view_profile_btn" -          follows="left|bottom"            label="View Profile" +          left_delta="3"            width="125"  		  height="20" />    <button name="add_friend_btn" -          follows="left|bottom"            label="Add Friend"            width="125"            height="20" />    <button name="call_btn" -          follows="left|bottom"            label="Call"            width="125"            height="20" />      <button -     follows="left|bottom"       height="20"       label="End Call"       name="end_call_btn" @@ -38,27 +33,15 @@    <button  	 enabled="false" -     follows="left|bottom"       name="voice_ctrls_btn"       label="Open Voice Controls"       width="125"       height="20"       visible="false"/> -  <button name="teleport_btn" -          follows="left|bottom" -          label="Teleport" -          width="125" -          height="20" />    <button name="share_btn" -          follows="left|bottom"            label="Share"            width="125"            height="20" /> -  <button name="pay_btn" -          follows="left|bottom" -          label="Pay" -          width="125" -          height="20" />  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml deleted file mode 100644 index 03ba7f7c81..0000000000 --- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml +++ /dev/null @@ -1,257 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - background_visible="true" - follows="all" - height="570" - layout="topleft" - left="0" - min_height="350" - name="landmark_info" - top="20" - width="330"> -    <string -     name="title_create_landmark" -     value="Create Landmark" /> -    <string -     name="title_edit_landmark" -     value="Edit Landmark" /> -    <string -     name="title_landmark" -     value="Landmark" /> -    <string -     name="not_available" -     value="(N\A)" /> -    <string -     name="unknown" -     value="(unknown)" /> -    <string -     name="public" -     value="(public)" /> -    <string -     name="server_update_text"> -        Place information not available without server update. -    </string> -    <string -     name="server_error_text"> -        Information about this location is unavailable at this time, please try again later. -    </string> -    <string -     name="server_forbidden_text"> -        Information about this location is unavailable due to access restrictions.  Please check your permissions with the parcel owner. -    </string> -    <string -     name="acquired_date"> -        [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] -    </string> -    <button -     follows="top|right" -     height="23" -     image_overlay="BackArrow_Off" -     layout="topleft" -     left="10" -     name="back_btn" -     picture_style="true" -     tab_stop="false" -     top="0" -     width="23" /> -    <text -     follows="top|left|right" -     font="SansSerifHugeBold" -     height="26" -     layout="topleft" -     left_pad="10" -     name="title" -     text_color="white" -     top="0" -     use_ellipses="true" -     value="Place Profile" -     width="275" /> -    <scroll_container -     color="DkGray2" -     follows="all" -     height="533" -     layout="topleft" -     left="10" -     name="place_scroll" -     opaque="true" -     top_pad="5" -     width="313"> -        <panel -         bg_alpha_color="DkGray2" -         follows="all" -         height="533" -         layout="topleft" -         left="0" -         min_height="300" -         name="scrolling_panel" -         top="0" -         width="313"> -            <texture_picker -             enabled="false" -             follows="top|left" -             height="190" -             layout="topleft" -             left="10" -             name="logo" -             top="10" -             width="290" /> -            <text -             follows="left|top|right" -             font="SansSerifLarge" -             height="14" -             layout="topleft" -             left="10" -             name="region_title" -             text_color="white" -             top_pad="5" -             use_ellipses="true" -             value="SampleRegion" -             width="290" /> -            <text -             follows="left|top|right" -             height="14" -             layout="topleft" -             left="10" -             name="parcel_title" -             top_pad="4" -             use_ellipses="true" -             value="SampleParcel, Name Long (145, 228, 26)" -             width="285" /> -            <expandable_text -             follows="left|top|right" -             height="50" -             layout="topleft" -             left="5" -             name="description" -             top_pad="10" -             value="Du waltz die spritz" -             width="300" /> -            <panel -             follows="left|top|right" -             height="55" -             layout="topleft" -             left="10" -             name="landmark_info_panel" -             top_pad="10" -             width="290"> -                <text -                 follows="left|top" -                 height="15" -                 layout="topleft" -                 left="0" -                 name="owner_label" -                 top_pad="10" -                 value="Owner:" -                 width="90" /> -                <text -                 follows="left|top|right" -                 height="15" -                 layout="topleft" -                 left="70" -                 name="owner" -                 top_delta="0" -                 width="200" /> -                <text -                 follows="left|top" -                 height="15" -                 layout="topleft" -                 left="0" -                 name="creator_label" -                 value="Creator:" -                 width="90" /> -                <text -                 follows="left|top|right" -                 height="15" -                 layout="topleft" -                 left="70" -                 name="creator" -                 top_delta="0" -                 width="200" /> -                <text -                 follows="left|top" -                 height="15" -                 layout="topleft" -                 left="0" -                 name="created_label" -                 value="Created:" -                 width="50" /> -                <text -                 follows="left|top|right" -                 height="15" -                 layout="topleft" -                 left="70" -                 name="created" -                 top_delta="0" -                 width="200" /> -            </panel> -            <panel -             follows="left|top|right" -             height="210" -             layout="topleft" -             left="10" -             name="landmark_edit_panel" -             width="290"> -                <text -                 follows="left|top" -                 height="15" -                 layout="topleft" -                 left="0" -                 name="title_label" -                 top_pad="10" -                 value="Title:" -                 width="290" /> -                <line_editor -                 background_image_disabled="task_panel_background.png" -                 follows="left|top|right" -                 height="22" -                 layout="topleft" -                 left="0" -                 max_length="63" -                 name="title_editor" -                 prevalidate_callback="ascii" -                 text_readonly_color="white" -                 top_pad="5" -                 width="290" /> -                <text -                 follows="left|top" -                 height="15" -                 layout="topleft" -                 left="0" -                 name="notes_label" -                 top_pad="10" -                 value="My notes:" -                 width="290" /> -                <text_editor -                 bg_readonly_color="DkGray2" -                 follows="all" -                 height="70" -                 layout="topleft" -                 left="0" -                 max_length="127" -                 name="notes_editor" -                 read_only="true" -                 text_readonly_color="white" -                 top_pad="5" -                 width="290" -                 wrap="true" /> -                <text -                 follows="left|top" -                 height="15" -                 layout="topleft" -                 left="0" -                 name="folder_label" -                 top_pad="15" -                 value="Landmark location:" -                 width="290" /> -                <combo_box -                 follows="bottom|left|right" -                 height="20" -                 layout="topleft" -                 left="0" -                 name="folder_combo" -                 top_pad="5" -                 width="200" /> -            </panel> -        </panel> -    </scroll_container> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml index 91fcf4b5f2..5293043ba7 100644 --- a/indra/newview/skins/default/xui/en/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml @@ -31,7 +31,7 @@               left="0"               mouse_opaque="true"               name="favorites_list" -             start_folder="Favorite" +             start_folder="favorite"               width="380"/>          </accordion_tab>          <accordion_tab @@ -47,7 +47,7 @@               left="0"               mouse_opaque="true"               name="landmarks_list" -             start_folder="Landmarks" +             start_folder="landmark"               width="380"/>          </accordion_tab>          <accordion_tab @@ -63,13 +63,13 @@               left="0"               mouse_opaque="true"               name="my_inventory_list" -             start_folder="INVENTORY" +             start_folder="inventory"               width="380"/> -          </accordion_tab> -          <accordion_tab -           layout="topleft" -           name="tab_library" -           title="Library"> +        </accordion_tab> +        <accordion_tab +         layout="topleft" +         name="tab_library" +         title="Library">              <inventory_subtree_panel               allow_multi_select="true"               border="true" @@ -79,7 +79,7 @@               left="0"               mouse_opaque="true"               name="library_list" -             start_folder="LIBRARY" +             start_folder="library"               width="380"/>          </accordion_tab>      </accordion> diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index 555fedb1ff..2182163da5 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -42,17 +42,13 @@       width="20" />      <button       follows="right" -     is_toggle="true"       width="45"       top="0"       layout="topleft"       left_pad="8"       label="Log"       height="23" -     name="show_nearby_chat"       tool_tip="Show/hide nearby chat log"> -        <button.init_callback -           function="Button.SetDockableFloaterToggle" -           parameter="nearby_chat" /> +    <button.commit_callback function="Floater.Toggle" parameter="nearby_chat"/>      </button>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml index 3cc9c3f38a..a67ae59b4a 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml @@ -30,7 +30,7 @@       text_color="white"       top="0"       value="Pick Info" -     use_ellipses="true" +     use_elipsis="true"       width="275" />      <scroll_container       color="DkGray2" diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml deleted file mode 100644 index 7e073f064d..0000000000 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ /dev/null @@ -1,979 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - background_visible="true" - follows="all" - height="570" - layout="topleft" - left="0" - min_height="350" - name="place_profile" - top="20" - width="330"> -    <string -     name="on" -     value="On" /> -    <string -     name="off" -     value="Off" /> -    <string -     name="anyone" -     value="Anyone" /> -    <string -     name="available" -     value="available" /> -    <string -     name="allocated" -     value="allocated" /> -    <string -     name="title_place" -     value="Place Profile" /> -    <string -     name="title_teleport_history" -     value="Teleport History Location" /> -    <string -     name="not_available" -     value="(N\A)" /> -    <string -     name="unknown" -     value="(unknown)" /> -    <string -     name="public" -     value="(public)" /> -    <string -     name="none_text" -     value="(none)" /> -    <string -     name="sale_pending_text" -     value="(Sale Pending)" /> -    <string -     name="group_owned_text" -     value="(Group Owned)" /> -    <string -     name="price_text" -     value="L$" /> -    <string -     name="area_text" -     value="m²" /> -    <string -     name="all_residents_text" -     value="All Residents" /> -    <string -     name="group_text" -     value="Group" /> -    <string -     name="can_resell"> -        Purchased land in this region may be resold. -    </string> -    <string -     name="can_not_resell"> -        Purchased land in this region may not be resold. -    </string> -    <string -     name="can_change"> -        Purchased land in this region may be joined or subdivided. -    </string> -    <string -     name="can_not_change"> -        Purchased land in this region may not be joined or subdivided. -    </string> -    <string -     name="server_update_text"> -        Place information not available without server update. -    </string> -    <string -     name="server_error_text"> -        Information about this location is unavailable at this time, please try again later. -    </string> -    <string -     name="server_forbidden_text"> -        Information about this location is unavailable due to access restrictions.  Please check your permissions with the parcel owner. -    </string> -    <string -     name="acquired_date"> -        [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] -    </string> -    <button -     follows="top|right" -     height="23" -     image_overlay="BackArrow_Off" -     layout="topleft" -     left="10" -     name="back_btn" -     picture_style="true" -     tab_stop="false" -     top="0" -     width="23" /> -    <text -     follows="top|left|right" -     font="SansSerifHugeBold" -     height="26" -     layout="topleft" -     left_pad="10" -     name="title" -     text_color="white" -     top="0" -     use_ellipses="true" -     value="Place Profile" -     width="275" /> -    <scroll_container -     color="DkGray2" -     follows="all" -     height="533" -     layout="topleft" -     left="10" -     name="place_scroll" -     opaque="true" -     top_pad="5" -     width="313"> -        <panel -         bg_alpha_color="DkGray2" -         follows="all" -         height="533" -         layout="topleft" -         left="0" -         min_height="300" -         name="scrolling_panel" -         top="0" -         value=">" -         width="313"> -            <texture_picker -             enabled="false" -             follows="top|left" -             height="190" -             layout="topleft" -             left="10" -             name="logo" -             top="10" -             width="290" /> -            <layout_stack -             border_size="0" -             clip="false" -             follows="all" -             height="50" -             layout="topleft" -             mouse_opaque="false" -             name="panel_stack" -             orientation="horizontal" -             top_pad="-65" -             width="100"> -                <layout_panel -                 follows="left|right" -                 height="50" -                 layout="topleft" -                 left="0" -                 min_height="50" -                 min_width="50" -                 mouse_opaque="false" -                 name="here_panel" -                 top="0" -                 user_resize="false" -                 width="60"> -                    <icon -                     follows="top|left" -                     height="50" -                     image_name="YouAreHere_Badge" -                     layout="topleft" -                     left="0" -                     name="icon_you_are_here" -                     top="0" -                     width="50" /> -                </layout_panel> -                <layout_panel -                 follows="left|right" -                 height="60" -                 layout="topleft" -                 min_height="50" -                 min_width="60" -                 mouse_opaque="false" -                 name="for_sale_panel" -                 top="0" -                 user_resize="false" -                 width="60"> -                    <icon -                     follows="top|left" -                     height="50" -                     image_name="ForSale_Badge" -                     layout="topleft" -                     left="10" -                     name="icon_for_sale" -                     top="0" -                     width="50" /> -                </layout_panel> -            </layout_stack> -            <text -             follows="left|top|right" -             font="SansSerifLarge" -             height="14" -             layout="topleft" -             left="10" -             name="region_title" -             text_color="white" -             top_pad="5" -             use_ellipses="true" -             value="SampleRegion" -             width="290" /> -       <!-- <icon -             follows="top|right" -             height="16" -             image_name="Icon_For_Sale" -             layout="topleft" -             left="3" -             mouse_opaque="true" -             name="icon_for_sale" -             width="16" />--> -            <text -             follows="left|top|right" -             height="14" -             layout="topleft" -             left="10" -             name="parcel_title" -             top_pad="4" -             use_ellipses="true" -             value="SampleParcel, Name Long (145, 228, 26)" -             width="285" /> -            <expandable_text -             follows="left|top|right" -             height="50" -             layout="topleft" -             left="5" -             name="description" -             top_pad="10" -             value="Du waltz die spritz" -             width="300" /> -            <text -             follows="left|top" -             height="14" -             layout="topleft" -             left="10" -             name="owner_label" -             text_color="White" -             top_pad="0" -             value="Owner:" -             width="90" /> -         <!--TODO: HOOK THIS NAME UP WITH AN INSPECTOR  --> -            <text -             follows="left|top|right" -             height="14" -             layout="topleft" -             left_pad="1" -             name="owner_value" -             top_delta="0" -             value="Alex Superduperlongenamenton" -             width="205" /> -            <accordion -             follows="all" -             height="230" -             layout="topleft" -             left="0" -             name="advanced_info_accordion" -             top_pad="10" -             width="313"> -                <accordion_tab -                 layout="topleft" -                 name="parcel_characteristics_tab" -                 title="Parcel"> -                    <scroll_container -                     color="DkGray2" -                     follows="all" -                     height="132" -                     layout="topleft" -                     left="0" -                     name="parcel_scroll" -                     opaque="true" -                     top="0" -                     width="290"> -                        <panel -                         follows="all" -                         height="165" -                         layout="topleft" -                         left="0" -                         top="0" -                         width="275"> -                            <icon -                             follows="top|left" -                             height="16" -                             image_name="parcel_drk_M" -                             layout="topleft" -                             left="20" -                             name="icon_M" -                             top="0" -                             width="18" /> -                            <icon -                             follows="top|left" -                             height="16" -                             image_name="parcel_drk_R" -                             layout="topleft" -                             left="20" -                             name="icon_R" -                             top="0" -                             width="18" /> -                            <icon -                             follows="top|left" -                             height="16" -                             image_name="parcel_drk_PG" -                             layout="topleft" -                             left="20" -                             name="icon_PG" -                             top="0" -                             visible="false" -                             width="18" /> -                            <text -                             follows="left|top" -                             height="16" -                             layout="topleft" -                             left_pad="8" -                             name="rating_label" -                             value="Rating:" -                             width="80" /> -                            <text -                             follows="right|top" -                             height="16" -                             layout="topleft" -                             left_pad="0" -                             name="rating_value" -                             top_delta="0" -                             value="Mature" -                             width="120" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_Voice" -                             layout="topleft" -                             left="20" -                             name="icon_Voice" -                             top_pad="5" -                             width="22" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_VoiceNo" -                             layout="topleft" -                             left="20" -                             name="icon_VoiceNo" -                             top_delta="0" -                             visible="false" -                             width="22" /> -                            <text -                             follows="left|top" -                             height="18" -                             layout="topleft" -                             left_pad="8" -                             name="voice_label" -                             top_delta="0" -                             value="Voice:" -                             width="76" /> -                            <text -                             follows="right|top" -                             height="18" -                             layout="topleft" -                             left_pad="0" -                             name="voice_value" -                             top_delta="0" -                             value="On" -                             width="60" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_Fly" -                             layout="topleft" -                             left="20" -                             name="icon_Fly" -                             top_pad="3" -                             width="22" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_FlyNo" -                             layout="topleft" -                             left="20" -                             name="icon_FlyNo" -                             top_delta="0" -                             visible="false" -                             width="22" /> -                            <text -                             follows="left|top" -                             height="16" -                             layout="topleft" -                             left_pad="8" -                             name="fly_label" -                             value="Fly:" -                             width="76" /> -                            <text -                             follows="right|top" -                             height="16" -                             layout="topleft" -                             left_pad="0" -                             name="fly_value" -                             top_delta="0" -                             value="On" -                             width="60" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_Push" -                             layout="topleft" -                             left="20" -                             name="icon_Push" -                             top_pad="3" -                             visible="false" -                             width="22" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_PushNo" -                             layout="topleft" -                             left="20" -                             name="icon_PushNo" -                             top_delta="0" -                             width="22" /> -                            <text -                             follows="left|top" -                             height="14" -                             layout="topleft" -                             left_pad="8" -                             name="push_label" -                             value="Push:" -                             width="76" /> -                            <text -                             follows="right|top" -                             height="14" -                             layout="topleft" -                             left_pad="0" -                             name="push_value" -                             top_delta="0" -                             value="Off" -                             width="60" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_Build" -                             layout="topleft" -                             left="20" -                             name="icon_Build" -                             top_pad="3" -                             width="22" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_BuildNo" -                             layout="topleft" -                             left="20" -                             name="icon_BuildNo" -                             top_delta="0" -                             visible="false" /> -                            <text -                             follows="left|top" -                             height="14" -                             layout="topleft" -                             left_pad="8" -                             name="build_label" -                             value="Build:" -                             width="76" /> -                            <text -                             follows="right|top" -                             height="15" -                             layout="topleft" -                             left_pad="0" -                             name="build_value" -                             top_delta="0" -                             value="On" -                             width="60" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_Scripts" -                             layout="topleft" -                             left="20" -                             name="icon_Scripts" -                             top_pad="3" -                             width="22" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_ScriptsNo" -                             layout="topleft" -                             left="20" -                             name="icon_ScriptsNo" -                             top_delta="0" -                             visible="false" /> -                            <text -                             follows="left|top" -                             height="14" -                             layout="topleft" -                             left_pad="8" -                             name="scripts_label" -                             value="Scripts:" -                             width="76" /> -                            <text -                             follows="right|top" -                             height="14" -                             layout="topleft" -                             left_pad="0" -                             name="scripts_value" -                             top_delta="0" -                             value="On" -                             width="60" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_Damage" -                             layout="topleft" -                             left="20" -                             name="icon_Damage" -                             top_pad="7" -                             visible="false" -                             width="22" /> -                            <icon -                             follows="top|left" -                             height="18" -                             image_name="parcel_drk_DamageNo" -                             layout="topleft" -                             left="20" -                             name="icon_DamageNo" -                             top_delta="0" /> -                            <text -                             follows="left|top" -                             height="14" -                             layout="topleft" -                             left_pad="8" -                             name="damage_label" -                             value="Damage:" -                             width="76" /> -                            <text -                             follows="right|top" -                             height="14" -                             layout="topleft" -                             left_pad="0" -                             name="damage_value" -                             top_delta="0" -                             value="Off" -                             width="60" /> -                            <button -                             follows="bottom|right" -                             height="19" -                             label="About Land" -                             layout="topleft" -                             name="about_land_btn" -                             right="-5" -                             tab_stop="false" -                             top="138" -                             width="90"> -                                <click_callback -                                 function="ShowFloater" -                                 parameter="about_land" /> -                            </button> -                        </panel> -                    </scroll_container> -                </accordion_tab> -                <accordion_tab -                 expanded="false" -                 layout="topleft" -                 name="region_information_tab" -                 title="Region"> -                    <panel -                     follows="all" -                     height="125" -                     layout="topleft" -                     left="0" -                     top="0" -                     width="290"> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="region_name_label" -                         top_pad="5" -                         value="Region:" -                         width="80" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left_pad="0" -                         name="region_name" -                         top_delta="0" -                         value="Mooseland" -                         width="195" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="region_type_label" -                         top_pad="5" -                         value="Type:" -                         width="80" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left_pad="0" -                         name="region_type" -                         top_delta="0" -                         value="Moose" -                         width="195" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="region_rating_label" -                         top_pad="7" -                         value="Rating:" -                         width="80" /> -                        <icon -                         follows="top|left" -                         height="16" -                         image_name="parcel_drk_M" -                         layout="topleft" -                         left_pad="0" -                         name="icon_M" -                         width="18" /> -                        <icon -                         follows="top|left" -                         height="16" -                         image_name="parcel_drk_R" -                         layout="topleft" -                         left_delta="0" -                         name="icon_R" -                         top_delta="0" -                         visible="false" -                         width="18" /> -                        <icon -                         follows="top|left" -                         height="16" -                         image_name="parcel_drk_PG" -                         layout="topleft" -                         left_delta="0" -                         name="icon_PG" -                         top_delta="0" -                         visible="false" -                         width="18" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left_pad="10" -                         name="region_rating" -                         value="Explicit" -                         width="100" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="region_owner_label" -                         top_pad="5" -                         value="Owner:" -                         width="80" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left_pad="0" -                         name="region_owner" -                         top_delta="0" -                         value="moose Van Moose" -                         width="195" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="region_group_label" -                         top_pad="5" -                         value="Group:" -                         width="80" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left_pad="0" -                         name="region_group" -                         top_delta="0" -                         use_ellipses="true" -                         width="195"> -                            The Mighty Moose of mooseville soundvillemoose -                        </text> -                        <button -                         follows="bottom|right" -                         height="19" -                         label="Region/Estate" -                         layout="topleft" -                         name="region_info_btn" -                         right="-5" -                         tab_stop="false" -                         width="105"> -                            <click_callback -                             function="ShowFloater" -                             parameter="region_info" /> -                        </button> -                    </panel> -                </accordion_tab> -                <accordion_tab -                 expanded="false" -                 layout="topleft" -                 name="estate_information_tab" -                 title="Estate"> -                    <panel -                     follows="all" -                     height="189" -                     layout="topleft" -                     left="0" -                     top="0" -                     width="290"> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="estate_name_label" -                         top_pad="5" -                         value="Estate:" -                         width="80" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="90" -                         name="estate_name" -                         top_delta="0" -                         width="160" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="estate_rating_label" -                         top_pad="5" -                         value="Rating:" -                         width="80" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="90" -                         name="estate_rating" -                         top_delta="0" -                         width="160" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="estate_owner_label" -                         top_pad="5" -                         value="Owner:" -                         width="80" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="90" -                         name="estate_owner" -                         top_delta="0" -                         width="160" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="covenant_label" -                         top_pad="5" -                         value="Covenant:" -                         width="220" /> -                        <text_editor -                         bg_focus_color="DkGray2" -                         bg_readonly_color="DkGray2" -                         follows="left|top|right" -                         handle_edit_keys_directly="true" -                         height="90" -                         layout="topleft" -                         left="10" -                         max_length="65535" -                         name="covenant" -                         read_only="true" -                         top_pad="0" -                         width="280" /> -                    </panel> -                </accordion_tab> -                <accordion_tab -                 expanded="false" -                 layout="topleft" -                 name="sales_tab" -                 title="For Sale"> -                    <panel -                     follows="all" -                     height="300" -                     layout="topleft" -                     left="0" -                     top="0" -                     width="290"> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="sales_price_label" -                         top_pad="5" -                         value="Price:" -                         width="100" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="110" -                         name="sales_price" -                         top_delta="0" -                         width="140" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="area_label" -                         top_pad="5" -                         value="Area:" -                         width="100" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="110" -                         name="area" -                         top_delta="0" -                         width="140" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="traffic_label" -                         top_pad="5" -                         value="Traffic:" -                         width="100" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="110" -                         name="traffic" -                         top_delta="0" -                         width="140" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="primitives_label" -                         top_pad="5" -                         value="Primitives:" -                         width="100" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="110" -                         name="primitives" -                         top_delta="0" -                         width="140" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="parcel_scripts_label" -                         top_pad="5" -                         value="Scripts:" -                         width="100" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="110" -                         name="parcel_scripts" -                         top_delta="0" -                         width="140" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="terraform_limits_label" -                         top_pad="5" -                         value="Terraform limits:" -                         width="100" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="110" -                         name="terraform_limits" -                         top_delta="0" -                         width="140" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="subdivide_label" -                         top_pad="5" -                         value="Subdivide/Join ability:" -                         width="220" /> -                        <text_editor -                         bg_focus_color="DkGray2" -                         bg_readonly_color="DkGray2" -                         follows="left|top|right" -                         height="45" -                         layout="topleft" -                         left="10" -                         max_length="65535" -                         name="subdivide" -                         read_only="true" -                         top_pad="5" -                         width="245" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="resale_label" -                         top_pad="5" -                         value="ReSale ability:" -                         width="80" /> -                        <text_editor -                         bg_focus_color="DkGray2" -                         bg_readonly_color="DkGray2" -                         follows="left|top|right" -                         height="45" -                         layout="topleft" -                         left="10" -                         max_length="65535" -                         name="resale" -                         read_only="true" -                         top_pad="5" -                         width="245" /> -                        <text -                         follows="left|top" -                         height="15" -                         layout="topleft" -                         left="10" -                         name="sale_to_label" -                         top_pad="5" -                         value="For sale to:" -                         width="80" /> -                        <text -                         follows="left|top|right" -                         height="15" -                         layout="topleft" -                         left="90" -                         name="sale_to" -                         top_delta="0" -                         width="160" /> -                    </panel> -                </accordion_tab> -            </accordion> -        </panel> -    </scroll_container> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index 87ac5be74a..5aa53ab46b 100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -40,26 +40,14 @@ background_visible="true"       top_pad="10"       width="313" />      <panel -     class="panel_place_profile" -     filename="panel_place_profile.xml" +     class="panel_place_info" +     filename="panel_place_info.xml"       follows="all"       height="533"       layout="topleft"       left="0"       help_topic="places_info_tab" -     name="panel_place_profile" -     top="5" -     visible="false" -     width="313" /> -    <panel -     class="panel_landmark_info" -     filename="panel_landmark_info.xml" -     follows="all" -     height="533" -     layout="topleft" -     left="0" -     help_topic="places_info_tab" -     name="panel_landmark_info" +     name="panel_place_info"       top="5"       visible="false"       width="313" /> diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index c3a92f9d9a..5af7d7d674 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -157,7 +157,7 @@           value="http://librarianavengers.org"           width="280"           word_wrap="false" -         use_ellipses="true" +         use_elipsis="true"           />          <text           follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml index 4b2e901718..195b731531 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml @@ -36,7 +36,7 @@       text_color="white"       top="0"       value="(Loading...)" -     use_ellipses="true" +     use_elipsis="true"       width="275" />      <text       follows="top|left" diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml index 6171be034f..ab4ad94089 100644 --- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml @@ -15,14 +15,14 @@                            image_disabled_selected="ComboButton_Disabled_Selected" />    <gesture_combo_box.drop_down_button name="Drop Down Button"                                label="" -                              halign="center"                                hover_glow_amount="0.15"                                font="SansSerif"                                scale_image="true" -                              image_unselected="PushButton_Off" -                              image_selected="PushButton_Selected" -                              image_disabled="PushButton_Disabled" -                              image_disabled_selected="PushButton_Selected_Disabled" /> +                              pad_right="24" +                              image_unselected="DropDown_Off" +                              image_selected="DropDown_Selected" +                              image_disabled="DropDown_Disabled" +                              image_disabled_selected="DropDown_Disabled_Selected" />    <gesture_combo_box.combo_list bg_writeable_color="MenuDefaultBgColor"                                  scroll_bar_bg_visible="true" />    <gesture_combo_box.combo_editor name="Combo Text Entry" diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml deleted file mode 100644 index 725492052c..0000000000 --- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<!-- Derives from LLUICtrl --> -<talk_button> -  <!-- To make speak button look green when selected set: -    image_selected="SegmentedBtn_Left_Selected" -    image_unselected="SegmentedBtn_Left_Off" -  --> -  <speak_button -    name="left" -    label="Speak" -    label_selected="Speak" -    font="SansSerifSmall" -    tab_stop="false" -    is_toggle="true" -    picture_style="true" -    /> -  <show_button -    name="right" -    label="" -    left="0" -    top="0" -    right="20" -    bottom="0" -    tab_stop="false" -    is_toggle="true" -    picture_style="true" -    image_selected="ComboButton_Selected" -    image_unselected="ComboButton_Off" -    /> -  <monitor -    name="monitor" -    left="0" -    top="18" -    right="18" -    bottom="0" -    /> -</talk_button> | 
