/// <summary> /// Updates the data in the control from its item. /// </summary> protected override void UpdateData() { StringBuilder lsbInfo = new StringBuilder(); cgMain.Device = null; if (miItem != null) { UPnPDeviceTreeItem ldiItem = (UPnPDeviceTreeItem)miItem; Device ldDevice = ((Device)(miItem.LinkedObject)); DeviceDescription lddDescription = ldDevice.GetDescription(ldDevice.RootDeviceDescription()); lsbInfo.AppendLine(AdapterAddressInformation(ldDevice)); lsbInfo.AppendLine(lddDescription.ToString()); lsbInfo.AppendLine(); lsbInfo.AppendLine(ldDevice.ToString()); foreach (var lsPropertyName in lddDescription.GetUsedPropertyNames()) { dgProperties.Rows.Add(csYes, lsPropertyName, lddDescription.GetPropertyString(lsPropertyName)); } foreach (var lkvProperty in lddDescription.GetUnusedProperties()) { dgProperties.Rows.Add(csNo, lkvProperty.Key, lkvProperty.Value); } cgMain.Device = ldDevice; } rtbInfo.Text = lsbInfo.ToString(); }
/// <summary> /// Removes a device from the tree view. /// </summary> /// <param name="device">The device to remove.</param> public void RemoveDevice(Device device) { TreeNode[] lnFoundNodes = this.Nodes.Find(UPnPDeviceTreeItem.KeyFor(device), true); foreach (TreeNode lnNode in lnFoundNodes) { lnNode.Remove(); } }
/// <summary> /// Gets a tree node collection for a device. /// </summary> /// <param name="device">The device to get the collection for.</param> /// <returns>The tree node collection for the device, or null if not found.</returns> protected TreeNodeCollection GetDeviceNodeFor(Device device) { List <Device> ldDevices = new List <Device>(); // Build device heirarchy list Device ldParent = device; do { ldDevices.Insert(0, ldParent); } while ((ldParent = ldParent.ParentDevice) != null); // Find or add each device to the list TreeNodeCollection lnCurrentNodes = this.Nodes; bool lbAdding = false; foreach (Device ldDevice in ldDevices) { // Have we found it already if (!lbAdding) { TreeNode[] lnFoundNodes = lnCurrentNodes.Find(UPnPDeviceTreeItem.KeyFor(ldDevice), false); if (lnFoundNodes.Length == 1) { lnCurrentNodes = lnFoundNodes[0].Nodes; } else { lbAdding = true; } } // Are we adding already if (lbAdding) { lbAdding = true; lnCurrentNodes = AddUPnPItem(lnCurrentNodes, new UPnPDeviceTreeItem(ldDevice)).Nodes; } } // Return the last collection of nodes for the last node added / found return(lnCurrentNodes); }