public ContentDirectoryInfo(RemoteContentDirectory contentDirectory) { if (contentDirectory == null) { throw new ArgumentNullException("contentDirectory"); } this.content_directry = contentDirectory; this.store = new TreeStore(typeof(ObjectRow)); var objects = new TreeView(); var column = new TreeViewColumn(); var cell = new CellRendererText(); column.PackStart(cell, true); column.SetCellDataFunc(cell, RenderObject); column.Title = "Objects"; objects.AppendColumn(column); objects.Selection.Changed += HandleObjectsSelectionChanged; objects.RowExpanded += HandleObjectsRowExpanded; objects.Model = store; var root = contentDirectory.GetRootObject(); store.AppendValues(new ObjectRow(root)); TreeIter iter; store.GetIterFirst(out iter); store.AppendValues(iter, loading); Add(objects); }
public ContentDirectoryInfo (RemoteContentDirectory contentDirectory) { if (contentDirectory == null) { throw new ArgumentNullException ("contentDirectory"); } this.content_directry = contentDirectory; this.store = new TreeStore (typeof (ObjectRow)); var objects = new TreeView (); var column = new TreeViewColumn (); var cell = new CellRendererText (); column.PackStart (cell, true); column.SetCellDataFunc (cell, RenderObject); column.Title = "Objects"; objects.AppendColumn (column); objects.Selection.Changed += HandleObjectsSelectionChanged; objects.RowExpanded += HandleObjectsRowExpanded; objects.Model = store; var root = contentDirectory.GetRootObject (); store.AppendValues (new ObjectRow (root)); TreeIter iter; store.GetIterFirst (out iter); store.AppendValues (iter, loading); Add (objects); }
void Parse(Device device, ContentDirectoryController content_directory) { RemoteContentDirectory remote_dir = new RemoteContentDirectory(content_directory); DateTime begin = DateTime.Now; bool recursive_browse = !content_directory.CanSearch; try { Container root = remote_dir.GetRootObject(); if (!recursive_browse) { try { Log.Debug("Content directory is searchable, let's search"); HandleResults <MusicTrack> (remote_dir.Search <MusicTrack>(root, visitor => visitor.VisitDerivedFrom("upnp:class", "object.item.audioItem.musicTrack"), new ResultsSettings()), remote_dir, chunk => { List <MusicTrack> music_tracks = new List <MusicTrack>(); foreach (var item in chunk) { music_tracks.Add(item as MusicTrack); } AddMusic(music_tracks); }); HandleResults <VideoItem> (remote_dir.Search <VideoItem>(root, visitor => visitor.VisitDerivedFrom("upnp:class", "object.item.videoItem"), new ResultsSettings()), remote_dir, chunk => { List <VideoItem> video_tracks = new List <VideoItem>(); foreach (var item in chunk) { video_tracks.Add(item as VideoItem); } AddVideo(video_tracks); }); } catch (System.InvalidCastException exception) { Log.Exception(exception); recursive_browse = true; } } if (recursive_browse) { Log.Debug("Content directory is not searchable, let's browse recursively"); List <MusicTrack> music_tracks = new List <MusicTrack> (); List <VideoItem> video_tracks = new List <VideoItem> (); foreach (var hierarchy in FindBrowseQuirks(device)) { TraverseContainer(remote_dir, root, hierarchy, 0, music_tracks, video_tracks); } if (music_tracks.Count > 0) { AddMusic(music_tracks); } if (video_tracks.Count > 0) { AddVideo(video_tracks); } } } catch (Exception exception) { Log.Exception(exception); } Log.Debug("Found all items on the service, took " + (DateTime.Now - begin).ToString()); }