Add dictionaries and enhance search function
continuous-integration/drone/push Build is passing Details

pull/38/head
Corentin LEMAIRE 2 years ago
parent 7c241b30cc
commit b61e56fe5f

@ -257,7 +257,10 @@ class Manager {
+ Playlist CurrentPlaylist
+ InfoTitle CurrentInfoTitle
+ CustomTitle CurrentPlaying
+ Dictionary<string, IEnumerable<Album>> AlbumsFromArtist
+ Dictionary<string, IEnumerable<InfoTitle>> infoTitlesFromArtist
+ Manager(IDataManager dataManager)
+ void LoadDictionaries
+ void NextTitle()
+ void PreviousTitle()
+ CustomTitle CurrentTitle()
@ -306,8 +309,10 @@ InfoTitle o--> "+ Genre" Genre
InfoTitle o--> "- feat*" Feat
Manager o--> "- albums*" Album
Manager o--> Album
Manager o--> "- artists*" Artist
Manager o--> "- infoTitles*" InfoTitle
Manager o--> InfoTitle
Manager o--> "- playlists*" Playlist
Manager o--> "- customTitles*" CustomTitle
Manager o--> "- currentAlbum" Album

@ -13,7 +13,7 @@
<BindableLayout.ItemTemplate>
<DataTemplate>
<Frame Padding="10" BackgroundColor="white" BorderColor="black" HeightRequest="40">
<Label Text="{Binding Name}" TextColor="black"/>
<Label Text="{Binding Name, StringFormat='Album - {0}'}" TextColor="black"/>
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="SearchResult_Tapped" />
</Frame.GestureRecognizers>
@ -26,7 +26,7 @@
<BindableLayout.ItemTemplate>
<DataTemplate>
<Frame Padding="10" BackgroundColor="white" BorderColor="black" HeightRequest="40">
<Label Text="{Binding Name}" TextColor="black"/>
<Label Text="{Binding Name, StringFormat='Title - {0}'}" TextColor="black"/>
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="SearchResult_Tapped" />
</Frame.GestureRecognizers>
@ -39,7 +39,7 @@
<BindableLayout.ItemTemplate>
<DataTemplate>
<Frame Padding="10" BackgroundColor="white" BorderColor="black" HeightRequest="40">
<Label Text="{Binding Name}" TextColor="black"/>
<Label Text="{Binding Name, StringFormat='Playlist - {0}'}" TextColor="black"/>
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="SearchResult_Tapped" />
</Frame.GestureRecognizers>

@ -91,12 +91,32 @@ public partial class SearchBarView : ContentView
public ObservableCollection<Album> SearchAlbums(string filterText)
{
return new ObservableCollection<Album>(Manager.GetAlbums().Where(x => x.Name.Contains(filterText, StringComparison.OrdinalIgnoreCase)));
ObservableCollection<Album> albumsFiltered = new ObservableCollection<Album>(Manager.GetAlbums().Where(x => x.Name.Contains(filterText, StringComparison.OrdinalIgnoreCase)));
IEnumerable<Artist> artistsFiltered = new List<Artist>(Manager.GetArtists().Where(x => x.Name.Contains(filterText, StringComparison.OrdinalIgnoreCase)));
foreach (var artist in artistsFiltered)
{
foreach (var album in Manager.AlbumsFromArtist[artist.Name])
{
Albums.Add(album);
}
}
return albumsFiltered;
}
public ObservableCollection<InfoTitle> SearchInfoTitles(string filterText)
{
return new ObservableCollection<InfoTitle>(Manager.GetInfoTitles().Where(x => x.Name.Contains(filterText, StringComparison.OrdinalIgnoreCase)));
ObservableCollection<InfoTitle> infosTitlesFiltered = new ObservableCollection<InfoTitle>(Manager.GetInfoTitles().Where(x => x.Name.Contains(filterText, StringComparison.OrdinalIgnoreCase)));
IEnumerable<Artist> artistsFiltered = new List<Artist>(Manager.GetArtists().Where(x => x.Name.Contains(filterText, StringComparison.OrdinalIgnoreCase)));
foreach (var artist in artistsFiltered)
{
foreach (var infoTitle in Manager.InfoTitlesFromArtist[artist.Name])
{
InfoTitles.Add(infoTitle);
}
}
return infosTitlesFiltered;
}
public ObservableCollection<Playlist> SearchPlaylists(string filterText)

@ -118,6 +118,28 @@ public class Manager : INotifyPropertyChanged
}
}
private Dictionary<string, IEnumerable<Album>> albumsFromArtist;
public Dictionary<string, IEnumerable<Album>> AlbumsFromArtist
{
get => albumsFromArtist;
set
{
albumsFromArtist = value;
}
}
private Dictionary<string, IEnumerable<InfoTitle>> infoTitlesFromArtist;
public Dictionary<string, IEnumerable<InfoTitle>> InfoTitlesFromArtist
{
get => infoTitlesFromArtist;
set
{
infoTitlesFromArtist = value;
}
}
public Manager(IDataManager dataManager)
{
DataManager = dataManager;
@ -132,6 +154,14 @@ public class Manager : INotifyPropertyChanged
currentPlaylist = playlists.FirstOrDefault();
currentInfoTitle = null;
currentPlaying = null;
LoadDictionaries();
}
public void LoadDictionaries()
{
albumsFromArtist = albums.GroupBy(album => album.Artist.Name).ToDictionary(group => group.Key, group => group.AsEnumerable());
infoTitlesFromArtist = infoTitles.GroupBy(infoTitle => GetAlbumById(infoTitle.AlbumID).Artist.Name).ToDictionary(group => group.Key, group => group.AsEnumerable());
}
public void NextTitle()

Loading…
Cancel
Save