using CommunityToolkit.Diagnostics; using OwlCore.Extensions; using StrixMusic.Sdk.ViewModels; using StrixMusic.Shells.Groove.Messages.Navigation.Pages; using StrixMusic.Shells.Groove.Messages.Navigation.Pages.Abstract; using StrixMusic.Shells.Groove.ViewModels.Pages; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace StrixMusic.Shells.Groove.TemplateSelectors { /// /// A for the based on the ViewModel. /// public class MainContentTemplateSelector : DataTemplateSelector { /// /// The to use if the ViewModel is a . /// public DataTemplate? AlbumPageTemplate { get; set; } /// /// The to use if the ViewModel is a . /// public DataTemplate? ArtistPageTemplate { get; set; } /// /// The to use if the ViewModel is a . /// public DataTemplate? HomePageTemplate { get; set; } /// /// The to use if the ViewModel is a . /// public DataTemplate? PlaylistPageTemplate { get; set; } /// /// The to use if the ViewModel is a . /// public DataTemplate? PlaylistsPageTemplate { get; set; } /// protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { switch (item) { case AlbumViewModel _: Guard.IsNotNull(AlbumPageTemplate, nameof(AlbumPageTemplate)); return AlbumPageTemplate; case ArtistViewModel _: Guard.IsNotNull(ArtistPageTemplate, nameof(ArtistPageTemplate)); return ArtistPageTemplate; case LibraryViewModel _: Guard.IsNotNull(HomePageTemplate, nameof(HomePageTemplate)); return HomePageTemplate; case PlaylistViewModel _: Guard.IsNotNull(PlaylistPageTemplate, nameof(PlaylistPageTemplate)); return PlaylistPageTemplate; case IPlaylistCollectionViewModel _: Guard.IsNotNull(PlaylistsPageTemplate, nameof(PlaylistsPageTemplate)); return PlaylistsPageTemplate; default: return base.SelectTemplateCore(item); } } } }