FIRE-2512: Added inventory context menu option to send items to their default folder

Ansariel 2014-08-14 15:09:11 +02:00
parent 82e934fd28
commit 8902e6a84f
5 changed files with 105 additions and 0 deletions

View File

@ -673,6 +673,22 @@ void LLInvFVBridge::checkInventoryLinkReplace(menuentry_vec_t& items, menuentry_
}
// </FS:Ansariel>
// <FS:Ansariel> Move to default folder
void LLInvFVBridge::checkMoveToDefaultFolder(menuentry_vec_t& items, menuentry_vec_t& disables_items)
{
const LLInventoryObject* obj = getInventoryObject();
if (isAgentInventory() && !isOutboxFolder() && obj &&
obj->getActualType() != LLAssetType::AT_CATEGORY &&
obj->getActualType() != LLAssetType::AT_LINK_FOLDER &&
obj->getActualType() != LLAssetType::AT_LINK
)
{
items.push_back(std::string("Move to Default Folder"));
}
}
// </FS:Ansariel>
// Helper for commonly-used entries
void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
menuentry_vec_t &items,
@ -860,6 +876,9 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@ -4892,6 +4911,9 @@ void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@ -4965,6 +4987,9 @@ void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@ -5037,6 +5062,9 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@ -5364,6 +5392,9 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@ -5616,6 +5647,9 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@ -5674,6 +5708,9 @@ void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@ -6142,6 +6179,9 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@ -6396,6 +6436,9 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}
@ -6623,6 +6666,9 @@ void LLMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
// <FS:Ansariel> Inventory Links Replace
checkInventoryLinkReplace(items, disabled_items);
// <FS:Ansariel> Move to default folder
checkMoveToDefaultFolder(items, disabled_items);
hide_context_entries(menu, items, disabled_items);
}

View File

@ -175,6 +175,9 @@ protected:
// <FS:Ansariel> Inventory Links Replace
void checkInventoryLinkReplace(menuentry_vec_t& items, menuentry_vec_t& disables_items);
// <FS:Ansariel> Move to default folder
void checkMoveToDefaultFolder(menuentry_vec_t& items, menuentry_vec_t& disables_items);
virtual BOOL isItemPermissive() const;
static void changeItemParent(LLInventoryModel* model,
LLViewerInventoryItem* item,

View File

@ -1207,6 +1207,53 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
return;
}
// </FS:Ansariel>
// <FS:Ansariel> Move to default folder
if ("move_to_default_folder" == action)
{
std::set<LLFolderViewItem*> selected_items = root->getSelectionList();
std::set<LLFolderViewItem*>::iterator set_iter;
LLUUID outbox_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX);
LLUUID cof_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
for (set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter)
{
LLFolderViewItem* folder_item = *set_iter;
if (!folder_item)
{
continue;
}
LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem();
if (!bridge)
{
continue;
}
LLInventoryObject* obj = bridge->getInventoryObject();
if (!obj)
{
continue;
}
if (obj->getActualType() == LLAssetType::AT_CATEGORY)
{
continue;
}
if (gInventory.isObjectDescendentOf(obj->getUUID(), outbox_folder_id) ||
gInventory.isObjectDescendentOf(obj->getUUID(), cof_folder_id))
{
continue;
}
LLUUID target_cat_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(obj->getActualType()));
if (target_cat_id.notNull()
{
move_inventory_item(gAgentID, gAgentSessionID, obj->getUUID(), target_cat_id, obj->getName(), LLPointer<LLInventoryCallback>(NULL));
}
}
}
// </FS:Ansariel>
static const std::string change_folder_string = "change_folder_type_";
if (action.length() > change_folder_string.length() &&

View File

@ -68,6 +68,7 @@
<menu_item_call label="Links ersetzen" name="Replace Links"/>
<menu_item_call label="Löschen" name="Remove Link"/>
<menu_item_call label="Löschen" name="Delete"/>
<menu_item_call label="In Standardordner verschieben" name="Move to Default Folder"/>
<menu_item_call label="In Fundbüro verschieben" name="Move to Lost And Found"/>
<menu_item_call label="Systemordner löschen" name="Delete System Folder"/>
<menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/>

View File

@ -527,6 +527,14 @@
function="Inventory.DoToSelected"
parameter="delete" />
</menu_item_call>
<menu_item_call
label="Move to Default Folder"
layout="topleft"
name="Move to Default Folder">
<menu_item_call.on_click
function="Inventory.DoToSelected"
parameter="move_to_default_folder" />
</menu_item_call>
<menu_item_call
label="Move to Lost And Found"
layout="topleft"