diff options
Diffstat (limited to 'indra/newview/llsidepaneliteminfo.cpp')
-rw-r--r-- | indra/newview/llsidepaneliteminfo.cpp | 109 |
1 files changed, 86 insertions, 23 deletions
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp index 1965e634b6..0275736f6d 100644 --- a/indra/newview/llsidepaneliteminfo.cpp +++ b/indra/newview/llsidepaneliteminfo.cpp @@ -109,9 +109,9 @@ BOOL LLSidepanelItemInfo::postBuild() { LLSidepanelInventorySubpanel::postBuild(); - childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("LabelItemName",&LLTextValidate::validateASCIIPrintableNoPipe); getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this)); - childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("LabelItemDesc",&LLTextValidate::validateASCIIPrintableNoPipe); getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this)); // Creator information getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickCreator,this)); @@ -157,22 +157,22 @@ void LLSidepanelItemInfo::reset() void LLSidepanelItemInfo::refresh() { - LLInventoryItem* item = findItem(); + LLViewerInventoryItem* item = findItem(); if(item) { refreshFromItem(item); updateVerbs(); + return; } else { if (getIsEditing()) { setIsEditing(FALSE); - return; } } - if (!getIsEditing() || !item) + if (!getIsEditing()) { const std::string no_item_names[]={ "LabelItemName", @@ -225,24 +225,29 @@ void LLSidepanelItemInfo::refresh() updateVerbs(); } -void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item) +void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item) { //////////////////////// // PERMISSIONS LOOKUP // //////////////////////// + llassert(item); + if (!item) return; + // 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); + GP_OBJECT_MANIPULATE); const BOOL can_agent_sell = gAgent.allowOperation(PERM_OWNER, perm, - GP_OBJECT_SET_SALE) && + 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->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id); // You need permission to modify the object to modify an inventory // item in it. @@ -259,7 +264,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 @@ -336,6 +341,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 // @@ -539,7 +602,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item) void LLSidepanelItemInfo::onClickCreator() { - LLInventoryItem* item = findItem(); + LLViewerInventoryItem* item = findItem(); if(!item) return; if(!item->getCreatorUUID().isNull()) { @@ -550,7 +613,7 @@ void LLSidepanelItemInfo::onClickCreator() // static void LLSidepanelItemInfo::onClickOwner() { - LLInventoryItem* item = findItem(); + LLViewerInventoryItem* item = findItem(); if(!item) return; if(item->getPermissions().isGroupOwned()) { @@ -566,7 +629,7 @@ void LLSidepanelItemInfo::onClickOwner() void LLSidepanelItemInfo::onCommitName() { //llinfos << "LLSidepanelItemInfo::onCommitName()" << llendl; - LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem(); + LLViewerInventoryItem* item = findItem(); if(!item) { return; @@ -602,7 +665,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"); @@ -640,7 +703,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()); @@ -749,7 +812,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)) @@ -849,9 +912,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 @@ -862,7 +925,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; |