コード例 #1
0
        private async Task Refresh()
        {
            Processing = true;
            FolderName = null;

            RefreshPhotosCommand.RaiseCanExecuteChanged();

            Thumbnails.Clear();

            var filters  = FilterFactory.CreateStreamFilters();
            var maxItems = (uint)_highlightStrategy.BatchSize * 5;

            if (SessionModel.Instance.Folder != null)
            {
                FolderName = SessionModel.Instance.Folder.DisplayName;

                var models = await GetPhotosFromFolderAsync(SessionModel.Instance.Folder, maxItems);

                for (var i = 0; i < models.Count; i++)
                {
                    var k         = i % (_highlightStrategy.BatchSize);
                    var highlight = _highlightStrategy.HighlightedIndexes.Contains(k);

                    Thumbnails.Add(new ThumbnailViewModel(models[i], TakeRandomFilter(filters), highlight));
                }
            }
            else
            {
                var models = await GetPhotosFromFolderAsync(Windows.Storage.KnownFolders.CameraRoll, maxItems);

                FolderName = Windows.Storage.KnownFolders.CameraRoll.DisplayName;

#if !WINDOWS_PHONE_APP
                if (models.Count == 0)
                {
                    models = await GetPhotosFromFolderAsync(Windows.Storage.KnownFolders.PicturesLibrary, maxItems);

                    FolderName = Windows.Storage.KnownFolders.PicturesLibrary.DisplayName;
                }
#endif

                for (var i = 0; i < models.Count; i++)
                {
                    var k         = i % (_highlightStrategy.BatchSize);
                    var highlight = _highlightStrategy.HighlightedIndexes.Contains(k);

                    Thumbnails.Add(new ThumbnailViewModel(models[i], TakeRandomFilter(filters), highlight));
                }
            }

            Processing = false;

            RefreshPhotosCommand.RaiseCanExecuteChanged();
        }
コード例 #2
0
 private void ShowCluster(int clusterId)
 {
     if (bitmapReader != null && clusters != null)
     {
         Thumbnails.Clear();
         foreach (int descriptorId in clusters[clusterId])
         {
             // TODO verbose (videoID, shotID...)
             Bitmap bitmap = bitmapReader.ReadFrame(descriptorId);
             Thumbnails.Add(new Thumbnail(descriptorId.ToString(), BitmapToImageSource(bitmap)));
         }
     }
 }
コード例 #3
0
 private void ShowDisplay(int displayId)
 {
     if (bitmapReader != null && log != null)
     {
         Thumbnails.Clear();
         int   selectedItemId = log[displayId].Item1;
         int[] displayedItems = log[displayId].Item2;
         foreach (int displayedId in displayedItems)
         {
             // TODO verbose (videoID, shotID...)
             Bitmap bitmap = bitmapReader.ReadFrame(displayedId);
             if (selectedItemId == displayedId)
             {
                 MarkSelectedItem(bitmap);
             }
             Thumbnails.Add(new Thumbnail(displayedId.ToString(), BitmapToImageSource(bitmap)));
         }
     }
 }
コード例 #4
0
ファイル: VKAPI.cs プロジェクト: GasperPaul/VKPhotoDownloader
        private object ParseXml(string type, string XmlString, Func <string, object> customParser)
        {
            var imageList = new Thumbnails();
            var xDoc      = System.Xml.Linq.XDocument.Parse(XmlString);

            if (xDoc.Root.Name.ToString() == "error")
            {
                var str = "API error:\n" + xDoc.Descendants("error")
                          .Select(el => el.Element("error_msg").Value)
                          .ToList <String>()[0];
                Debug.WriteLine(str);
                return(null);
            }

            if (customParser != null)
            {
                return(customParser(XmlString));
            }

            switch (type)
            {
            case ("photos.getAlbums"):
                var albums = xDoc.Descendants("album").Select(a => new Thumbnail
                {
                    Name    = a.Element("aid").Value,
                    Title   = a.Element("title").Value,
                    Image   = ImageDataFromUri(a.Element("thumb_src").Value),
                    Checked = false
                });
                imageList.Clear();
                foreach (var album in albums)
                {
                    imageList.Add(album);
                }
                return(imageList);

            case ("photos.get"):
                Func <System.Xml.Linq.XElement, string> tmp = (xElement) =>
                {
                    var bigImage = xElement.Element("src_xxxbig");
                    if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                    {
                        return(bigImage.Value);
                    }
                    bigImage = xElement.Element("src_xxbig");
                    if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                    {
                        return(bigImage.Value);
                    }
                    bigImage = xElement.Element("src_xbig");
                    if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                    {
                        return(bigImage.Value);
                    }
                    bigImage = xElement.Element("src_big");
                    if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                    {
                        return(bigImage.Value);
                    }
                    bigImage = xElement.Element("src");
                    if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                    {
                        return(bigImage.Value);
                    }
                    bigImage = xElement.Element("src_small");
                    if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                    {
                        return(bigImage.Value);
                    }
                    return(null);
                };

                var photos = xDoc.Descendants("photo")
                             .Select(a => new Thumbnail()
                {
                    Name     = a.Element("src_small").Value.Split('/').Last(),
                    Title    = tmp(a).Split('/').Last(),
                    BigImage = tmp(a),
                    Image    = ImageDataFromUri(a.Element("src_small").Value),
                    Checked  = false
                });

                imageList.Clear();
                foreach (var photo in photos)
                {
                    imageList.Add(photo);
                }
                return(imageList);

            case "utils.resolveScreenName":
                return(xDoc.Element("response").HasElements ? xDoc.Element("response").Element("object_id").Value : null);

            case "users.get":
                return(xDoc.Element("response").Element("id").Value);

            default:
                break;
            }
            return(null);
        }
コード例 #5
0
ファイル: VKAPI.cs プロジェクト: GasperPaul/VKPhotoDownloader
        private object ParseXml(string type, string XmlString, Func<string, object> customParser)
        {
            var imageList = new Thumbnails();
            var xDoc = System.Xml.Linq.XDocument.Parse(XmlString);

            if (xDoc.Root.Name.ToString() == "error")
            {
                var str = "API error:\n" + xDoc.Descendants("error")
                                               .Select(el => el.Element("error_msg").Value)
                                               .ToList<String>()[0];
                Debug.WriteLine(str);
                return null;
            }

            if (customParser != null)
                return customParser(XmlString);

            switch (type)
            {
                case ("photos.getAlbums"):
                    var albums = xDoc.Descendants("album").Select(a => new Thumbnail
                    {
                        Name = a.Element("aid").Value,
                        Title = a.Element("title").Value,
                        Image = ImageDataFromUri(a.Element("thumb_src").Value),
                        Checked = false
                    });
                    imageList.Clear();
                    foreach (var album in albums)
                        imageList.Add(album);
                    return imageList;

                case ("photos.get"):
                    Func<System.Xml.Linq.XElement, string> tmp = (xElement) =>
                    {
                        var bigImage = xElement.Element("src_xxxbig");
                        if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                            return bigImage.Value;
                        bigImage = xElement.Element("src_xxbig");
                        if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                            return bigImage.Value;
                        bigImage = xElement.Element("src_xbig");
                        if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                            return bigImage.Value;
                        bigImage = xElement.Element("src_big");
                        if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                            return bigImage.Value;
                        bigImage = xElement.Element("src");
                        if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                            return bigImage.Value;
                        bigImage = xElement.Element("src_small");
                        if (bigImage != null && !string.IsNullOrWhiteSpace(bigImage.Value))
                            return bigImage.Value;
                        return null;
                    };

                    var photos = xDoc.Descendants("photo")
                                     .Select(a => new Thumbnail()
                                     {
                                         Name = a.Element("src_small").Value.Split('/').Last(),
                                         Title = tmp(a).Split('/').Last(),
                                         BigImage = tmp(a),
                                         Image = ImageDataFromUri(a.Element("src_small").Value),
                                         Checked = false
                                     });

                    imageList.Clear();
                    foreach (var photo in photos)
                        imageList.Add(photo);
                    return imageList;

                case "utils.resolveScreenName":
                    return xDoc.Element("response").HasElements ? xDoc.Element("response").Element("object_id").Value : null;

                case "users.get":
                    return xDoc.Element("response").Element("id").Value;

                default:
                    break;
            }
            return null;
        }