Newly added device are now showing green. Removed devices are showing red.
Other devices are showing black. Devices in unknown state are showing purple.
1.1 --- a/FrmMain.cs Wed May 14 15:42:29 2014 +0200
1.2 +++ b/FrmMain.cs Wed May 14 16:37:44 2014 +0200
1.3 @@ -669,7 +669,8 @@
1.4 SetInputReportBufferSize,
1.5 AddDeviceToTreeView,
1.6 ResetDeviceTreeView,
1.7 - SelectDeviceInTreeView
1.8 + SelectDeviceInTreeView,
1.9 + CompleteDeviceTreeView
1.10 }
1.11
1.12 private enum ReportReadOrWritten
1.13 @@ -768,33 +769,86 @@
1.14 break;
1.15
1.16 case FormActions.AddDeviceToTreeView:
1.17 - //Build our node from our string array
1.18 - TreeNode newNode = new TreeNode(strings[0]);
1.19 - for (int i=1;i<strings.Length;i++)
1.20 {
1.21 - newNode.Nodes.Add(strings[i]);
1.22 - if (strings[i].StartsWith("Name: "))
1.23 + //Try and see if our device is already present
1.24 + TreeNode[] res = treeViewDevices.Nodes.Find(strings[0], false);
1.25 + foreach (TreeNode device in res)
1.26 {
1.27 - //Found our name property, update our node text
1.28 - newNode.Text = strings[i].Substring(6, strings[i].Length - 6);
1.29 + if (device.ForeColor == Color.Red)
1.30 + {
1.31 + //Device was removed and has now been added back
1.32 + device.ForeColor = Color.Green;
1.33 + }
1.34 + else
1.35 + {
1.36 + //Device was already there set back our device color to black
1.37 + device.ForeColor = Color.Black;
1.38 + }
1.39 }
1.40 +
1.41 + if (res.Length > 0)
1.42 + {
1.43 + //Our device is already there
1.44 + break;
1.45 + }
1.46 +
1.47 + //Build our node from our string array
1.48 + TreeNode newNode = new TreeNode(strings[0]);
1.49 + for (int i = 1; i < strings.Length; i++)
1.50 + {
1.51 + newNode.Nodes.Add(strings[i]);
1.52 + if (strings[i].StartsWith("Name: "))
1.53 + {
1.54 + //Found our name property, update our node text
1.55 + newNode.Text = strings[i].Substring(6, strings[i].Length - 6);
1.56 + }
1.57 + }
1.58 +
1.59 + //New device color is green
1.60 + newNode.ForeColor = Color.Green;
1.61 + newNode.Name = strings[0]; //Set ID as name to make sure we can find it
1.62 + treeViewDevices.Nodes.Add(newNode);
1.63 }
1.64 -
1.65 - newNode.Name = strings[0]; //Set ID as name to make sure we can find it
1.66 - treeViewDevices.Nodes.Add(newNode);
1.67 break;
1.68
1.69 case FormActions.ResetDeviceTreeView:
1.70 - treeViewDevices.Nodes.Clear();
1.71 + {
1.72 + //Mark all non removed/red device as purple/unknown
1.73 + foreach (TreeNode device in treeViewDevices.Nodes)
1.74 + {
1.75 + if (device.ForeColor != Color.Red)
1.76 + {
1.77 + device.ForeColor = Color.Purple;
1.78 + }
1.79 + }
1.80 + //treeViewDevices.Nodes.Clear();
1.81 + }
1.82 + break;
1.83 +
1.84 + case FormActions.CompleteDeviceTreeView:
1.85 + {
1.86 + //Our device list is now complete
1.87 + foreach (TreeNode device in treeViewDevices.Nodes)
1.88 + {
1.89 + //Purple devices need to be marked as red for removed
1.90 + if (device.ForeColor == Color.Purple)
1.91 + {
1.92 + device.ForeColor = Color.Red;
1.93 + }
1.94 + }
1.95 + }
1.96 break;
1.97
1.98 case FormActions.SelectDeviceInTreeView:
1.99 - treeViewDevices.SelectedNode = null;
1.100 - TreeNode[] res=treeViewDevices.Nodes.Find(strings[0], false);
1.101 - if (res.Length>0)
1.102 {
1.103 - treeViewDevices.SelectedNode = res[0];
1.104 - treeViewDevices.SelectedNode.ForeColor = Color.Blue;
1.105 + //treeViewDevices.SelectedNode = null;
1.106 + TreeNode[] res = treeViewDevices.Nodes.Find(strings[0], false);
1.107 + foreach (TreeNode device in res)
1.108 + {
1.109 + device.ForeColor = Color.Blue;
1.110 + //treeViewDevices.SelectedNode = res[0];
1.111 + //treeViewDevices.SelectedNode.ForeColor = Color.Blue;
1.112 + }
1.113 }
1.114
1.115
1.116 @@ -1431,6 +1485,10 @@
1.117 }
1.118 }
1.119
1.120 + //Complete our device TreeView
1.121 + MyMarshalDataToForm(FormActions.CompleteDeviceTreeView);
1.122 +
1.123 +
1.124 MyMarshalDataToForm(FormActions.AddItemToListBox, "Found " + usbDeviceCounter /*searcher.Get().Count*/ + " USB HID devices");
1.125
1.126 if (!_deviceDetected)