From beca2373e15c0541e83f01abedfe7d6bfa469c8b Mon Sep 17 00:00:00 2001 From: Brian McBee Date: Sat, 8 Dec 2007 19:13:10 +0000 Subject: Allow moving, deleting, and restoring objects in inventory. Note: only tested in grid mode, and emptying trash is still not implemented. --- .../Region/Environment/Scenes/Scene.Inventory.cs | 40 ++++++++++++++++++++++ OpenSim/Region/Environment/Scenes/Scene.cs | 1 + 2 files changed, 41 insertions(+) (limited to 'OpenSim/Region/Environment') diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index ac504e1..e373eda 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -236,6 +236,46 @@ namespace OpenSim.Region.Environment.Scenes return asset; } + public void MoveInventoryItem(IClientAPI remoteClient,LLUUID folderID, LLUUID itemID, int length, string newName) + { + MainLog.Instance.Verbose("INVENTORY", "Moving item for " + remoteClient.AgentId.ToStringHyphenated()); + CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); + if (userInfo == null) + { + MainLog.Instance.Warn("INVENTORY", "Failed to find user " + remoteClient.AgentId.ToString()); + return; + } + + if (userInfo.RootFolder != null) + { + InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); + if (item != null) + { + if (newName != "") + { + item.inventoryName = newName; + } + item.parentFolderID = folderID; + userInfo.DeleteItem(remoteClient.AgentId, item); + + // TODO: preserve current permissions? + AddInventoryItem(remoteClient, item); + } + else + { + MainLog.Instance.Warn("INVENTORY", "Failed to find item " + itemID.ToString()); + return; + } + } + else + { + MainLog.Instance.Warn("INVENTORY", "Failed to find item " + itemID.ToString() + ", no root folder"); + return; + } + + + } + private void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID folderID, uint callbackID, AssetBase asset, uint nextOwnerMask) { diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index b733522..eb8a6a2 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -976,6 +976,7 @@ namespace OpenSim.Region.Environment.Scenes client.OnFetchInventory += CommsManager.UserProfileCacheService.HandleFetchInventory; client.OnUpdateInventoryItem += UpdateInventoryItemAsset; client.OnCopyInventoryItem += CopyInventoryItem; + client.OnMoveInventoryItem += MoveInventoryItem; client.OnAssetUploadRequest += CommsManager.TransactionsManager.HandleUDPUploadRequest; client.OnXferReceive += CommsManager.TransactionsManager.HandleXfer; client.OnRezScript += RezScript; -- cgit v1.1