示例#1
0
 public ItemContainerDreamboxRoot(string title, string path, ItemContainer parent) : base(title, path, parent)
 {
 }
示例#2
0
        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();
        }
示例#3
0
        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
        }
示例#4
0
        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 { }
        }
示例#5
0
 public ItemContainer(string title, string path, ItemContainer parent) : base(title, path, parent)
 {
 }
示例#6
0
 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";
 }
示例#7
0
 public ItemContainerStreamRoot(ItemContainer parent) : base("Stream", "Stream", parent)
 {
 }
示例#8
0
 public ItemContainerStreamCustom(string title, string path, ItemContainer parent) : base(title, path, parent)
 {
 }