public ItemContainerDreamboxRoot(string title, string path, ItemContainer parent) : base(title, path, parent) { }
public override void BrowseDirectChildren(XmlWriter xmlWriter, MediaSettings settings, string host, string idParams, HashSet <string> filterSet, uint startingIndex, uint requestedCount, string sortCriteria, out string numberReturned, out string totalMatches, ItemContainer skippedItem = null) { IEnumerable <Item> items; switch (idParams) { case AudioIndex: items = this.Items.Where(a => a.IsType(MediaType.Audio)); break; case ImageIndex: items = this.Items.Where(a => a.IsType(MediaType.Image)); break; case VideoIndex: items = this.Items.Where(a => a.IsType(MediaType.Video)); break; default: items = this.Items; break; } totalMatches = items.Count().ToString(); if (totalMatches == "1") { //Ak je jediny prvok adresar - vynecha sa a zobrazi sa obsah nasledovnika ItemContainer child = items.OfType <ItemContainer>().FirstOrDefault(); if (child != null) { child.BrowseDirectChildren(xmlWriter, settings, host, idParams, filterSet, startingIndex, requestedCount, sortCriteria, out numberReturned, out totalMatches, skippedItem == null ? this : skippedItem); return; } } foreach (string sortCrit in sortCriteria.ToLower().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { switch (sortCrit) { case "+dc:title": items = (items is IOrderedEnumerable <Item>) ? ((IOrderedEnumerable <Item>)items).ThenBy(a => a.Title) : items.OrderBy(a => a.Title); break; case "-dc:title": items = (items is IOrderedEnumerable <Item>) ? ((IOrderedEnumerable <Item>)items).ThenByDescending(a => a.Title) : items.OrderByDescending(a => a.Title); break; case "+dc:date": items = (items is IOrderedEnumerable <Item>) ? ((IOrderedEnumerable <Item>)items).ThenBy(a => a.Date.Date) : items.OrderBy(a => a.Date.Date); break; case "-dc:date": items = (items is IOrderedEnumerable <Item>) ? ((IOrderedEnumerable <Item>)items).ThenByDescending(a => a.Date.Date) : items.OrderByDescending(a => a.Date.Date); break; default: break; } } uint count = 0; requestedCount = (requestedCount == 0) ? int.MaxValue : requestedCount; foreach (Item item in items.Skip((int)startingIndex).Take((int)requestedCount)) { item.BrowseMetadata(xmlWriter, settings, host, idParams, filterSet, skippedItem == null ? this.Id : skippedItem.Id); count++; } numberReturned = count.ToString(); }
public override void BrowseWebDirectChildren(XmlWriter xmlWriter, MediaSettings settings, string idParams) { IEnumerable <Item> items; MediaType itemsType; switch (idParams) { case AudioIndex: items = this.Items.Where(a => a.IsType(MediaType.Audio)); itemsType = MediaType.Audio; break; case ImageIndex: items = this.Items.Where(a => a.IsType(MediaType.Image)); itemsType = MediaType.Image; break; case VideoIndex: items = this.Items.Where(a => a.IsType(MediaType.Video)); itemsType = MediaType.Video; break; default: return; } if (items.Count() == 1) { //Ak je jediny prvok adresar - vynecha sa a zobrazi sa obsah nasledovnika ItemContainer child = items.OfType <ItemContainer>().FirstOrDefault(); if (child != null) { child.BrowseWebDirectChildren(xmlWriter, settings, idParams); return; } } xmlWriter.WriteStartElement("div"); xmlWriter.WriteAttributeString("id", "main_content"); xmlWriter.WriteStartElement("script"); xmlWriter.WriteAttributeString("type", "text/javascript"); xmlWriter.WriteValue("\r\n//"); xmlWriter.WriteCData(string.Format(@" $(function () {{ {0} $('.libPlayButton div > a').button().next() .button({{ icons: {{ primary: 'ui-icon-triangle-1-s' }}, text: false }}) .click(function() {{ $(this).parent().parent().children('ul').show().position({{ my: 'left top', at: 'left bottom', of: $(this) }}); return false; }}).parent() .buttonset(); $('.libPlayButton ul').menu().hide(); $('.libPlayButton').hover(null, function() {{ $(this).children('ul').fadeOut('fast'); }}); }}); //", (itemsType == MediaType.Image) ? string.Format("$('.libPlayButton div a:first-child').lightBox({{ txtImage: '{0}', txtOf: '{1}', maxHeight: screen.height * 0.8, maxWidth: screen.width * 0.8 }});", LanguageResource.Photo, LanguageResource.Of) : string.Empty)); xmlWriter.WriteValue("\r\n"); xmlWriter.WriteEndElement(); xmlWriter.WriteStartElement("table"); switch (itemsType) { case MediaType.Audio: { xmlWriter.WriteStartElement("thead"); xmlWriter.WriteStartElement("tr"); xmlWriter.WriteStartElement("th"); xmlWriter.WriteAttributeString("width", "110"); xmlWriter.WriteFullEndElement(); xmlWriter.WriteStartElement("th"); xmlWriter.WriteAttributeString("width", "50"); xmlWriter.WriteFullEndElement(); xmlWriter.WriteElementString("th", LanguageResource.Title); xmlWriter.WriteElementString("th", LanguageResource.Duration); xmlWriter.WriteElementString("th", LanguageResource.Artist); xmlWriter.WriteElementString("th", LanguageResource.Album); xmlWriter.WriteElementString("th", LanguageResource.Genre); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); break; } case MediaType.Image: { xmlWriter.WriteStartElement("thead"); xmlWriter.WriteStartElement("tr"); xmlWriter.WriteStartElement("th"); xmlWriter.WriteAttributeString("width", "110"); xmlWriter.WriteFullEndElement(); xmlWriter.WriteStartElement("th"); xmlWriter.WriteAttributeString("width", "50"); xmlWriter.WriteFullEndElement(); xmlWriter.WriteElementString("th", LanguageResource.Title); xmlWriter.WriteStartElement("th"); xmlWriter.WriteAttributeString("width", "90"); xmlWriter.WriteValue(LanguageResource.Resolution); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); break; } case MediaType.Video: { xmlWriter.WriteStartElement("thead"); xmlWriter.WriteStartElement("tr"); xmlWriter.WriteStartElement("th"); xmlWriter.WriteAttributeString("width", "110"); xmlWriter.WriteFullEndElement(); xmlWriter.WriteStartElement("th"); xmlWriter.WriteAttributeString("width", "50"); xmlWriter.WriteFullEndElement(); xmlWriter.WriteElementString("th", LanguageResource.Title); xmlWriter.WriteElementString("th", LanguageResource.Duration); xmlWriter.WriteElementString("th", LanguageResource.Resolution); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); break; } } xmlWriter.WriteStartElement("tbody"); WriteBackFolder(xmlWriter, GetParentItem(itemsType), idParams); foreach (Item item in items.OrderBy(a => !(a.IsType(MediaType.Other))).ThenBy(a => a.Title)) { item.BrowseWebMetadata(xmlWriter, settings, idParams); } xmlWriter.WriteFullEndElement(); xmlWriter.WriteFullEndElement(); //table xmlWriter.WriteFullEndElement(); //div #main_content }
public override void RefreshMe(DataContext context, ItemManager manager, bool recursive) { if (manager.UpnpDevice.Stopping) { return; } try { //Rozdielova obnova adresarov IEnumerable <string> directories = new DirectoryInfo(this.Path).GetDirectories().Where( a => manager.ShowHiddenFiles || (a.Attributes & FileAttributes.Hidden) == 0).Select(a => a.FullName).ToArray(); Item[] toRemove = this.Items.Where(a => a.GetType() == typeof(ItemContainer)).Except( directories, new PathItemEqualityComparer()).Cast <Item>().ToArray(); string[] toAdd = directories.Except(this.Items.Where(a => a.GetType() == typeof(ItemContainer)).Select(a => a.Path)).ToArray(); RemoveRange(context, manager, toRemove); foreach (string path in toAdd) { Item item = new ItemContainer(System.IO.Path.GetFileName(path), path, this); //Ak nie je rekurzia - obnovia sa iba nove adresare if (!recursive) { item.RefreshMe(context, manager, false); } } //Rozdielova obnova suborov IEnumerable <PathMime> files = new DirectoryInfo(this.Path).GetFiles().Where( a => manager.ShowHiddenFiles || (a.Attributes& FileAttributes.Hidden) == 0).Select( delegate(FileInfo a) { HttpMime mime = manager.GetMimeType(a.Extension); if (mime == null || mime.MediaType == MediaType.Other) { return(null); } return(new PathMime() { Path = a.Name, Mime = mime }); }).Where(a => a != null).ToArray(); toRemove = this.Items.Where(a => a.GetType() != typeof(ItemContainer)).Except( files.Select(a => a.Path), new PathItemEqualityComparer()).Cast <Item>().ToArray(); PathMime[] toAddFile = files.Cast <object>().Except(this.Items.Where(a => a.GetType() != typeof(ItemContainer)).Select( a => a.Path), new PathMimeEqualityComparer()).Cast <PathMime>().ToArray(); RemoveRange(context, manager, toRemove); foreach (PathMime pathMime in toAddFile) { try { FileInfo fi = new FileInfo(System.IO.Path.Combine(this.Path, pathMime.Path)); switch (pathMime.Mime.MediaType) { case MediaType.Audio: new ItemAudio(fi, pathMime.Mime.ToString(), this); break; case MediaType.Image: new ItemImage(fi, pathMime.Mime.ToString(), this); break; case MediaType.Video: new ItemContainerVideo(fi, pathMime.Mime.ToString(), this); break; } } catch { } } if (recursive) { //Volanie obnovy do adresarov a prvkov foreach (Item item in this.Items) { item.RefreshMe(context, manager, true); } } else { //Volanie obnovy pre subory vratane ItemContainerVideo - overenie ci sa nezmenil titulkovy subor foreach (Item item in this.items.Where(a => a.GetType() != typeof(ItemContainer))) { item.RefreshMe(context, manager, false); } } } catch { } }
public ItemContainer(string title, string path, ItemContainer parent) : base(title, path, parent) { }
public virtual void BrowseDirectChildren(XmlWriter xmlWriter, MediaSettings settings, string host, string idParams, HashSet <string> filterSet, uint startingIndex, uint requestedCount, string sortCriteria, out string numberReturned, out string totalMatches, ItemContainer skippedItem = null) { numberReturned = "0"; totalMatches = "0"; }
public ItemContainerStreamRoot(ItemContainer parent) : base("Stream", "Stream", parent) { }
public ItemContainerStreamCustom(string title, string path, ItemContainer parent) : base(title, path, parent) { }