Newly added device are now showing green. Removed devices are showing red.
authorsl
Wed, 14 May 2014 16:37:44 +0200 (2014-05-14)
changeset 40220435cf48a
parent 3 f5e6a5b8a56a
child 5 8ea7a7e29c4d
Newly added device are now showing green. Removed devices are showing red.
Other devices are showing black. Devices in unknown state are showing purple.
FrmMain.cs
     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)