/// <summary> /// Invoked when the Page is loaded and becomes the current source of a parent Frame. /// </summary> /// <param name="e">Event data that can be examined by overriding code. The event data is representative of the pending navigation that will load the current Page. Usually the most relevant property to examine is Parameter.</param> protected async override void OnNavigatedTo(Windows.UI.Xaml.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); if (e.NavigationMode == Windows.UI.Xaml.Navigation.NavigationMode.New) { #if WINDOWS_PHONE_APP this.Pivot.Items.Clear(); this.Pivot.Title = "LOADING..."; #else this.pageTitle.Text = "loading..."; #endif List<GroupedItems> datasource = null; string title = null; // See if we're displaying an artist... Artist artist = e.Parameter as Artist; if (artist != null) { title = artist.Name.ToLowerInvariant(); var topSongs = new GroupedItems() { Title = "top songs" }; var similarArtists = new GroupedItems() { Title = "similar artists" }; datasource = new List<GroupedItems>() { topSongs, similarArtists }; ListResponse<Product> topSongsList = await App.ApiClient.GetArtistProductsAsync(artist.Id, category: Category.Track, itemsPerPage: 6); if (topSongsList.Result != null) { foreach (Product p in topSongsList) { topSongs.Items.Add(p); } } ListResponse<Artist> similarArtistList = await App.ApiClient.GetSimilarArtistsAsync(artist.Id, itemsPerPage: 8); if (similarArtistList.Result != null) { foreach (Artist a in similarArtistList) { similarArtists.Items.Add(a); } } } // See if we're displaying a product... Product product = e.Parameter as Product; if (product != null) { title = product.Name.ToLowerInvariant(); var tracks = new GroupedItems() { Title = "tracks" }; var similarAlbums = new GroupedItems() { Title = "similar albums" }; datasource = new List<GroupedItems>() { tracks, similarAlbums }; Response<Product> productDetails = await App.ApiClient.GetProductAsync(product.Id); if (productDetails.Result != null) { foreach (Product p in productDetails.Result.Tracks) { tracks.Items.Add(p); } } ListResponse<Product> similarAlbumsList = await App.ApiClient.GetSimilarProductsAsync(product.Id, itemsPerPage: 8); if (similarAlbumsList.Result != null) { foreach (Product p in similarAlbumsList) { similarAlbums.Items.Add(p); } } } // See if we're displaying a genre... Genre genre = e.Parameter as Genre; if (genre != null) { title = genre.Name.ToLowerInvariant(); var topArtists = new GroupedItems() { Title = "top artists" }; var topAlbums = new GroupedItems() { Title = "top albums" }; var topSongs = new GroupedItems() { Title = "top songs" }; var newAlbums = new GroupedItems() { Title = "new albums" }; var newSongs = new GroupedItems() { Title = "new songs" }; datasource = new List<GroupedItems>() { topArtists, topAlbums, topSongs, newAlbums, newSongs }; ListResponse<Artist> topArtistsList = await App.ApiClient.GetTopArtistsForGenreAsync(genre.Id, itemsPerPage: 6); if (topArtistsList.Result != null) { foreach (Artist a in topArtistsList.Result) { topArtists.Items.Add(a); } } ListResponse<Product> topAlbumsList = await App.ApiClient.GetTopProductsForGenreAsync(genre.Id, Category.Album, itemsPerPage: 6); if (topAlbumsList.Result != null) { foreach (Product p in topAlbumsList) { topAlbums.Items.Add(p); } } ListResponse<Product> topSongsList = await App.ApiClient.GetTopProductsForGenreAsync(genre.Id, Category.Track, itemsPerPage: 6); if (topSongsList.Result != null) { foreach (Product p in topSongsList) { topSongs.Items.Add(p); } } ListResponse<Product> newAlbumsList = await App.ApiClient.GetNewReleasesForGenreAsync(genre.Id, Category.Album, itemsPerPage: 6); if (newAlbumsList.Result != null) { foreach (Product p in newAlbumsList) { newAlbums.Items.Add(p); } } ListResponse<Product> newSongsList = await App.ApiClient.GetNewReleasesForGenreAsync(genre.Id, Category.Track, itemsPerPage: 6); if (topSongsList.Result != null) { foreach (Product p in newSongsList) { newSongs.Items.Add(p); } } } #if WINDOWS_APP this.groupedItemsViewSource.Source = datasource; this.pageTitle.Text = title; #elif WINDOWS_PHONE_APP this.Pivot.Title = title.ToUpperInvariant(); foreach (var group in datasource) { var pivotItem = new PivotItem(); pivotItem.Header = group.Title; var listbox = new ListBox(); listbox.SelectionMode = SelectionMode.Single; listbox.SelectionChanged += this.ShowItem; listbox.ItemsSource = group.Items; listbox.ItemTemplate = Application.Current.Resources["ApiListItem"] as DataTemplate; listbox.Background = Application.Current.Resources["ApplicationPageBackgroundThemeBrush"] as SolidColorBrush; pivotItem.Content = listbox; this.Pivot.Items.Add(pivotItem); } #endif } }
/// <summary> /// Invoked when the Page is loaded and becomes the current source of a parent Frame. /// </summary> /// <param name="e">Event data that can be examined by overriding code. The event data is representative of the pending navigation that will load the current Page. Usually the most relevant property to examine is Parameter.</param> protected async override void OnNavigatedTo(Windows.UI.Xaml.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); if (e.NavigationMode == Windows.UI.Xaml.Navigation.NavigationMode.New) { #if WINDOWS_PHONE_APP this.Pivot.Items.Clear(); this.Pivot.Title = "LOADING..."; #else this.pageTitle.Text = "loading..."; #endif List <GroupedItems> datasource = null; string title = null; // See if we're displaying an artist... Artist artist = e.Parameter as Artist; if (artist != null) { title = artist.Name.ToLowerInvariant(); var topSongs = new GroupedItems() { Title = "top songs" }; var similarArtists = new GroupedItems() { Title = "similar artists" }; datasource = new List <GroupedItems>() { topSongs, similarArtists }; ListResponse <Product> topSongsList = await App.ApiClient.GetArtistProductsAsync(artist.Id, category : Category.Track, itemsPerPage : 6); if (topSongsList.Result != null) { foreach (Product p in topSongsList) { topSongs.Items.Add(p); } } ListResponse <Artist> similarArtistList = await App.ApiClient.GetSimilarArtistsAsync(artist.Id, itemsPerPage : 8); if (similarArtistList.Result != null) { foreach (Artist a in similarArtistList) { similarArtists.Items.Add(a); } } } // See if we're displaying a product... Product product = e.Parameter as Product; if (product != null) { title = product.Name.ToLowerInvariant(); var tracks = new GroupedItems() { Title = "tracks" }; var similarAlbums = new GroupedItems() { Title = "similar albums" }; datasource = new List <GroupedItems>() { tracks, similarAlbums }; Response <Product> productDetails = await App.ApiClient.GetProductAsync(product.Id); if (productDetails.Result != null) { foreach (Product p in productDetails.Result.Tracks) { tracks.Items.Add(p); } } ListResponse <Product> similarAlbumsList = await App.ApiClient.GetSimilarProductsAsync(product.Id, itemsPerPage : 8); if (similarAlbumsList.Result != null) { foreach (Product p in similarAlbumsList) { similarAlbums.Items.Add(p); } } } // See if we're displaying a genre... Genre genre = e.Parameter as Genre; if (genre != null) { title = genre.Name.ToLowerInvariant(); var topArtists = new GroupedItems() { Title = "top artists" }; var topAlbums = new GroupedItems() { Title = "top albums" }; var topSongs = new GroupedItems() { Title = "top songs" }; var newAlbums = new GroupedItems() { Title = "new albums" }; var newSongs = new GroupedItems() { Title = "new songs" }; datasource = new List <GroupedItems>() { topArtists, topAlbums, topSongs, newAlbums, newSongs }; ListResponse <Artist> topArtistsList = await App.ApiClient.GetTopArtistsForGenreAsync(genre.Id, itemsPerPage : 6); if (topArtistsList.Result != null) { foreach (Artist a in topArtistsList.Result) { topArtists.Items.Add(a); } } ListResponse <Product> topAlbumsList = await App.ApiClient.GetTopProductsForGenreAsync(genre.Id, Category.Album, itemsPerPage : 6); if (topAlbumsList.Result != null) { foreach (Product p in topAlbumsList) { topAlbums.Items.Add(p); } } ListResponse <Product> topSongsList = await App.ApiClient.GetTopProductsForGenreAsync(genre.Id, Category.Track, itemsPerPage : 6); if (topSongsList.Result != null) { foreach (Product p in topSongsList) { topSongs.Items.Add(p); } } ListResponse <Product> newAlbumsList = await App.ApiClient.GetNewReleasesForGenreAsync(genre.Id, Category.Album, itemsPerPage : 6); if (newAlbumsList.Result != null) { foreach (Product p in newAlbumsList) { newAlbums.Items.Add(p); } } ListResponse <Product> newSongsList = await App.ApiClient.GetNewReleasesForGenreAsync(genre.Id, Category.Track, itemsPerPage : 6); if (topSongsList.Result != null) { foreach (Product p in newSongsList) { newSongs.Items.Add(p); } } } #if WINDOWS_APP this.groupedItemsViewSource.Source = datasource; this.pageTitle.Text = title; #elif WINDOWS_PHONE_APP this.Pivot.Title = title.ToUpperInvariant(); foreach (var group in datasource) { var pivotItem = new PivotItem(); pivotItem.Header = group.Title; var listbox = new ListBox(); listbox.SelectionMode = SelectionMode.Single; listbox.SelectionChanged += this.ShowItem; listbox.ItemsSource = group.Items; listbox.ItemTemplate = Application.Current.Resources["ApiListItem"] as DataTemplate; listbox.Background = Application.Current.Resources["ApplicationPageBackgroundThemeBrush"] as SolidColorBrush; pivotItem.Content = listbox; this.Pivot.Items.Add(pivotItem); } #endif } }