OSDN Git Service

More inventory improvements
authorLatif Khalifa <latifer@streamgrid.net>
Fri, 19 Jun 2009 12:58:43 +0000 (12:58 +0000)
committerLatif Khalifa <latifer@streamgrid.net>
Fri, 19 Jun 2009 12:58:43 +0000 (12:58 +0000)
git-svn-id: https://radegast.googlecode.com/svn/trunk@54 f7a694da-4d33-11de-9ad6-1127a62b9fcd

Radegast/Core/RadegastInstance.cs
Radegast/GUI/Consoles/Assets/Notecard.Designer.cs [moved from Radegast/GUI/Consoles/Notecard.Designer.cs with 100% similarity]
Radegast/GUI/Consoles/Assets/Notecard.cs [moved from Radegast/GUI/Consoles/Notecard.cs with 100% similarity]
Radegast/GUI/Consoles/Assets/Notecard.resx [moved from Radegast/GUI/Consoles/Notecard.resx with 100% similarity]
Radegast/GUI/Consoles/Assets/SLImageHandler.Designer.cs [moved from Radegast/GUI/Consoles/SLImageHandler.Designer.cs with 100% similarity]
Radegast/GUI/Consoles/Assets/SLImageHandler.cs [moved from Radegast/GUI/Consoles/SLImageHandler.cs with 96% similarity]
Radegast/GUI/Consoles/Assets/SLImageHandler.resx [moved from Radegast/GUI/Consoles/SLImageHandler.resx with 100% similarity]
Radegast/GUI/Consoles/Inventory/InventoryConsole.cs
Radegast/GUI/Consoles/Inventory/InventoryConsoleNodes.cs
Radegast/GUI/Dialogs/Objects.cs
Radegast/Radegast.csproj

index d669f69..9ffb1cc 100644 (file)
@@ -97,7 +97,7 @@ namespace Radegast
         {\r
             InitializeLoggingAndConfig();\r
 \r
-            Settings.PIPELINE_REFRESH_INTERVAL = 2000.0f;\r
+            // Settings.PIPELINE_REFRESH_INTERVAL = 2000.0f;\r
 \r
             client = new GridClient();\r
             client.Settings.ALWAYS_REQUEST_OBJECTS = true;\r
@@ -105,7 +105,7 @@ namespace Radegast
             client.Settings.OBJECT_TRACKING = true;\r
             client.Settings.ENABLE_SIMSTATS = true;\r
             client.Settings.FETCH_MISSING_INVENTORY = true;\r
-            client.Settings.MULTIPLE_SIMS = true;\r
+            client.Settings.MULTIPLE_SIMS = false;\r
             client.Settings.SEND_AGENT_THROTTLE = true;\r
             client.Settings.SEND_AGENT_UPDATES = true;\r
 \r
@@ -119,6 +119,7 @@ namespace Radegast
             client.Settings.LOGIN_TIMEOUT = 120 * 1000;\r
             client.Settings.SIMULATOR_TIMEOUT = 120 * 1000;\r
             client.Settings.USE_INTERPOLATION_TIMER = false;\r
+            client.Settings.MAX_CONCURRENT_TEXTURE_DOWNLOADS = 20;\r
 \r
             netcom = new RadegastNetcom(client);\r
             imageCache = new ImageCache();\r
similarity index 96%
rename from Radegast/GUI/Consoles/SLImageHandler.cs
rename to Radegast/GUI/Consoles/Assets/SLImageHandler.cs
index b0e9fb7..92b6a80 100644 (file)
@@ -85,7 +85,7 @@ namespace Radegast
                     }\r
                     else if (state == TextureRequestState.Progress)\r
                     {\r
-                        DisplayPartialImage(assetTexture);\r
+                        // DisplayPartialImage(assetTexture);\r
                     }\r
                 }, true);\r
             }\r
index 9df632f..c64880d 100644 (file)
 using System;\r
 using System.Collections;\r
 using System.Collections.Generic;\r
-using System.ComponentModel;\r
 using System.Drawing;\r
-using System.Data;\r
-using System.Linq;\r
-using System.Text;\r
 using System.Windows.Forms;\r
 using OpenMetaverse;\r
 \r
@@ -52,6 +48,8 @@ namespace Radegast
         private TreeNode invRootNode;\r
         private string newItemName = string.Empty;\r
         private List<UUID> fetchedFolders = new List<UUID>();\r
+        private System.Threading.Timer _EditTimer;\r
+        private TreeNode _EditNode;\r
 \r
         #region Construction and disposal\r
         public InventoryConsole(RadegastInstance instance)\r
@@ -71,6 +69,8 @@ namespace Radegast
             invRootNode = AddDir(null, Inventory.RootFolder);\r
             invTree.Nodes[0].Expand();\r
 \r
+            _EditTimer = new System.Threading.Timer(OnLabelEditTimer, null, System.Threading.Timeout.Infinite, System.Threading.Timeout.Infinite);\r
+\r
             // Callbacks\r
             client.Avatars.OnAvatarNames += new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
             client.Inventory.Store.OnInventoryObjectAdded += new Inventory.InventoryObjectAdded(Store_OnInventoryObjectAdded);\r
@@ -177,7 +177,7 @@ namespace Radegast
                 else // Update\r
                 {\r
                     currentNode.Tag = newObject;\r
-                    currentNode.Text = newObject.Name;\r
+                    currentNode.Text = ItemLabel(newObject, false);\r
                     currentNode.Name = newObject.Name;\r
                 }\r
             }\r
@@ -276,6 +276,27 @@ namespace Radegast
             }\r
         }\r
 \r
+        public string ItemLabel(InventoryBase invBase, bool returnRaw)\r
+        {\r
+            if (returnRaw || (invBase is InventoryFolder))\r
+                return invBase.Name;\r
+\r
+            InventoryItem item = (InventoryItem)invBase;\r
+\r
+            string raw = item.Name;\r
+\r
+            if ((item.Permissions.OwnerMask & PermissionMask.Modify) == 0)\r
+                raw += " (no modify)";\r
+\r
+            if ((item.Permissions.OwnerMask & PermissionMask.Copy) == 0)\r
+                raw += " (no copy)";\r
+\r
+            if ((item.Permissions.OwnerMask & PermissionMask.Transfer) == 0)\r
+                raw += " (no trasnfer)";\r
+\r
+            return raw;\r
+        }\r
+\r
         void invTree_MouseClick(object sender, MouseEventArgs e)\r
         {\r
             TreeNode node = invTree.GetNodeAt(new Point(e.X, e.Y));\r
@@ -344,7 +365,7 @@ namespace Radegast
                     }\r
 \r
 \r
-                    if (folder.PreferredType == AssetType.Unknown)\r
+                    //if (folder.PreferredType == AssetType.Unknown)\r
                     {\r
                         ctxInv.Items.Add(new ToolStripSeparator());\r
                         ctxItem = new ToolStripMenuItem("Delete", null, OnInvContextClick);\r
@@ -483,7 +504,7 @@ namespace Radegast
                 List<InventoryBase> contents = client.Inventory.Store.GetContents(f);\r
                 foreach (InventoryBase item in contents)\r
                 {\r
-                    UpdateBase(node, item);\r
+                    Store_OnInventoryObjectUpdated(item, item);\r
                 }\r
             }\r
             catch (Exception)\r
@@ -521,20 +542,62 @@ namespace Radegast
             }\r
         }\r
 \r
+        private bool _EditingNode = false;\r
+\r
+        private void OnLabelEditTimer(object sender)\r
+        {\r
+            if (_EditNode == null || !(_EditNode.Tag is InventoryBase))\r
+                return;\r
+\r
+            if (InvokeRequired)\r
+            {\r
+                BeginInvoke(new MethodInvoker(delegate()\r
+                    {\r
+                        OnLabelEditTimer(sender);\r
+                    }\r
+                ));\r
+                return;\r
+            }\r
+\r
+            Logger.DebugLog("In OnLabelEditTimer()");\r
+            _EditingNode = true;\r
+            _EditNode.Text = ItemLabel((InventoryBase)_EditNode.Tag, true);\r
+            _EditNode.BeginEdit();\r
+        }\r
+\r
         private void invTree_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)\r
         {\r
-            if (e.Node != null &&\r
-                e.Node.Tag is InventoryFolder &&\r
-                ((InventoryFolder)e.Node.Tag).PreferredType != AssetType.Unknown)\r
+            if (e.Node == null ||\r
+                !(e.Node.Tag is InventoryBase) ||\r
+                (e.Node.Tag is InventoryFolder && ((InventoryFolder)e.Node.Tag).PreferredType != AssetType.Unknown)\r
+                )\r
+            {\r
+                e.CancelEdit = true;\r
+                return;\r
+            }\r
+\r
+            if (_EditingNode)\r
+            {\r
+                _EditingNode = false;\r
+            }\r
+            else\r
             {\r
                 e.CancelEdit = true;\r
+                _EditNode = e.Node;\r
+                _EditTimer.Change(20, System.Threading.Timeout.Infinite);\r
             }\r
         }\r
 \r
         private void invTree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)\r
         {\r
+            Logger.DebugLog("In invTree_AfterLabelEdit()");\r
+\r
             if (string.IsNullOrEmpty(e.Label))\r
             {\r
+                if (e.Node.Tag is InventoryBase)\r
+                {\r
+                    e.Node.Text = ItemLabel((InventoryBase)e.Node.Tag, false);\r
+                }\r
                 e.CancelEdit = true;\r
                 return;\r
             }\r
@@ -549,6 +612,7 @@ namespace Radegast
             {\r
                 InventoryItem item = (InventoryItem)e.Node.Tag;\r
                 item.Name = e.Label;\r
+                e.Node.Text = ItemLabel((InventoryBase)item, false);\r
                 client.Inventory.MoveItem(item.UUID, item.ParentUUID, item.Name);\r
             }\r
 \r
index 8ff7233..1cfb561 100644 (file)
@@ -93,27 +93,6 @@ namespace Radegast
             }\r
         }\r
 \r
-        TreeNode UpdateBase(TreeNode parent, InventoryBase obj)\r
-        {\r
-            TreeNode existing = null;\r
-            foreach (TreeNode node in parent.Nodes)\r
-            {\r
-                if (node.Tag is InventoryBase && ((InventoryBase)node.Tag).UUID == obj.UUID)\r
-                {\r
-                    existing = node;\r
-                    break;\r
-                }\r
-            }\r
-\r
-            if (existing != null)\r
-            {\r
-                parent.Nodes.Remove(existing);\r
-            }\r
-\r
-            return AddBase(parent, obj);\r
-\r
-        }\r
-\r
         TreeNode AddDir(TreeNode parentNode, InventoryFolder f)\r
         {\r
             TreeNode dirNode = new TreeNode();\r
@@ -146,7 +125,7 @@ namespace Radegast
         {\r
             TreeNode itemNode = new TreeNode();\r
             itemNode.Name = item.Name;\r
-            itemNode.Text = item.Name;\r
+            itemNode.Text = ItemLabel(item, false);\r
             itemNode.Tag = item;\r
             int img = -1;\r
             if (item is InventoryWearable)\r
index ac5d149..4afb0ee 100644 (file)
 using System;\r
 using System.Collections;\r
 using System.Collections.Generic;\r
-using System.ComponentModel;\r
-using System.Data;\r
-using System.Drawing;\r
 using System.Text;\r
-using System.Threading;\r
 using System.Timers;\r
-using System.Text.RegularExpressions;\r
 using System.Windows.Forms;\r
 using OpenMetaverse;\r
 \r
index 196492e..3612737 100644 (file)
     <Compile Include="GUI\Consoles\MasterTab.Designer.cs">\r
       <DependentUpon>MasterTab.cs</DependentUpon>\r
     </Compile>\r
-    <Compile Include="GUI\Consoles\Notecard.cs">\r
+    <Compile Include="GUI\Consoles\Assets\Notecard.cs">\r
       <SubType>UserControl</SubType>\r
     </Compile>\r
-    <Compile Include="GUI\Consoles\Notecard.Designer.cs">\r
+    <Compile Include="GUI\Consoles\Assets\Notecard.Designer.cs">\r
       <DependentUpon>Notecard.cs</DependentUpon>\r
     </Compile>\r
     <Compile Include="GUI\Consoles\OutfitTextures.cs">\r
     <Compile Include="GUI\Consoles\Preferences\PrefTextConsole.Designer.cs">\r
       <DependentUpon>PrefTextConsole.cs</DependentUpon>\r
     </Compile>\r
-    <Compile Include="GUI\Consoles\SLImageHandler.cs">\r
+    <Compile Include="GUI\Consoles\Assets\SLImageHandler.cs">\r
       <SubType>UserControl</SubType>\r
     </Compile>\r
-    <Compile Include="GUI\Consoles\SLImageHandler.Designer.cs">\r
+    <Compile Include="GUI\Consoles\Assets\SLImageHandler.Designer.cs">\r
       <DependentUpon>SLImageHandler.cs</DependentUpon>\r
     </Compile>\r
     <Compile Include="GUI\Dialogs\DebugLog.cs">\r
       <DependentUpon>MasterTab.cs</DependentUpon>\r
       <SubType>Designer</SubType>\r
     </EmbeddedResource>\r
-    <EmbeddedResource Include="GUI\Consoles\Notecard.resx">\r
+    <EmbeddedResource Include="GUI\Consoles\Assets\Notecard.resx">\r
       <DependentUpon>Notecard.cs</DependentUpon>\r
       <SubType>Designer</SubType>\r
     </EmbeddedResource>\r
       <SubType>Designer</SubType>\r
       <DependentUpon>PrefTextConsole.cs</DependentUpon>\r
     </EmbeddedResource>\r
-    <EmbeddedResource Include="GUI\Consoles\SLImageHandler.resx">\r
+    <EmbeddedResource Include="GUI\Consoles\Assets\SLImageHandler.resx">\r
       <DependentUpon>SLImageHandler.cs</DependentUpon>\r
       <SubType>Designer</SubType>\r
     </EmbeddedResource>\r