Start Binding Layout
continuous-integration/drone/push Build is passing Details

pull/25/head
Corentin LEMAIRE 2 years ago
parent f22e8294fa
commit 210dd80a32

@ -8,11 +8,13 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Model\Model.csproj" />
<Compile Remove="xml\**" />
<EmbeddedResource Remove="xml\**" />
<None Remove="xml\**" />
</ItemGroup>
<ItemGroup>
<Folder Include="xml\" />
<ProjectReference Include="..\Model\Model.csproj" />
</ItemGroup>
</Project>

@ -4,12 +4,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00
VisualStudioVersion = 17.0.31611.283
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Linaris", "Linaris\Linaris.csproj", "{9E6281F7-95F6-472C-B268-894CE377C8A9}"
ProjectSection(ProjectDependencies) = postProject
{AA1DB94B-8273-437F-A07A-BB1F5F0D278D} = {AA1DB94B-8273-437F-A07A-BB1F5F0D278D}
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Console", "Console\Console.csproj", "{BB50C1E3-5A9A-40AF-8CD7-55B41064290B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Model", "Model\Model.csproj", "{AA1DB94B-8273-437F-A07A-BB1F5F0D278D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestUnitaires", "TestUnitaires\TestUnitaires.csproj", "{8B0671CF-1302-4244-8837-916E632007E2}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestUnitaires", "TestUnitaires\TestUnitaires.csproj", "{8B0671CF-1302-4244-8837-916E632007E2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

@ -1,8 +1,16 @@
namespace Linaris;
using Model.Serialization;
using Model.Stub;
using Model;
namespace Linaris;
public partial class App : Application
{
public App()
static IDataManager DataManager = new LinqXmlSerialization();
public static Manager Manager = new Manager(DataManager);
public App()
{
InitializeComponent();

@ -59,6 +59,10 @@
<PackageReference Include="Syncfusion.Maui.Sliders" Version="21.1.39" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Model\Model.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Update="AlbumPage.xaml.cs">
<DependentUpon>AlbumPage.xaml</DependentUpon>

@ -1,76 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Linaris.LocalFilesPage"
xmlns:control="clr-namespace:Syncfusion.Maui.ProgressBar;assembly=Syncfusion.Maui.ProgressBar"
xmlns:sliders="clr-namespace:Syncfusion.Maui.Sliders;assembly=Syncfusion.Maui.Sliders"
xmlns:local="clr-namespace:Linaris"
xmlns:manager="clr-namespace:Model;assembly=Model"
x:Class="Linaris.LocalFilesPage"
Title="LocalFilesPage"
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"/>
<ScrollView Grid.Column="1" Grid.Row="0" BackgroundColor="#404040">
<VerticalStackLayout>
<SearchBar Style="{StaticResource SearchBar}"/>
<FlexLayout Direction="Row" AlignItems="Start" JustifyContent="SpaceAround" Wrap="Wrap">
<VerticalStackLayout Margin="10">
<ImageButton Source="mp3.png" SemanticProperties.Description="MP3" Style="{StaticResource Pochette}"/>
<Label Text="The Last Breath" Style="{StaticResource Titre}"></Label>
</VerticalStackLayout>
<VerticalStackLayout Margin="10">
<ImageButton Source="wav.png" SemanticProperties.Description="WAV" Style="{StaticResource Pochette}"/>
<Label Text="Love" Style="{StaticResource Titre}"></Label>
</VerticalStackLayout>
<VerticalStackLayout Margin="10">
<ImageButton Source="ogg.png" SemanticProperties.Description="OGG" Style="{StaticResource Pochette}"/>
<Label Text="Winter" Style="{StaticResource Titre}"></Label>
</VerticalStackLayout>
<VerticalStackLayout Margin="10">
<ImageButton Source="midi.png" SemanticProperties.Description="MIDI" Style="{StaticResource Pochette}"/>
<Label Text="Croissant" Style="{StaticResource Titre}"></Label>
</VerticalStackLayout>
<VerticalStackLayout Margin="10">
<ImageButton Source="mp3.png" SemanticProperties.Description="MP3" Style="{StaticResource Pochette}"/>
<Label Text="Fredo et Louis" Style="{StaticResource Titre}"></Label>
</VerticalStackLayout>
<VerticalStackLayout Margin="10">
<ImageButton Source="mp3.png" SemanticProperties.Description="MP3" Style="{StaticResource Pochette}"/>
<Label Text="end" Style="{StaticResource Titre}"></Label>
</VerticalStackLayout>
<VerticalStackLayout Margin="10">
<ImageButton Source="wav.png" SemanticProperties.Description="WAV" Style="{StaticResource Pochette}"/>
<Label Text="calm" Style="{StaticResource Titre}"></Label>
</VerticalStackLayout>
<VerticalStackLayout Margin="10">
<ImageButton Source="mp3.png" SemanticProperties.Description="MP3" Style="{StaticResource Pochette}"/>
<Label Text="Lessgooo" Style="{StaticResource Titre}"></Label>
</VerticalStackLayout>
<FlexLayout Direction="Row" AlignItems="Start" BindableLayout.ItemsSource="{Binding CustomTitles}" JustifyContent="SpaceAround" Wrap="Wrap">
<BindableLayout.ItemTemplate>
<DataTemplate>
<VerticalStackLayout Margin="10">
<ImageButton Grid.Row="0" Source="{Binding ImageURL}" Style="{StaticResource Pochette}"/>
<Label Grid.Row="1" Text="{Binding Name}" Style="{StaticResource Titre}"/>
</VerticalStackLayout>
</DataTemplate>
</BindableLayout.ItemTemplate>
</FlexLayout>
<Button WidthRequest="300" HeightRequest="50" Margin="0,20,0,20" BackgroundColor="{StaticResource Primary}" Text="Ajouter d'autres titres" Clicked="AddCustomTitle"/>
</VerticalStackLayout>
</ScrollView>
<local:FooterPage Grid.Row="1" Grid.ColumnSpan="2"/>
</Grid>
</ContentPage>

@ -1,9 +1,29 @@
using Model;
using Model.Serialization;
using Model.Stub;
using System.Collections.ObjectModel;
namespace Linaris;
public partial class LocalFilesPage : ContentPage
{
private ObservableCollection<CustomTitle> customTitles = App.Manager.GetCustomTitles();
public ObservableCollection<CustomTitle> CustomTitles
{
get => customTitles;
}
public LocalFilesPage()
{
InitializeComponent();
BindingContext = this;
}
void AddCustomTitle(object sender, EventArgs e)
{
App.Manager.AddCustomTitle(new CustomTitle());
customTitles = App.Manager.GetCustomTitles();
}
}

@ -1,4 +1,6 @@
namespace Model;
using System.Collections.ObjectModel;
namespace Model;
public interface IDataManager
{
@ -24,15 +26,15 @@ public interface IDataManager
void AddInfoTitles(List<InfoTitle> infoTitlesList);
// Read
List<CustomTitle> GetCustomTitles();
ObservableCollection<CustomTitle> GetCustomTitles();
CustomTitle? GetCustomTitleByUrl(string custom);
List<InfoTitle> GetInfoTitles();
ObservableCollection<InfoTitle> GetInfoTitles();
InfoTitle? GetInfoTitleByUrl(string url);
List<Album> GetAlbums();
ObservableCollection<Album> GetAlbums();
Album? GetAlbumByUrl(string url);
@ -40,7 +42,7 @@ public interface IDataManager
Artist? GetArtistByName(string name);
List<Playlist> GetPlaylists();
ObservableCollection<Playlist> GetPlaylists();
Playlist? GetPlaylistByUrl(string url);

@ -1,4 +1,6 @@
namespace Model.Stub;
using System.Collections.ObjectModel;
namespace Model.Stub;
public class Manager
{
@ -14,43 +16,43 @@ public class Manager
public IDataManager DataManager { get; set; }
private List<Album> albums;
private ObservableCollection<Album> albums;
public IEnumerable<Album> Albums
public ObservableCollection<Album> Albums
{
get
{
return new List<Album>(albums);
return new ObservableCollection<Album>(albums);
}
}
private List<CustomTitle> customTitles;
private ObservableCollection<CustomTitle> customTitles;
public IEnumerable<CustomTitle> CustomTitles
public ObservableCollection<CustomTitle> CustomTitles
{
get
{
return new List<CustomTitle>(customTitles);
return new ObservableCollection<CustomTitle>(customTitles);
}
}
private List<InfoTitle> infoTitles;
private ObservableCollection<InfoTitle> infoTitles;
public IEnumerable<InfoTitle> InfoTitles
public ObservableCollection<InfoTitle> InfoTitles
{
get
{
return new List<InfoTitle>(infoTitles);
return new ObservableCollection<InfoTitle>(infoTitles);
}
}
private List<Playlist> playlists;
private ObservableCollection<Playlist> playlists;
public IEnumerable<Playlist> Playlists
public ObservableCollection<Playlist> Playlists
{
get
{
return new List<Playlist>(playlists);
return new ObservableCollection<Playlist>(playlists);
}
}
@ -129,22 +131,22 @@ public class Manager
playlists = DataManager.GetPlaylists();
}
public IEnumerable<Playlist> GetPlaylists()
public ObservableCollection<Playlist> GetPlaylists()
{
return DataManager.GetPlaylists();
}
public IEnumerable<Album> GetAlbums()
public ObservableCollection<Album> GetAlbums()
{
return DataManager.GetAlbums();
}
public IEnumerable<CustomTitle> GetCustomTitles()
public ObservableCollection<CustomTitle> GetCustomTitles()
{
return DataManager.GetCustomTitles();
}
public IEnumerable<InfoTitle> GetInfoTitles()
public ObservableCollection<InfoTitle> GetInfoTitles()
{
return DataManager.GetInfoTitles();
}

@ -8,12 +8,13 @@ using System.Xml.Serialization;
using static System.Reflection.Metadata.BlobBuilder;
using System.Reflection.Metadata;
using System.IO;
using System.Collections.ObjectModel;
namespace Model.Serialization;
public class LinqXmlSerialization : IDataManager
{
private static string XMLPATH = Path.Combine(Environment.CurrentDirectory, "Data");
private static string XMLPATH = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Data");
private static string XMLFILEPLAYLISTS = Path.Combine(XMLPATH, "playlists.xml");
@ -37,41 +38,41 @@ public class LinqXmlSerialization : IDataManager
private List<Album> albums;
public IEnumerable<Album> Albums
public ObservableCollection<Album> Albums
{
get
{
return new List<Album>(albums);
return new ObservableCollection<Album>(albums);
}
}
private List<Playlist> playlists;
public IEnumerable<Playlist> Playlists
public ObservableCollection<Playlist> Playlists
{
get
{
return new List<Playlist>(playlists);
return new ObservableCollection<Playlist>(playlists);
}
}
private List<InfoTitle> infoTitles;
public IEnumerable<InfoTitle> InfoTitles
public ObservableCollection<InfoTitle> InfoTitles
{
get
{
return new List<InfoTitle>(infoTitles);
return new ObservableCollection<InfoTitle>(infoTitles);
}
}
private List<CustomTitle> customTitles;
public IEnumerable<CustomTitle> CustomTitles
public ObservableCollection<CustomTitle> CustomTitles
{
get
{
return new List<CustomTitle>(customTitles);
return new ObservableCollection<CustomTitle>(customTitles);
}
}
@ -115,9 +116,9 @@ public class LinqXmlSerialization : IDataManager
playlists.Add(playlist);
}
public List<Album> GetAlbums()
public ObservableCollection<Album> GetAlbums()
{
return albums;
return Albums;
}
public List<Artist> GetArtists()
@ -125,19 +126,19 @@ public class LinqXmlSerialization : IDataManager
return artists;
}
public List<CustomTitle> GetCustomTitles()
public ObservableCollection<CustomTitle> GetCustomTitles()
{
return customTitles;
return CustomTitles;
}
public List<InfoTitle> GetInfoTitles()
public ObservableCollection<InfoTitle> GetInfoTitles()
{
return infoTitles;
return InfoTitles;
}
public List<Playlist> GetPlaylists()
public ObservableCollection<Playlist> GetPlaylists()
{
return playlists;
return Playlists;
}
public void RemoveAlbum(Album album)

@ -1,4 +1,5 @@
using System.Linq;
using System.Collections.ObjectModel;
using System.Linq;
namespace Model.Stub;
@ -14,12 +15,12 @@ public class StubAlbum
private readonly StubArtist stubArtist;
public List<Album> Albums
public ObservableCollection<Album> Albums
{
get => albums;
}
private readonly List<Album> albums;
private readonly ObservableCollection<Album> albums;
public StubAlbum()
{
@ -29,13 +30,13 @@ public class StubAlbum
Album Album2 = new Album("la jsp", "oui.png", StubArtist.GetArtistByName("Critien") ?? new Artist("Critien"), "c'est la couri", "plein d'infos2");
Album Album3 = new Album("la pas le temps", "non.png", StubArtist.GetArtistByName("Poulifer") ?? new Artist("Poulifer"), "c'est pas la street", "plein d'infos3");
Album Album4 = new Album("la pas le choix", "peutetre.png", StubArtist.GetArtistByName("Credian") ?? new Artist("Credian"), "c'est la parterre", "plein d'infos4");
albums = new List<Album>()
albums = new ObservableCollection<Album>()
{
Album1, Album2, Album3, Album4
};
}
public List<Album> GetAlbums()
public ObservableCollection<Album> GetAlbums()
{
return albums;
}

@ -1,27 +1,38 @@
namespace Model.Stub;
using System.Collections.ObjectModel;
namespace Model.Stub;
public class StubCustomTitle
{
public List<CustomTitle> CustomTitles
public ObservableCollection<CustomTitle> CustomTitles
{
get => customTitles;
}
private readonly List<CustomTitle> customTitles;
private readonly ObservableCollection<CustomTitle> customTitles;
public StubCustomTitle()
{
CustomTitle Custom1 = new CustomTitle("MaMusique", "url1.png", "info1", "chemin1");
CustomTitle Custom2 = new CustomTitle("MusiqueGeniale", "url2.png", "info2", "chemin2");
CustomTitle Custom3 = new CustomTitle("custom3", "url3.png", "info3", "chemin3");
customTitles = new List<CustomTitle>()
CustomTitle Custom1 = new CustomTitle("MaMusique", "mp3.png", "info1", "chemin1");
CustomTitle Custom2 = new CustomTitle("MusiqueGeniale", "wav.png", "info2", "chemin2");
CustomTitle Custom3 = new CustomTitle("custom3", "midi.png", "info3", "chemin3");
CustomTitle Custom4 = new CustomTitle("custom4", "ogg.png", "info4", "chemin4");
CustomTitle Custom5 = new CustomTitle("custom5", "mp3.png", "info5", "chemin5");
CustomTitle Custom6 = new CustomTitle("custom6", "mp3.png", "info6", "chemin6");
CustomTitle Custom7 = new CustomTitle("custom7", "wav.png", "info7", "chemin7");
CustomTitle Custom8 = new CustomTitle("custom8", "ogg.png", "info8", "chemin8");
CustomTitle Custom9 = new CustomTitle("custom9", "mp3.png", "info9", "chemin9");
CustomTitle Custom10 = new CustomTitle("custom10", "wav.png", "info10", "chemin10");
CustomTitle Custom11 = new CustomTitle("custom11", "mp3.png", "info11", "chemin11");
customTitles = new ObservableCollection<CustomTitle>()
{
Custom1, Custom2, Custom3
Custom1, Custom2, Custom3, Custom4, Custom5, Custom6, Custom7, Custom8, Custom9, Custom10, Custom11
};
}
public List<CustomTitle> GetCustomTitles()
public ObservableCollection<CustomTitle> GetCustomTitles()
{
return customTitles;
}

@ -1,4 +1,6 @@
namespace Model.Stub;
using System.Collections.ObjectModel;
namespace Model.Stub;
public class StubInfoTitle
{
@ -13,12 +15,12 @@ public class StubInfoTitle
private readonly StubArtist stubArtist;
public List<InfoTitle> InfoTitles
public ObservableCollection<InfoTitle> InfoTitles
{
get => infoTitles;
}
private readonly List<InfoTitle> infoTitles;
private readonly ObservableCollection<InfoTitle> infoTitles;
public StubInfoTitle()
{
@ -27,13 +29,13 @@ public class StubInfoTitle
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);
infoTitles = new List<InfoTitle>()
infoTitles = new ObservableCollection<InfoTitle>()
{
InfoTitle1, InfoTitle2
};
}
public List<InfoTitle> GetInfoTitles()
public ObservableCollection<InfoTitle> GetInfoTitles()
{
return infoTitles;
}

@ -1,4 +1,6 @@
namespace Model.Stub;
using System.Collections.ObjectModel;
namespace Model.Stub;
public class StubManager : IDataManager
{
@ -64,7 +66,7 @@ public class StubManager : IDataManager
StubPlaylist.Playlists.First().AddTitle(StubCustomTitle.CustomTitles.First());
}
public List<Album> GetAlbums()
public ObservableCollection<Album> GetAlbums()
{
return StubAlbum.GetAlbums();
}
@ -74,17 +76,17 @@ public class StubManager : IDataManager
return StubArtist.GetArtists();
}
public List<Playlist> GetPlaylists()
public ObservableCollection<Playlist> GetPlaylists()
{
return StubPlaylist.GetPlaylists();
}
public List<CustomTitle> GetCustomTitles()
public ObservableCollection<CustomTitle> GetCustomTitles()
{
return StubCustomTitle.GetCustomTitles();
}
public List<InfoTitle> GetInfoTitles()
public ObservableCollection<InfoTitle> GetInfoTitles()
{
return StubInfoTitle.GetInfoTitles();
}

@ -1,26 +1,28 @@
namespace Model.Stub;
using System.Collections.ObjectModel;
namespace Model.Stub;
public class StubPlaylist
{
public List<Playlist> Playlists
public ObservableCollection<Playlist> Playlists
{
get => playlists;
}
private readonly List<Playlist> playlists;
private readonly ObservableCollection<Playlist> playlists;
public StubPlaylist()
{
Playlist Playlist1 = new Playlist("Playlist1", "desc1", "url1.png");
Playlist Playlist2 = new Playlist("Playlist2", "desc2", "url2.png");
playlists = new List<Playlist>()
playlists = new ObservableCollection<Playlist>()
{
Playlist1, Playlist2
};
}
public List<Playlist> GetPlaylists()
public ObservableCollection<Playlist> GetPlaylists()
{
return playlists;
}

Loading…
Cancel
Save