private void searchButton_Click(object sender, System.EventArgs e) { mediaListView.Items.Clear(); foreach (TreeNode node in cdsRootNode.Nodes) { if (node.Tag.GetType() == typeof(CpRootContainer)) { uint totalMatches; CpRootContainer rootContainer = (CpRootContainer)node.Tag; IList results = rootContainer.Search(new MediaComparer("dc:title contains \"" + searchTextBox.Text + "\""), 0, 100000, out totalMatches); mediaListView.BeginUpdate(); foreach (IUPnPMedia item in results) { string artist = ""; if (item.MergedProperties[CommonPropertyNames.creator] != null && item.MergedProperties[CommonPropertyNames.creator].Count > 0) { artist = item.MergedProperties[CommonPropertyNames.creator][0].ToString(); } string size = ""; if (item.Resources.Length > 0) { MediaResource res = (MediaResource)item.Resources[0]; //size = BuildSizeString(long.Parse(res.Size.ToString())); if (res.Size.IsValid) { size = BuildSizeString((long)res.Size.m_Value); //BuildSizeString(long.Parse(res.Size.ToString())); } } int icon = 4; string classtype = ""; if (item.MergedProperties[CommonPropertyNames.Class] != null && item.MergedProperties[CommonPropertyNames.Class].Count > 0) { classtype = item.MergedProperties[CommonPropertyNames.Class][0].ToString(); switch (classtype) { case "object.container": case "object.container.storageFolder": icon = 2; break; case "object.item": icon = 8; break; case "object.item.imageItem": case "object.item.imageItem.photo": icon = 7; break; case "object.item.videoItem": case "object.item.videoItem.movie": icon = 6; break; case "object.item.audioItem": case "object.item.audioItem.musicTrack": icon = 5; break; } } ListViewItem l = new ListViewItem(new string[] { item.Title, artist, size }, icon); l.Tag = item; mediaListView.Items.Add(l); } mediaListView.EndUpdate(); } } }
private void OnAllRootsContainerChanged(CpRootContainer sender, CpMediaContainer thisChanged) { IncrementalFillMediaList(); }