diff --git a/Sources/Linaris/AddPlaylistPage.xaml b/Sources/Linaris/AddPlaylistPage.xaml
new file mode 100644
index 0000000..ac303db
--- /dev/null
+++ b/Sources/Linaris/AddPlaylistPage.xaml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/Linaris/AddPlaylistPage.xaml.cs b/Sources/Linaris/AddPlaylistPage.xaml.cs
new file mode 100644
index 0000000..0057b2d
--- /dev/null
+++ b/Sources/Linaris/AddPlaylistPage.xaml.cs
@@ -0,0 +1,58 @@
+using Model;
+using System.Collections.ObjectModel;
+
+namespace Linaris;
+
+public partial class AddPlaylistPage : ContentPage
+{
+ public Playlist NewPlaylist { get; } = new Playlist();
+
+ public AddPlaylistPage()
+ {
+ InitializeComponent();
+ BindingContext = NewPlaylist;
+ }
+
+ private async void ChangeImage(object sender, EventArgs e)
+ {
+ var result = await FilePicker.PickAsync(new PickOptions
+ {
+ PickerTitle = "Choisissez une nouvelle image !",
+ FileTypes = FilePickerFileType.Images
+ });
+
+ if (result == null)
+ {
+ return;
+ }
+
+ if (sender is Image image)
+ {
+ if (image.BindingContext is Playlist playlist)
+ {
+ playlist.ImageURL = result.FullPath;
+ }
+ }
+ }
+
+ private void Cancel(object sender, EventArgs e)
+ {
+ Navigation.PopModalAsync();
+ }
+
+ private async void AddPlaylist(object sender, EventArgs e)
+ {
+ if ((Application.Current as App).Manager.GetPlaylistByName(NewPlaylist.Name) != null)
+ {
+ await DisplayAlert("Erreur !", "La playlist existe déjà", "OK");
+ return;
+ }
+ if (string.IsNullOrWhiteSpace(NewPlaylist.Name))
+ {
+ await DisplayAlert("Erreur !", "Le nom de la playlist ne doit pas être vide !", "OK");
+ return;
+ }
+ (Application.Current as App).Manager.AddPlaylist(NewPlaylist);
+ await Navigation.PopModalAsync();
+ }
+}
\ No newline at end of file
diff --git a/Sources/Linaris/App.xaml.cs b/Sources/Linaris/App.xaml.cs
index e91283f..717e04a 100644
--- a/Sources/Linaris/App.xaml.cs
+++ b/Sources/Linaris/App.xaml.cs
@@ -6,9 +6,8 @@ namespace Linaris;
public partial class App : Application
{
- static IDataManager DataManager = new LinqXmlSerialization();
- public static Manager Manager = new Manager(DataManager);
+ public Manager Manager = new(new LinqXmlSerialization());
public App()
{
diff --git a/Sources/Linaris/Linaris.csproj b/Sources/Linaris/Linaris.csproj
index 2bf4465..bea972f 100644
--- a/Sources/Linaris/Linaris.csproj
+++ b/Sources/Linaris/Linaris.csproj
@@ -34,7 +34,7 @@
-
+
@@ -73,9 +73,21 @@
+
+ MSBuild:Compile
+
+
+ MSBuild:Compile
+
MSBuild:Compile
+
+ MSBuild:Compile
+
+
+ MSBuild:Compile
+
MSBuild:Compile
diff --git a/Sources/Linaris/LocalFilesPage.xaml.cs b/Sources/Linaris/LocalFilesPage.xaml.cs
index f699cce..16eb533 100644
--- a/Sources/Linaris/LocalFilesPage.xaml.cs
+++ b/Sources/Linaris/LocalFilesPage.xaml.cs
@@ -9,14 +9,14 @@ namespace Linaris
{
public partial class LocalFilesPage : ContentPage
{
- private ObservableCollection customTitles = App.Manager.GetCustomTitles();
+ private ObservableCollection customTitles = (Application.Current as App).Manager.GetCustomTitles();
public ObservableCollection CustomTitles
{
get => customTitles;
}
- private ObservableCollection playlists = App.Manager.GetPlaylists();
+ private ObservableCollection playlists = (Application.Current as App).Manager.GetPlaylists();
public ObservableCollection Playlists
{
@@ -69,7 +69,7 @@ namespace Linaris
void AddCustomTitle(CustomTitle customTitle)
{
- App.Manager.AddCustomTitle(customTitle);
+ (Application.Current as App).Manager.AddCustomTitle(customTitle);
customTitles.Add(customTitle);
ResetAll(this, null);
}
@@ -128,7 +128,7 @@ namespace Linaris
Playlist playlist = new Playlist(entry.Text, "", "none.png");
if (!IsInPlaylists(playlist))
{
- App.Manager.AddPlaylist(playlist);
+ (Application.Current as App).Manager.AddPlaylist(playlist);
playlists.Add(playlist);
}
if(entry.BindingContext is CustomTitle customTitle)
@@ -148,7 +148,7 @@ namespace Linaris
{
if (button.BindingContext is CustomTitle titleToRemove)
{
- App.Manager.RemoveCustomTitle(titleToRemove);
+ (Application.Current as App).Manager.RemoveCustomTitle(titleToRemove);
customTitles.Remove(titleToRemove);
}
}
diff --git a/Sources/Linaris/MainPage.xaml.cs b/Sources/Linaris/MainPage.xaml.cs
index 82c9d21..eb934fc 100644
--- a/Sources/Linaris/MainPage.xaml.cs
+++ b/Sources/Linaris/MainPage.xaml.cs
@@ -5,7 +5,7 @@ namespace Linaris;
public partial class MainPage : ContentPage
{
- private ObservableCollection albums = App.Manager.GetAlbums();
+ private ObservableCollection albums = (Application.Current as App).Manager.GetAlbums();
public ObservableCollection Albums
{
diff --git a/Sources/Linaris/PlaylistsPage.xaml b/Sources/Linaris/PlaylistsPage.xaml
index b35cd71..d393c5c 100644
--- a/Sources/Linaris/PlaylistsPage.xaml
+++ b/Sources/Linaris/PlaylistsPage.xaml
@@ -43,8 +43,7 @@
-
-
+
diff --git a/Sources/Linaris/PlaylistsPage.xaml.cs b/Sources/Linaris/PlaylistsPage.xaml.cs
index 5360320..405e47a 100644
--- a/Sources/Linaris/PlaylistsPage.xaml.cs
+++ b/Sources/Linaris/PlaylistsPage.xaml.cs
@@ -1,30 +1,13 @@
using Model;
-using Model.Stub;
using System.Collections.ObjectModel;
namespace Linaris;
public partial class PlaylistsPage : ContentPage
{
+ private ObservableCollection playlists = (Application.Current as App).Manager.GetPlaylists();
- private ObservableCollection playlists = App.Manager.GetPlaylists();
-
- public ObservableCollection Playlists
- {
- get => playlists;
- }
-
- private bool isNewPlaylist = false;
-
- public bool IsNewPlaylist
- {
- get => isNewPlaylist;
- set
- {
- isNewPlaylist = value;
- OnPropertyChanged(nameof(IsNewPlaylist));
- }
- }
+ public ObservableCollection Playlists { get => playlists; }
public PlaylistsPage()
{
@@ -37,7 +20,6 @@ public partial class PlaylistsPage : ContentPage
void ResetAll(object sender, EventArgs e)
{
ResetSubMenus(sender, e);
- IsNewPlaylist = false;
}
void ResetSubMenus(object sender, EventArgs e)
@@ -51,19 +33,10 @@ public partial class PlaylistsPage : ContentPage
// Add methods
- void CreatePlaylist(object sender, EventArgs e)
+ async void AddPlaylist(object sender, EventArgs e)
{
- if (sender is Entry entry)
- {
- if (!HasSameName(entry.Text))
- {
- Playlist playlist = new Playlist(entry.Text, "", "none.png");
- App.Manager.AddPlaylist(playlist);
- playlists.Add(playlist);
- IsNewPlaylist = false;
- entry.Text = "";
- }
- }
+
+ await Navigation.PushModalAsync(new AddPlaylistPage());
}
@@ -75,7 +48,6 @@ public partial class PlaylistsPage : ContentPage
{
if (button.BindingContext is Playlist playlist)
{
- App.Manager.RemovePlaylist(playlist);
playlists.Remove(playlist);
}
}
@@ -103,11 +75,6 @@ public partial class PlaylistsPage : ContentPage
}
}
- void ShowEntryPlaylist(object sender, EventArgs e)
- {
- IsNewPlaylist = true;
- }
-
// Change methods
@@ -133,19 +100,6 @@ public partial class PlaylistsPage : ContentPage
}
}
- // Search methods
-
- bool HasSameName(string name)
- {
- foreach(Playlist playlist in playlists)
- {
- if (playlist.Name == name)
- {
- return true;
- }
- }
- return false;
- }
// Navigation
async void GoToPlaylist(object sender, EventArgs e)
diff --git a/Sources/Model/Manager.cs b/Sources/Model/Manager.cs
index c5ef903..d2bd8f7 100644
--- a/Sources/Model/Manager.cs
+++ b/Sources/Model/Manager.cs
@@ -1,9 +1,11 @@
using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
namespace Model.Stub;
public class Manager
-{
+{
public readonly static int MAX_NAME_LENGTH = 75;
public readonly static int MAX_DESCRIPTION_LENGTH = 500;
@@ -79,32 +81,37 @@ public class Manager
public void AddAlbum(Album album)
{
+ if (GetAlbumByName(album.Name) != null) return;
DataManager.AddAlbum(album);
- albums = DataManager.GetAlbums();
+ albums.Add(album);
}
public void AddCustomTitle(CustomTitle title)
{
+ if (GetInfoTitleByName(title.Name) != null) return;
DataManager.AddCustomTitle(title);
- customTitles = DataManager.GetCustomTitles();
+ customTitles.Add(title);
}
public void AddInfoTitle(InfoTitle title)
{
+ if (GetInfoTitleByName(title.Name) != null) return;
DataManager.AddInfoTitle(title);
- infoTitles = DataManager.GetInfoTitles();
+ infoTitles.Add(title);
}
public void AddPlaylist(Playlist playlist)
{
+ if (GetPlaylistByName(playlist.Name) != null) return;
DataManager.AddPlaylist(playlist);
playlists = DataManager.GetPlaylists();
}
public void AddArtist(Artist artist)
{
+ if (GetArtistByName(artist.Name) != null) return;
DataManager.AddArtist(artist);
- artists = DataManager.GetArtists();
+ artists.Add(artist);
}
public void RemoveAlbum(Album album)
@@ -171,4 +178,24 @@ public class Manager
return DataManager.GetPlaylistByName(name);
}
+ public Artist? GetArtistByName(string name)
+ {
+ return DataManager.GetArtistByName(name);
+ }
+
+ public CustomTitle? GetCustomTitleByUrl(string url)
+ {
+ return DataManager.GetCustomTitleByUrl(url);
+ }
+
+ public InfoTitle? GetInfoTitleByName(string name)
+ {
+ return DataManager.GetInfoTitleByName(name);
+ }
+
+ public Album? GetAlbumByName(string name)
+ {
+ return DataManager.GetAlbumByName(name);
+ }
+
}
diff --git a/Sources/Model/Playlist.cs b/Sources/Model/Playlist.cs
index 1b3befc..2d12e27 100644
--- a/Sources/Model/Playlist.cs
+++ b/Sources/Model/Playlist.cs
@@ -3,7 +3,6 @@ using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Security.Cryptography;
-using System.Xml.Serialization;
namespace Model;
@@ -20,9 +19,9 @@ public class Playlist : INotifyPropertyChanged
set
{
- if (string.IsNullOrWhiteSpace(value) || value.Length > Manager.MAX_NAME_LENGTH)
+ if (value.Length > Manager.MAX_NAME_LENGTH)
{
- value = "IncorrectName";
+ return;
}
name = value;
OnPropertyChanged();
@@ -31,21 +30,6 @@ public class Playlist : INotifyPropertyChanged
private string name = Manager.DEFAULT_NAME;
- public string NewName
- {
- get => newName;
-
- set
- {
- if (value != null && value.Length < Manager.MAX_NAME_LENGTH)
- {
- newName = value;
- }
- }
- }
-
- private string newName = Manager.DEFAULT_NAME;
-
public string Description
{
get => description;
@@ -151,7 +135,6 @@ public class Playlist : INotifyPropertyChanged
public Playlist(string nom, string description, string imageURL)
{
Name = nom;
- NewName = nom;
Description = description;
ImageURL = imageURL;
}
diff --git a/Sources/Model/Serialization/LINQ_XML_Serialization.cs b/Sources/Model/Serialization/LINQ_XML_Serialization.cs
index 414ef7e..3a5ea34 100644
--- a/Sources/Model/Serialization/LINQ_XML_Serialization.cs
+++ b/Sources/Model/Serialization/LINQ_XML_Serialization.cs
@@ -97,7 +97,6 @@ public class LinqXmlSerialization : IDataManager
Directory.CreateDirectory(XMLPATH);
}
Directory.SetCurrentDirectory(XMLPATH);
- SaveAlbums();
LoadSerialization();
}
@@ -128,7 +127,7 @@ public class LinqXmlSerialization : IDataManager
public ObservableCollection GetAlbums()
{
- return Albums;
+ return albums;
}
public List GetArtists()
@@ -138,17 +137,17 @@ public class LinqXmlSerialization : IDataManager
public ObservableCollection GetCustomTitles()
{
- return CustomTitles;
+ return customTitles;
}
public ObservableCollection GetInfoTitles()
{
- return InfoTitles;
+ return infoTitles;
}
public ObservableCollection GetPlaylists()
{
- return Playlists;
+ return playlists;
}
public void RemoveAlbum(Album album)