diff options
| -rw-r--r-- | indra/newview/llsidepaneliteminfo.cpp | 102 | ||||
| -rw-r--r-- | indra/newview/llsidepaneliteminfo.h | 6 | 
2 files changed, 83 insertions, 25 deletions
| diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp index 814508daa9..94fe95d215 100644 --- a/indra/newview/llsidepaneliteminfo.cpp +++ b/indra/newview/llsidepaneliteminfo.cpp @@ -157,11 +157,12 @@ void LLSidepanelItemInfo::reset()  void LLSidepanelItemInfo::refresh()  { -	LLInventoryItem* item = findItem(); +	LLViewerInventoryItem* item = findItem();  	if(item)  	{  		refreshFromItem(item);  		updateVerbs(); +		return;  	}  	else  	{ @@ -170,11 +171,8 @@ void LLSidepanelItemInfo::refresh()  			setIsEditing(FALSE);  		}  	} -	 -	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); -	bool is_editable = item && (item->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id); -	if (!getIsEditing() || !is_editable) +	if (!getIsEditing())  	{  		const std::string no_item_names[]={  			"LabelItemName", @@ -212,7 +210,7 @@ void LLSidepanelItemInfo::refresh()  		}  	} -	if (!is_editable) +	if (!item)  	{  		const std::string no_edit_mode_names[]={  			"BtnCreator", @@ -227,24 +225,26 @@ void LLSidepanelItemInfo::refresh()  	updateVerbs();  } -void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item) +void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)  {  	////////////////////////  	// PERMISSIONS LOOKUP //  	////////////////////////  	// do not enable the UI for incomplete items. -	LLViewerInventoryItem* i = (LLViewerInventoryItem*)item; -	BOOL is_complete = i->isComplete(); -	const BOOL cannot_restrict_permissions = LLInventoryType::cannotRestrictPermissions(i->getInventoryType()); -	const BOOL is_calling_card = (i->getInventoryType() == LLInventoryType::IT_CALLINGCARD); +	BOOL is_complete = item->isComplete(); +	const BOOL cannot_restrict_permissions = LLInventoryType::cannotRestrictPermissions(item->getInventoryType()); +	const BOOL is_calling_card = (item->getInventoryType() == LLInventoryType::IT_CALLINGCARD);  	const LLPermissions& perm = item->getPermissions();  	const BOOL can_agent_manipulate = gAgent.allowOperation(PERM_OWNER, perm,   															GP_OBJECT_MANIPULATE);  	const BOOL can_agent_sell = gAgent.allowOperation(PERM_OWNER, perm,   													  GP_OBJECT_SET_SALE) &&  		!cannot_restrict_permissions; -	const BOOL is_link = i->getIsLinkType(); +	const BOOL is_link = item->getIsLinkType(); +	 +	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); +	bool not_in_trash = item && (item->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id);  	// You need permission to modify the object to modify an inventory  	// item in it. @@ -261,7 +261,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item)  	//////////////////////  	BOOL is_modifiable = gAgent.allowOperation(PERM_MODIFY, perm,  											   GP_OBJECT_MANIPULATE) -		&& is_obj_modify && is_complete; +		&& is_obj_modify && is_complete && not_in_trash;  	childSetEnabled("LabelItemNameTitle",TRUE);  	childSetEnabled("LabelItemName",is_modifiable && !is_calling_card); // for now, don't allow rename of calling cards @@ -338,6 +338,64 @@ void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item)  		LLStringUtil::format (timeStr, substitution);  		childSetText ("LabelAcquiredDate", timeStr);  	} +	 +	///////////////////////////////////// +	// PERMISSIONS AND SALE ITEM HIDING +	///////////////////////////////////// +	 +	const std::string perm_and_sale_items[]={ +		"perms_inv", +		"OwnerLabel", +		"perm_modify", +		"CheckOwnerModify", +		"CheckOwnerCopy", +		"CheckOwnerTransfer", +		"GroupLabel", +		"CheckShareWithGroup", +		"AnyoneLabel", +		"CheckEveryoneCopy", +		"NextOwnerLabel", +		"CheckNextOwnerModify", +		"CheckNextOwnerCopy", +		"CheckNextOwnerTransfer", +		"CheckPurchase", +		"SaleLabel", +		"RadioSaleType", +		"combobox sale copy", +		"Edit Cost", +		"TextPrice" +	}; +	 +	const std::string debug_items[]={ +		"BaseMaskDebug", +		"OwnerMaskDebug", +		"GroupMaskDebug", +		"EveryoneMaskDebug", +		"NextMaskDebug" +	}; +	 +	// Hide permissions checkboxes and labels and for sale info if in the trash +	// or ui elements don't apply to these objects and return from function +	if (!not_in_trash || cannot_restrict_permissions) +	{ +		for(size_t t=0; t<LL_ARRAY_SIZE(perm_and_sale_items); ++t) +		{ +			childSetVisible(perm_and_sale_items[t],false); +		} +		 +		for(size_t t=0; t<LL_ARRAY_SIZE(debug_items); ++t) +		{ +			childSetVisible(debug_items[t],false); +		} +		return; +	} +	else // Make sure perms and sale ui elements are visible +	{ +		for(size_t t=0; t<LL_ARRAY_SIZE(perm_and_sale_items); ++t) +		{ +			childSetVisible(perm_and_sale_items[t],true); +		} +	}  	///////////////////////  	// OWNER PERMISSIONS // @@ -541,7 +599,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item)  void LLSidepanelItemInfo::onClickCreator()  { -	LLInventoryItem* item = findItem(); +	LLViewerInventoryItem* item = findItem();  	if(!item) return;  	if(!item->getCreatorUUID().isNull())  	{ @@ -552,7 +610,7 @@ void LLSidepanelItemInfo::onClickCreator()  // static  void LLSidepanelItemInfo::onClickOwner()  { -	LLInventoryItem* item = findItem(); +	LLViewerInventoryItem* item = findItem();  	if(!item) return;  	if(item->getPermissions().isGroupOwned())  	{ @@ -568,7 +626,7 @@ void LLSidepanelItemInfo::onClickOwner()  void LLSidepanelItemInfo::onCommitName()  {  	//llinfos << "LLSidepanelItemInfo::onCommitName()" << llendl; -	LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem(); +	LLViewerInventoryItem* item = findItem();  	if(!item)  	{  		return; @@ -604,7 +662,7 @@ void LLSidepanelItemInfo::onCommitName()  void LLSidepanelItemInfo::onCommitDescription()  {  	//llinfos << "LLSidepanelItemInfo::onCommitDescription()" << llendl; -	LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem(); +	LLViewerInventoryItem* item = findItem();  	if(!item) return;  	LLLineEditor* labelItemDesc = getChild<LLLineEditor>("LabelItemDesc"); @@ -642,7 +700,7 @@ void LLSidepanelItemInfo::onCommitDescription()  void LLSidepanelItemInfo::onCommitPermissions()  {  	//llinfos << "LLSidepanelItemInfo::onCommitPermissions()" << llendl; -	LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem(); +	LLViewerInventoryItem* item = findItem();  	if(!item) return;  	LLPermissions perm(item->getPermissions()); @@ -751,7 +809,7 @@ void LLSidepanelItemInfo::onCommitSaleType()  void LLSidepanelItemInfo::updateSaleInfo()  { -	LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem(); +	LLViewerInventoryItem* item = findItem();  	if(!item) return;  	LLSaleInfo sale_info(item->getSaleInfo());  	if(!gAgent.allowOperation(PERM_TRANSFER, item->getPermissions(), GP_OBJECT_SET_SALE)) @@ -851,9 +909,9 @@ void LLSidepanelItemInfo::updateSaleInfo()  	}  } -LLInventoryItem* LLSidepanelItemInfo::findItem() const +LLViewerInventoryItem* LLSidepanelItemInfo::findItem() const  { -	LLInventoryItem* item = NULL; +	LLViewerInventoryItem* item = NULL;  	if(mObjectID.isNull())  	{  		// it is in agent inventory @@ -864,7 +922,7 @@ LLInventoryItem* LLSidepanelItemInfo::findItem() const  		LLViewerObject* object = gObjectList.findObject(mObjectID);  		if(object)  		{ -			item = (LLInventoryItem*)object->getInventoryObject(mItemID); +			item = static_cast<LLViewerInventoryItem*>(object->getInventoryObject(mItemID));  		}  	}  	return item; diff --git a/indra/newview/llsidepaneliteminfo.h b/indra/newview/llsidepaneliteminfo.h index 21002327bc..e6dbf400ee 100644 --- a/indra/newview/llsidepaneliteminfo.h +++ b/indra/newview/llsidepaneliteminfo.h @@ -41,7 +41,7 @@  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  class LLButton; -class LLInventoryItem; +class LLViewerInventoryItem;  class LLItemPropertiesObserver;  class LLViewerObject;  class LLPermissions; @@ -63,10 +63,10 @@ protected:  	/*virtual*/ void refresh();  	/*virtual*/ void save(); -	LLInventoryItem* findItem() const; +	LLViewerInventoryItem* findItem() const;  	LLViewerObject*  findObject() const; -	void refreshFromItem(LLInventoryItem* item); +	void refreshFromItem(LLViewerInventoryItem* item);  private:  	LLUUID mItemID; 	// inventory UUID for the inventory item. | 
