Beispiel #1
0
        private async Task <Uri> GetAlbumArtUri(Song song)
        {
            Uri albumArtUri = new Uri("ms-appx:///Resources/UnknownArt-116.png");

            try
            {
                if (this.logger.IsDebugEnabled)
                {
                    this.logger.Debug("Song album art: {0}.", song.AlbumArtUrl);
                }

                if (song.AlbumArtUrl != null)
                {
                    string cachedFile = await this.albumArtCacheService.GetCachedImageAsync(song.AlbumArtUrl, size : 116);

                    if (!string.IsNullOrEmpty(cachedFile))
                    {
                        albumArtUri = AlbumArtUrlExtensions.ToLocalUri(cachedFile);
                    }
                }
            }
            catch (OperationCanceledException exception)
            {
                this.logger.Debug(exception, "GetAlbumArtUri:: operation canceled.");
                throw;
            }
            catch (Exception exception)
            {
                this.logger.Error(exception, "Cannot download album art.");
            }

            return(albumArtUri);
        }
Beispiel #2
0
        private void OnSuggestionsRequested(SearchPane sender, SearchPaneSuggestionsRequestedEventArgs args)
        {
            var searchPaneSuggestionsRequestDeferral = args.Request.GetDeferral();

            this.SearchAsync(args)
            .ContinueWith(
                async x =>
            {
                foreach (var item in x.Result)
                {
                    if (args.Request.IsCanceled)
                    {
                        break;
                    }

                    if (item.ItemType == SearchItemType.Title)
                    {
                        args.Request.SearchSuggestionCollection.AppendSearchSeparator(((SearchTitle)item).Title);
                    }
                    else
                    {
                        var searchResult = (SearchResult)item;

                        IRandomAccessStreamReference randomAccessStreamReference = null;
                        if (searchResult.AlbumArtUrl != null)
                        {
                            var pathToImage = await this.albumArtCacheService.GetCachedImageAsync(searchResult.AlbumArtUrl, size: 116);
                            if (string.IsNullOrEmpty(pathToImage))
                            {
                                randomAccessStreamReference = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/SmallLogo.png"));
                            }
                            else
                            {
                                randomAccessStreamReference = RandomAccessStreamReference.CreateFromUri(AlbumArtUrlExtensions.ToLocalUri(pathToImage));
                            }
                        }
                        else
                        {
                            randomAccessStreamReference =
                                RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/SmallLogo.png"));
                        }

                        args.Request.SearchSuggestionCollection.AppendResultSuggestion(
                            searchResult.Title, searchResult.Details, searchResult.Tag, randomAccessStreamReference, "gMusicW");
                    }
                }

                searchPaneSuggestionsRequestDeferral.Complete();
            },
                TaskScheduler.FromCurrentSynchronizationContext());
        }