Fix serialization with binding
continuous-integration/drone/push Build is passing Details

pull/31/head
Corentin LEMAIRE 2 years ago
parent 0ced265b21
commit 0cd706dc14

@ -35,7 +35,7 @@
Style="{StaticResource SousTitre}">
</Label>
<ListView ItemsSource="{Binding Titles}">
<ListView ItemsSource="{Binding InfoTitles}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>

@ -18,9 +18,9 @@ public partial class App : Application
var Window = base.CreateWindow(activationState);
Window.Created += (sender, eventArgs) =>
Window.Stopped += (sender, eventArgs) =>
{
Manager.LoadSerialization();
Manager.SaveSerialization();
};
const int newHeight = 900;

@ -26,6 +26,7 @@ public partial class FooterPage : ContentView
public void PlayButton_Clicked(object sender, EventArgs e)
{
Play();
/*string url = ((FileImageSource)Play.Source).File;
if (url == "play.png")
{
@ -43,6 +44,11 @@ public partial class FooterPage : ContentView
}*/
}
public void Play()
{
if ((Application.Current as App).Manager.CurrentPlaying == null) return;
}
public void RewindButton_Clicked(Object sender, EventArgs e)
{
/*audioFile.Position = 0;

@ -13,13 +13,13 @@
<local:Layout Grid.Column="0"/>
<ScrollView Grid.Column="1" BackgroundColor="#404040">
<VerticalStackLayout>
<VerticalStackLayout BindingContext="{Binding InfoTitle}">
<SearchBar Style="{StaticResource SearchBar}"/>
<Frame IsClippedToBounds="True" CornerRadius="75" HeightRequest="150" WidthRequest="150" HorizontalOptions="Center" VerticalOptions="Center" BackgroundColor="Transparent">
<Image Source="{Binding ImageURL}" Aspect="AspectFill" WidthRequest="150" HeightRequest="150" Margin="-20" IsAnimationPlaying="True"/>
</Frame>
<Label Text="{Binding Name}" Style="{StaticResource Titre}" TextColor="AntiqueWhite"/>
<Label Text="{Binding Artist}" Style="{StaticResource SousTitre}" TextColor="Goldenrod" Margin="0,0,0,20"/>
<Label Text="{Binding Source={RelativeSource AncestorType={x:Type ContentPage}}, Path=Artist}" Style="{StaticResource SousTitre}" TextColor="Goldenrod" Margin="0,0,0,20"/>
<Label Text="{Binding Description}" Style="{StaticResource SousTitre}"/>
<ScrollView BackgroundColor="gray" MinimumHeightRequest="200" Margin="50,20">
<VerticalStackLayout HorizontalOptions="Center">

@ -9,11 +9,20 @@ public partial class InfoTitlePage : ContentPage
public InfoTitle InfoTitle
{
get => infoTitle;
}
public InfoTitlePage()
}
public Artist Artist
{
get => artist;
}
private Artist artist;
public InfoTitlePage()
{
InitializeComponent();
infoTitle = (Application.Current as App).Manager.CurrentInfoTitle;
BindingContext = infoTitle;
artist = (Application.Current as App).Manager.GetAlbumById(infoTitle.AlbumID).Artist;
BindingContext = this;
}
}

@ -54,9 +54,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
<PackageReference Include="NAudio" Version="2.1.0" />
<PackageReference Include="Syncfusion.Maui.Core" Version="21.1.39" />
<PackageReference Include="Syncfusion.Maui.ProgressBar" Version="21.1.39" />
<PackageReference Include="Syncfusion.Maui.Sliders" Version="21.1.39" />
<PackageReference Include="Plugin.Maui.Audio" Version="1.0.0" />
</ItemGroup>
<ItemGroup>

@ -60,7 +60,7 @@ namespace Linaris
void AddCustomTitle(CustomTitle customTitle)
{
(Application.Current as App).Manager.AddCustomTitle(customTitle);
customTitles.Add(customTitle);
customTitles = (Application.Current as App).Manager.GetCustomTitles();
ResetAll(this, null);
}
@ -96,7 +96,7 @@ namespace Linaris
}
}
void AddToPlaylist(object sender, EventArgs e)
async void AddToPlaylist(object sender, EventArgs e)
{
if (sender is Button button)
{
@ -104,6 +104,11 @@ namespace Linaris
{
if (button.Parent is StackLayout stack && stack.BindingContext is CustomTitle customTitle)
{
if (playlist.HasCustomTitle(customTitle))
{
await DisplayAlert("Erreur !", "Ce morceau est déjà dans cette playlist !", "OK");
return;
}
playlist.AddTitle(customTitle);
ResetAll(sender, e);
}

@ -7,11 +7,7 @@
Style="{StaticResource PageFlyoutTrigger}">
<Grid Style="{StaticResource GridFlyoutTrigger}">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="100"/>
</Grid.RowDefinitions>
<Grid Style="{StaticResource GridFlyoutTrigger}" RowDefinitions="*,100">
<local:Layout Grid.Column="0"/>

@ -1,20 +1,21 @@
using Model;
using Plugin.Maui.Audio;
using System.Collections.ObjectModel;
namespace Linaris;
public partial class MainPage : ContentPage
{
private ObservableCollection<Album> albums = (Application.Current as App).Manager.GetAlbums();
private readonly ObservableCollection<Album> albums = (Application.Current as App).Manager.GetAlbums();
public ObservableCollection<Album> Albums
public ObservableCollection<Album> Albums
{
get => albums;
}
public MainPage()
{
InitializeComponent();
InitializeComponent();
BindingContext = this;
}

@ -1,5 +1,5 @@
using Microsoft.Extensions.Logging;
using Syncfusion.Maui.Core.Hosting;
using Plugin.Maui.Audio;
namespace Linaris;
@ -10,12 +10,13 @@ public static class MauiProgram
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureSyncfusionCore()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
builder.Services.AddSingleton(AudioManager.Current);
builder.Services.AddTransient<MainPage>();
#if DEBUG
builder.Services.AddLogging();

@ -6,11 +6,7 @@
Title="Playlist"
Style="{StaticResource PageFlyoutTrigger}">
<Grid Style="{StaticResource GridFlyoutTrigger}">
<Grid.RowDefinitions>
<RowDefinition Height="8*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Style="{StaticResource GridFlyoutTrigger}" RowDefinitions="*, 100">
<local:Layout Grid.Column="0"/>
@ -25,8 +21,8 @@
<Label Text="{Binding Description}" Style="{StaticResource SousTitre}"/>
<Grid BackgroundColor="Transparent" MinimumHeightRequest="0" Margin="0,20,0,0">
<FlexLayout Direction="Row" AlignItems="Center" JustifyContent="SpaceEvenly" Wrap="Wrap">
<Button Text="Aléatoire" Style="{StaticResource PlayButton}"/>
<Button Text="Lecture" Style="{StaticResource PlayButton}"/>
<Button Text="Aléatoire" Style="{StaticResource PlayButton}" Clicked="RdmPlay"/>
<Button Text="Lecture" Style="{StaticResource PlayButton}" Clicked="Play"/>
<Button Text="Modifier" Style="{StaticResource PlayButton}" Clicked="EditPlaylist"/>
</FlexLayout>
</Grid>
@ -35,6 +31,9 @@
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.ContextActions>
<MenuItem Text="Supprimer" Clicked="RemoveCustomTitle"/>
</ViewCell.ContextActions>
<Frame Style="{StaticResource Song}">
<Label Text="{Binding Name}" FontSize="20" TextColor="white" HorizontalTextAlignment="Center"/>
</Frame>

@ -1,3 +1,5 @@
using Model;
namespace Linaris;
public partial class PlaylistPage : ContentPage
@ -12,4 +14,49 @@ public partial class PlaylistPage : ContentPage
{
await Navigation.PushModalAsync(new EditPlaylistPage());
}
void RemoveCustomTitle(object sender, EventArgs e)
{
if (sender is MenuItem menuItem)
{
if (menuItem.BindingContext is CustomTitle customTitle)
{
(Application.Current as App).Manager.GetPlaylistByName((Application.Current as App).Manager.CurrentPlaylist.Name).RemoveTitle(customTitle);
}
}
}
private void Play(object sender, EventArgs e)
{
if (sender is Button button)
{
if (button.BindingContext is Playlist playlist)
{
(Application.Current as App).Manager.CurrentPlaying = playlist.Titles.FirstOrDefault();
if ((Application.Current as App).Manager.CurrentPlaying == null) return;
/*if (button.Parent.Parent.Parent.Parent.Parent is Grid grid)
{
grid.RowDefinitions.Clear();
RowDefinition row1 = new RowDefinition();
RowDefinition row2 = new RowDefinition();
row2.Height = 100;
grid.RowDefinitions.Add(row1);
grid.RowDefinitions.Add(row2);
}*/
}
}
}
private void RdmPlay(object sender, EventArgs e)
{
/*if (sender is Button button)
{
if (button.BindingContext is Playlist playlist)
{
(Application.Current as App).Manager.CurrentPlaying = playlist.GetCurrentTitle();
}
}*/
}
}

@ -3,7 +3,6 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:avatarview="clr-namespace:Syncfusion.Maui.Core;assembly=Syncfusion.Maui.Core"
xmlns:local="clr-namespace:Linaris"
xmlns:test="local:LocalFilesPage">
@ -56,17 +55,13 @@
<Setter Property="TextColor" Value="Black"></Setter>
</Style>
<Style x:Key="pdp" TargetType="avatarview:SfAvatarView">
<Setter Property="ContentType" Value="Custom"></Setter>
<Style x:Key="pdp" TargetType="Frame">
<Setter Property="VerticalOptions" Value="Start"></Setter>
<Setter Property="HorizontalOptions" Value="Center"></Setter>
<Setter Property="ContentType" Value="Custom"></Setter>
<Setter Property="ContentType" Value="Custom"></Setter>
<Setter Property="HeightRequest" Value="150"></Setter>
<Setter Property="WidthRequest" Value="150"></Setter>
<Setter Property="CornerRadius" Value="75"></Setter>
<Setter Property="BackgroundColor" Value="Transparent"></Setter>
<Setter Property="Stroke" Value="Transparent"></Setter>
<Setter Property="Margin" Value="10"></Setter>
</Style>
@ -490,6 +485,66 @@
</Setter>
</Style>
<Style x:Key="InfosComplementairesGridTrigger" TargetType="Grid">
<Setter Property="VisualStateManager.VisualStateGroups">
<Setter.Value>
<VisualStateGroupList>
<VisualStateGroup>
<VisualState x:Name="Narrow">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="ColumnDefinitions">
<Setter.Value>
<ColumnDefinitionCollection>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="0"/>
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Medium">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="ColumnDefinitions">
<Setter.Value>
<ColumnDefinitionCollection>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="0"/>
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Wide">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1200"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="ColumnDefinitions">
<Setter.Value>
<ColumnDefinitionCollection>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="*"/>
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="ActivityIndicator">
<Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
</Style>

@ -1,4 +1,6 @@
using Model.Stub;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Xml.Serialization;
@ -6,6 +8,14 @@ namespace Model
{
public class Album
{
private static long nbAlbum = 0;
private long id;
public long ID
{
get => id;
}
public string Name
{
@ -78,19 +88,21 @@ namespace Model
private string information = Manager.DEFAULT_DESC;
public IEnumerable<InfoTitle> InfoTitles
public ObservableCollection<InfoTitle> InfoTitles
{
get => infoTitles;
set
{
infoTitles = value.ToList();
infoTitles = value;
}
}
private List<InfoTitle> infoTitles = new List<InfoTitle>();
private ObservableCollection<InfoTitle> infoTitles = new ObservableCollection<InfoTitle>();
public Album(string name, string imageURL, Artist artist, string description, string information)
{
id = nbAlbum;
nbAlbum++;
Name = name;
ImageURL = imageURL;
Artist = artist;

@ -1,8 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<Customs>
<CustomTitle Name="ct1">
<ImageURL>url1.png</ImageURL>
<Information>info1</Information>
<Path>path1</Path>
<CustomTitle Name="croissant.mp3">
<ImageURL>none.png</ImageURL>
<Information></Information>
<Path>D:\Musique\Création\croissant.mp3</Path>
</CustomTitle>
<CustomTitle Name="emma.mp3">
<ImageURL>none.png</ImageURL>
<Information></Information>
<Path>D:\Musique\Création\emma.mp3</Path>
</CustomTitle>
<CustomTitle Name="Emma-.mp3">
<ImageURL>none.png</ImageURL>
<Information></Information>
<Path>D:\Musique\Création\Emma-.mp3</Path>
</CustomTitle>
<CustomTitle Name="heaven.mp3">
<ImageURL>none.png</ImageURL>
<Information></Information>
<Path>D:\Musique\Création\heaven.mp3</Path>
</CustomTitle>
<CustomTitle Name="winter.mp3">
<ImageURL>none.png</ImageURL>
<Information></Information>
<Path>D:\Musique\Création\winter.mp3</Path>
</CustomTitle>
</Customs>

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Playlists>
<Playlist Name="Unknown">
<Playlist Name="EZ">
<Description></Description>
<ImageURL>none.png</ImageURL>
<Titles></Titles>
<ImageURL>D:\Images\blackcat.gif</ImageURL>
<Titles>D:\Musique\Création\emma.mp3 D:\Musique\Création\croissant.mp3 D:\Musique\Création\Emma-.mp3 D:\Musique\Création\heaven.mp3 D:\Musique\Création\winter.mp3 D:\Musique\Création\emma.mp3</Titles>
</Playlist>
</Playlists>

@ -28,7 +28,7 @@ public interface IDataManager
// Read
ObservableCollection<CustomTitle> GetCustomTitles();
CustomTitle? GetCustomTitleByUrl(string custom);
CustomTitle? GetCustomTitleByPath(string custom);
ObservableCollection<InfoTitle> GetInfoTitles();
@ -38,6 +38,8 @@ public interface IDataManager
Album? GetAlbumByName(string name);
Album? GetAlbumById(long id);
List<Artist> GetArtists();
Artist? GetArtistByName(string name);
@ -50,16 +52,12 @@ public interface IDataManager
// Update
void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path);
void UpdateCustomTitleByUrl(string url, string name, string newUrl, string info, string path);
void UpdateCustomTitleByPath(string path, string name, string newUrl, string info, string newPath);
void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre);
void UpdateInfoTitleByName(string name, string newUrl, string info, Artist artist, string description, Genre genre);
void UpdateInfoTitleByArtistName(InfoTitle title, string name, string url, string info, string artist, string description, Genre genre);
void UpdateInfoTitleByNameByArtistName(string name, string newUrl, string info, string artist, string description, Genre genre);
void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info);
void UpdateAlbumByName(string name, string newUrl, Artist artist, string description, string info);

@ -5,8 +5,6 @@ namespace Model;
public class InfoTitle : Title
{
public Artist Artist { get; set; }
public string Description
{
get => description;
@ -34,16 +32,27 @@ public class InfoTitle : Title
public Genre Genre { get; set; }
public InfoTitle(string name, string imageURL, string information, Artist artist, string description, Genre genre) : base(name,imageURL,information)
private long albumID;
public long AlbumID
{
get => albumID;
set
{
albumID = value;
}
}
public InfoTitle(string name, string imageURL, string information, string description, Genre genre, long albumID) : base(name,imageURL,information)
{
Artist = artist;
Description = description;
Genre = genre;
AlbumID = albumID;
}
public InfoTitle() : base(Manager.DEFAULT_NAME, Manager.DEFAULT_URL, Manager.DEFAULT_DESC)
{
Artist = new Artist(Manager.DEFAULT_NAME);
}
public void AddFeat(Artist artist)

@ -104,6 +104,17 @@ public class Manager
}
}
private CustomTitle? currentPlaying;
public CustomTitle? CurrentPlaying
{
get => currentPlaying;
set
{
currentPlaying = value;
}
}
public Manager(IDataManager dataManager)
{
DataManager = dataManager;
@ -223,9 +234,9 @@ public class Manager
return DataManager.GetArtistByName(name);
}
public CustomTitle? GetCustomTitleByUrl(string url)
public CustomTitle? GetCustomTitleByPath(string path)
{
return DataManager.GetCustomTitleByUrl(url);
return DataManager.GetCustomTitleByPath(path);
}
public InfoTitle? GetInfoTitleByName(string name)
@ -238,4 +249,9 @@ public class Manager
return DataManager.GetAlbumByName(name);
}
public Album? GetAlbumById(long id)
{
return DataManager.GetAlbumById(id);
}
}

@ -199,7 +199,7 @@ public class Playlist : INotifyPropertyChanged
}
}
public Title? GetCurrentTitle()
public CustomTitle? GetCurrentTitle()
{
if (Index < titles.Count)
{
@ -238,4 +238,13 @@ public class Playlist : INotifyPropertyChanged
int randomNumber = BitConverter.ToInt32(randomBytes, 0);
return randomNumber % n + 1;
}
public bool HasCustomTitle(CustomTitle customTitle)
{
foreach(CustomTitle custom in Titles)
{
if(custom == customTitle) return true;
}
return false;
}
}

@ -11,19 +11,14 @@ public class LinqXmlSerialization : IDataManager
private static string XMLFILEPLAYLISTS = Path.Combine(XMLPATH, "playlists.xml");
private static string XMLFILEALBUMS = Path.Combine(XMLPATH, "albums.xml");
private static string XMLFILECUSTOMS = Path.Combine(XMLPATH, "customs.xml");
private static string XMLFILEINFOS = Path.Combine(XMLPATH, "infos.xml");
private static string XMLFILEARTISTS = Path.Combine(XMLPATH, "artists.xml");
private StubManager stubManager;
private StubInfoTitle stubInfoTitle = new();
public StubManager StubManager
public StubInfoTitle StubInfoTitle
{
get => stubManager;
get => stubInfoTitle;
}
private List<Artist> artists;
@ -79,16 +74,16 @@ public class LinqXmlSerialization : IDataManager
public LinqXmlSerialization()
{
playlists = new ObservableCollection<Playlist>();
stubManager = new StubManager();
artists = StubManager.GetArtists();
infoTitles = StubManager.GetInfoTitles();
albums = StubManager.GetAlbums();
artists = new List<Artist>();
infoTitles = new ObservableCollection<InfoTitle>();
albums = new ObservableCollection<Album>();
customTitles = new ObservableCollection<CustomTitle>();
if (!Directory.Exists(XMLPATH))
{
Directory.CreateDirectory(XMLPATH);
}
Directory.SetCurrentDirectory(XMLPATH);
LoadSerialization();
}
public void AddAlbum(Album album)
@ -169,10 +164,10 @@ public class LinqXmlSerialization : IDataManager
public void LoadSerialization()
{
LoadArtists();
LoadCustomTitles();
LoadAlbums();
LoadInfoTitles();
LoadCustomTitles();
LoadPlaylists();
LoadAlbums();
}
public void SaveSerialization()
@ -189,8 +184,6 @@ public class LinqXmlSerialization : IDataManager
if (!File.Exists(XMLFILEPLAYLISTS))
{
XDocument PlaylistFile = new XDocument();
Playlist p1 = new Playlist();
playlists.Add(p1);
var playlist = playlists.Select(p => new XElement("Playlist",
new XAttribute("Name", p.Name),
@ -238,7 +231,7 @@ public class LinqXmlSerialization : IDataManager
foreach(var custom in customsList)
{
CustomTitle? customTitle = GetCustomTitleByUrl(custom);
CustomTitle? customTitle = GetCustomTitleByPath(custom);
if (customTitle == null)
{
@ -258,7 +251,7 @@ public class LinqXmlSerialization : IDataManager
new XAttribute("Name", playlist.Name),
new XElement("Description", playlist.Description),
new XElement("ImageURL", playlist.ImageURL),
new XElement("Titles", playlist.Titles.Any() ? playlist.Titles.Select(p => p.Name).Aggregate((playlistName, nextPlaylist) => playlistName + " " + nextPlaylist) : "")
new XElement("Titles", playlist.Titles.Any() ? playlist.Titles.Select(p => p.Path).Aggregate((playlistName, nextPlaylist) => playlistName + " " + nextPlaylist) : "")
));
PlaylistsFichier.Add(new XElement("Playlists", playlist));
@ -276,60 +269,12 @@ public class LinqXmlSerialization : IDataManager
public void LoadArtists()
{
/*if (!File.Exists(XMLFILEARTISTS))
{
XDocument ArtistFile = new XDocument();
Artist a1 = new Artist("a1");
Artist a2 = new Artist("a2");
artists.Add(a1);
artists.Add(a2);
var artist = artists.Select(artist => new XElement("Artist",
new XAttribute("Name", artist.Name)
));
ArtistFile.Add(new XElement("Artists", artist));
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (TextWriter tw = File.CreateText(XMLFILEARTISTS))
{
using (XmlWriter writer = XmlWriter.Create(tw, settings))
{
ArtistFile.Save(writer);
}
}
}
XDocument ArtistsFile = XDocument.Load(XMLFILEARTISTS);
artists = ArtistsFile.Descendants("Artist")
.Select(eltArtist => new Artist(
eltArtist.Attribute("Name")!.Value
)).ToList();*/
artists.Add(new Artist("Imagine Dragons"));
artists = StubInfoTitle.StubAlbum.StubArtist.GetArtists();
}
public void SaveArtists()
{
/*XDocument ArtistsFile = new XDocument();
var artist = artists.Select(artist => new XElement("Artist",
new XAttribute("Name", artist.Name)
));
ArtistsFile.Add(new XElement("Artists", artist));
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (TextWriter tw = File.CreateText(XMLFILEARTISTS))
{
using (XmlWriter writer = XmlWriter.Create(tw, settings))
{
ArtistsFile.Save(writer);
}
}*/
// Don't do anything because it's static data
}
public void LoadCustomTitles()
@ -338,9 +283,6 @@ public class LinqXmlSerialization : IDataManager
{
XDocument CustomsFile2 = new XDocument();
CustomTitle ct1 = new CustomTitle("ct1", "url1.png", "info1", "path1");
customTitles.Add(ct1);
var custom = customTitles.Select(c => new XElement("CustomTitle",
new XAttribute("Name", c.Name),
@ -399,270 +341,28 @@ public class LinqXmlSerialization : IDataManager
public void LoadAlbums()
{
/*if (!File.Exists(XMLFILEALBUMS))
{
XDocument AlbumFile = new XDocument();
Album a1 = new Album();
albums.Add(a1);
var album = albums.Select(p => new XElement("Album",
new XAttribute("Name", p.Name),
new XElement("ImageURL", p.ImageURL),
new XElement("Artist", p.Titles.Any() ? p.Titles.Select(a => a.Name).Aggregate((artistName, nextArtist) => artistName + " " + nextArtist) : ""),
new XElement("Description", p.Description),
new XElement("Information", p.Information),
new XElement("Titles", p.Titles.Any() ? p.Titles.Select(a => a.Name).Aggregate((albumName, nextAlbum) => albumName + " " + nextAlbum) : "")
));
AlbumFile.Add(new XElement("Albums", album));
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (TextWriter tw = File.CreateText(XMLFILEALBUMS))
{
using (XmlWriter writer = XmlWriter.Create(tw, settings))
{
AlbumFile.Save(writer);
}
}
}
XDocument AlbumsFile = XDocument.Load(XMLFILEALBUMS);
var albums2 = AlbumsFile.Descendants("Album")
.Select(eltPlaylist => new Album(
eltPlaylist.Attribute("Name")!.Value,
eltPlaylist.Element("ImageURL")!.Value,
GetArtistByName(eltPlaylist.Element("Artist")!.Value) ?? new Artist(),
eltPlaylist.Element("Description")!.Value,
eltPlaylist.Element("Information")!.Value
)).ToList();
albums = new ObservableCollection<Album>(albums2);
foreach (Album a in albums)
{
var allTitles = AlbumsFile.Descendants("Album")
.Single(ct => ct.Attribute("Name")?.Value == a.Name)
.Element("Titles")!.Value;
if (allTitles == null)
{
continue;
}
char[] separator = new char[] { ' ' };
string[] titleArray = allTitles.Split(separator, StringSplitOptions.RemoveEmptyEntries);
List<string> titlesList = titleArray.ToList();
foreach (var title in titlesList)
{
InfoTitle? infoTitle = GetInfoTitleByName(title);
if (infoTitle == null)
{
continue;
}
a.AddTitle(infoTitle);
}
}*/
albums = StubInfoTitle.StubAlbum.GetAlbums();
}
public void SaveAlbums()
{
/* XDocument AlbumsFile = new XDocument();
var album = albums.Select(a => new XElement("Album",
new XAttribute("Name", a.Name),
new XElement("ImageURL", a.ImageURL),
new XElement("Artist", a.Artist.Name),
new XElement("Description", a.Description),
new XElement("Information", a.Information),
new XElement("Titles", a.Titles.Any() ? a.Titles.Select(p => p.Name).Aggregate((albumName, nextAlbum) => albumName + " " + nextAlbum) : "")
));
AlbumsFile.Add(new XElement("Albums", album));
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (TextWriter tw = File.CreateText(XMLFILEALBUMS))
{
using (XmlWriter writer = XmlWriter.Create(tw, settings))
{
AlbumsFile.Save(writer);
}
}*/
// Don't do anything because it's static data
}
public void LoadInfoTitles()
{
/*if (!File.Exists(XMLFILEINFOS))
{
XDocument InfoFile = new XDocument();
InfoTitle it1 = new InfoTitle();
infoTitles.Add(it1);
var infoTitle = infoTitles.Select(p => new XElement("InfoTitle",
new XAttribute("Name", p.Name),
new XElement("ImageURL", p.ImageURL),
new XElement("Information", p.Information),
new XElement("Feats", p.Feat.Any() ? p.Feat.Select(a => a.Name).Aggregate((artistName, nextArtist) => artistName + " " + nextArtist) : ""),
new XElement("Description", p.Description),
new XElement("Genre", p.Genre)
));
InfoFile.Add(new XElement("InfoTitles", infoTitle));
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (TextWriter tw = File.CreateText(XMLFILEINFOS))
{
using (XmlWriter writer = XmlWriter.Create(tw, settings))
{
InfoFile.Save(writer);
}
}
}
XDocument InfosFile = XDocument.Load(XMLFILEINFOS);
var infoTitles2 = InfosFile.Descendants("InfoTitle")
.Select(eltPlaylist => new InfoTitle(
eltPlaylist.Attribute("Name")!.Value,
eltPlaylist.Element("ImageURL")!.Value,
eltPlaylist.Element("Information")!.Value,
GetArtistByName(eltPlaylist.Element("Feats")!.Value) ?? new Artist(),
eltPlaylist.Element("Description")!.Value,
GetGenreByName(eltPlaylist.Element("Genre")!.Value)
)).ToList();
infoTitles = new ObservableCollection<InfoTitle>(infoTitles2);
foreach (InfoTitle it in infoTitles)
{
var feat = InfosFile.Descendants("InfoTitle")
.Single(infot => infot.Attribute("Name")?.Value == it.Name)
.Element("Feats")!.ToString();
if (feat == null)
{
continue;
}
Artist? Feat = GetArtistByName(feat);
if (Feat == null)
{
continue;
}
it.AddFeat(Feat);
}*/
AddInfoTitle(new InfoTitle("Bones", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Symphony", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Sharks", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("I don't like myself", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Blur", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Higher ground", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Crushed", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Take it easy", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Waves", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("I'm happy", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Ferris wheel", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Peace of mind", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Sirens", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Tied", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Younger", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("Continual", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
AddInfoTitle(new InfoTitle("They don't know you like I do", "none.png", "infos", GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
infoTitles = StubInfoTitle.GetInfoTitles();
foreach (var infoTitle in InfoTitles)
{
switch (infoTitle.Name)
{
case "Bones":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Symphony":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Sharks":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "I don't like myself":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Blur":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Higher ground":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Crushed":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Take it easy":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Waves":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "I'm Happy":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Ferris wheel":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Peace of mind":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Sirens":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Tied":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Younger":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Continual":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "They don't know you like I do":
GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
default:
break;
}
GetAlbumById(infoTitle.AlbumID)?.AddTitle(infoTitle);
}
}
public void SaveInfoTitles()
{
/*XDocument InfosFile = new XDocument();
var info = infoTitles.Select(it => new XElement("InfoTitle",
new XAttribute("Name", it.Name),
new XElement("ImageURL", it.ImageURL),
new XElement("Information", it.Information),
new XElement("Genre", it.Genre.ToString()),
new XElement("Description", it.Description),
new XElement("Feats", it.Feat.Any() ? it.Feat.Select(p => p.Name).Aggregate((featName, nextFeat) => featName + " " + nextFeat) : "")
));
InfosFile.Add(new XElement("InfoTitles", info));
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (TextWriter tw = File.CreateText(XMLFILEINFOS))
{
using (XmlWriter writer = XmlWriter.Create(tw, settings))
{
InfosFile.Save(writer);
}
}*/
// Don't do anything because it's static data
}
public static Genre GetGenreByName(string genre)
{
if (genre == "HIP_HOP") return Genre.HIP_HOP;
@ -721,11 +421,20 @@ public class LinqXmlSerialization : IDataManager
return null;
}
public CustomTitle? GetCustomTitleByUrl(string custom)
public Album? GetAlbumById(long id)
{
foreach(Album a in albums)
{
if (a.ID == id) return a;
}
return null;
}
public CustomTitle? GetCustomTitleByPath(string custom)
{
foreach(CustomTitle customTitle in customTitles)
{
if(customTitle.ImageURL == custom)
if(customTitle.Path == custom)
{
return customTitle;
}
@ -793,15 +502,15 @@ public class LinqXmlSerialization : IDataManager
title.Path = path;
}
public void UpdateCustomTitleByUrl(string url, string name, string newUrl, string info, string path)
public void UpdateCustomTitleByPath(string path, string name, string newUrl, string info, string newPath)
{
CustomTitle? title = GetCustomTitleByUrl(url);
CustomTitle? title = GetCustomTitleByPath(path);
if (title != null)
{
title.Name = name;
title.ImageURL = newUrl;
title.Information = info;
title.Path = path;
title.Path = newPath;
}
}
@ -810,7 +519,6 @@ public class LinqXmlSerialization : IDataManager
title.Name = name;
title.ImageURL = url;
title.Information = info;
title.Artist = artist;
title.Description = description;
title.Genre = genre;
}
@ -823,39 +531,6 @@ public class LinqXmlSerialization : IDataManager
title.Name = name;
title.ImageURL = newUrl;
title.Information = info;
title.Artist = artist;
title.Description = description;
title.Genre = genre;
}
}
public void UpdateInfoTitleByArtistName(InfoTitle title, string name, string url, string info, string artist, string description, Genre genre)
{
title.Name = name;
title.ImageURL = url;
title.Information = info;
Artist? artist2 = GetArtistByName(artist);
if (artist2 != null)
{
title.Artist = artist2;
}
title.Description = description;
title.Genre = genre;
}
public void UpdateInfoTitleByNameByArtistName(string name, string newUrl, string info, string artist, string description, Genre genre)
{
InfoTitle? title = GetInfoTitleByName(name);
if (title != null)
{
title.Name = name;
title.ImageURL = newUrl;
title.Information = info;
Artist? artist2 = GetArtistByName(artist);
if (artist2 != null)
{
title.Artist = artist2;
}
title.Description = description;
title.Genre = genre;
}

@ -11,14 +11,9 @@ public class StubArtist
public StubArtist()
{
Artist Artiste1 = new Artist("Imagine Dragons");
Artist Artiste2 = new Artist("Gouriet");
Artist Artiste3 = new Artist("Poulifer");
Artist Artiste4 = new Artist("Credian");
artists = new List<Artist>()
{
Artiste1, Artiste2, Artiste3, Artiste4
new Artist("Imagine Dragons")
};
}

@ -4,16 +4,15 @@ namespace Model.Stub;
public class StubInfoTitle
{
public StubArtist StubArtist
public StubAlbum StubAlbum
{
get
{
return stubArtist;
return stubAlbum;
}
}
private readonly StubArtist stubArtist;
private readonly StubAlbum stubAlbum;
public ObservableCollection<InfoTitle> InfoTitles
{
@ -24,14 +23,29 @@ public class StubInfoTitle
public StubInfoTitle()
{
stubArtist = new StubArtist();
InfoTitle InfoTitle1 = new InfoTitle("info1", "url1.png", "info1", StubArtist.GetArtistByName("Gouriet") ?? new Artist("Gouriet"), "desc1", Genre.K_POP);
InfoTitle InfoTitle2 = new InfoTitle("info2", "url2.png", "info2", StubArtist.GetArtistByName("Poulifer") ?? new Artist("Poulifer"), "desc2", Genre.GOSPEL);
stubAlbum = new StubAlbum();
Artist ImagineDragons = StubAlbum.StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons");
Album MercuryAct2 = stubAlbum.GetAlbumByName("Mercury Act 2") ?? new Album("Mercury Act 2", "album14.png", ImagineDragons, "desc", "infos");
long imagineDragonsID = MercuryAct2.ID;
infoTitles = new ObservableCollection<InfoTitle>()
{
InfoTitle1, InfoTitle2
new InfoTitle("Bones", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Symphony", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Sharks", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("I don't like myself", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Blur", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Higher ground", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Crushed", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Take it easy", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Waves", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("I'm happy", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Ferris wheel", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Peace of mind", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Sirens", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Tied", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Younger", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("Continual", "none.png", "infos", "desc", Genre.POP, imagineDragonsID),
new InfoTitle("They don't know you like I do", "none.png", "infos", "desc", Genre.POP, imagineDragonsID)
};
}

@ -58,19 +58,14 @@ public class StubManager : IDataManager
public StubManager()
{
stubAlbum = new StubAlbum();
stubArtist = new StubArtist();
stubCustomTitle = new StubCustomTitle();
stubInfoTitle = new StubInfoTitle();
stubAlbum = StubInfoTitle.StubAlbum;
stubArtist = StubAlbum.StubArtist;
stubCustomTitle = new StubCustomTitle();
stubPlaylist = new StubPlaylist();
LoadSerialization();
}
~StubManager()
{
SaveSerialization();
}
public ObservableCollection<Album> GetAlbums()
{
return StubAlbum.GetAlbums();
@ -155,84 +150,9 @@ public class StubManager : IDataManager
public void LoadSerialization()
{
StubArtist.AddArtist(new Artist("Imagine Dragons"));
StubAlbum.AddAlbum(new Album("Mercury Act 2", "image14.png", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", "infos"));
StubPlaylist.Playlists.First().AddTitle(StubCustomTitle.CustomTitles.First());
StubInfoTitle.AddInfoTitle(new InfoTitle("Bones", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Symphony", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Sharks", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("I don't like myself", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Blur", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Higher ground", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Crushed", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Take it easy", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Waves", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("I'm happy", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Ferris wheel", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Peace of mind", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Sirens", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Tied", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Younger", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("Continual", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
StubInfoTitle.AddInfoTitle(new InfoTitle("They don't know you like I do", "none.png", "infos", StubArtist.GetArtistByName("Imagine Dragons") ?? new Artist("Imagine Dragons"), "desc", Genre.POP));
foreach (var infoTitle in StubInfoTitle.InfoTitles)
{
switch(infoTitle.Name)
{
case "Bones":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Symphony":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Sharks":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "I don't like myself":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Blur":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Higher ground":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Crushed":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Take it easy":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Waves":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "I'm Happy":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Ferris wheel":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Peace of mind":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Sirens":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Tied":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Younger":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "Continual":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
case "They don't know you like I do":
StubAlbum.GetAlbumByName("Mercury Act 2")!.AddTitle(infoTitle);
break;
default:
break;
}
foreach(InfoTitle infoTitle in StubInfoTitle.InfoTitles)
{
GetAlbumById(infoTitle.AlbumID)?.AddTitle(infoTitle);
}
}
@ -241,11 +161,11 @@ public class StubManager : IDataManager
// Doesn't do anything because it's Stubs
}
public CustomTitle? GetCustomTitleByUrl(string custom)
public CustomTitle? GetCustomTitleByPath(string custom)
{
foreach (CustomTitle customTitle in StubCustomTitle.GetCustomTitles())
{
if (customTitle.ImageURL == custom)
if (customTitle.Path == custom)
{
return customTitle;
}
@ -349,15 +269,15 @@ public class StubManager : IDataManager
title.Path = path;
}
public void UpdateCustomTitleByUrl(string url, string name, string newUrl, string info, string path)
public void UpdateCustomTitleByPath(string path, string name, string newUrl, string info, string newPath)
{
CustomTitle? title = GetCustomTitleByUrl(url);
CustomTitle? title = GetCustomTitleByPath(path);
if (title != null)
{
title.Name = name;
title.ImageURL = newUrl;
title.Information = info;
title.Path = path;
title.Path = newPath;
}
}
@ -366,7 +286,6 @@ public class StubManager : IDataManager
title.Name = name;
title.ImageURL = url;
title.Information = info;
title.Artist = artist;
title.Description = description;
title.Genre = genre;
}
@ -379,39 +298,6 @@ public class StubManager : IDataManager
title.Name = name;
title.ImageURL = newUrl;
title.Information = info;
title.Artist = artist;
title.Description = description;
title.Genre = genre;
}
}
public void UpdateInfoTitleByArtistName(InfoTitle title, string name, string url, string info, string artist, string description, Genre genre)
{
title.Name = name;
title.ImageURL = url;
title.Information = info;
Artist? artist2 = GetArtistByName(artist);
if (artist2 != null)
{
title.Artist = artist2;
}
title.Description = description;
title.Genre = genre;
}
public void UpdateInfoTitleByNameByArtistName(string name, string newUrl, string info, string artist, string description, Genre genre)
{
InfoTitle? title = GetInfoTitleByName(name);
if (title != null)
{
title.Name = name;
title.ImageURL = newUrl;
title.Information = info;
Artist? artist2 = GetArtistByName(artist);
if (artist2 != null)
{
title.Artist = artist2;
}
title.Description = description;
title.Genre = genre;
}
@ -660,4 +546,16 @@ public class StubManager : IDataManager
}
return false;
}
public Album? GetAlbumById(long id)
{
foreach(Album album in StubAlbum.Albums)
{
if(album.ID == id)
{
return album;
}
}
return null;
}
}

@ -35,11 +35,11 @@ namespace TestUnitaires
public void TU_Methods(string nameAlbum, string url, string desc, string info)
{
Album album = new Album(nameAlbum, url, new Artist("test"), desc, info);
Title t = new Title("Débitage", "test. mp3", "Banger");
InfoTitle t = new InfoTitle("Débitage", "test. mp3", "Banger", "", Genre.POP, 0);
album.AddTitle(t);
Assert.Contains(t, album.Titles);
Assert.Contains(t, album.InfoTitles);
album.RemoveTitle(t);
Assert.DoesNotContain(t, album.Titles);
Assert.DoesNotContain(t, album.InfoTitles);
}
}

@ -8,15 +8,15 @@ namespace TestUnitaires
public class TU_InfoTitle
{
[Theory]
[InlineData("Trajectoire","morceau1.png","Sortie : 2020","Morceau de Népal",Genre.HIP_HOP)]
[InlineData(null, "morceau1.png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP)]
[InlineData("Trajectoire", null, "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP)]
[InlineData("Trajectoire", "morceau1.png", null, "Morceau de Népal", Genre.HIP_HOP)]
[InlineData("Trajectoire", "morceau1png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP)]
[InlineData("Trajectoire", "morceau1. png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP)]
public void TU_Attributes(string name, string url, string info, string desc, Genre g)
[InlineData("Trajectoire","morceau1.png","Sortie : 2020","Morceau de Népal",Genre.HIP_HOP, 0)]
[InlineData(null, "morceau1.png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP, 0)]
[InlineData("Trajectoire", null, "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP, 1)]
[InlineData("Trajectoire", "morceau1.png", null, "Morceau de Népal", Genre.HIP_HOP, 1)]
[InlineData("Trajectoire", "morceau1png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP, 0)]
[InlineData("Trajectoire", "morceau1. png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP, 1)]
public void TU_Attributes(string name, string url, string info, string desc, Genre g, long id)
{
InfoTitle it = new InfoTitle(name, url, info, new Artist("test"), desc, g);
InfoTitle it = new InfoTitle(name, url, info, desc, g, id);
Assert.True(it.Name != null && it.Name.Length < 75);
Assert.True(it.ImageURL != null && it.ImageURL.Contains('.'));
Assert.True(it.Information != null && it.Information.Length < 500);
@ -24,15 +24,15 @@ namespace TestUnitaires
}
[Theory]
[InlineData("Trajectoire", "morceau1.png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP)]
[InlineData(null, "morceau1.png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP)]
[InlineData("Trajectoire", null, "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP)]
[InlineData("Trajectoire", "morceau1.png", null, "Morceau de Népal", Genre.HIP_HOP)]
[InlineData("Trajectoire", "morceau1png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP)]
[InlineData("Trajectoire", "morceau1. png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP)]
public void TU_Methods(string name, string url, string info, string desc, Genre g)
[InlineData("Trajectoire", "morceau1.png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP, 0)]
[InlineData(null, "morceau1.png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP, 0)]
[InlineData("Trajectoire", null, "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP, 1)]
[InlineData("Trajectoire", "morceau1.png", null, "Morceau de Népal", Genre.HIP_HOP, 1)]
[InlineData("Trajectoire", "morceau1png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP, 0)]
[InlineData("Trajectoire", "morceau1. png", "Sortie : 2020", "Morceau de Népal", Genre.HIP_HOP, 1)]
public void TU_Methods(string name, string url, string info, string desc, Genre g, long id)
{
InfoTitle it = new InfoTitle(name, url, info, new Artist("test"), desc, g);
InfoTitle it = new InfoTitle(name, url, info, desc, g, id);
Artist a = new Artist("Lahuiss");
it.AddFeat(a);
Assert.Contains(a, it.Feat);

Loading…
Cancel
Save