Ajout de Doxyfile
continuous-integration/drone/push Build is failing Details

pull/67/head
Rémi LAVERGNE 2 years ago
parent 813837f9b1
commit 8a57b88dc1

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IsFirstTimeProjectOpen>False</IsFirstTimeProjectOpen>
<ActiveDebugFramework>net7.0-android</ActiveDebugFramework>
<ActiveDebugProfile>Google Pixel 6a (Android 13.0 - API 33)</ActiveDebugProfile>
<SelectedPlatformGroup>PhysicalDevice</SelectedPlatformGroup>
<DefaultDevice>pixel_5_-_api_33_1</DefaultDevice>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetPlatformIdentifier)'=='iOS'">
<RuntimeIdentifier>iossimulator-x64</RuntimeIdentifier>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net7.0-android|AnyCPU'">
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net7.0-android|AnyCPU'">
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup>
<ItemGroup>
<MauiXaml Update="Views\Composants\BoutonVoir.xaml">
<SubType>Designer</SubType>
</MauiXaml>
<MauiXaml Update="Views\PageJeu.xaml">
<SubType>Designer</SubType>
</MauiXaml>
<MauiXaml Update="Views\PageInscription.xaml">
<SubType>Designer</SubType>
</MauiXaml>
<MauiXaml Update="Views\PageConnexion.xaml">
<SubType>Designer</SubType>
</MauiXaml>
<MauiXaml Update="Views\PageParcourir.xaml">
<SubType>Designer</SubType>
</MauiXaml>
<MauiXaml Update="Views\PageProfil.xaml">
<SubType>Designer</SubType>
</MauiXaml>
</ItemGroup>
</Project>

@ -1,27 +1,27 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17 # Visual Studio Version 17
VisualStudioVersion = 17.0.31611.283 VisualStudioVersion = 17.0.31611.283
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GameAtlas", "GameAtlas\GameAtlas.csproj", "{D3C0D86A-FF1B-4C1B-AA60-537889127607}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GameAtlas", "GameAtlas\GameAtlas.csproj", "{D3C0D86A-FF1B-4C1B-AA60-537889127607}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D3C0D86A-FF1B-4C1B-AA60-537889127607}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D3C0D86A-FF1B-4C1B-AA60-537889127607}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3C0D86A-FF1B-4C1B-AA60-537889127607}.Debug|Any CPU.Build.0 = Debug|Any CPU {D3C0D86A-FF1B-4C1B-AA60-537889127607}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D3C0D86A-FF1B-4C1B-AA60-537889127607}.Debug|Any CPU.Deploy.0 = Debug|Any CPU {D3C0D86A-FF1B-4C1B-AA60-537889127607}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{D3C0D86A-FF1B-4C1B-AA60-537889127607}.Release|Any CPU.ActiveCfg = Release|Any CPU {D3C0D86A-FF1B-4C1B-AA60-537889127607}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3C0D86A-FF1B-4C1B-AA60-537889127607}.Release|Any CPU.Build.0 = Release|Any CPU {D3C0D86A-FF1B-4C1B-AA60-537889127607}.Release|Any CPU.Build.0 = Release|Any CPU
{D3C0D86A-FF1B-4C1B-AA60-537889127607}.Release|Any CPU.Deploy.0 = Release|Any CPU {D3C0D86A-FF1B-4C1B-AA60-537889127607}.Release|Any CPU.Deploy.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

@ -1,14 +1,14 @@
<?xml version = "1.0" encoding = "UTF-8" ?> <?xml version = "1.0" encoding = "UTF-8" ?>
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui" <Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:GameAtlas" xmlns:local="clr-namespace:GameAtlas"
x:Class="GameAtlas.App"> x:Class="GameAtlas.App">
<Application.Resources> <Application.Resources>
<ResourceDictionary> <ResourceDictionary>
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/Styles/Colors.xaml" /> <ResourceDictionary Source="Resources/Styles/Colors.xaml" />
<ResourceDictionary Source="Resources/Styles/Styles.xaml" /> <ResourceDictionary Source="Resources/Styles/Styles.xaml" />
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
</ResourceDictionary> </ResourceDictionary>
</Application.Resources> </Application.Resources>
</Application> </Application>

@ -1,38 +1,38 @@
using GameAtlas.Models; using GameAtlas.Models;
using GameAtlas.Views; using GameAtlas.Views;
using GameAtlas.Stub; using GameAtlas.Stub;
namespace GameAtlas; namespace GameAtlas;
public partial class App : Application public partial class App : Application
{ {
public string FileName { get; set; } = "data.xml"; public string FileName { get; set; } = "data.xml";
public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
public Manager MyManager { get; private set; } = new Manager(new Stub.Stub());//new Manager(new DataContractPersistance.DataContractPers()); public Manager MyManager { get; private set; } = new Manager(new Stub.Stub());//new Manager(new DataContractPersistance.DataContractPers());
public App() public App()
{ {
InitializeComponent(); InitializeComponent();
if (File.Exists(Path.Combine(FilePath, FileName))) if (File.Exists(Path.Combine(FilePath, FileName)))
{ {
MyManager = new Manager(new DataContractPersistance.DataContractPers()); MyManager = new Manager(new DataContractPersistance.DataContractPers());
} }
MyManager.ChargerDonnees(); MyManager.ChargerDonnees();
MainPage = new AppShell(); MainPage = new AppShell();
if (!File.Exists(Path.Combine(FilePath, FileName))) if (!File.Exists(Path.Combine(FilePath, FileName)))
{ {
MyManager.Persistance = new DataContractPersistance.DataContractPers(); MyManager.Persistance = new DataContractPersistance.DataContractPers();
} }
MyManager.SauvegardeDonnees(); MyManager.SauvegardeDonnees();
} }
} }

@ -1,48 +1,48 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<Shell <Shell
x:Class="GameAtlas.AppShell" x:Class="GameAtlas.AppShell"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:views="clr-namespace:GameAtlas.Views" xmlns:views="clr-namespace:GameAtlas.Views"
Shell.FlyoutBehavior="Disabled" Shell.FlyoutBehavior="Disabled"
Shell.NavBarIsVisible="False"> Shell.NavBarIsVisible="False">
<Shell.Resources> <Shell.Resources>
<ResourceDictionary> <ResourceDictionary>
<Style x:Key="BaseStyle" TargetType="Element"> <Style x:Key="BaseStyle" TargetType="Element">
<Setter Property="Shell.ForegroundColor" Value="{StaticResource Gray1000}" /> <Setter Property="Shell.ForegroundColor" Value="{StaticResource Gray1000}" />
<Setter Property="Shell.UnselectedColor" Value="{StaticResource Gray300}" /> <Setter Property="Shell.UnselectedColor" Value="{StaticResource Gray300}" />
<Setter Property="Shell.TabBarBackgroundColor" Value="{StaticResource Gray1000}" /> <Setter Property="Shell.TabBarBackgroundColor" Value="{StaticResource Gray1000}" />
<Setter Property="Shell.TabBarForegroundColor" Value="{StaticResource White}"/> <Setter Property="Shell.TabBarForegroundColor" Value="{StaticResource White}"/>
<Setter Property="Shell.TabBarUnselectedColor" Value="{StaticResource Gray300}"/> <Setter Property="Shell.TabBarUnselectedColor" Value="{StaticResource Gray300}"/>
</Style> </Style>
<Style TargetType="TabBar" BasedOn="{StaticResource BaseStyle}" /> <Style TargetType="TabBar" BasedOn="{StaticResource BaseStyle}" />
<Style TargetType="FlyoutItem" BasedOn="{StaticResource BaseStyle}" /> <Style TargetType="FlyoutItem" BasedOn="{StaticResource BaseStyle}" />
</ResourceDictionary> </ResourceDictionary>
</Shell.Resources> </Shell.Resources>
<TabBar Route="page"> <TabBar Route="page">
<ShellContent <ShellContent
Title="Accueil" Title="Accueil"
Icon="home" Icon="home"
ContentTemplate="{DataTemplate views:PageAcceuil}" ContentTemplate="{DataTemplate views:PageAcceuil}"
Route="PageAccueil" /> Route="PageAccueil" />
<ShellContent <ShellContent
Title="Parcourir" Title="Parcourir"
Icon="console" Icon="console"
ContentTemplate="{DataTemplate views:PageParcourir}" ContentTemplate="{DataTemplate views:PageParcourir}"
Route="PageParcourir" /> Route="PageParcourir" />
<ShellContent <ShellContent
Title="Profil" Title="Profil"
Icon="account" Icon="account"
ContentTemplate="{DataTemplate views:PageProfil}" ContentTemplate="{DataTemplate views:PageProfil}"
Route="PageProfil" /> Route="PageProfil" />
<!--<ShellContent <!--<ShellContent
Title="Connexion" Title="Connexion"
Icon="account" Icon="account"
ContentTemplate="{DataTemplate views:PageConnexion}" ContentTemplate="{DataTemplate views:PageConnexion}"
Route="PageConnexion" />--> Route="PageConnexion" />-->
</TabBar> </TabBar>
</Shell> </Shell>

@ -1,17 +1,17 @@
using GameAtlas.Views; using GameAtlas.Views;
namespace GameAtlas; namespace GameAtlas;
public partial class AppShell : Shell public partial class AppShell : Shell
{ {
public AppShell() public AppShell()
{ {
InitializeComponent(); InitializeComponent();
Routing.RegisterRoute(nameof(PageJeu), typeof(PageJeu)); Routing.RegisterRoute(nameof(PageJeu), typeof(PageJeu));
Routing.RegisterRoute(nameof(PageAdmin), typeof(PageAdmin)); Routing.RegisterRoute(nameof(PageAdmin), typeof(PageAdmin));
Routing.RegisterRoute(nameof(PageAcceuil), typeof(PageAcceuil)); Routing.RegisterRoute(nameof(PageAcceuil), typeof(PageAcceuil));
} }
} }

@ -1,104 +1,104 @@
using GameAtlas.Models; using GameAtlas.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Runtime.Serialization; using System.Runtime.Serialization;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Xml; using System.Xml;
using System.IO; using System.IO;
using System.Xml.Serialization; using System.Xml.Serialization;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
namespace GameAtlas.DataContractPersistance namespace GameAtlas.DataContractPersistance
{ {
public class DataContractPers : IPersistanceManager public class DataContractPers : IPersistanceManager
{ {
public string FileName { get; set; } = "data.xml"; public string FileName { get; set; } = "data.xml";
public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); //Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/data"; public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); //Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/data";
public (ObservableCollection<Jeu>, List<Admin>, List<Utilisateur>) ChargeDonnees() public (ObservableCollection<Jeu>, List<Admin>, List<Utilisateur>) ChargeDonnees()
{ {
var serializer = new DataContractSerializer(typeof(DataToPersist)); var serializer = new DataContractSerializer(typeof(DataToPersist));
DataToPersist data = new DataToPersist(); DataToPersist data = new DataToPersist();
using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName))) using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName)))
{ {
data = serializer.ReadObject(s) as DataToPersist; data = serializer.ReadObject(s) as DataToPersist;
} }
return (data.jeux, data.admins, data.utilisateurs); return (data.jeux, data.admins, data.utilisateurs);
} }
public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> users) public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> users)
{ {
var serializer = new DataContractSerializer(typeof(DataToPersist)); var serializer = new DataContractSerializer(typeof(DataToPersist));
if(!Directory.Exists(FilePath)) if(!Directory.Exists(FilePath))
{ {
Debug.WriteLine("Directory créé"); Debug.WriteLine("Directory créé");
Debug.WriteLine(Directory.GetDirectoryRoot(FilePath)); Debug.WriteLine(Directory.GetDirectoryRoot(FilePath));
Debug.WriteLine(FilePath); Debug.WriteLine(FilePath);
Directory.CreateDirectory(FilePath); Directory.CreateDirectory(FilePath);
} }
DataToPersist data = new DataToPersist(); DataToPersist data = new DataToPersist();
data.jeux = jeux; data.jeux = jeux;
data.admins = admins; data.admins = admins;
data.utilisateurs = users; data.utilisateurs = users;
var settings = new XmlWriterSettings() { Indent = true }; var settings = new XmlWriterSettings() { Indent = true };
using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName))) using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName)))
{ {
using (XmlWriter writer = XmlWriter.Create(tw, settings)) using (XmlWriter writer = XmlWriter.Create(tw, settings))
{ {
serializer.WriteObject(writer, data); serializer.WriteObject(writer, data);
} }
} }
/*using (Stream s = File.Create(Path.Combine(FilePath, FileName))) /*using (Stream s = File.Create(Path.Combine(FilePath, FileName)))
{ {
serializer.WriteObject(s, users); serializer.WriteObject(s, users);
}*/ }*/
} }
public void SauvegardeUser(Utilisateur user) public void SauvegardeUser(Utilisateur user)
{ {
var serializer = new DataContractSerializer(typeof(List<Utilisateur>)); var serializer = new DataContractSerializer(typeof(List<Utilisateur>));
if (!Directory.Exists(FilePath)) if (!Directory.Exists(FilePath))
{ {
Debug.WriteLine("Directory créé"); Debug.WriteLine("Directory créé");
Debug.WriteLine(FilePath); Debug.WriteLine(FilePath);
Directory.CreateDirectory(FilePath); Directory.CreateDirectory(FilePath);
} }
var settings = new XmlWriterSettings() { Indent = true }; var settings = new XmlWriterSettings() { Indent = true };
using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName))) using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName)))
{ {
using (XmlWriter writer = XmlWriter.Create(tw, settings)) using (XmlWriter writer = XmlWriter.Create(tw, settings))
{ {
serializer.WriteObject(writer, new List<Utilisateur> { user }); serializer.WriteObject(writer, new List<Utilisateur> { user });
} }
} }
Debug.WriteLine("Un utilisateur a été sauvegardé !"); Debug.WriteLine("Un utilisateur a été sauvegardé !");
} }
/*public (List<Jeu>, List<Utilisateur>) ChargeDonnees2() /*public (List<Jeu>, List<Utilisateur>) ChargeDonnees2()
{ {
var serializer = new DataContractSerializer(typeof(List<Utilisateur>)); var serializer = new DataContractSerializer(typeof(List<Utilisateur>));
DataToPersist data; DataToPersist data;
using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName))) using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName)))
{ {
data = serializer.ReadObject(s) as DataToPersist; data = serializer.ReadObject(s) as DataToPersist;
} }
return (data.jeux, data.users); return (data.jeux, data.users);
}*/ }*/
} }
} }

@ -1,17 +1,17 @@
using GameAtlas.Models; using GameAtlas.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace GameAtlas.DataContractPersistance namespace GameAtlas.DataContractPersistance
{ {
public class DataToPersist public class DataToPersist
{ {
public ObservableCollection<Jeu> jeux { get; set; } = new ObservableCollection<Jeu>(); public ObservableCollection<Jeu> jeux { get; set; } = new ObservableCollection<Jeu>();
public List<Admin> admins { get; set; } = new List<Admin>(); public List<Admin> admins { get; set; } = new List<Admin>();
public List<Utilisateur> utilisateurs { get; set; } = new List<Utilisateur>(); public List<Utilisateur> utilisateurs { get; set; } = new List<Utilisateur>();
} }
} }

@ -1,136 +1,136 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net7.0-android</TargetFrameworks> <TargetFrameworks>net7.0-android</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks> <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('ios'))">$(TargetFrameworks);net7.0-ios</TargetFrameworks> <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('ios'))">$(TargetFrameworks);net7.0-ios</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('maccatalyst'))">$(TargetFrameworks);net7.0-maccatalyst</TargetFrameworks> <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('maccatalyst'))">$(TargetFrameworks);net7.0-maccatalyst</TargetFrameworks>
<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET --> <!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
<!-- <TargetFrameworks>$(TargetFrameworks);net7.0-tizen</TargetFrameworks> --> <!-- <TargetFrameworks>$(TargetFrameworks);net7.0-tizen</TargetFrameworks> -->
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<RootNamespace>GameAtlas</RootNamespace> <RootNamespace>GameAtlas</RootNamespace>
<UseMaui>true</UseMaui> <UseMaui>true</UseMaui>
<SingleProject>true</SingleProject> <SingleProject>true</SingleProject>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<!-- Display name --> <!-- Display name -->
<ApplicationTitle>GameAtlas</ApplicationTitle> <ApplicationTitle>GameAtlas</ApplicationTitle>
<!-- App Identifier --> <!-- App Identifier -->
<ApplicationId>com.iut-clermont-auvergne.gameatlas</ApplicationId> <ApplicationId>com.iut-clermont-auvergne.gameatlas</ApplicationId>
<ApplicationIdGuid>a4373575-ecb5-4bcd-9c57-7366fb6946a7</ApplicationIdGuid> <ApplicationIdGuid>a4373575-ecb5-4bcd-9c57-7366fb6946a7</ApplicationIdGuid>
<!-- Versions --> <!-- Versions -->
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion> <ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
<ApplicationVersion>1</ApplicationVersion> <ApplicationVersion>1</ApplicationVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion> <TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion> <SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net7.0-android|AnyCPU'" /> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net7.0-android|AnyCPU'" />
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net7.0-android|AnyCPU'" /> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net7.0-android|AnyCPU'" />
<ItemGroup> <ItemGroup>
<!-- App Icon --> <!-- App Icon -->
<MauiIcon Include="Resources\AppIcon\appicon.png" /> <MauiIcon Include="Resources\AppIcon\appicon.png" />
<!-- Splash Screen --> <!-- Splash Screen -->
<MauiSplashScreen Include="Resources\Splash\logosplash.png" Color="#312F2F" /> <MauiSplashScreen Include="Resources\Splash\logosplash.png" Color="#312F2F" />
<!-- Images --> <!-- Images -->
<MauiImage Include="Resources\Images\*" /> <MauiImage Include="Resources\Images\*" />
<!-- Custom Fonts --> <!-- Custom Fonts -->
<MauiFont Include="Resources\Fonts\*" /> <MauiFont Include="Resources\Fonts\*" />
<!-- Raw Assets (also remove the "Resources\Raw" prefix) --> <!-- Raw Assets (also remove the "Resources\Raw" prefix) -->
<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" /> <MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Remove="Resources\Fonts\PTSansCaption-Bold.ttf" /> <None Remove="Resources\Fonts\PTSansCaption-Bold.ttf" />
<None Remove="Resources\Fonts\PTSansCaption-Regular.ttf" /> <None Remove="Resources\Fonts\PTSansCaption-Regular.ttf" />
<None Remove="Resources\Fonts\PTSansNarrow-Bold.ttf" /> <None Remove="Resources\Fonts\PTSansNarrow-Bold.ttf" />
<None Remove="Resources\Fonts\PTSansNarrow-Regular.ttf" /> <None Remove="Resources\Fonts\PTSansNarrow-Regular.ttf" />
<None Remove="Resources\Fonts\Roboto-Black.ttf" /> <None Remove="Resources\Fonts\Roboto-Black.ttf" />
<None Remove="Resources\Fonts\Roboto-BlackItalic.ttf" /> <None Remove="Resources\Fonts\Roboto-BlackItalic.ttf" />
<None Remove="Resources\Fonts\Roboto-Bold.ttf" /> <None Remove="Resources\Fonts\Roboto-Bold.ttf" />
<None Remove="Resources\Fonts\Roboto-BoldItalic.ttf" /> <None Remove="Resources\Fonts\Roboto-BoldItalic.ttf" />
<None Remove="Resources\Fonts\Roboto-Italic.ttf" /> <None Remove="Resources\Fonts\Roboto-Italic.ttf" />
<None Remove="Resources\Fonts\Roboto-Light.ttf" /> <None Remove="Resources\Fonts\Roboto-Light.ttf" />
<None Remove="Resources\Fonts\Roboto-LightItalic.ttf" /> <None Remove="Resources\Fonts\Roboto-LightItalic.ttf" />
<None Remove="Resources\Fonts\Roboto-Medium.ttf" /> <None Remove="Resources\Fonts\Roboto-Medium.ttf" />
<None Remove="Resources\Fonts\Roboto-MediumItalic.ttf" /> <None Remove="Resources\Fonts\Roboto-MediumItalic.ttf" />
<None Remove="Resources\Fonts\Roboto-Regular.ttf" /> <None Remove="Resources\Fonts\Roboto-Regular.ttf" />
<None Remove="Resources\Fonts\Roboto-Thin.ttf" /> <None Remove="Resources\Fonts\Roboto-Thin.ttf" />
<None Remove="Resources\Fonts\Roboto-ThinItalic.ttf" /> <None Remove="Resources\Fonts\Roboto-ThinItalic.ttf" />
<None Remove="Resources\Images\account.svg" /> <None Remove="Resources\Images\account.svg" />
<None Remove="Resources\Images\arrowback.svg" /> <None Remove="Resources\Images\arrowback.svg" />
<None Remove="Resources\Images\arrow_back.png" /> <None Remove="Resources\Images\arrow_back.png" />
<None Remove="Resources\Images\bigstar.png" /> <None Remove="Resources\Images\bigstar.png" />
<None Remove="Resources\Images\console.svg" /> <None Remove="Resources\Images\console.svg" />
<None Remove="Resources\Images\download_blue.png" /> <None Remove="Resources\Images\download_blue.png" />
<None Remove="Resources\Images\home.svg" /> <None Remove="Resources\Images\home.svg" />
<None Remove="Resources\Images\LOGO.png" /> <None Remove="Resources\Images\LOGO.png" />
<None Remove="Resources\Images\plus.svg" /> <None Remove="Resources\Images\plus.svg" />
<None Remove="Resources\Images\shieldperson.svg" /> <None Remove="Resources\Images\shieldperson.svg" />
<None Remove="Resources\Images\starrating.svg" /> <None Remove="Resources\Images\starrating.svg" />
<None Remove="Resources\Images\store.svg" /> <None Remove="Resources\Images\store.svg" />
<None Remove="Resources\Images\trophy.svg" /> <None Remove="Resources\Images\trophy.svg" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CommunityToolkit.Maui" Version="5.1.0" /> <PackageReference Include="CommunityToolkit.Maui" Version="5.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Update="Views\PageJeu.xaml.cs"> <Compile Update="Views\PageJeu.xaml.cs">
<DependentUpon>PageJeu.xaml</DependentUpon> <DependentUpon>PageJeu.xaml</DependentUpon>
</Compile> </Compile>
<Compile Update="Views\PageInscription.xaml.cs"> <Compile Update="Views\PageInscription.xaml.cs">
<DependentUpon>PageInscription.xaml</DependentUpon> <DependentUpon>PageInscription.xaml</DependentUpon>
</Compile> </Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<MauiXaml Update="Composants\Notes.xaml"> <MauiXaml Update="Composants\Notes.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</MauiXaml> </MauiXaml>
<MauiXaml Update="Views\Composants\BoutonVoir.xaml"> <MauiXaml Update="Views\Composants\BoutonVoir.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</MauiXaml> </MauiXaml>
<MauiXaml Update="Views\PageJeu.xaml"> <MauiXaml Update="Views\PageJeu.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</MauiXaml> </MauiXaml>
<MauiXaml Update="Views\PageInscription.xaml"> <MauiXaml Update="Views\PageInscription.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</MauiXaml> </MauiXaml>
<MauiXaml Update="Views\PageAcceuil.xaml"> <MauiXaml Update="Views\PageAcceuil.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</MauiXaml> </MauiXaml>
<MauiXaml Update="Views\PageConnexion.xaml"> <MauiXaml Update="Views\PageConnexion.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</MauiXaml> </MauiXaml>
<MauiXaml Update="Views\PageParcourir.xaml"> <MauiXaml Update="Views\PageParcourir.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</MauiXaml> </MauiXaml>
<MauiXaml Update="Views\PageProfil.xaml"> <MauiXaml Update="Views\PageProfil.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</MauiXaml> </MauiXaml>
</ItemGroup> </ItemGroup>
</Project> </Project>

@ -1,39 +1,39 @@
using CommunityToolkit.Maui; using CommunityToolkit.Maui;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace GameAtlas; namespace GameAtlas;
public static class MauiProgram public static class MauiProgram
{ {
public static MauiApp CreateMauiApp() public static MauiApp CreateMauiApp()
{ {
var builder = MauiApp.CreateBuilder(); var builder = MauiApp.CreateBuilder();
builder builder
.UseMauiApp<App>() .UseMauiApp<App>()
.UseMauiCommunityToolkit() .UseMauiCommunityToolkit()
.ConfigureFonts(fonts => .ConfigureFonts(fonts =>
{ {
// Open Sans // Open Sans
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
fonts.AddFont("Aladin-Regular.ttf", "AladinRegular"); fonts.AddFont("Aladin-Regular.ttf", "AladinRegular");
fonts.AddFont("PTSansCaption-Regular.ttf", "PTSansCRegular"); fonts.AddFont("PTSansCaption-Regular.ttf", "PTSansCRegular");
fonts.AddFont("PTSansCaption-Bold.ttf", "PTSansCBold"); fonts.AddFont("PTSansCaption-Bold.ttf", "PTSansCBold");
fonts.AddFont("PTSansNarrow-Regular.ttf", "PTSansNRegular"); fonts.AddFont("PTSansNarrow-Regular.ttf", "PTSansNRegular");
fonts.AddFont("PTSansNarrow-Bold.ttf", "PTSansNBold"); fonts.AddFont("PTSansNarrow-Bold.ttf", "PTSansNBold");
fonts.AddFont("Roboto-Regular.ttf", "RobotoRegular"); fonts.AddFont("Roboto-Regular.ttf", "RobotoRegular");
fonts.AddFont("Roboto-Bold.ttf", "RobotoBold"); fonts.AddFont("Roboto-Bold.ttf", "RobotoBold");
fonts.AddFont("Roboto-Black.ttf", "RobotoBlack"); fonts.AddFont("Roboto-Black.ttf", "RobotoBlack");
}); });
#if DEBUG #if DEBUG
builder.Logging.AddDebug(); builder.Logging.AddDebug();
#endif #endif
return builder.Build(); return builder.Build();
} }
} }

@ -1,24 +1,23 @@
using System; /// \file
using System.Collections.Generic; /// \brief Définition de la classe Admin.
using System.Linq; /// \author Rémi Lavergne - Yvan Calatayud
using System.Runtime.Serialization;
using System.Text; using System;
using System.Threading.Tasks; using System.Collections.Generic;
using System.Linq;
namespace GameAtlas.Models using System.Runtime.Serialization;
{ using System.Text;
[DataContract] using System.Threading.Tasks;
public class Admin : Utilisateur
{ namespace GameAtlas.Models
public Admin(string mail, string pseudo, string mdp) : base(mail, pseudo, mdp) {
{ [DataContract]
EstAdmin = true; public class Admin : Utilisateur
} {
public Admin(string mail, string pseudo, string mdp) : base(mail, pseudo, mdp)
public void AjouterJeu(Jeu jeu) { } {
public void SupprimerJeu(Jeu jeu) { } EstAdmin = true;
public void ModifierJeu(Jeu jeu) { } }
}
} }
}

@ -1,16 +1,16 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace GameAtlas.Models namespace GameAtlas.Models
{ {
public interface IPersistanceManager public interface IPersistanceManager
{ {
(ObservableCollection<Jeu>,List<Admin>,List<Utilisateur>) ChargeDonnees(); (ObservableCollection<Jeu>,List<Admin>,List<Utilisateur>) ChargeDonnees();
void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> utilisateurs); void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> utilisateurs);
} }
} }

@ -1,80 +1,84 @@
using System; /// \file
using System.Collections.Generic; /// \brief Définition de la classe Jeu.
using System.Collections.ObjectModel; /// \author Rémi Lavergne - Yvan Calatayud
using System.Linq;
using System.Runtime.Serialization; using System;
using System.Text; using System.Collections.Generic;
using System.Threading.Tasks; using System.Collections.ObjectModel;
using System.Linq;
namespace GameAtlas.Models using System.Runtime.Serialization;
{ using System.Text;
[DataContract] using System.Threading.Tasks;
public class Jeu
{ namespace GameAtlas.Models
[DataMember] {
public string Nom { get; private set; } [DataContract]
[DataMember] public class Jeu
public string Resume { get; private set; } {
[DataMember] [DataMember]
public string Sortie { get; private set; } public string Nom { get; private set; }
[DataMember] [DataMember]
public string Plateformes { get; private set; } public string Resume { get; private set; }
[DataMember] [DataMember]
public string Developpeur { get; private set; } public string Sortie { get; private set; }
[DataMember] [DataMember]
public string Editeur { get; private set; } public string Plateformes { get; private set; }
[DataMember] [DataMember]
public double Note { get; private set; } public string Developpeur { get; private set; }
[DataMember] [DataMember]
public int NbTelechargement { get; private set; } public string Editeur { get; private set; }
//[DataMember] [DataMember]
//public List<(string,string)> Revendeurs { get; private set; } public double Note { get; private set; }
[DataMember] [DataMember]
public string Genres { get; private set; } public int NbTelechargement { get; private set; }
[DataMember] //[DataMember]
public string Image { get; private set; } //public List<(string,string)> Revendeurs { get; private set; }
[DataMember] [DataMember]
public ObservableCollection<(string,double,string)> ListeAvis { get; private set; } public string Genres { get; private set; }
[DataMember] [DataMember]
public int NbFavoris { get; private set; } public string Image { get; private set; }
[DataMember] [DataMember]
public int NbPossedes { get; private set; } public ObservableCollection<(string,double,string)> ListeAvis { get; private set; }
[DataMember]
public Jeu(string nom, string resume, string sortie, string plateformes, string developpeur, string editeur, double note, int nbTelechargement, string genres, string image) public int NbFavoris { get; private set; }
{ [DataMember]
Nom = nom; public int NbPossedes { get; private set; }
Resume = resume;
Sortie = sortie; public Jeu(string nom, string resume, string sortie, string plateformes, string developpeur, string editeur, double note, int nbTelechargement, string genres, string image)
Plateformes = plateformes; {
Developpeur = developpeur; Nom = nom;
Editeur = editeur; Resume = resume;
Note = note; Sortie = sortie;
NbTelechargement = nbTelechargement; Plateformes = plateformes;
//Revendeurs = revendeurs; Developpeur = developpeur;
Genres = genres; Editeur = editeur;
Image = image; Note = note;
ListeAvis = new ObservableCollection<(string, double, string)>(); NbTelechargement = nbTelechargement;
NbFavoris = 0; //Revendeurs = revendeurs;
NbPossedes = 0; Genres = genres;
} Image = image;
ListeAvis = new ObservableCollection<(string, double, string)>();
public void AjouterAvis(string pseudo, double note, string commentaire) NbFavoris = 0;
{ NbPossedes = 0;
this.ListeAvis.Add((pseudo, note, commentaire)); }
}
public void AjouterAvis(string pseudo, double note, string commentaire)
public override bool Equals(object obj) {
{ this.ListeAvis.Add((pseudo, note, commentaire));
if (obj == null || GetType() != obj.GetType()) }
return false;
public override bool Equals(object obj)
Jeu otherJeu = (Jeu)obj; {
return Nom == otherJeu.Nom && Sortie == otherJeu.Sortie; if (obj == null || GetType() != obj.GetType())
} return false;
public override int GetHashCode() Jeu otherJeu = (Jeu)obj;
{ return Nom == otherJeu.Nom && Sortie == otherJeu.Sortie;
return HashCode.Combine(Nom, Sortie); }
}
} public override int GetHashCode()
} {
return HashCode.Combine(Nom, Sortie);
}
}
}

@ -1,137 +1,137 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.ComponentModel; using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace GameAtlas.Models namespace GameAtlas.Models
{ {
public class Manager : INotifyPropertyChanged public class Manager : INotifyPropertyChanged
{ {
public List<Admin> Admins { get; private set; } public List<Admin> Admins { get; private set; }
public List<Utilisateur> Utilisateurs { get; private set; } public List<Utilisateur> Utilisateurs { get; private set; }
private ObservableCollection<Jeu> topRatedGames; private ObservableCollection<Jeu> topRatedGames;
public ObservableCollection<Jeu> TopRatedGames public ObservableCollection<Jeu> TopRatedGames
{ {
get get
{ {
return topRatedGames = new ObservableCollection<Jeu>(ListJeux.OrderByDescending(jeu => jeu.Note).Take(4)); return topRatedGames = new ObservableCollection<Jeu>(ListJeux.OrderByDescending(jeu => jeu.Note).Take(4));
} }
set set
{ {
topRatedGames = value; topRatedGames = value;
OnPropertyChanged(); OnPropertyChanged();
} }
} }
private ObservableCollection<Jeu> listJeuxAffiches; private ObservableCollection<Jeu> listJeuxAffiches;
public ObservableCollection<Jeu> ListJeuxAffiches public ObservableCollection<Jeu> ListJeuxAffiches
{ {
get get
{ {
var cinqPremiersJeux = ListJeux.Take(5); var cinqPremiersJeux = ListJeux.Take(5);
return listJeuxAffiches = new ObservableCollection<Jeu>(cinqPremiersJeux); return listJeuxAffiches = new ObservableCollection<Jeu>(cinqPremiersJeux);
} }
set set
{ {
listJeuxAffiches = value; listJeuxAffiches = value;
OnPropertyChanged(); OnPropertyChanged();
} }
} }
private ObservableCollection<Jeu> listJeux; private ObservableCollection<Jeu> listJeux;
public ObservableCollection<Jeu> ListJeux public ObservableCollection<Jeu> ListJeux
{ {
get get
{ {
return listJeux; return listJeux;
} }
set set
{ {
listJeux = value; listJeux = value;
OnPropertyChanged(); OnPropertyChanged();
} }
} }
public IPersistanceManager Persistance { get; set; } public IPersistanceManager Persistance { get; set; }
private Utilisateur connectedUser; private Utilisateur connectedUser;
public Utilisateur ConnectedUser public Utilisateur ConnectedUser
{ {
get => connectedUser; get => connectedUser;
set set
{ {
connectedUser = value; connectedUser = value;
OnPropertyChanged(); OnPropertyChanged();
} }
} }
public event PropertyChangedEventHandler? PropertyChanged; public event PropertyChangedEventHandler? PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string propertyName = null) public void OnPropertyChanged([CallerMemberName] string propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public Manager(IPersistanceManager persistance) public Manager(IPersistanceManager persistance)
{ {
Utilisateurs = new List<Utilisateur>(); Utilisateurs = new List<Utilisateur>();
Admins = new List<Admin>(); Admins = new List<Admin>();
ListJeux = new ObservableCollection<Jeu>(); ListJeux = new ObservableCollection<Jeu>();
Persistance = persistance; Persistance = persistance;
ConnectedUser = null; ConnectedUser = null;
} }
public Manager() { public Manager() {
ListJeux = new ObservableCollection<Jeu>(); ListJeux = new ObservableCollection<Jeu>();
Admins = new List<Admin>(); Admins = new List<Admin>();
Utilisateurs = new List<Utilisateur>(); Utilisateurs = new List<Utilisateur>();
ConnectedUser = null; ConnectedUser = null;
} }
public void AddJeux(Jeu jeux) public void AddJeux(Jeu jeux)
{ {
ListJeux.Add(jeux); ListJeux.Add(jeux);
} }
public void AddAdmin(Admin admin) public void AddAdmin(Admin admin)
{ {
Admins.Add(admin); Admins.Add(admin);
} }
public void AddUtilisateur(Utilisateur utilisateur) public void AddUtilisateur(Utilisateur utilisateur)
{ {
Utilisateurs.Add(utilisateur); Utilisateurs.Add(utilisateur);
} }
public void ChargerDonnees() public void ChargerDonnees()
{ {
var donnees = Persistance.ChargeDonnees(); var donnees = Persistance.ChargeDonnees();
foreach (var user in donnees.Item3) foreach (var user in donnees.Item3)
{ {
AddUtilisateur(user); AddUtilisateur(user);
} }
foreach (var admin in donnees.Item2) foreach (var admin in donnees.Item2)
{ {
AddAdmin(admin); AddAdmin(admin);
} }
foreach (var jeu in donnees.Item1) foreach (var jeu in donnees.Item1)
{ {
AddJeux(jeu); AddJeux(jeu);
} }
} }
public void SauvegardeDonnees() public void SauvegardeDonnees()
{ {
Persistance.SauvegardeDonnees(ListJeux, Admins, Utilisateurs); Persistance.SauvegardeDonnees(ListJeux, Admins, Utilisateurs);
} }
} }
} }

@ -1,50 +1,47 @@
using GameAtlas.Views; /// \file
using System; /// \brief Définition de la classe Utilisateur.
using System.Collections.Generic; /// \author Rémi Lavergne - Yvan Calatayud
using System.Collections.ObjectModel;
using System.Linq; using GameAtlas.Views;
using System.Runtime.Serialization; using System;
using System.Text; using System.Collections.Generic;
using System.Threading.Tasks; using System.Collections.ObjectModel;
using System.Linq;
namespace GameAtlas.Models using System.Runtime.Serialization;
{ using System.Text;
[DataContract] using System.Threading.Tasks;
[KnownType(typeof(Admin))]
public class Utilisateur namespace GameAtlas.Models
{ {
[DataMember] [DataContract]
public string Mail { get; private set; } [KnownType(typeof(Admin))]
[DataMember] public class Utilisateur
public string Pseudo { get; private set; } {
[DataMember] [DataMember]
public string Mdp { get; private set; } public string Mail { get; private set; }
[DataMember] [DataMember]
public string DateCreation { get; private set; } public string Pseudo { get; private set; }
[DataMember] [DataMember]
public bool EstAdmin { get; set; } public string Mdp { get; private set; }
[DataMember] [DataMember]
public ObservableCollection<Jeu> ListePossedes { get; private set; } public string DateCreation { get; private set; }
[DataMember] [DataMember]
public ObservableCollection<Jeu> ListeFavoris { get; private set; } public bool EstAdmin { get; set; }
[DataMember]
public Utilisateur(string mail, string pseudo, string mdp) public ObservableCollection<Jeu> ListePossedes { get; private set; }
{ [DataMember]
Mail = mail; public ObservableCollection<Jeu> ListeFavoris { get; private set; }
Pseudo = pseudo;
Mdp = mdp; public Utilisateur(string mail, string pseudo, string mdp)
DateCreation = DateTime.Today.ToString("d"); {
ListePossedes = new ObservableCollection<Jeu>(); Mail = mail;
ListeFavoris = new ObservableCollection<Jeu>(); Pseudo = pseudo;
EstAdmin = false; Mdp = mdp;
} DateCreation = DateTime.Today.ToString("d");
ListePossedes = new ObservableCollection<Jeu>();
ListeFavoris = new ObservableCollection<Jeu>();
EstAdmin = false;
public int Connexion(string pseudo, string mdp) { return 0; } }
public int Inscription(string mail, string pseudo, string mdp) { return 0; }
public void AjouterCom(Jeu jeu, string com) { } }
public void SupprimerCom(Jeu jeu, string com) { } }
public void AjouterEvaluation(Jeu jeu, int nbEtoiles) { }
}
}

@ -1,15 +1,15 @@
using Android.App; using Android.App;
using Android.Content.PM; using Android.Content.PM;
using Android.OS; using Android.OS;
namespace GameAtlas; namespace GameAtlas;
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity public class MainActivity : MauiAppCompatActivity
{ {
protected override void OnCreate(Bundle savedInstanceState) protected override void OnCreate(Bundle savedInstanceState)
{ {
base.OnCreate(savedInstanceState); base.OnCreate(savedInstanceState);
RequestedOrientation = ScreenOrientation.Portrait; RequestedOrientation = ScreenOrientation.Portrait;
} }
} }

@ -1,15 +1,15 @@
using Android.App; using Android.App;
using Android.Runtime; using Android.Runtime;
namespace GameAtlas; namespace GameAtlas;
[Application] [Application]
public class MainApplication : MauiApplication public class MainApplication : MauiApplication
{ {
public MainApplication(IntPtr handle, JniHandleOwnership ownership) public MainApplication(IntPtr handle, JniHandleOwnership ownership)
: base(handle, ownership) : base(handle, ownership)
{ {
} }
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
} }

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<color name="colorPrimary">#512BD4</color> <color name="colorPrimary">#512BD4</color>
<color name="colorPrimaryDark">#2B0B98</color> <color name="colorPrimaryDark">#2B0B98</color>
<color name="colorAccent">#2B0B98</color> <color name="colorAccent">#2B0B98</color>
</resources> </resources>

@ -1,9 +1,9 @@
using Foundation; using Foundation;
namespace GameAtlas; namespace GameAtlas;
[Register("AppDelegate")] [Register("AppDelegate")]
public class AppDelegate : MauiUIApplicationDelegate public class AppDelegate : MauiUIApplicationDelegate
{ {
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
} }

@ -1,30 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>UIDeviceFamily</key> <key>UIDeviceFamily</key>
<array> <array>
<integer>1</integer> <integer>1</integer>
<integer>2</integer> <integer>2</integer>
</array> </array>
<key>UIRequiredDeviceCapabilities</key> <key>UIRequiredDeviceCapabilities</key>
<array> <array>
<string>arm64</string> <string>arm64</string>
</array> </array>
<key>UISupportedInterfaceOrientations</key> <key>UISupportedInterfaceOrientations</key>
<array> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>UISupportedInterfaceOrientations~ipad</key> <key>UISupportedInterfaceOrientations~ipad</key>
<array> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string> <string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>XSAppIconAssets</key> <key>XSAppIconAssets</key>
<string>Assets.xcassets/appicon.appiconset</string> <string>Assets.xcassets/appicon.appiconset</string>
</dict> </dict>
</plist> </plist>

@ -1,15 +1,15 @@
using ObjCRuntime; using ObjCRuntime;
using UIKit; using UIKit;
namespace GameAtlas; namespace GameAtlas;
public class Program public class Program
{ {
// This is the main entry point of the application. // This is the main entry point of the application.
static void Main(string[] args) static void Main(string[] args)
{ {
// if you want to use a different Application Delegate class from "AppDelegate" // if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here. // you can specify it here.
UIApplication.Main(args, null, typeof(AppDelegate)); UIApplication.Main(args, null, typeof(AppDelegate));
} }
} }

@ -1,16 +1,16 @@
using System; using System;
using Microsoft.Maui; using Microsoft.Maui;
using Microsoft.Maui.Hosting; using Microsoft.Maui.Hosting;
namespace GameAtlas; namespace GameAtlas;
class Program : MauiApplication class Program : MauiApplication
{ {
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
static void Main(string[] args) static void Main(string[] args)
{ {
var app = new Program(); var app = new Program();
app.Run(args); app.Run(args);
} }
} }

@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest package="maui-application-id-placeholder" version="0.0.0" api-version="7" xmlns="http://tizen.org/ns/packages"> <manifest package="maui-application-id-placeholder" version="0.0.0" api-version="7" xmlns="http://tizen.org/ns/packages">
<profile name="common" /> <profile name="common" />
<ui-application appid="maui-application-id-placeholder" exec="GameAtlas.dll" multiple="false" nodisplay="false" taskmanage="true" type="dotnet" launch_mode="single"> <ui-application appid="maui-application-id-placeholder" exec="GameAtlas.dll" multiple="false" nodisplay="false" taskmanage="true" type="dotnet" launch_mode="single">
<label>maui-application-title-placeholder</label> <label>maui-application-title-placeholder</label>
<icon>maui-appicon-placeholder</icon> <icon>maui-appicon-placeholder</icon>
<metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" /> <metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" />
</ui-application> </ui-application>
<shortcut-list /> <shortcut-list />
<privileges> <privileges>
<privilege>http://tizen.org/privilege/internet</privilege> <privilege>http://tizen.org/privilege/internet</privilege>
</privileges> </privileges>
<dependencies /> <dependencies />
<provides-appdefined-privileges /> <provides-appdefined-privileges />
</manifest> </manifest>

@ -1,8 +1,8 @@
<maui:MauiWinUIApplication <maui:MauiWinUIApplication
x:Class="GameAtlas.WinUI.App" x:Class="GameAtlas.WinUI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:maui="using:Microsoft.Maui" xmlns:maui="using:Microsoft.Maui"
xmlns:local="using:GameAtlas.WinUI"> xmlns:local="using:GameAtlas.WinUI">
</maui:MauiWinUIApplication> </maui:MauiWinUIApplication>

@ -1,24 +1,24 @@
using Microsoft.UI.Xaml; using Microsoft.UI.Xaml;
// To learn more about WinUI, the WinUI project structure, // To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info. // and more about our project templates, see: http://aka.ms/winui-project-info.
namespace GameAtlas.WinUI; namespace GameAtlas.WinUI;
/// <summary> /// <summary>
/// Provides application-specific behavior to supplement the default Application class. /// Provides application-specific behavior to supplement the default Application class.
/// </summary> /// </summary>
public partial class App : MauiWinUIApplication public partial class App : MauiWinUIApplication
{ {
/// <summary> /// <summary>
/// Initializes the singleton application object. This is the first line of authored code /// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain(). /// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary> /// </summary>
public App() public App()
{ {
this.InitializeComponent(); this.InitializeComponent();
} }
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
} }

@ -1,46 +1,46 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Package <Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap rescap"> IgnorableNamespaces="uap rescap">
<Identity Name="maui-package-name-placeholder" Publisher="CN=User Name" Version="0.0.0.0" /> <Identity Name="maui-package-name-placeholder" Publisher="CN=User Name" Version="0.0.0.0" />
<mp:PhoneIdentity PhoneProductId="BCF22AB8-2AC8-4047-8DBC-F88CC004B91F" PhonePublisherId="00000000-0000-0000-0000-000000000000"/> <mp:PhoneIdentity PhoneProductId="BCF22AB8-2AC8-4047-8DBC-F88CC004B91F" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
<Properties> <Properties>
<DisplayName>$placeholder$</DisplayName> <DisplayName>$placeholder$</DisplayName>
<PublisherDisplayName>User Name</PublisherDisplayName> <PublisherDisplayName>User Name</PublisherDisplayName>
<Logo>$placeholder$.png</Logo> <Logo>$placeholder$.png</Logo>
</Properties> </Properties>
<Dependencies> <Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" /> <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" /> <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
</Dependencies> </Dependencies>
<Resources> <Resources>
<Resource Language="x-generate" /> <Resource Language="x-generate" />
</Resources> </Resources>
<Applications> <Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$"> <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$">
<uap:VisualElements <uap:VisualElements
DisplayName="$placeholder$" DisplayName="$placeholder$"
Description="$placeholder$" Description="$placeholder$"
Square150x150Logo="$placeholder$.png" Square150x150Logo="$placeholder$.png"
Square44x44Logo="$placeholder$.png" Square44x44Logo="$placeholder$.png"
BackgroundColor="transparent"> BackgroundColor="transparent">
<uap:DefaultTile Square71x71Logo="$placeholder$.png" Wide310x150Logo="$placeholder$.png" Square310x310Logo="$placeholder$.png" /> <uap:DefaultTile Square71x71Logo="$placeholder$.png" Wide310x150Logo="$placeholder$.png" Square310x310Logo="$placeholder$.png" />
<uap:SplashScreen Image="$placeholder$.png" /> <uap:SplashScreen Image="$placeholder$.png" />
</uap:VisualElements> </uap:VisualElements>
</Application> </Application>
</Applications> </Applications>
<Capabilities> <Capabilities>
<rescap:Capability Name="runFullTrust" /> <rescap:Capability Name="runFullTrust" />
</Capabilities> </Capabilities>
</Package> </Package>

@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="GameAtlas.WinUI.app"/> <assemblyIdentity version="1.0.0.0" name="GameAtlas.WinUI.app"/>
<application xmlns="urn:schemas-microsoft-com:asm.v3"> <application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings> <windowsSettings>
<!-- The combination of below two tags have the following effect: <!-- The combination of below two tags have the following effect:
1) Per-Monitor for >= Windows 10 Anniversary Update 1) Per-Monitor for >= Windows 10 Anniversary Update
2) System < Windows 10 Anniversary Update 2) System < Windows 10 Anniversary Update
--> -->
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness> <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
</windowsSettings> </windowsSettings>
</application> </application>
</assembly> </assembly>

@ -1,9 +1,9 @@
using Foundation; using Foundation;
namespace GameAtlas; namespace GameAtlas;
[Register("AppDelegate")] [Register("AppDelegate")]
public class AppDelegate : MauiUIApplicationDelegate public class AppDelegate : MauiUIApplicationDelegate
{ {
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
} }

@ -1,32 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>UIDeviceFamily</key> <key>UIDeviceFamily</key>
<array> <array>
<integer>1</integer> <integer>1</integer>
<integer>2</integer> <integer>2</integer>
</array> </array>
<key>UIRequiredDeviceCapabilities</key> <key>UIRequiredDeviceCapabilities</key>
<array> <array>
<string>arm64</string> <string>arm64</string>
</array> </array>
<key>UISupportedInterfaceOrientations</key> <key>UISupportedInterfaceOrientations</key>
<array> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>UISupportedInterfaceOrientations~ipad</key> <key>UISupportedInterfaceOrientations~ipad</key>
<array> <array>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string> <string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string> <string>UIInterfaceOrientationLandscapeRight</string>
</array> </array>
<key>XSAppIconAssets</key> <key>XSAppIconAssets</key>
<string>Assets.xcassets/appicon.appiconset</string> <string>Assets.xcassets/appicon.appiconset</string>
</dict> </dict>
</plist> </plist>

@ -1,15 +1,15 @@
using ObjCRuntime; using ObjCRuntime;
using UIKit; using UIKit;
namespace GameAtlas; namespace GameAtlas;
public class Program public class Program
{ {
// This is the main entry point of the application. // This is the main entry point of the application.
static void Main(string[] args) static void Main(string[] args)
{ {
// if you want to use a different Application Delegate class from "AppDelegate" // if you want to use a different Application Delegate class from "AppDelegate"
// you can specify it here. // you can specify it here.
UIApplication.Main(args, null, typeof(AppDelegate)); UIApplication.Main(args, null, typeof(AppDelegate));
} }
} }

@ -1,8 +1,8 @@
{ {
"profiles": { "profiles": {
"Windows Machine": { "Windows Machine": {
"commandName": "MsixPackage", "commandName": "MsixPackage",
"nativeDebugging": false "nativeDebugging": false
} }
} }
} }

@ -1,93 +1,93 @@
<svg width="419" height="519" viewBox="0 0 419 519" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="419" height="519" viewBox="0 0 419 519" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M284.432 247.568L284.004 221.881C316.359 221.335 340.356 211.735 355.308 193.336C382.408 159.996 372.893 108.183 372.786 107.659L398.013 102.831C398.505 105.432 409.797 167.017 375.237 209.53C355.276 234.093 324.719 246.894 284.432 247.568Z" fill="#8A6FE8"/> <path d="M284.432 247.568L284.004 221.881C316.359 221.335 340.356 211.735 355.308 193.336C382.408 159.996 372.893 108.183 372.786 107.659L398.013 102.831C398.505 105.432 409.797 167.017 375.237 209.53C355.276 234.093 324.719 246.894 284.432 247.568Z" fill="#8A6FE8"/>
<path d="M331.954 109.36L361.826 134.245C367.145 138.676 375.055 137.959 379.497 132.639C383.928 127.32 383.211 119.41 377.891 114.969L348.019 90.0842C342.7 85.6531 334.79 86.3702 330.348 91.6896C325.917 97.0197 326.634 104.929 331.954 109.36Z" fill="#8A6FE8"/> <path d="M331.954 109.36L361.826 134.245C367.145 138.676 375.055 137.959 379.497 132.639C383.928 127.32 383.211 119.41 377.891 114.969L348.019 90.0842C342.7 85.6531 334.79 86.3702 330.348 91.6896C325.917 97.0197 326.634 104.929 331.954 109.36Z" fill="#8A6FE8"/>
<path d="M407.175 118.062L417.92 94.2263C420.735 87.858 417.856 80.4087 411.488 77.5831C405.12 74.7682 397.67 77.6473 394.845 84.0156L383.831 108.461L407.175 118.062Z" fill="#8A6FE8"/> <path d="M407.175 118.062L417.92 94.2263C420.735 87.858 417.856 80.4087 411.488 77.5831C405.12 74.7682 397.67 77.6473 394.845 84.0156L383.831 108.461L407.175 118.062Z" fill="#8A6FE8"/>
<path d="M401.363 105.175L401.234 69.117C401.181 62.1493 395.498 56.541 388.53 56.5945C381.562 56.648 375.954 62.3313 376.007 69.2989L376.018 96.11L401.363 105.175Z" fill="#8A6FE8"/> <path d="M401.363 105.175L401.234 69.117C401.181 62.1493 395.498 56.541 388.53 56.5945C381.562 56.648 375.954 62.3313 376.007 69.2989L376.018 96.11L401.363 105.175Z" fill="#8A6FE8"/>
<path d="M386.453 109.071L378.137 73.9548C376.543 67.169 369.757 62.9628 362.971 64.5575C356.185 66.1523 351.979 72.938 353.574 79.7237L362.04 115.482L386.453 109.071Z" fill="#8A6FE8"/> <path d="M386.453 109.071L378.137 73.9548C376.543 67.169 369.757 62.9628 362.971 64.5575C356.185 66.1523 351.979 72.938 353.574 79.7237L362.04 115.482L386.453 109.071Z" fill="#8A6FE8"/>
<path d="M381.776 142.261C396.359 142.261 408.181 130.44 408.181 115.857C408.181 101.274 396.359 89.4527 381.776 89.4527C367.194 89.4527 355.372 101.274 355.372 115.857C355.372 130.44 367.194 142.261 381.776 142.261Z" fill="url(#paint0_radial)"/> <path d="M381.776 142.261C396.359 142.261 408.181 130.44 408.181 115.857C408.181 101.274 396.359 89.4527 381.776 89.4527C367.194 89.4527 355.372 101.274 355.372 115.857C355.372 130.44 367.194 142.261 381.776 142.261Z" fill="url(#paint0_radial)"/>
<path d="M248.267 406.979C248.513 384.727 245.345 339.561 222.376 301.736L199.922 315.372C220.76 349.675 222.323 389.715 221.841 407.182C221.798 408.627 235.263 409.933 248.267 406.979Z" fill="url(#paint1_linear)"/> <path d="M248.267 406.979C248.513 384.727 245.345 339.561 222.376 301.736L199.922 315.372C220.76 349.675 222.323 389.715 221.841 407.182C221.798 408.627 235.263 409.933 248.267 406.979Z" fill="url(#paint1_linear)"/>
<path d="M221.841 406.936L242.637 406.84L262.052 518.065L220.311 518.258C217.132 518.269 214.724 515.711 214.938 512.532L221.841 406.936Z" fill="#522CD5"/> <path d="M221.841 406.936L242.637 406.84L262.052 518.065L220.311 518.258C217.132 518.269 214.724 515.711 214.938 512.532L221.841 406.936Z" fill="#522CD5"/>
<path d="M306.566 488.814C310.173 491.661 310.109 495.782 309.831 500.127L308.964 513.452C308.803 515.839 306.727 517.798 304.34 517.809L260.832 518.012C258.125 518.023 256.08 515.839 256.262 513.142L256.551 499.335C256.883 494.315 255.192 492.474 251.307 487.744C244.649 479.663 224.967 435.62 226.84 406.925L248.256 406.829C249.691 423.858 272.167 461.682 306.566 488.814Z" fill="url(#paint2_linear)"/> <path d="M306.566 488.814C310.173 491.661 310.109 495.782 309.831 500.127L308.964 513.452C308.803 515.839 306.727 517.798 304.34 517.809L260.832 518.012C258.125 518.023 256.08 515.839 256.262 513.142L256.551 499.335C256.883 494.315 255.192 492.474 251.307 487.744C244.649 479.663 224.967 435.62 226.84 406.925L248.256 406.829C249.691 423.858 272.167 461.682 306.566 488.814Z" fill="url(#paint2_linear)"/>
<path d="M309.82 500.127C310.023 497.088 310.077 494.176 308.889 491.715L254.635 491.961C256.134 494.166 256.765 496.092 256.562 499.314L256.273 513.121C256.091 515.828 258.146 518.012 260.843 517.99L304.34 517.798C306.727 517.787 308.803 515.828 308.964 513.442L309.82 500.127Z" fill="url(#paint3_radial)"/> <path d="M309.82 500.127C310.023 497.088 310.077 494.176 308.889 491.715L254.635 491.961C256.134 494.166 256.765 496.092 256.562 499.314L256.273 513.121C256.091 515.828 258.146 518.012 260.843 517.99L304.34 517.798C306.727 517.787 308.803 515.828 308.964 513.442L309.82 500.127Z" fill="url(#paint3_radial)"/>
<path d="M133.552 407.471C133.103 385.22 135.864 340.021 158.49 301.993L181.073 315.425C160.545 349.921 159.346 389.972 159.989 407.428C160.042 408.884 146.578 410.318 133.552 407.471Z" fill="url(#paint4_linear)"/> <path d="M133.552 407.471C133.103 385.22 135.864 340.021 158.49 301.993L181.073 315.425C160.545 349.921 159.346 389.972 159.989 407.428C160.042 408.884 146.578 410.318 133.552 407.471Z" fill="url(#paint4_linear)"/>
<path d="M110.798 497.152C110.765 494.187 111.204 491.575 112.457 487.23C131.882 434.132 133.52 407.364 133.52 407.364L159.999 407.246C159.999 407.246 161.819 433.512 181.716 486.427C183.289 490.195 183.471 493.641 183.674 496.831L183.792 513.816C183.803 516.374 181.716 518.483 179.158 518.494L177.873 518.504L116.781 518.782L115.496 518.793C112.927 518.804 110.83 516.728 110.819 514.159L110.798 497.152Z" fill="url(#paint5_linear)"/> <path d="M110.798 497.152C110.765 494.187 111.204 491.575 112.457 487.23C131.882 434.132 133.52 407.364 133.52 407.364L159.999 407.246C159.999 407.246 161.819 433.512 181.716 486.427C183.289 490.195 183.471 493.641 183.674 496.831L183.792 513.816C183.803 516.374 181.716 518.483 179.158 518.494L177.873 518.504L116.781 518.782L115.496 518.793C112.927 518.804 110.83 516.728 110.819 514.159L110.798 497.152Z" fill="url(#paint5_linear)"/>
<path d="M110.798 497.152C110.798 496.67 110.808 496.199 110.83 495.739C110.969 494.262 111.643 492.603 114.875 492.582L180.207 492.282C182.561 492.367 183.343 494.176 183.589 495.311C183.621 495.814 183.664 496.328 183.696 496.82L183.813 513.806C183.824 515.411 183.011 516.824 181.769 517.669C181.031 518.172 180.132 518.472 179.179 518.483L177.895 518.494L116.802 518.772L115.528 518.782C114.244 518.793 113.077 518.269 112.232 517.434C111.386 516.599 110.862 515.432 110.851 514.148L110.798 497.152Z" fill="url(#paint6_radial)"/> <path d="M110.798 497.152C110.798 496.67 110.808 496.199 110.83 495.739C110.969 494.262 111.643 492.603 114.875 492.582L180.207 492.282C182.561 492.367 183.343 494.176 183.589 495.311C183.621 495.814 183.664 496.328 183.696 496.82L183.813 513.806C183.824 515.411 183.011 516.824 181.769 517.669C181.031 518.172 180.132 518.472 179.179 518.483L177.895 518.494L116.802 518.772L115.528 518.782C114.244 518.793 113.077 518.269 112.232 517.434C111.386 516.599 110.862 515.432 110.851 514.148L110.798 497.152Z" fill="url(#paint6_radial)"/>
<path d="M314.979 246.348C324.162 210.407 318.008 181.777 318.008 181.777L326.452 181.734L326.656 181.574C314.262 115.75 256.326 66.0987 186.949 66.4198C108.796 66.773 45.7233 130.424 46.0765 208.577C46.4297 286.731 110.08 349.803 188.234 349.45C249.905 349.172 302.178 309.474 321.304 254.343C321.872 251.999 321.797 247.804 314.979 246.348Z" fill="url(#paint7_radial)"/> <path d="M314.979 246.348C324.162 210.407 318.008 181.777 318.008 181.777L326.452 181.734L326.656 181.574C314.262 115.75 256.326 66.0987 186.949 66.4198C108.796 66.773 45.7233 130.424 46.0765 208.577C46.4297 286.731 110.08 349.803 188.234 349.45C249.905 349.172 302.178 309.474 321.304 254.343C321.872 251.999 321.797 247.804 314.979 246.348Z" fill="url(#paint7_radial)"/>
<path d="M310.237 279.035L65.877 280.148C71.3998 289.428 77.95 298.012 85.3672 305.761L290.972 304.829C298.336 297.005 304.8 288.368 310.237 279.035Z" fill="#D8CFF7"/> <path d="M310.237 279.035L65.877 280.148C71.3998 289.428 77.95 298.012 85.3672 305.761L290.972 304.829C298.336 297.005 304.8 288.368 310.237 279.035Z" fill="#D8CFF7"/>
<path d="M235.062 312.794L280.924 312.585L280.74 272.021L234.877 272.23L235.062 312.794Z" fill="#512BD4"/> <path d="M235.062 312.794L280.924 312.585L280.74 272.021L234.877 272.23L235.062 312.794Z" fill="#512BD4"/>
<path d="M243.001 297.626C242.691 297.626 242.434 297.53 242.22 297.327C242.006 297.123 241.899 296.866 241.899 296.588C241.899 296.299 242.006 296.042 242.22 295.839C242.434 295.625 242.691 295.528 243.001 295.528C243.312 295.528 243.568 295.635 243.782 295.839C243.996 296.042 244.114 296.299 244.114 296.588C244.114 296.877 244.007 297.123 243.793 297.327C243.568 297.519 243.312 297.626 243.001 297.626Z" fill="white"/> <path d="M243.001 297.626C242.691 297.626 242.434 297.53 242.22 297.327C242.006 297.123 241.899 296.866 241.899 296.588C241.899 296.299 242.006 296.042 242.22 295.839C242.434 295.625 242.691 295.528 243.001 295.528C243.312 295.528 243.568 295.635 243.782 295.839C243.996 296.042 244.114 296.299 244.114 296.588C244.114 296.877 244.007 297.123 243.793 297.327C243.568 297.519 243.312 297.626 243.001 297.626Z" fill="white"/>
<path d="M255.192 297.434H253.212L247.967 289.203C247.839 289 247.721 288.775 247.636 288.55H247.593C247.636 288.786 247.657 289.299 247.657 290.091L247.668 297.444H245.912L245.891 286.228H247.999L253.062 294.265C253.276 294.597 253.415 294.833 253.479 294.95H253.511C253.458 294.651 253.437 294.148 253.437 293.441L253.426 286.217H255.17L255.192 297.434Z" fill="white"/> <path d="M255.192 297.434H253.212L247.967 289.203C247.839 289 247.721 288.775 247.636 288.55H247.593C247.636 288.786 247.657 289.299 247.657 290.091L247.668 297.444H245.912L245.891 286.228H247.999L253.062 294.265C253.276 294.597 253.415 294.833 253.479 294.95H253.511C253.458 294.651 253.437 294.148 253.437 293.441L253.426 286.217H255.17L255.192 297.434Z" fill="white"/>
<path d="M263.733 297.412L257.589 297.423L257.568 286.206L263.465 286.195V287.779L259.387 287.79L259.398 290.969L263.155 290.958V292.532L259.398 292.542L259.409 295.86L263.733 295.85V297.412Z" fill="white"/> <path d="M263.733 297.412L257.589 297.423L257.568 286.206L263.465 286.195V287.779L259.387 287.79L259.398 290.969L263.155 290.958V292.532L259.398 292.542L259.409 295.86L263.733 295.85V297.412Z" fill="white"/>
<path d="M272.445 287.758L269.298 287.769L269.32 297.401H267.5L267.479 287.769L264.343 287.779V286.195L272.434 286.174L272.445 287.758Z" fill="white"/> <path d="M272.445 287.758L269.298 287.769L269.32 297.401H267.5L267.479 287.769L264.343 287.779V286.195L272.434 286.174L272.445 287.758Z" fill="white"/>
<path d="M315.279 246.337C324.355 210.836 318.457 182.483 318.308 181.798L171.484 182.462C171.484 182.462 162.226 181.563 162.268 190.018C162.311 198.463 162.761 222.341 162.878 248.746C162.9 254.172 167.363 256.773 170.863 256.751C170.874 256.751 311.618 252.213 315.279 246.337Z" fill="url(#paint8_radial)"/> <path d="M315.279 246.337C324.355 210.836 318.457 182.483 318.308 181.798L171.484 182.462C171.484 182.462 162.226 181.563 162.268 190.018C162.311 198.463 162.761 222.341 162.878 248.746C162.9 254.172 167.363 256.773 170.863 256.751C170.874 256.751 311.618 252.213 315.279 246.337Z" fill="url(#paint8_radial)"/>
<path d="M227.685 246.798C227.685 246.798 250.183 228.827 254.571 225.499C258.959 222.17 262.812 221.977 266.869 225.445C270.925 228.913 293.616 246.498 293.616 246.498L227.685 246.798Z" fill="#A08BE8"/> <path d="M227.685 246.798C227.685 246.798 250.183 228.827 254.571 225.499C258.959 222.17 262.812 221.977 266.869 225.445C270.925 228.913 293.616 246.498 293.616 246.498L227.685 246.798Z" fill="#A08BE8"/>
<path d="M320.748 256.141C320.748 256.141 324.943 248.414 315.279 246.348C315.289 246.305 170.927 246.894 170.927 246.894C167.566 246.905 163.232 244.925 162.846 241.671C162.857 244.004 162.878 246.369 162.889 248.756C162.91 253.68 166.582 256.27 169.878 256.698C170.21 256.73 170.542 256.773 170.874 256.773L180.742 256.73L320.748 256.141Z" fill="#512BD4"/> <path d="M320.748 256.141C320.748 256.141 324.943 248.414 315.279 246.348C315.289 246.305 170.927 246.894 170.927 246.894C167.566 246.905 163.232 244.925 162.846 241.671C162.857 244.004 162.878 246.369 162.889 248.756C162.91 253.68 166.582 256.27 169.878 256.698C170.21 256.73 170.542 256.773 170.874 256.773L180.742 256.73L320.748 256.141Z" fill="#512BD4"/>
<path d="M206.4 233.214C212.511 233.095 217.302 224.667 217.102 214.39C216.901 204.112 211.785 195.878 205.674 195.997C199.563 196.116 194.772 204.544 194.973 214.821C195.173 225.099 200.289 233.333 206.4 233.214Z" fill="#512BD4"/> <path d="M206.4 233.214C212.511 233.095 217.302 224.667 217.102 214.39C216.901 204.112 211.785 195.878 205.674 195.997C199.563 196.116 194.772 204.544 194.973 214.821C195.173 225.099 200.289 233.333 206.4 233.214Z" fill="#512BD4"/>
<path d="M306.249 214.267C306.356 203.989 301.488 195.605 295.377 195.541C289.266 195.478 284.225 203.758 284.118 214.037C284.011 224.315 288.878 232.699 294.99 232.763C301.101 232.826 306.142 224.545 306.249 214.267Z" fill="#512BD4"/> <path d="M306.249 214.267C306.356 203.989 301.488 195.605 295.377 195.541C289.266 195.478 284.225 203.758 284.118 214.037C284.011 224.315 288.878 232.699 294.99 232.763C301.101 232.826 306.142 224.545 306.249 214.267Z" fill="#512BD4"/>
<path d="M205.905 205.291C208.152 203.022 211.192 202.016 214.157 202.262C215.912 205.495 217.014 209.733 217.111 214.389C217.164 217.3 216.811 220.04 216.158 222.513C212.669 223.519 208.752 222.662 205.979 219.922C201.912 215.909 201.88 209.348 205.905 205.291Z" fill="#8065E0"/> <path d="M205.905 205.291C208.152 203.022 211.192 202.016 214.157 202.262C215.912 205.495 217.014 209.733 217.111 214.389C217.164 217.3 216.811 220.04 216.158 222.513C212.669 223.519 208.752 222.662 205.979 219.922C201.912 215.909 201.88 209.348 205.905 205.291Z" fill="#8065E0"/>
<path d="M294.996 204.285C297.255 202.016 300.294 200.999 303.259 201.256C305.164 204.628 306.309 209.209 306.256 214.239C306.224 216.808 305.892 219.259 305.303 221.485C301.793 222.523 297.843 221.678 295.061 218.916C291.004 214.892 290.972 208.342 294.996 204.285Z" fill="#8065E0"/> <path d="M294.996 204.285C297.255 202.016 300.294 200.999 303.259 201.256C305.164 204.628 306.309 209.209 306.256 214.239C306.224 216.808 305.892 219.259 305.303 221.485C301.793 222.523 297.843 221.678 295.061 218.916C291.004 214.892 290.972 208.342 294.996 204.285Z" fill="#8065E0"/>
<path d="M11.6342 357.017C10.9171 354.716 -5.72611 300.141 21.3204 258.903C36.9468 235.078 63.3083 221.035 99.6664 217.15L102.449 243.276C74.3431 246.273 54.4676 256.345 43.3579 273.202C23.0971 303.941 36.5722 348.733 36.7113 349.183L11.6342 357.017Z" fill="url(#paint9_linear)"/> <path d="M11.6342 357.017C10.9171 354.716 -5.72611 300.141 21.3204 258.903C36.9468 235.078 63.3083 221.035 99.6664 217.15L102.449 243.276C74.3431 246.273 54.4676 256.345 43.3579 273.202C23.0971 303.941 36.5722 348.733 36.7113 349.183L11.6342 357.017Z" fill="url(#paint9_linear)"/>
<path d="M95.1498 252.802C109.502 252.802 121.137 241.167 121.137 226.815C121.137 212.463 109.502 200.828 95.1498 200.828C80.7976 200.828 69.1628 212.463 69.1628 226.815C69.1628 241.167 80.7976 252.802 95.1498 252.802Z" fill="url(#paint10_radial)"/> <path d="M95.1498 252.802C109.502 252.802 121.137 241.167 121.137 226.815C121.137 212.463 109.502 200.828 95.1498 200.828C80.7976 200.828 69.1628 212.463 69.1628 226.815C69.1628 241.167 80.7976 252.802 95.1498 252.802Z" fill="url(#paint10_radial)"/>
<path d="M72.0098 334.434L33.4683 329.307C26.597 328.397 20.2929 333.214 19.3725 340.085C18.4627 346.956 23.279 353.26 30.1504 354.181L68.6919 359.308C75.5632 360.217 81.8673 355.401 82.7878 348.53C83.6975 341.658 78.8705 335.344 72.0098 334.434Z" fill="#8A6FE8"/> <path d="M72.0098 334.434L33.4683 329.307C26.597 328.397 20.2929 333.214 19.3725 340.085C18.4627 346.956 23.279 353.26 30.1504 354.181L68.6919 359.308C75.5632 360.217 81.8673 355.401 82.7878 348.53C83.6975 341.658 78.8705 335.344 72.0098 334.434Z" fill="#8A6FE8"/>
<path d="M3.73535 367.185L7.35297 393.076C8.36975 399.968 14.7702 404.731 21.6629 403.725C28.5556 402.708 33.3185 396.308 32.3124 389.415L28.5984 362.861L3.73535 367.185Z" fill="#8A6FE8"/> <path d="M3.73535 367.185L7.35297 393.076C8.36975 399.968 14.7702 404.731 21.6629 403.725C28.5556 402.708 33.3185 396.308 32.3124 389.415L28.5984 362.861L3.73535 367.185Z" fill="#8A6FE8"/>
<path d="M15.5194 374.988L34.849 405.427C38.6058 411.292 46.4082 413.005 52.2735 409.248C58.1387 405.491 59.8512 397.689 56.0945 391.823L41.7953 369.144L15.5194 374.988Z" fill="#8A6FE8"/> <path d="M15.5194 374.988L34.849 405.427C38.6058 411.292 46.4082 413.005 52.2735 409.248C58.1387 405.491 59.8512 397.689 56.0945 391.823L41.7953 369.144L15.5194 374.988Z" fill="#8A6FE8"/>
<path d="M26.0511 363.739L51.8026 389.019C56.7688 393.911 64.7532 393.846 69.6445 388.88C74.5358 383.914 74.4715 375.929 69.516 371.038L43.2937 345.297L26.0511 363.739Z" fill="#8A6FE8"/> <path d="M26.0511 363.739L51.8026 389.019C56.7688 393.911 64.7532 393.846 69.6445 388.88C74.5358 383.914 74.4715 375.929 69.516 371.038L43.2937 345.297L26.0511 363.739Z" fill="#8A6FE8"/>
<path d="M26.4043 381.912C40.987 381.912 52.8086 370.091 52.8086 355.508C52.8086 340.925 40.987 329.104 26.4043 329.104C11.8216 329.104 0 340.925 0 355.508C0 370.091 11.8216 381.912 26.4043 381.912Z" fill="url(#paint11_radial)"/> <path d="M26.4043 381.912C40.987 381.912 52.8086 370.091 52.8086 355.508C52.8086 340.925 40.987 329.104 26.4043 329.104C11.8216 329.104 0 340.925 0 355.508C0 370.091 11.8216 381.912 26.4043 381.912Z" fill="url(#paint11_radial)"/>
<path d="M184.73 63.6308L157.819 66.5892L158.561 38.5412L177.888 36.4178L184.73 63.6308Z" fill="#8A6FE8"/> <path d="M184.73 63.6308L157.819 66.5892L158.561 38.5412L177.888 36.4178L184.73 63.6308Z" fill="#8A6FE8"/>
<path d="M170.018 41.647C180.455 39.521 187.193 29.3363 185.067 18.8988C182.941 8.46126 172.757 1.72345 162.319 3.84944C151.882 5.97543 145.144 16.1601 147.27 26.5976C149.396 37.0351 159.58 43.773 170.018 41.647Z" fill="#D8CFF7"/> <path d="M170.018 41.647C180.455 39.521 187.193 29.3363 185.067 18.8988C182.941 8.46126 172.757 1.72345 162.319 3.84944C151.882 5.97543 145.144 16.1601 147.27 26.5976C149.396 37.0351 159.58 43.773 170.018 41.647Z" fill="#D8CFF7"/>
<path d="M196.885 79.385C198.102 79.2464 198.948 78.091 198.684 76.8997C195.851 64.2818 183.923 55.5375 170.773 56.9926C157.622 58.4371 147.886 69.5735 147.865 82.4995C147.863 83.7232 148.949 84.6597 150.168 84.5316L196.885 79.385Z" fill="url(#paint12_radial)"/> <path d="M196.885 79.385C198.102 79.2464 198.948 78.091 198.684 76.8997C195.851 64.2818 183.923 55.5375 170.773 56.9926C157.622 58.4371 147.886 69.5735 147.865 82.4995C147.863 83.7232 148.949 84.6597 150.168 84.5316L196.885 79.385Z" fill="url(#paint12_radial)"/>
<defs> <defs>
<radialGradient id="paint0_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(382.004 103.457) scale(26.4058)"> <radialGradient id="paint0_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(382.004 103.457) scale(26.4058)">
<stop stop-color="#8065E0"/> <stop stop-color="#8065E0"/>
<stop offset="1" stop-color="#512BD4"/> <stop offset="1" stop-color="#512BD4"/>
</radialGradient> </radialGradient>
<linearGradient id="paint1_linear" x1="214.439" y1="303.482" x2="236.702" y2="409.505" gradientUnits="userSpaceOnUse"> <linearGradient id="paint1_linear" x1="214.439" y1="303.482" x2="236.702" y2="409.505" gradientUnits="userSpaceOnUse">
<stop stop-color="#522CD5"/> <stop stop-color="#522CD5"/>
<stop offset="0.4397" stop-color="#8A6FE8"/> <stop offset="0.4397" stop-color="#8A6FE8"/>
</linearGradient> </linearGradient>
<linearGradient id="paint2_linear" x1="231.673" y1="404.144" x2="297.805" y2="522.048" gradientUnits="userSpaceOnUse"> <linearGradient id="paint2_linear" x1="231.673" y1="404.144" x2="297.805" y2="522.048" gradientUnits="userSpaceOnUse">
<stop stop-color="#522CD5"/> <stop stop-color="#522CD5"/>
<stop offset="0.4397" stop-color="#8A6FE8"/> <stop offset="0.4397" stop-color="#8A6FE8"/>
</linearGradient> </linearGradient>
<radialGradient id="paint3_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(280.957 469.555) rotate(-0.260742) scale(45.8326)"> <radialGradient id="paint3_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(280.957 469.555) rotate(-0.260742) scale(45.8326)">
<stop offset="0.034" stop-color="#522CD5"/> <stop offset="0.034" stop-color="#522CD5"/>
<stop offset="0.9955" stop-color="#8A6FE8"/> <stop offset="0.9955" stop-color="#8A6FE8"/>
</radialGradient> </radialGradient>
<linearGradient id="paint4_linear" x1="166.061" y1="303.491" x2="144.763" y2="409.709" gradientUnits="userSpaceOnUse"> <linearGradient id="paint4_linear" x1="166.061" y1="303.491" x2="144.763" y2="409.709" gradientUnits="userSpaceOnUse">
<stop stop-color="#522CD5"/> <stop stop-color="#522CD5"/>
<stop offset="0.4397" stop-color="#8A6FE8"/> <stop offset="0.4397" stop-color="#8A6FE8"/>
</linearGradient> </linearGradient>
<linearGradient id="paint5_linear" x1="146.739" y1="407.302" x2="147.246" y2="518.627" gradientUnits="userSpaceOnUse"> <linearGradient id="paint5_linear" x1="146.739" y1="407.302" x2="147.246" y2="518.627" gradientUnits="userSpaceOnUse">
<stop stop-color="#522CD5"/> <stop stop-color="#522CD5"/>
<stop offset="0.4397" stop-color="#8A6FE8"/> <stop offset="0.4397" stop-color="#8A6FE8"/>
</linearGradient> </linearGradient>
<radialGradient id="paint6_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(148.63 470.023) rotate(179.739) scale(50.2476)"> <radialGradient id="paint6_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(148.63 470.023) rotate(179.739) scale(50.2476)">
<stop offset="0.034" stop-color="#522CD5"/> <stop offset="0.034" stop-color="#522CD5"/>
<stop offset="0.9955" stop-color="#8A6FE8"/> <stop offset="0.9955" stop-color="#8A6FE8"/>
</radialGradient> </radialGradient>
<radialGradient id="paint7_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(219.219 153.929) rotate(179.739) scale(140.935)"> <radialGradient id="paint7_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(219.219 153.929) rotate(179.739) scale(140.935)">
<stop offset="0.4744" stop-color="#A08BE8"/> <stop offset="0.4744" stop-color="#A08BE8"/>
<stop offset="0.8618" stop-color="#8065E0"/> <stop offset="0.8618" stop-color="#8065E0"/>
</radialGradient> </radialGradient>
<radialGradient id="paint8_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(314.861 158.738) rotate(179.739) scale(146.053)"> <radialGradient id="paint8_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(314.861 158.738) rotate(179.739) scale(146.053)">
<stop offset="0.0933" stop-color="#E1DFDD"/> <stop offset="0.0933" stop-color="#E1DFDD"/>
<stop offset="0.6573" stop-color="white"/> <stop offset="0.6573" stop-color="white"/>
</radialGradient> </radialGradient>
<linearGradient id="paint9_linear" x1="54.1846" y1="217.159" x2="54.1846" y2="357.022" gradientUnits="userSpaceOnUse"> <linearGradient id="paint9_linear" x1="54.1846" y1="217.159" x2="54.1846" y2="357.022" gradientUnits="userSpaceOnUse">
<stop offset="0.3344" stop-color="#9780E6"/> <stop offset="0.3344" stop-color="#9780E6"/>
<stop offset="0.8488" stop-color="#8A6FE8"/> <stop offset="0.8488" stop-color="#8A6FE8"/>
</linearGradient> </linearGradient>
<radialGradient id="paint10_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(90.3494 218.071) rotate(-0.260742) scale(25.9924)"> <radialGradient id="paint10_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(90.3494 218.071) rotate(-0.260742) scale(25.9924)">
<stop stop-color="#8065E0"/> <stop stop-color="#8065E0"/>
<stop offset="1" stop-color="#512BD4"/> <stop offset="1" stop-color="#512BD4"/>
</radialGradient> </radialGradient>
<radialGradient id="paint11_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(25.805 345.043) scale(26.4106)"> <radialGradient id="paint11_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(25.805 345.043) scale(26.4106)">
<stop stop-color="#8065E0"/> <stop stop-color="#8065E0"/>
<stop offset="1" stop-color="#512BD4"/> <stop offset="1" stop-color="#512BD4"/>
</radialGradient> </radialGradient>
<radialGradient id="paint12_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(169.113 67.3662) rotate(-32.2025) scale(21.0773)"> <radialGradient id="paint12_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(169.113 67.3662) rotate(-32.2025) scale(21.0773)">
<stop stop-color="#8065E0"/> <stop stop-color="#8065E0"/>
<stop offset="1" stop-color="#512BD4"/> <stop offset="1" stop-color="#512BD4"/>
</radialGradient> </radialGradient>
</defs> </defs>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before

Width:  |  Height:  |  Size: 423 KiB

After

Width:  |  Height:  |  Size: 423 KiB

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -1,15 +1,15 @@
Any raw assets you want to be deployed with your application can be placed in Any raw assets you want to be deployed with your application can be placed in
this directory (and child directories). Deployment of the asset to your application this directory (and child directories). Deployment of the asset to your application
is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. is automatically handled by the following `MauiAsset` Build Action within your `.csproj`.
<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" /> <MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
These files will be deployed with you package and will be accessible using Essentials: These files will be deployed with you package and will be accessible using Essentials:
async Task LoadMauiAsset() async Task LoadMauiAsset()
{ {
using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt");
using var reader = new StreamReader(stream); using var reader = new StreamReader(stream);
var contents = reader.ReadToEnd(); var contents = reader.ReadToEnd();
} }

@ -1,44 +1,44 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<?xaml-comp compile="true" ?> <?xaml-comp compile="true" ?>
<ResourceDictionary <ResourceDictionary
xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"> xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<Color x:Key="Primary">#FAD05D</Color> <Color x:Key="Primary">#FAD05D</Color>
<Color x:Key="Secondary">#C8D1FF</Color> <Color x:Key="Secondary">#C8D1FF</Color>
<Color x:Key="Tertiary">#D9D9D9</Color> <Color x:Key="Tertiary">#D9D9D9</Color>
<Color x:Key="White">White</Color> <Color x:Key="White">White</Color>
<Color x:Key="Black">Black</Color> <Color x:Key="Black">Black</Color>
<Color x:Key="Gray100">#E1E1E1</Color> <Color x:Key="Gray100">#E1E1E1</Color>
<Color x:Key="Gray200">#C8C8C8</Color> <Color x:Key="Gray200">#C8C8C8</Color>
<Color x:Key="Gray300">#A0A0A0</Color> <Color x:Key="Gray300">#A0A0A0</Color>
<Color x:Key="Gray400">#919191</Color> <Color x:Key="Gray400">#919191</Color>
<Color x:Key="Gray500">#5E5E5E</Color> <Color x:Key="Gray500">#5E5E5E</Color>
<Color x:Key="Gray600">#404040</Color> <Color x:Key="Gray600">#404040</Color>
<Color x:Key="Gray900">#212121</Color> <Color x:Key="Gray900">#212121</Color>
<Color x:Key="Gray950">#141414</Color> <Color x:Key="Gray950">#141414</Color>
<Color x:Key="Gray1000">#121212</Color> <Color x:Key="Gray1000">#121212</Color>
<SolidColorBrush x:Key="PrimaryBrush" Color="{StaticResource Primary}"/> <SolidColorBrush x:Key="PrimaryBrush" Color="{StaticResource Primary}"/>
<SolidColorBrush x:Key="SecondaryBrush" Color="{StaticResource Secondary}"/> <SolidColorBrush x:Key="SecondaryBrush" Color="{StaticResource Secondary}"/>
<SolidColorBrush x:Key="WhiteBrush" Color="{StaticResource White}"/> <SolidColorBrush x:Key="WhiteBrush" Color="{StaticResource White}"/>
<SolidColorBrush x:Key="BlackBrush" Color="{StaticResource Black}"/> <SolidColorBrush x:Key="BlackBrush" Color="{StaticResource Black}"/>
<SolidColorBrush x:Key="Gray100Brush" Color="{StaticResource Gray100}"/> <SolidColorBrush x:Key="Gray100Brush" Color="{StaticResource Gray100}"/>
<SolidColorBrush x:Key="Gray200Brush" Color="{StaticResource Gray200}"/> <SolidColorBrush x:Key="Gray200Brush" Color="{StaticResource Gray200}"/>
<SolidColorBrush x:Key="Gray300Brush" Color="{StaticResource Gray300}"/> <SolidColorBrush x:Key="Gray300Brush" Color="{StaticResource Gray300}"/>
<SolidColorBrush x:Key="Gray400Brush" Color="{StaticResource Gray400}"/> <SolidColorBrush x:Key="Gray400Brush" Color="{StaticResource Gray400}"/>
<SolidColorBrush x:Key="Gray500Brush" Color="{StaticResource Gray500}"/> <SolidColorBrush x:Key="Gray500Brush" Color="{StaticResource Gray500}"/>
<SolidColorBrush x:Key="Gray600Brush" Color="{StaticResource Gray600}"/> <SolidColorBrush x:Key="Gray600Brush" Color="{StaticResource Gray600}"/>
<SolidColorBrush x:Key="Gray900Brush" Color="{StaticResource Gray900}"/> <SolidColorBrush x:Key="Gray900Brush" Color="{StaticResource Gray900}"/>
<SolidColorBrush x:Key="Gray950Brush" Color="{StaticResource Gray950}"/> <SolidColorBrush x:Key="Gray950Brush" Color="{StaticResource Gray950}"/>
<Color x:Key="Yellow100Accent">#F7B548</Color> <Color x:Key="Yellow100Accent">#F7B548</Color>
<Color x:Key="Yellow200Accent">#FFD590</Color> <Color x:Key="Yellow200Accent">#FFD590</Color>
<Color x:Key="Yellow300Accent">#FFE5B9</Color> <Color x:Key="Yellow300Accent">#FFE5B9</Color>
<Color x:Key="Cyan100Accent">#28C2D1</Color> <Color x:Key="Cyan100Accent">#28C2D1</Color>
<Color x:Key="Cyan200Accent">#7BDDEF</Color> <Color x:Key="Cyan200Accent">#7BDDEF</Color>
<Color x:Key="Cyan300Accent">#C3F2F4</Color> <Color x:Key="Cyan300Accent">#C3F2F4</Color>
<Color x:Key="Blue100Accent">#3E8EED</Color> <Color x:Key="Blue100Accent">#3E8EED</Color>
<Color x:Key="Blue200Accent">#72ACF1</Color> <Color x:Key="Blue200Accent">#72ACF1</Color>
<Color x:Key="Blue300Accent">#A7CBF6</Color> <Color x:Key="Blue300Accent">#A7CBF6</Color>
</ResourceDictionary> </ResourceDictionary>

@ -1,444 +1,444 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<?xaml-comp compile="true" ?> <?xaml-comp compile="true" ?>
<ResourceDictionary <ResourceDictionary
xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"> xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<Style TargetType="ActivityIndicator"> <Style TargetType="ActivityIndicator">
<Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
</Style> </Style>
<Style TargetType="IndicatorView"> <Style TargetType="IndicatorView">
<Setter Property="IndicatorColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}"/> <Setter Property="IndicatorColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}"/>
<Setter Property="SelectedIndicatorColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray100}}"/> <Setter Property="SelectedIndicatorColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray100}}"/>
</Style> </Style>
<Style TargetType="Border"> <Style TargetType="Border">
<Setter Property="Stroke" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" /> <Setter Property="Stroke" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
<Setter Property="StrokeShape" Value="Rectangle"/> <Setter Property="StrokeShape" Value="Rectangle"/>
<Setter Property="StrokeThickness" Value="1"/> <Setter Property="StrokeThickness" Value="1"/>
</Style> </Style>
<Style TargetType="BoxView"> <Style TargetType="BoxView">
<Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" /> <Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" />
</Style> </Style>
<Style TargetType="Button"> <Style TargetType="Button">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Primary}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Primary}}" />
<Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
<Setter Property="FontFamily" Value="OpenSansRegular"/> <Setter Property="FontFamily" Value="OpenSansRegular"/>
<Setter Property="FontSize" Value="14"/> <Setter Property="FontSize" Value="14"/>
<Setter Property="CornerRadius" Value="8"/> <Setter Property="CornerRadius" Value="8"/>
<Setter Property="Padding" Value="14,10"/> <Setter Property="Padding" Value="14,10"/>
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" />
<Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray600}}" /> <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="CheckBox"> <Style TargetType="CheckBox">
<Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="DatePicker"> <Style TargetType="DatePicker">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
<Setter Property="BackgroundColor" Value="Transparent" /> <Setter Property="BackgroundColor" Value="Transparent" />
<Setter Property="FontFamily" Value="OpenSansRegular"/> <Setter Property="FontFamily" Value="OpenSansRegular"/>
<Setter Property="FontSize" Value="14"/> <Setter Property="FontSize" Value="14"/>
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="Editor"> <Style TargetType="Editor">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" />
<Setter Property="BackgroundColor" Value="Transparent" /> <Setter Property="BackgroundColor" Value="Transparent" />
<Setter Property="FontFamily" Value="OpenSansRegular"/> <Setter Property="FontFamily" Value="OpenSansRegular"/>
<Setter Property="FontSize" Value="14" /> <Setter Property="FontSize" Value="14" />
<Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" /> <Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="Entry"> <Style TargetType="Entry">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" />
<Setter Property="BackgroundColor" Value="Transparent" /> <Setter Property="BackgroundColor" Value="Transparent" />
<Setter Property="FontFamily" Value="OpenSansRegular"/> <Setter Property="FontFamily" Value="OpenSansRegular"/>
<Setter Property="FontSize" Value="14" /> <Setter Property="FontSize" Value="14" />
<Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" /> <Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="Frame"> <Style TargetType="Frame">
<Setter Property="HasShadow" Value="False" /> <Setter Property="HasShadow" Value="False" />
<Setter Property="CornerRadius" Value="0" /> <Setter Property="CornerRadius" Value="0" />
<Setter Property="Padding" Value="0" /> <Setter Property="Padding" Value="0" />
</Style> </Style>
<Style TargetType="ImageButton"> <Style TargetType="ImageButton">
<Setter Property="Opacity" Value="1" /> <Setter Property="Opacity" Value="1" />
<Setter Property="BorderColor" Value="Transparent"/> <Setter Property="BorderColor" Value="Transparent"/>
<Setter Property="BorderWidth" Value="0"/> <Setter Property="BorderWidth" Value="0"/>
<Setter Property="CornerRadius" Value="0"/> <Setter Property="CornerRadius" Value="0"/>
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="Opacity" Value="0.5" /> <Setter Property="Opacity" Value="0.5" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="Label"> <Style TargetType="Label">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
<Setter Property="BackgroundColor" Value="Transparent" /> <Setter Property="BackgroundColor" Value="Transparent" />
<Setter Property="FontFamily" Value="OpenSansRegular" /> <Setter Property="FontFamily" Value="OpenSansRegular" />
<Setter Property="FontSize" Value="14" /> <Setter Property="FontSize" Value="14" />
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="ListView"> <Style TargetType="ListView">
<Setter Property="SeparatorColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" /> <Setter Property="SeparatorColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray500}}" />
<Setter Property="RefreshControlColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" /> <Setter Property="RefreshControlColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" />
</Style> </Style>
<Style TargetType="Picker"> <Style TargetType="Picker">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
<Setter Property="TitleColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" /> <Setter Property="TitleColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" />
<Setter Property="BackgroundColor" Value="Transparent" /> <Setter Property="BackgroundColor" Value="Transparent" />
<Setter Property="FontFamily" Value="OpenSansRegular"/> <Setter Property="FontFamily" Value="OpenSansRegular"/>
<Setter Property="FontSize" Value="14"/> <Setter Property="FontSize" Value="14"/>
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
<Setter Property="TitleColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="TitleColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="ProgressBar"> <Style TargetType="ProgressBar">
<Setter Property="ProgressColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="ProgressColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="ProgressColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="ProgressColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="RadioButton"> <Style TargetType="RadioButton">
<Setter Property="BackgroundColor" Value="Transparent"/> <Setter Property="BackgroundColor" Value="Transparent"/>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Black}, Dark={StaticResource White}}" />
<Setter Property="FontFamily" Value="OpenSansRegular"/> <Setter Property="FontFamily" Value="OpenSansRegular"/>
<Setter Property="FontSize" Value="14"/> <Setter Property="FontSize" Value="14"/>
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="RefreshView"> <Style TargetType="RefreshView">
<Setter Property="RefreshColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" /> <Setter Property="RefreshColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" />
</Style> </Style>
<Style TargetType="SearchBar"> <Style TargetType="SearchBar">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
<Setter Property="PlaceholderColor" Value="{StaticResource Gray500}" /> <Setter Property="PlaceholderColor" Value="{StaticResource Gray500}" />
<Setter Property="CancelButtonColor" Value="{StaticResource Gray500}" /> <Setter Property="CancelButtonColor" Value="{StaticResource Gray500}" />
<Setter Property="BackgroundColor" Value="Transparent" /> <Setter Property="BackgroundColor" Value="Transparent" />
<Setter Property="FontFamily" Value="OpenSansRegular" /> <Setter Property="FontFamily" Value="OpenSansRegular" />
<Setter Property="FontSize" Value="14" /> <Setter Property="FontSize" Value="14" />
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
<Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="SearchHandler"> <Style TargetType="SearchHandler">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
<Setter Property="PlaceholderColor" Value="{StaticResource Gray500}" /> <Setter Property="PlaceholderColor" Value="{StaticResource Gray500}" />
<Setter Property="BackgroundColor" Value="Transparent" /> <Setter Property="BackgroundColor" Value="Transparent" />
<Setter Property="FontFamily" Value="OpenSansRegular" /> <Setter Property="FontFamily" Value="OpenSansRegular" />
<Setter Property="FontSize" Value="14" /> <Setter Property="FontSize" Value="14" />
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
<Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="PlaceholderColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="Shadow"> <Style TargetType="Shadow">
<Setter Property="Radius" Value="15" /> <Setter Property="Radius" Value="15" />
<Setter Property="Opacity" Value="0.5" /> <Setter Property="Opacity" Value="0.5" />
<Setter Property="Brush" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource White}}" /> <Setter Property="Brush" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource White}}" />
<Setter Property="Offset" Value="10,10" /> <Setter Property="Offset" Value="10,10" />
</Style> </Style>
<Style TargetType="Slider"> <Style TargetType="Slider">
<Setter Property="MinimumTrackColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="MinimumTrackColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
<Setter Property="MaximumTrackColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray600}}" /> <Setter Property="MaximumTrackColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray600}}" />
<Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="MinimumTrackColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}"/> <Setter Property="MinimumTrackColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}"/>
<Setter Property="MaximumTrackColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}"/> <Setter Property="MaximumTrackColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}"/>
<Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}"/> <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}"/>
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="SwipeItem"> <Style TargetType="SwipeItem">
<Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Black}}" /> <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Black}}" />
</Style> </Style>
<Style TargetType="Switch"> <Style TargetType="Switch">
<Setter Property="OnColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="OnColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
<Setter Property="ThumbColor" Value="{StaticResource White}" /> <Setter Property="ThumbColor" Value="{StaticResource White}" />
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="OnColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="OnColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
<Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
<VisualState x:Name="On"> <VisualState x:Name="On">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="OnColor" Value="{AppThemeBinding Light={StaticResource Secondary}, Dark={StaticResource Gray200}}" /> <Setter Property="OnColor" Value="{AppThemeBinding Light={StaticResource Secondary}, Dark={StaticResource Gray200}}" />
<Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
<VisualState x:Name="Off"> <VisualState x:Name="Off">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Gray400}, Dark={StaticResource Gray500}}" /> <Setter Property="ThumbColor" Value="{AppThemeBinding Light={StaticResource Gray400}, Dark={StaticResource Gray500}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="TimePicker"> <Style TargetType="TimePicker">
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource White}}" />
<Setter Property="BackgroundColor" Value="Transparent"/> <Setter Property="BackgroundColor" Value="Transparent"/>
<Setter Property="FontFamily" Value="OpenSansRegular"/> <Setter Property="FontFamily" Value="OpenSansRegular"/>
<Setter Property="FontSize" Value="14"/> <Setter Property="FontSize" Value="14"/>
<Setter Property="MinimumHeightRequest" Value="44"/> <Setter Property="MinimumHeightRequest" Value="44"/>
<Setter Property="MinimumWidthRequest" Value="44"/> <Setter Property="MinimumWidthRequest" Value="44"/>
<Setter Property="VisualStateManager.VisualStateGroups"> <Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList> <VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates"> <VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" /> <VisualState x:Name="Normal" />
<VisualState x:Name="Disabled"> <VisualState x:Name="Disabled">
<VisualState.Setters> <VisualState.Setters>
<Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" /> <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray300}, Dark={StaticResource Gray600}}" />
</VisualState.Setters> </VisualState.Setters>
</VisualState> </VisualState>
</VisualStateGroup> </VisualStateGroup>
</VisualStateGroupList> </VisualStateGroupList>
</Setter> </Setter>
</Style> </Style>
<Style TargetType="Page" ApplyToDerivedTypes="True"> <Style TargetType="Page" ApplyToDerivedTypes="True">
<Setter Property="Padding" Value="0"/> <Setter Property="Padding" Value="0"/>
<Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Black}}" /> <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Black}}" />
</Style> </Style>
<Style TargetType="Shell" ApplyToDerivedTypes="True"> <Style TargetType="Shell" ApplyToDerivedTypes="True">
<Setter Property="Shell.BackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource Gray950}}" /> <Setter Property="Shell.BackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource Gray950}}" />
<Setter Property="Shell.ForegroundColor" Value="{OnPlatform WinUI={StaticResource Primary}, Default={StaticResource White}}" /> <Setter Property="Shell.ForegroundColor" Value="{OnPlatform WinUI={StaticResource Primary}, Default={StaticResource White}}" />
<Setter Property="Shell.TitleColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource White}}" /> <Setter Property="Shell.TitleColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource White}}" />
<Setter Property="Shell.DisabledColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray950}}" /> <Setter Property="Shell.DisabledColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray950}}" />
<Setter Property="Shell.UnselectedColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray200}}" /> <Setter Property="Shell.UnselectedColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray200}}" />
<Setter Property="Shell.NavBarHasShadow" Value="False" /> <Setter Property="Shell.NavBarHasShadow" Value="False" />
<Setter Property="Shell.TabBarBackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Black}}" /> <Setter Property="Shell.TabBarBackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Black}}" />
<Setter Property="Shell.TabBarForegroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="Shell.TabBarForegroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
<Setter Property="Shell.TabBarTitleColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="Shell.TabBarTitleColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
<Setter Property="Shell.TabBarUnselectedColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" /> <Setter Property="Shell.TabBarUnselectedColor" Value="{AppThemeBinding Light={StaticResource Gray900}, Dark={StaticResource Gray200}}" />
</Style> </Style>
<Style TargetType="NavigationPage"> <Style TargetType="NavigationPage">
<Setter Property="BarBackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource Gray950}}" /> <Setter Property="BarBackgroundColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource Gray950}}" />
<Setter Property="BarTextColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource White}}" /> <Setter Property="BarTextColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource White}}" />
<Setter Property="IconColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource White}}" /> <Setter Property="IconColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource White}}" />
</Style> </Style>
<Style TargetType="TabbedPage"> <Style TargetType="TabbedPage">
<Setter Property="BarBackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Gray950}}" /> <Setter Property="BarBackgroundColor" Value="{AppThemeBinding Light={StaticResource White}, Dark={StaticResource Gray950}}" />
<Setter Property="BarTextColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" /> <Setter Property="BarTextColor" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
<Setter Property="UnselectedTabColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray950}}" /> <Setter Property="UnselectedTabColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray950}}" />
<Setter Property="SelectedTabColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" /> <Setter Property="SelectedTabColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" />
</Style> </Style>
<Style TargetType="Image" x:Key="BigStar"> <Style TargetType="Image" x:Key="BigStar">
<Setter Property="Source" Value="star.png"/> <Setter Property="Source" Value="star.png"/>
<Setter Property="HorizontalOptions" Value="Start"/> <Setter Property="HorizontalOptions" Value="Start"/>
<Setter Property="VerticalOptions" Value="Start"/> <Setter Property="VerticalOptions" Value="Start"/>
<Setter Property="Grid.Column" Value="2"/> <Setter Property="Grid.Column" Value="2"/>
<Setter Property="HeightRequest" Value="10"/> <Setter Property="HeightRequest" Value="10"/>
<Setter Property="WidthRequest" Value="10"/> <Setter Property="WidthRequest" Value="10"/>
</Style> </Style>
<Style TargetType="Image" x:Key="Star"> <Style TargetType="Image" x:Key="Star">
<Setter Property="Source" Value="bigstar.png"/> <Setter Property="Source" Value="bigstar.png"/>
<Setter Property="HorizontalOptions" Value="Start"/> <Setter Property="HorizontalOptions" Value="Start"/>
<Setter Property="VerticalOptions" Value="Start"/> <Setter Property="VerticalOptions" Value="Start"/>
<Setter Property="Grid.Column" Value="2"/> <Setter Property="Grid.Column" Value="2"/>
<Setter Property="HeightRequest" Value="15"/> <Setter Property="HeightRequest" Value="15"/>
<Setter Property="WidthRequest" Value="15"/> <Setter Property="WidthRequest" Value="15"/>
</Style> </Style>
<Style TargetType="Image" x:Key="DownloadBlue"> <Style TargetType="Image" x:Key="DownloadBlue">
<Setter Property="Source" Value="download_blue.png"/> <Setter Property="Source" Value="download_blue.png"/>
<Setter Property="HorizontalOptions" Value="Start"/> <Setter Property="HorizontalOptions" Value="Start"/>
<Setter Property="VerticalOptions" Value="Start"/> <Setter Property="VerticalOptions" Value="Start"/>
<Setter Property="HeightRequest" Value="15"/> <Setter Property="HeightRequest" Value="15"/>
</Style> </Style>
<Style TargetType="ImageButton" x:Key="ImageRecherche"> <Style TargetType="ImageButton" x:Key="ImageRecherche">
<Setter Property="HeightRequest" Value="97"/> <Setter Property="HeightRequest" Value="97"/>
<Setter Property="WidthRequest" Value="170"/> <Setter Property="WidthRequest" Value="170"/>
<Setter Property="Margin" Value="0,0,0,20"/> <Setter Property="Margin" Value="0,0,0,20"/>
<Setter Property="CornerRadius" Value="10"/> <Setter Property="CornerRadius" Value="10"/>
</Style> </Style>
</ResourceDictionary> </ResourceDictionary>

@ -1,47 +1,47 @@
using GameAtlas.Models; using GameAtlas.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace GameAtlas.Stub namespace GameAtlas.Stub
{ {
public class Stub : IPersistanceManager public class Stub : IPersistanceManager
{ {
public (ObservableCollection<Jeu>,List<Admin>,List<Utilisateur>) ChargeDonnees() public (ObservableCollection<Jeu>,List<Admin>,List<Utilisateur>) ChargeDonnees()
{ {
List<Utilisateur> ListUsers = new List<Utilisateur>(); List<Utilisateur> ListUsers = new List<Utilisateur>();
List<Admin> ListAdmins = new List<Admin>(); List<Admin> ListAdmins = new List<Admin>();
ObservableCollection<Jeu> ListJeu = new ObservableCollection<Jeu>(); ObservableCollection<Jeu> ListJeu = new ObservableCollection<Jeu>();
Utilisateur userTest = new Utilisateur("test@gmail.com", "test", "Test1234"); Utilisateur userTest = new Utilisateur("test@gmail.com", "test", "Test1234");
Admin admin = new Admin("admin@example.com", "admin", "Admin1234"); Admin admin = new Admin("admin@example.com", "admin", "Admin1234");
ListUsers.Add(userTest); ListUsers.Add(userTest);
ListAdmins.Add(admin); ListAdmins.Add(admin);
Jeu TheLastOfUs = new Jeu("The Last Of Us Part I", "Dans un monde dévasté où rôdent infectés et survivants endurcis, Joel, un protagoniste désabusé, est engagé pour faire sortir Ellie, 14 ans, d'une zone de quarantaine militaire. Mais ce qui devait être une simple mission de routine se transforme vite en un dangereux périple à travers le pays.", "28 Mars 2023", "PS5 PC", "Naughty Dog LLC", "PlayStation PC LLC", 8.5, 487, "Solo Action Aventure", "cover_lastofus1.png"); Jeu TheLastOfUs = new Jeu("The Last Of Us Part I", "Dans un monde dévasté où rôdent infectés et survivants endurcis, Joel, un protagoniste désabusé, est engagé pour faire sortir Ellie, 14 ans, d'une zone de quarantaine militaire. Mais ce qui devait être une simple mission de routine se transforme vite en un dangereux périple à travers le pays.", "28 Mars 2023", "PS5 PC", "Naughty Dog LLC", "PlayStation PC LLC", 8.5, 487, "Solo Action Aventure", "cover_lastofus1.png");
Jeu ForzaHorizon = new Jeu("Forza Horizon 5", "Dans ce jeu, vous pouvez explorer une carte en monde ouvert vraiment massive, cinquante pour cent plus grande que la carte non négligeable de Forza Horizon 4. Faites la course avec divers véhicules à travers la caldeira d'un volcan, explorez les jungles et les forêts tropicales à la recherche de villes en ruines cachées, parcourez les plages de sable blanc, et passez devant des chutes d'eau, des montagnes enneigées et de grandes villes comme Guanajuato, qui possède un réseau de tunnels secrets à explorer !", "9 Novembre 2021", "PC XOne", "Playground Games", "Xbox Game Studios", 6.5, 420, "Course Simulation Sport", "cover_forzahorizon5.png"); Jeu ForzaHorizon = new Jeu("Forza Horizon 5", "Dans ce jeu, vous pouvez explorer une carte en monde ouvert vraiment massive, cinquante pour cent plus grande que la carte non négligeable de Forza Horizon 4. Faites la course avec divers véhicules à travers la caldeira d'un volcan, explorez les jungles et les forêts tropicales à la recherche de villes en ruines cachées, parcourez les plages de sable blanc, et passez devant des chutes d'eau, des montagnes enneigées et de grandes villes comme Guanajuato, qui possède un réseau de tunnels secrets à explorer !", "9 Novembre 2021", "PC XOne", "Playground Games", "Xbox Game Studios", 6.5, 420, "Course Simulation Sport", "cover_forzahorizon5.png");
Jeu TOTK = new Jeu("The Legend of Zelda: Tears of the Kingdom", "Dans ce jeu, vous pouvez explorer une carte en monde ouvert vraiment massive, cinquante pour cent plus grande que la carte non négligeable de Forza Horizon 4. Faites la course avec divers véhicules à travers la caldeira d'un volcan, explorez les jungles et les forêts tropicales à la recherche de villes en ruines cachées, parcourez les plages de sable blanc, et passez devant des chutes d'eau, des montagnes enneigées et de grandes villes comme Guanajuato, qui possède un réseau de tunnels secrets à explorer !", "12 Mai 2023", "Switch", "Nintendo", "Nintendo", 10, 250, "Action Aventure", "cover_zelda.png"); Jeu TOTK = new Jeu("The Legend of Zelda: Tears of the Kingdom", "Dans ce jeu, vous pouvez explorer une carte en monde ouvert vraiment massive, cinquante pour cent plus grande que la carte non négligeable de Forza Horizon 4. Faites la course avec divers véhicules à travers la caldeira d'un volcan, explorez les jungles et les forêts tropicales à la recherche de villes en ruines cachées, parcourez les plages de sable blanc, et passez devant des chutes d'eau, des montagnes enneigées et de grandes villes comme Guanajuato, qui possède un réseau de tunnels secrets à explorer !", "12 Mai 2023", "Switch", "Nintendo", "Nintendo", 10, 250, "Action Aventure", "cover_zelda.png");
Jeu ReadyOrNot = new Jeu("Ready or Not", "Ready or Not est un jeu de tir tactique et intense en vue subjective. Membre d'une unité d'élite de la police, vous relevez les défis du monde moderne, tous plus délicats les uns que les autres.", "18 Décembre 2021", "PC", "VOID Interactive", "VOID Interactive", 7, 100, "Solo Action Aventure", "cover_readyornot.png"); Jeu ReadyOrNot = new Jeu("Ready or Not", "Ready or Not est un jeu de tir tactique et intense en vue subjective. Membre d'une unité d'élite de la police, vous relevez les défis du monde moderne, tous plus délicats les uns que les autres.", "18 Décembre 2021", "PC", "VOID Interactive", "VOID Interactive", 7, 100, "Solo Action Aventure", "cover_readyornot.png");
Jeu Hogwarts = new Jeu("Hogwarts Legacy : L'Héritage de Poudlard", "Hogwarts Legacy est un jeu de rôle d'action et d'aventure solo basé sur l'univers de Harry Potter, dans lequel le joueur incarne un nouveau venu dans le château enchanté tant apprécié des fans des livres et de la franchise cinématographique.", "10 Février 2023", "PC Switch XOne", "Avalanche Software", "Warner Bros. Games", 5, 100, "Solo Action Aventure RPG", "cover_hogwarts.png"); Jeu Hogwarts = new Jeu("Hogwarts Legacy : L'Héritage de Poudlard", "Hogwarts Legacy est un jeu de rôle d'action et d'aventure solo basé sur l'univers de Harry Potter, dans lequel le joueur incarne un nouveau venu dans le château enchanté tant apprécié des fans des livres et de la franchise cinématographique.", "10 Février 2023", "PC Switch XOne", "Avalanche Software", "Warner Bros. Games", 5, 100, "Solo Action Aventure RPG", "cover_hogwarts.png");
Jeu RE4 = new Jeu("Resident Evil 4", "Six ans se sont écoulés depuis la catastrophe biologique de Raccoon City. L'agent Leon S. Kennedy, l'un des survivants du drame, est envoyé secourir la fille du président qui a été kidnappée. Son enquête le mène jusqu'à un village européen isolé, dont les habitants cachent un effroyable secret. Et ainsi se lève le rideau d'une histoire de sauvetage audacieux et d'horreur atroce, où se mêlent vie, mort, terreur et catharsis.", "24 Mars 2023", "PC XSeries", "CAPCOM Co., Ltd.", "CAPCOM Co., Ltd.", 8, 100, "Solo Action Aventure", "cover_residentevil4.png"); Jeu RE4 = new Jeu("Resident Evil 4", "Six ans se sont écoulés depuis la catastrophe biologique de Raccoon City. L'agent Leon S. Kennedy, l'un des survivants du drame, est envoyé secourir la fille du président qui a été kidnappée. Son enquête le mène jusqu'à un village européen isolé, dont les habitants cachent un effroyable secret. Et ainsi se lève le rideau d'une histoire de sauvetage audacieux et d'horreur atroce, où se mêlent vie, mort, terreur et catharsis.", "24 Mars 2023", "PC XSeries", "CAPCOM Co., Ltd.", "CAPCOM Co., Ltd.", 8, 100, "Solo Action Aventure", "cover_residentevil4.png");
Jeu JediSurvivor = new Jeu("Star Wars Jedi: Survivor", "Poussé aux confins de la galaxie par l'Empire, Cal devra faire face à toujours plus de menaces, parmi lesquelles l'attendent des adversaires au visage familier. En tant qu'un des derniers représentants encore en vie des Chevaliers Jedi, Cal devra faire un choix pendant cette période sombre de l'histoire de la galaxie. Mais jusqu'où sera-t-il prêt à aller pour assurer sa survie et celle de son équipage, et défendre l'héritage de l'Ordre Jedi ?", "28 Avril 2023", "PC XSeries", "Respawn", "Electronic Arts", 5.5, 100, "Solo Action Aventure", "cover_starwarsjedisurvivor.png"); Jeu JediSurvivor = new Jeu("Star Wars Jedi: Survivor", "Poussé aux confins de la galaxie par l'Empire, Cal devra faire face à toujours plus de menaces, parmi lesquelles l'attendent des adversaires au visage familier. En tant qu'un des derniers représentants encore en vie des Chevaliers Jedi, Cal devra faire un choix pendant cette période sombre de l'histoire de la galaxie. Mais jusqu'où sera-t-il prêt à aller pour assurer sa survie et celle de son équipage, et défendre l'héritage de l'Ordre Jedi ?", "28 Avril 2023", "PC XSeries", "Respawn", "Electronic Arts", 5.5, 100, "Solo Action Aventure", "cover_starwarsjedisurvivor.png");
ListJeu.Add(TheLastOfUs); ListJeu.Add(TheLastOfUs);
ListJeu.Add(ForzaHorizon); ListJeu.Add(ForzaHorizon);
ListJeu.Add(TOTK); ListJeu.Add(TOTK);
ListJeu.Add(ReadyOrNot); ListJeu.Add(ReadyOrNot);
ListJeu.Add(Hogwarts); ListJeu.Add(Hogwarts);
ListJeu.Add(RE4); ListJeu.Add(RE4);
ListJeu.Add(JediSurvivor); ListJeu.Add(JediSurvivor);
return (ListJeu,ListAdmins,ListUsers); return (ListJeu,ListAdmins,ListUsers);
} }
public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> utilisateurs) public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> utilisateurs)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
} }
} }

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui" <ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="GameAtlas.Views.Composants.BoutonVoir"> x:Class="GameAtlas.Views.Composants.BoutonVoir">
<Button Text="Voir" FontFamily="PTSansNarrow-Bold" FontSize="16" BackgroundColor="#FF4D00" HeightRequest="45" WidthRequest="93" Scale="0.85" CornerRadius="25" Clicked="OnVoirClicked" AnchorX="-1"/> <Button Text="Voir" FontFamily="PTSansNarrow-Bold" FontSize="16" BackgroundColor="#FF4D00" HeightRequest="45" WidthRequest="93" Scale="0.85" CornerRadius="25" Clicked="OnVoirClicked" AnchorX="-1"/>
</ContentView> </ContentView>

@ -1,21 +1,21 @@
namespace GameAtlas.Views.Composants; namespace GameAtlas.Views.Composants;
using GameAtlas.Models; using GameAtlas.Models;
public partial class BoutonVoir : ContentView public partial class BoutonVoir : ContentView
{ {
public BoutonVoir() public BoutonVoir()
{ {
InitializeComponent(); InitializeComponent();
} }
private async void OnVoirClicked(object sender, EventArgs e) private async void OnVoirClicked(object sender, EventArgs e)
{ {
var selectedjeu = (sender as Button)?.BindingContext as Jeu; var selectedjeu = (sender as Button)?.BindingContext as Jeu;
if (selectedjeu != null) if (selectedjeu != null)
{ {
//await Shell.Current.GoToAsync(nameof(PageJeu(selectedjeu)); ---- Ne marche pas ---- //await Shell.Current.GoToAsync(nameof(PageJeu(selectedjeu)); ---- Ne marche pas ----
await Navigation.PushAsync(new PageJeu(selectedjeu)); await Navigation.PushAsync(new PageJeu(selectedjeu));
} }
} }
} }

@ -1,155 +1,155 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit" xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
xmlns:views="clr-namespace:GameAtlas.Views.Composants" xmlns:views="clr-namespace:GameAtlas.Views.Composants"
x:Class="GameAtlas.Views.PageAcceuil" x:Class="GameAtlas.Views.PageAcceuil"
Title="ACCUEIL"> Title="ACCUEIL">
<!-- WidthRequest="390" HeightRequest="844"> --> <!-- WidthRequest="390" HeightRequest="844"> -->
<Grid> <Grid>
<Grid.Background> <Grid.Background>
<LinearGradientBrush EndPoint="1,0"> <LinearGradientBrush EndPoint="1,0">
<GradientStop Color="#DFE4FF" <GradientStop Color="#DFE4FF"
Offset="0.1" /> Offset="0.1" />
<GradientStop Color="#FDF7E6" <GradientStop Color="#FDF7E6"
Offset="1.0" /> Offset="1.0" />
</LinearGradientBrush> </LinearGradientBrush>
</Grid.Background> </Grid.Background>
<ScrollView VerticalScrollBarVisibility="Never"> <ScrollView VerticalScrollBarVisibility="Never">
<Grid <Grid
RowDefinitions="auto, auto, auto, auto, auto, auto, *"> RowDefinitions="auto, auto, auto, auto, auto, auto, *">
<Grid HorizontalOptions="Start" Padding="25,20,0,20"> <Grid HorizontalOptions="Start" Padding="25,20,0,20">
<HorizontalStackLayout Spacing="10"> <HorizontalStackLayout Spacing="10">
<Frame Grid.Row="0" WidthRequest="50" HeightRequest="50" CornerRadius="25" VerticalOptions="Start" > <Frame Grid.Row="0" WidthRequest="50" HeightRequest="50" CornerRadius="25" VerticalOptions="Start" >
<Frame.Background> <Frame.Background>
<LinearGradientBrush EndPoint="1,0"> <LinearGradientBrush EndPoint="1,0">
<GradientStop Color="#C57CFF" <GradientStop Color="#C57CFF"
Offset="0.1" /> Offset="0.1" />
<GradientStop Color="#8F00FF" <GradientStop Color="#8F00FF"
Offset="1.0" /> Offset="1.0" />
</LinearGradientBrush> </LinearGradientBrush>
</Frame.Background> </Frame.Background>
<Frame HeightRequest="48" WidthRequest="48" CornerRadius="24" VerticalOptions="Center" HorizontalOptions="Center" IsClippedToBounds="True"> <Frame HeightRequest="48" WidthRequest="48" CornerRadius="24" VerticalOptions="Center" HorizontalOptions="Center" IsClippedToBounds="True">
<Image Source="default_user.png" Aspect="AspectFill"/> <Image Source="default_user.png" Aspect="AspectFill"/>
</Frame> </Frame>
</Frame> </Frame>
<Label Text="{Binding AccueilManager.ConnectedUser.Pseudo}" FontSize="18" FontFamily="AladinRegular" TextColor="{StaticResource Black}" VerticalTextAlignment="Center"/> <Label Text="{Binding AccueilManager.ConnectedUser.Pseudo}" FontSize="18" FontFamily="AladinRegular" TextColor="{StaticResource Black}" VerticalTextAlignment="Center"/>
</HorizontalStackLayout> </HorizontalStackLayout>
</Grid> </Grid>
<Label <Label
Text="Parcourir les jeux" Text="Parcourir les jeux"
FontFamily="PTSansCaption-Bold" FontFamily="PTSansCaption-Bold"
FontSize="24" FontSize="24"
Grid.Row="3" Grid.Row="3"
Padding="25,25,0,25" Padding="25,25,0,25"
/> />
<ScrollView Orientation="Horizontal" Grid.Row="4" Padding="20,0,20,0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalScrollBarVisibility="Never"> <ScrollView Orientation="Horizontal" Grid.Row="4" Padding="20,0,20,0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" HorizontalScrollBarVisibility="Never">
<HorizontalStackLayout BindableLayout.ItemsSource="{Binding AccueilManager.ListJeuxAffiches}" Spacing="15"> <HorizontalStackLayout BindableLayout.ItemsSource="{Binding AccueilManager.ListJeuxAffiches}" Spacing="15">
<BindableLayout.ItemTemplate> <BindableLayout.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid> <Grid>
<Frame CornerRadius="10" HeightRequest="160" WidthRequest="290"> <Frame CornerRadius="10" HeightRequest="160" WidthRequest="290">
<ImageButton Source="{Binding Image}" HeightRequest="160" WidthRequest="290" Aspect="AspectFill" Clicked="OnButtonClicked"/> <ImageButton Source="{Binding Image}" HeightRequest="160" WidthRequest="290" Aspect="AspectFill" Clicked="OnButtonClicked"/>
</Frame> </Frame>
<BoxView <BoxView
Color="Black" Color="Black"
Opacity="0.3" Opacity="0.3"
CornerRadius="10" CornerRadius="10"
HeightRequest="65" HeightRequest="65"
VerticalOptions="End"/> VerticalOptions="End"/>
<HorizontalStackLayout Margin="25,100,0,0" Spacing="5"> <HorizontalStackLayout Margin="25,100,0,0" Spacing="5">
<Image Style="{StaticResource BigStar}"/> <Image Style="{StaticResource BigStar}"/>
<Image Style="{StaticResource BigStar}"/> <Image Style="{StaticResource BigStar}"/>
<Image Style="{StaticResource BigStar}"/> <Image Style="{StaticResource BigStar}"/>
<Image Style="{StaticResource BigStar}"/> <Image Style="{StaticResource BigStar}"/>
<Image Style="{StaticResource BigStar}"/> <Image Style="{StaticResource BigStar}"/>
</HorizontalStackLayout> </HorizontalStackLayout>
<Label Text="{Binding Nom}" <Label Text="{Binding Nom}"
TextColor="White" TextColor="White"
FontFamily="PTSansCaption-Bold" FontFamily="PTSansCaption-Bold"
FontSize="12" FontSize="12"
Padding="25,115,0,0"/> Padding="25,115,0,0"/>
<Image Source="download.png" <Image Source="download.png"
HorizontalOptions="Start" HorizontalOptions="Start"
HeightRequest="20" HeightRequest="20"
WidthRequest="20" WidthRequest="20"
Margin="23,125,0,0"/> Margin="23,125,0,0"/>
<Label FontSize="8" FontFamily="PTSansCaption-Bold" TextColor="{StaticResource White}" Padding="46,138,0,0"> <Label FontSize="8" FontFamily="PTSansCaption-Bold" TextColor="{StaticResource White}" Padding="46,138,0,0">
<Label.FormattedText> <Label.FormattedText>
<FormattedString> <FormattedString>
<Span Text="{Binding NbTelechargement}"/> <Span Text="{Binding NbTelechargement}"/>
<Span Text="k de téléchargements"/> <Span Text="k de téléchargements"/>
</FormattedString> </FormattedString>
</Label.FormattedText> </Label.FormattedText>
</Label> </Label>
</Grid> </Grid>
</DataTemplate> </DataTemplate>
</BindableLayout.ItemTemplate> </BindableLayout.ItemTemplate>
</HorizontalStackLayout> </HorizontalStackLayout>
</ScrollView> </ScrollView>
<Label <Label
Text="Jeux les mieux notés" Text="Jeux les mieux notés"
FontFamily="PTSansCaption-Bold" FontFamily="PTSansCaption-Bold"
FontSize="24" FontSize="24"
Grid.Row="5" Grid.Row="5"
Padding="25,25,0,25" Padding="25,25,0,25"
/> />
<Grid Grid.Row="6"> <Grid Grid.Row="6">
<VerticalStackLayout Spacing="30" BindableLayout.ItemsSource="{Binding AccueilManager.TopRatedGames}"> <VerticalStackLayout Spacing="30" BindableLayout.ItemsSource="{Binding AccueilManager.TopRatedGames}">
<BindableLayout.ItemTemplate> <BindableLayout.ItemTemplate>
<DataTemplate> <DataTemplate>
<Grid ColumnDefinitions="auto,*,auto"> <Grid ColumnDefinitions="auto,*,auto">
<Frame Grid.Column="0" CornerRadius="5" HeightRequest="60" WidthRequest="100" Margin="25,0,0,0"> <Frame Grid.Column="0" CornerRadius="5" HeightRequest="60" WidthRequest="100" Margin="25,0,0,0">
<Image Source="{Binding Image}" Aspect="AspectFill" /> <Image Source="{Binding Image}" Aspect="AspectFill" />
</Frame> </Frame>
<StackLayout Grid.Column="1" Spacing="25" Padding="20,0"> <StackLayout Grid.Column="1" Spacing="25" Padding="20,0">
<Label Text="{Binding Nom}" FontFamily="PTSansNarrow-Bold" FontSize="13" LineBreakMode="TailTruncation" MaxLines="2"/> <Label Text="{Binding Nom}" FontFamily="PTSansNarrow-Bold" FontSize="13" LineBreakMode="TailTruncation" MaxLines="2"/>
<HorizontalStackLayout> <HorizontalStackLayout>
<Image Style="{StaticResource Star}"/> <Image Style="{StaticResource Star}"/>
<Label TextColor="#7C7C7C" FontFamily="PTSansNarrow-Bold" FontSize="12" Margin="6,0,15,0"> <Label TextColor="#7C7C7C" FontFamily="PTSansNarrow-Bold" FontSize="12" Margin="6,0,15,0">
<Label.FormattedText> <Label.FormattedText>
<FormattedString> <FormattedString>
<Span Text="{Binding Note}"/> <Span Text="{Binding Note}"/>
<Span Text="/10" FontSize="8"/> <Span Text="/10" FontSize="8"/>
</FormattedString> </FormattedString>
</Label.FormattedText> </Label.FormattedText>
</Label> </Label>
<Image Style="{StaticResource DownloadBlue}"/> <Image Style="{StaticResource DownloadBlue}"/>
<Label FontSize="12" FontFamily="PTSansNarrow-Bold" TextColor="#7C7C7C" Margin="6,0,0,0"> <Label FontSize="12" FontFamily="PTSansNarrow-Bold" TextColor="#7C7C7C" Margin="6,0,0,0">
<Label.FormattedText> <Label.FormattedText>
<FormattedString> <FormattedString>
<Span Text="{Binding NbTelechargement}"/> <Span Text="{Binding NbTelechargement}"/>
<Span Text="k"/> <Span Text="k"/>
</FormattedString> </FormattedString>
</Label.FormattedText> </Label.FormattedText>
</Label> </Label>
</HorizontalStackLayout> </HorizontalStackLayout>
</StackLayout> </StackLayout>
<views:BoutonVoir Grid.Column="2"/> <views:BoutonVoir Grid.Column="2"/>
</Grid> </Grid>
</DataTemplate> </DataTemplate>
</BindableLayout.ItemTemplate> </BindableLayout.ItemTemplate>
</VerticalStackLayout> </VerticalStackLayout>
</Grid> </Grid>
</Grid> </Grid>
</ScrollView> </ScrollView>
</Grid> </Grid>
</ContentPage> </ContentPage>

@ -1,67 +1,67 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit" xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="GameAtlas.Views.PageConnexion" x:Class="GameAtlas.Views.PageConnexion"
Title="ECRAN DE CONNEXION" Title="ECRAN DE CONNEXION"
BackgroundColor="Beige"> BackgroundColor="Beige">
<!-- WidthRequest="390" HeightRequest="844" --> <!-- WidthRequest="390" HeightRequest="844" -->
<VerticalStackLayout> <VerticalStackLayout>
<Image Source="logo.png" WidthRequest="130" HeightRequest="130" Margin="0,60,0,0"/> <Image Source="logo.png" WidthRequest="130" HeightRequest="130" Margin="0,60,0,0"/>
<Label <Label
Text="Se Connecter" Text="Se Connecter"
Margin="0,0,0,60" Margin="0,0,0,60"
HorizontalTextAlignment="Center" HorizontalTextAlignment="Center"
FontFamily="Roboto-Black" FontFamily="Roboto-Black"
FontSize="24" FontSize="24"
/> />
<Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30" > <Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30" >
<Entry x:Name="pseudo" Placeholder="Nom d'utilisateur" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E"/> <Entry x:Name="pseudo" Placeholder="Nom d'utilisateur" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E"/>
</Border> </Border>
<Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30" > <Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30" >
<Entry x:Name="mdp" Placeholder="Mot de passe" IsPassword="True" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E" /> <Entry x:Name="mdp" Placeholder="Mot de passe" IsPassword="True" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E" />
</Border> </Border>
<Button Text="Connexion" <Button Text="Connexion"
VerticalOptions="Center" VerticalOptions="Center"
HorizontalOptions="Center" HorizontalOptions="Center"
BackgroundColor="#FAD05D" BackgroundColor="#FAD05D"
TextColor="Black" TextColor="Black"
FontFamily="Roboto-Bold" FontFamily="Roboto-Bold"
Margin="0,50,0,10" Margin="0,50,0,10"
Padding="60,0,60,0" Padding="60,0,60,0"
CornerRadius="15" CornerRadius="15"
Clicked="OnSignInClicked" Clicked="OnSignInClicked"
/> />
<HorizontalStackLayout Spacing="40" HorizontalOptions="Center"> <HorizontalStackLayout Spacing="40" HorizontalOptions="Center">
<Label <Label
Text="Mot de Passe oublié" Text="Mot de Passe oublié"
TextColor="#7392FF" TextColor="#7392FF"
FontSize="13" FontSize="13"
FontFamily="PTSansNRegular"> FontFamily="PTSansNRegular">
<Label.GestureRecognizers> <Label.GestureRecognizers>
<TapGestureRecognizer Tapped="OnMotDePasseOublie_Tapped" /> <TapGestureRecognizer Tapped="OnMotDePasseOublie_Tapped" />
</Label.GestureRecognizers> </Label.GestureRecognizers>
</Label> </Label>
<Label <Label
Text="S'inscrire >" Text="S'inscrire >"
TextColor="#7392FF" TextColor="#7392FF"
FontSize="13" FontSize="13"
FontFamily="PTSansNBold"> FontFamily="PTSansNBold">
<Label.GestureRecognizers> <Label.GestureRecognizers>
<TapGestureRecognizer Tapped="OnInscrire_Tapped" /> <TapGestureRecognizer Tapped="OnInscrire_Tapped" />
</Label.GestureRecognizers> </Label.GestureRecognizers>
</Label> </Label>
</HorizontalStackLayout> </HorizontalStackLayout>
</VerticalStackLayout> </VerticalStackLayout>
</ContentPage> </ContentPage>

@ -1,110 +1,110 @@
/** /**
* \file PageConnexion.xaml.cs * \file PageConnexion.xaml.cs
* \brief Système de connexion * \brief Système de connexion
* Système de connexion avec vérification et chargement de l'utilisateur connecté * Système de connexion avec vérification et chargement de l'utilisateur connecté
*/ */
namespace GameAtlas.Views; namespace GameAtlas.Views;
using GameAtlas.Models; using GameAtlas.Models;
using System.Diagnostics; using System.Diagnostics;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
public partial class PageConnexion : ContentPage public partial class PageConnexion : ContentPage
{ {
private bool connexionWorked; private bool connexionWorked;
public Manager ConnexionManager => (App.Current as App).MyManager; public Manager ConnexionManager => (App.Current as App).MyManager;
public PageConnexion() public PageConnexion()
{ {
InitializeComponent(); InitializeComponent();
} }
/** /**
* \brief Bouton "Connexion" * \brief Bouton "Connexion"
* Réaction au clic sur le bouton, vérification des champs non vide. * Réaction au clic sur le bouton, vérification des champs non vide.
* \return void * \return void
*/ */
private async void OnSignInClicked(object sender, EventArgs e) private async void OnSignInClicked(object sender, EventArgs e)
{ {
string username = pseudo.Text; string username = pseudo.Text;
string password = mdp.Text; string password = mdp.Text;
if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password)) if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
{ {
await DisplayAlert("Erreur", "Entrez tous les champs", "Ok"); await DisplayAlert("Erreur", "Entrez tous les champs", "Ok");
return; return;
} }
connexionWorked = Verification(username, password); connexionWorked = Verification(username, password);
if (connexionWorked) if (connexionWorked)
{ {
//await Navigation.PushAsync(new PageAcceuil()); //await Navigation.PushAsync(new PageAcceuil());
await Navigation.PopAsync(); await Navigation.PopAsync();
//await Shell.Current.GoToAsync("//page/PageAccueil"); //await Shell.Current.GoToAsync("//page/PageAccueil");
} }
} }
/** /**
* \brief Texte "S'inscrire" * \brief Texte "S'inscrire"
* Réaction au clic sur le texte, envoie sur le page d'Inscription. * Réaction au clic sur le texte, envoie sur le page d'Inscription.
* \return void * \return void
*/ */
private async void OnInscrire_Tapped(object sender, EventArgs e) private async void OnInscrire_Tapped(object sender, EventArgs e)
{ {
await Navigation.PushAsync(new PageInscription()); await Navigation.PushAsync(new PageInscription());
} }
/** /**
* \brief Texte "Mot de Passe oublié" * \brief Texte "Mot de Passe oublié"
* Réaction au clic sur le texte, affichage de pop-ups. * Réaction au clic sur le texte, affichage de pop-ups.
* \return void * \return void
*/ */
private async void OnMotDePasseOublie_Tapped(object sender, EventArgs e) private async void OnMotDePasseOublie_Tapped(object sender, EventArgs e)
{ {
await DisplayAlert("Oh non !", "Le mot de passe va te revenir à force", "Concentration"); await DisplayAlert("Oh non !", "Le mot de passe va te revenir à force", "Concentration");
await DisplayAlert("Oh non !", "Encore un petit effort !", "Concentration"); await DisplayAlert("Oh non !", "Encore un petit effort !", "Concentration");
bool reponse = await DisplayAlert("Alors ?", "Tu l'as retrouvé ce mot de passe ?", "Oui", "Non"); bool reponse = await DisplayAlert("Alors ?", "Tu l'as retrouvé ce mot de passe ?", "Oui", "Non");
if (!reponse) if (!reponse)
{ {
await DisplayAlert("...", "Désolé on peut rien pour toi. La prochaine fois utilise un papier comme tout le monde.", "RIP"); await DisplayAlert("...", "Désolé on peut rien pour toi. La prochaine fois utilise un papier comme tout le monde.", "RIP");
} }
else else
{ {
await DisplayAlert("...", "C'est bien, la prochaine fois tu le notera.", "Ok"); await DisplayAlert("...", "C'est bien, la prochaine fois tu le notera.", "Ok");
} }
} }
/** /**
* \brief Vérification et Chargement * \brief Vérification et Chargement
* Vérification de la présence de l'utilisateur dans la Liste d'Utilisateurs. * Vérification de la présence de l'utilisateur dans la Liste d'Utilisateurs.
* Si c'est le cas, comparaison du mot de passe fournis par celui de l'utilisateur. * Si c'est le cas, comparaison du mot de passe fournis par celui de l'utilisateur.
* Si tout est bon, chargement de l'utilisateur dans ConnectedUser. * Si tout est bon, chargement de l'utilisateur dans ConnectedUser.
* Dans le cas contraire, on renvoie un message d'erreur et termine la vérification. * Dans le cas contraire, on renvoie un message d'erreur et termine la vérification.
* \return bool true si la connexion a fonctionnée, false sinon. * \return bool true si la connexion a fonctionnée, false sinon.
*/ */
public bool Verification(string username, string password) public bool Verification(string username, string password)
{ {
foreach (Utilisateur user in ConnexionManager.Utilisateurs.Concat(ConnexionManager.Admins)) foreach (Utilisateur user in ConnexionManager.Utilisateurs.Concat(ConnexionManager.Admins))
{ {
if (user.Pseudo == username) if (user.Pseudo == username)
{ {
Debug.WriteLine($"Pseudo \"{user.Pseudo}\" vérifié et valide"); Debug.WriteLine($"Pseudo \"{user.Pseudo}\" vérifié et valide");
if (user.Mdp == password) if (user.Mdp == password)
{ {
Debug.WriteLine("Mot de Passe verifié et valide"); Debug.WriteLine("Mot de Passe verifié et valide");
ConnexionManager.ConnectedUser = user; ConnexionManager.ConnectedUser = user;
return true; return true;
} }
} }
} }
Debug.WriteLine("La connexion a échoué (pseudo ou mot de passe invalide)"); Debug.WriteLine("La connexion a échoué (pseudo ou mot de passe invalide)");
DisplayAlert("Erreur", "Utilisateur ou Mot de Passe invalide.", "Ok"); DisplayAlert("Erreur", "Utilisateur ou Mot de Passe invalide.", "Ok");
ConnexionManager.ConnectedUser = null; ConnexionManager.ConnectedUser = null;
return false; return false;
} }
} }

@ -1,49 +1,49 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit" xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="GameAtlas.Views.PageInscription" x:Class="GameAtlas.Views.PageInscription"
Title="ECRAN D'INSCRIPTION" Title="ECRAN D'INSCRIPTION"
BackgroundColor="Beige"> BackgroundColor="Beige">
<!-- WidthRequest="390" HeightRequest="844" --> <!-- WidthRequest="390" HeightRequest="844" -->
<VerticalStackLayout> <VerticalStackLayout>
<Image Source="logo.png" WidthRequest="130" HeightRequest="130" Margin="0,60,0,0"/> <Image Source="logo.png" WidthRequest="130" HeightRequest="130" Margin="0,60,0,0"/>
<Label <Label
Text="Créer un Compte" Text="Créer un Compte"
Margin="0,0,0,60" Margin="0,0,0,60"
HorizontalTextAlignment="Center" HorizontalTextAlignment="Center"
FontFamily="RobotoBlack" FontFamily="RobotoBlack"
FontSize="24" FontSize="24"
/> />
<Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30"> <Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30">
<Entry x:Name="email" Placeholder="Adresse email" Keyboard="Email" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E" /> <Entry x:Name="email" Placeholder="Adresse email" Keyboard="Email" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E" />
</Border> </Border>
<Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30"> <Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30">
<Entry x:Name="pseudo" Placeholder="Nom d'utilisateur" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E" /> <Entry x:Name="pseudo" Placeholder="Nom d'utilisateur" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E" />
</Border> </Border>
<Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30"> <Border StrokeShape="RoundRectangle 8" Margin="40,0,40,30">
<Entry x:Name="mdp" Placeholder="Mot de passe" IsPassword="True" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E" /> <Entry x:Name="mdp" Placeholder="Mot de passe" IsPassword="True" ClearButtonVisibility="WhileEditing" BackgroundColor="White" PlaceholderColor="#5E5E5E" />
</Border> </Border>
<Button Text="S'inscrire" <Button Text="S'inscrire"
VerticalOptions="Center" VerticalOptions="Center"
HorizontalOptions="Center" HorizontalOptions="Center"
BackgroundColor="#FAD05D" BackgroundColor="#FAD05D"
TextColor="Black" TextColor="Black"
FontFamily="RobotoBold" FontFamily="RobotoBold"
Margin="0,50,0,10" Margin="0,50,0,10"
Padding="60,0,60,0" Padding="60,0,60,0"
CornerRadius="15" CornerRadius="15"
Clicked="OnSignUpClicked" Clicked="OnSignUpClicked"
/> />
</VerticalStackLayout> </VerticalStackLayout>
</ContentPage> </ContentPage>

@ -1,89 +1,89 @@
namespace GameAtlas.Views; namespace GameAtlas.Views;
using GameAtlas.Models; using GameAtlas.Models;
using GameAtlas.DataContractPersistance; using GameAtlas.DataContractPersistance;
using System.Diagnostics; using System.Diagnostics;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
public partial class PageInscription : ContentPage public partial class PageInscription : ContentPage
{ {
DataContractPers PersistanceManager = new DataContractPers(); DataContractPers PersistanceManager = new DataContractPers();
public Manager InscriptionManager => (App.Current as App).MyManager; public Manager InscriptionManager => (App.Current as App).MyManager;
public PageInscription() public PageInscription()
{ {
InitializeComponent(); InitializeComponent();
} }
private async void OnSignUpClicked(object sender, EventArgs e) private async void OnSignUpClicked(object sender, EventArgs e)
{ {
string mail = email.Text; string mail = email.Text;
string username = pseudo.Text; string username = pseudo.Text;
string password = mdp.Text; string password = mdp.Text;
if(string.IsNullOrWhiteSpace(mail) || string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password)) if(string.IsNullOrWhiteSpace(mail) || string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
{ {
await DisplayAlert("Erreur", "Entrez tous les champs", "Ok"); await DisplayAlert("Erreur", "Entrez tous les champs", "Ok");
return; return;
} }
else if (!Regex.IsMatch(mail, @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$")) else if (!Regex.IsMatch(mail, @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"))
{ {
await DisplayAlert("Erreur","Email non valide","Ok"); await DisplayAlert("Erreur","Email non valide","Ok");
return; return;
} }
if (IsPasswordStrong(password) == false) if (IsPasswordStrong(password) == false)
{ {
await DisplayAlert("Erreur", "Le mot de passe n'est pas assez fort", "OK"); await DisplayAlert("Erreur", "Le mot de passe n'est pas assez fort", "OK");
return; return;
} }
Utilisateur utilisateur = new Utilisateur(mail, username, password); Utilisateur utilisateur = new Utilisateur(mail, username, password);
InscriptionManager.AddUtilisateur(utilisateur); InscriptionManager.AddUtilisateur(utilisateur);
InscriptionManager.SauvegardeDonnees(); InscriptionManager.SauvegardeDonnees();
//PersistanceManager.SauvegardeUser(utilisateur); //PersistanceManager.SauvegardeUser(utilisateur);
Debug.WriteLine(InscriptionManager.Utilisateurs.Count); Debug.WriteLine(InscriptionManager.Utilisateurs.Count);
//await Navigation.PushAsync(new PageAcceuil()); //await Navigation.PushAsync(new PageAcceuil());
await Shell.Current.GoToAsync("//page/PageAccueil"); await Shell.Current.GoToAsync("//page/PageAccueil");
bool IsPasswordStrong(string password) bool IsPasswordStrong(string password)
{ {
// Vérifier si le mot de passe est assez long // Vérifier si le mot de passe est assez long
if (password.Length < 8) if (password.Length < 8)
{ {
return false; return false;
} }
// Vérifier si le mot de passe contient au moins une majuscule, une minuscule et un chiffre // Vérifier si le mot de passe contient au moins une majuscule, une minuscule et un chiffre
bool hasUppercase = false; bool hasUppercase = false;
bool hasLowercase = false; bool hasLowercase = false;
bool hasDigit = false; bool hasDigit = false;
foreach (char c in password) foreach (char c in password)
{ {
if (char.IsUpper(c)) if (char.IsUpper(c))
{ {
hasUppercase = true; hasUppercase = true;
} }
else if (char.IsLower(c)) else if (char.IsLower(c))
{ {
hasLowercase = true; hasLowercase = true;
} }
else if (char.IsDigit(c)) else if (char.IsDigit(c))
{ {
hasDigit = true; hasDigit = true;
} }
} }
return hasUppercase && hasLowercase && hasDigit; return hasUppercase && hasLowercase && hasDigit;
} }
} }
} }

@ -1,141 +1,141 @@
using GameAtlas.Models; using GameAtlas.Models;
using System.Diagnostics; using System.Diagnostics;
using CommunityToolkit.Maui.Alerts; using CommunityToolkit.Maui.Alerts;
using CommunityToolkit.Maui.Core; using CommunityToolkit.Maui.Core;
using Font = Microsoft.Maui.Font; using Font = Microsoft.Maui.Font;
namespace GameAtlas.Views; namespace GameAtlas.Views;
public partial class PageJeu : ContentPage public partial class PageJeu : ContentPage
{ {
public Jeu JeuModel { get; set; } public Jeu JeuModel { get; set; }
//public Manager JeuManager { get; set; } = new Manager(); //public Manager JeuManager { get; set; } = new Manager();
public Manager JeuManager => (App.Current as App).MyManager; public Manager JeuManager => (App.Current as App).MyManager;
public PageJeu() public PageJeu()
{ {
InitializeComponent(); InitializeComponent();
BindingContext = JeuManager; BindingContext = JeuManager;
} }
public PageJeu(Jeu jeu) public PageJeu(Jeu jeu)
{ {
JeuModel = jeu; JeuModel = jeu;
InitializeComponent(); InitializeComponent();
BindingContext = this; BindingContext = this;
} }
async void OnAddTapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) async void OnAddTapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e)
{ {
if (JeuManager.ConnectedUser != null) if (JeuManager.ConnectedUser != null)
{ {
bool isFavorite = JeuManager.ConnectedUser.ListeFavoris.Contains(JeuModel); bool isFavorite = JeuManager.ConnectedUser.ListeFavoris.Contains(JeuModel);
bool isOwned = JeuManager.ConnectedUser.ListePossedes.Contains(JeuModel); bool isOwned = JeuManager.ConnectedUser.ListePossedes.Contains(JeuModel);
string favoritePresence = ""; string favoritePresence = "";
string ownedPresence = ""; string ownedPresence = "";
if (isFavorite) if (isFavorite)
{ {
favoritePresence = " ✔️"; favoritePresence = " ✔️";
} }
if (isOwned) if (isOwned)
{ {
ownedPresence = " ✔️"; ownedPresence = " ✔️";
} }
string action = await DisplayActionSheet("Choix de la liste:", "Annuler", null, "Mes Favoris"+favoritePresence, "Jeux Possédés"+ownedPresence); string action = await DisplayActionSheet("Choix de la liste:", "Annuler", null, "Mes Favoris"+favoritePresence, "Jeux Possédés"+ownedPresence);
Debug.WriteLine("Popup Action: " + action); Debug.WriteLine("Popup Action: " + action);
if (action == "Mes Favoris" + favoritePresence) if (action == "Mes Favoris" + favoritePresence)
{ {
if (isFavorite) if (isFavorite)
{ {
await DisplayAlert("Jeu Retiré", $"Vous avez retiré {JeuModel.Nom} de votre liste de jeux favoris.", "Ok"); await DisplayAlert("Jeu Retiré", $"Vous avez retiré {JeuModel.Nom} de votre liste de jeux favoris.", "Ok");
JeuManager.ConnectedUser.ListeFavoris.Remove(JeuModel); JeuManager.ConnectedUser.ListeFavoris.Remove(JeuModel);
favoritePresence = ""; favoritePresence = "";
} }
else else
{ {
JeuManager.ConnectedUser.ListeFavoris.Add(JeuModel); JeuManager.ConnectedUser.ListeFavoris.Add(JeuModel);
Debug.WriteLine($"Ajout du jeu {JeuModel.Nom} à la Liste Favoris de {JeuManager.ConnectedUser.Pseudo}."); Debug.WriteLine($"Ajout du jeu {JeuModel.Nom} à la Liste Favoris de {JeuManager.ConnectedUser.Pseudo}.");
await DisplayAlert("Jeu Ajouté", $"{JeuModel.Nom} a été ajoutée dans votre liste de jeux favoris.", "Ok"); await DisplayAlert("Jeu Ajouté", $"{JeuModel.Nom} a été ajoutée dans votre liste de jeux favoris.", "Ok");
} }
JeuManager.OnPropertyChanged(nameof(JeuManager.ConnectedUser)); JeuManager.OnPropertyChanged(nameof(JeuManager.ConnectedUser));
JeuManager.SauvegardeDonnees(); JeuManager.SauvegardeDonnees();
} }
else if (action == "Jeux Possédés" + ownedPresence) else if (action == "Jeux Possédés" + ownedPresence)
{ {
if (isOwned) if (isOwned)
{ {
await DisplayAlert("Jeu Retiré", $"Vous avez retiré {JeuModel.Nom} de votre liste de jeux possédés.", "Ok"); await DisplayAlert("Jeu Retiré", $"Vous avez retiré {JeuModel.Nom} de votre liste de jeux possédés.", "Ok");
JeuManager.ConnectedUser.ListePossedes.Remove(JeuModel); JeuManager.ConnectedUser.ListePossedes.Remove(JeuModel);
ownedPresence = ""; ownedPresence = "";
} }
else else
{ {
JeuManager.ConnectedUser.ListePossedes.Add(JeuModel); JeuManager.ConnectedUser.ListePossedes.Add(JeuModel);
Debug.WriteLine($"Ajout du jeu {JeuModel.Nom} à la Liste Possédés de {JeuManager.ConnectedUser.Pseudo}."); Debug.WriteLine($"Ajout du jeu {JeuModel.Nom} à la Liste Possédés de {JeuManager.ConnectedUser.Pseudo}.");
await DisplayAlert("Jeu Ajouté", $"{JeuModel.Nom} a été ajoutée dans votre liste de jeux possédés.", "Ok"); await DisplayAlert("Jeu Ajouté", $"{JeuModel.Nom} a été ajoutée dans votre liste de jeux possédés.", "Ok");
} }
JeuManager.OnPropertyChanged(nameof(JeuManager.ConnectedUser)); JeuManager.OnPropertyChanged(nameof(JeuManager.ConnectedUser));
JeuManager.SauvegardeDonnees(); JeuManager.SauvegardeDonnees();
} }
} }
else else
{ {
//await DisplayAlert("Erreur", "Vous devez vous connecter pour faire cela !", "Ok"); //await DisplayAlert("Erreur", "Vous devez vous connecter pour faire cela !", "Ok");
Alert(); Alert();
} }
} }
async void OnAddCommentClicked(object sender, EventArgs args) async void OnAddCommentClicked(object sender, EventArgs args)
{ {
if (JeuManager.ConnectedUser != null) if (JeuManager.ConnectedUser != null)
{ {
string commentaire = await DisplayPromptAsync("⭐ Votre Avis", "Ecrivez votre commentaire:\n(250 caractères maximum)", maxLength: 250, accept: "Suivant", cancel: "Annuler"); string commentaire = await DisplayPromptAsync("⭐ Votre Avis", "Ecrivez votre commentaire:\n(250 caractères maximum)", maxLength: 250, accept: "Suivant", cancel: "Annuler");
string note = await DisplayPromptAsync("✒️ La Note", "De 0 à 10", maxLength: 3, accept: "Envoyer", cancel: "Annuler"); string note = await DisplayPromptAsync("✒️ La Note", "De 0 à 10", maxLength: 3, accept: "Envoyer", cancel: "Annuler");
JeuModel.AjouterAvis(JeuManager.ConnectedUser.Pseudo, Convert.ToDouble(note), commentaire); JeuModel.AjouterAvis(JeuManager.ConnectedUser.Pseudo, Convert.ToDouble(note), commentaire);
} }
else else
{ {
Alert(); Alert();
} }
} }
async void Back_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) async void Back_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e)
{ {
await Navigation.PopAsync(); await Navigation.PopAsync();
} }
async void Alert() async void Alert()
{ {
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
var snackbarOptions = new SnackbarOptions var snackbarOptions = new SnackbarOptions
{ {
BackgroundColor = Colors.Red, BackgroundColor = Colors.Red,
TextColor = Colors.White, TextColor = Colors.White,
ActionButtonTextColor = Colors.White, ActionButtonTextColor = Colors.White,
Font = Font.SystemFontOfSize(14), Font = Font.SystemFontOfSize(14),
ActionButtonFont = Font.SystemFontOfSize(16), ActionButtonFont = Font.SystemFontOfSize(16),
CharacterSpacing = 0 CharacterSpacing = 0
}; };
string text = "Vous devez être connecté pour effectuer cette action."; string text = "Vous devez être connecté pour effectuer cette action.";
string actionButtonText = "OK"; string actionButtonText = "OK";
TimeSpan duration = TimeSpan.FromSeconds(3); TimeSpan duration = TimeSpan.FromSeconds(3);
var snackbar = Snackbar.Make(text, null, actionButtonText, duration, snackbarOptions); var snackbar = Snackbar.Make(text, null, actionButtonText, duration, snackbarOptions);
await snackbar.Show(cancellationTokenSource.Token); await snackbar.Show(cancellationTokenSource.Token);
} }
} }

@ -1,62 +1,62 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit" xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="GameAtlas.Views.PageParcourir" x:Class="GameAtlas.Views.PageParcourir"
Title="ECRAN DE CONNEXION" WidthRequest="390" HeightRequest="844"> Title="ECRAN DE CONNEXION" WidthRequest="390" HeightRequest="844">
<Grid x:Name="outerGrid"> <Grid x:Name="outerGrid">
<Grid.Background> <Grid.Background>
<LinearGradientBrush EndPoint="1,0"> <LinearGradientBrush EndPoint="1,0">
<GradientStop Color="#DFE4FF" <GradientStop Color="#DFE4FF"
Offset="0.1" /> Offset="0.1" />
<GradientStop Color="#FDF7E6" <GradientStop Color="#FDF7E6"
Offset="1.0" /> Offset="1.0" />
</LinearGradientBrush> </LinearGradientBrush>
</Grid.Background> </Grid.Background>
<VerticalStackLayout> <VerticalStackLayout>
<StackLayout Padding="0,30,0,0" HorizontalOptions="Center" VerticalOptions="Center" Grid.Row="2"> <StackLayout Padding="0,30,0,0" HorizontalOptions="Center" VerticalOptions="Center" Grid.Row="2">
<Frame HeightRequest="40" WidthRequest="300" CornerRadius="8"> <Frame HeightRequest="40" WidthRequest="300" CornerRadius="8">
<SearchBar Placeholder="Rechercher" TextColor="Black" BackgroundColor="#D9D9D9" TextChanged="SearchBar_TextChanged"/> <SearchBar Placeholder="Rechercher" TextColor="Black" BackgroundColor="#D9D9D9" TextChanged="SearchBar_TextChanged"/>
</Frame> </Frame>
</StackLayout> </StackLayout>
<Label <Label
Text="Rechercher" Text="Rechercher"
FontFamily="PTSansCBold" FontFamily="PTSansCBold"
FontSize="24" FontSize="24"
Grid.Row="3" Grid.Row="3"
Padding="25" Padding="25"
/> />
<Grid> <Grid>
<CollectionView ItemsSource="{Binding ListJeux}" Margin="25,0,25,0" VerticalScrollBarVisibility="Never" x:Name="searchResults"> <CollectionView ItemsSource="{Binding ListJeux}" Margin="25,0,25,0" VerticalScrollBarVisibility="Never" x:Name="searchResults">
<CollectionView.ItemTemplate> <CollectionView.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border HeightRequest="97.5" StrokeShape="RoundRectangle 5" VerticalOptions="Start" HorizontalOptions="Center"> <Border HeightRequest="97.5" StrokeShape="RoundRectangle 5" VerticalOptions="Start" HorizontalOptions="Center">
<Border.Shadow> <Border.Shadow>
<Shadow Brush="Black" Offset="0,4" Radius="4" Opacity="0.4" /> <Shadow Brush="Black" Offset="0,4" Radius="4" Opacity="0.4" />
</Border.Shadow> </Border.Shadow>
<Frame HasShadow="False" HeightRequest="97.5" CornerRadius="5" IsClippedToBounds="True"> <Frame HasShadow="False" HeightRequest="97.5" CornerRadius="5" IsClippedToBounds="True">
<ImageButton HeightRequest="97.5" Source="{Binding Image}" Aspect="AspectFill" Clicked="OnGame_Tapped"/> <ImageButton HeightRequest="97.5" Source="{Binding Image}" Aspect="AspectFill" Clicked="OnGame_Tapped"/>
</Frame> </Frame>
</Border> </Border>
</DataTemplate> </DataTemplate>
</CollectionView.ItemTemplate> </CollectionView.ItemTemplate>
<CollectionView.ItemsLayout> <CollectionView.ItemsLayout>
<GridItemsLayout Span="2" Orientation="Vertical" VerticalItemSpacing="30" HorizontalItemSpacing="15"/> <GridItemsLayout Span="2" Orientation="Vertical" VerticalItemSpacing="30" HorizontalItemSpacing="15"/>
</CollectionView.ItemsLayout> </CollectionView.ItemsLayout>
</CollectionView> </CollectionView>
</Grid> </Grid>
</VerticalStackLayout> </VerticalStackLayout>
</Grid> </Grid>
</ContentPage> </ContentPage>

@ -1,43 +1,43 @@
namespace GameAtlas.Views; namespace GameAtlas.Views;
using GameAtlas.Models; using GameAtlas.Models;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
public partial class PageParcourir : ContentPage public partial class PageParcourir : ContentPage
{ {
public Manager ParcourirManager => (App.Current as App).MyManager; public Manager ParcourirManager => (App.Current as App).MyManager;
public PageParcourir() public PageParcourir()
{ {
InitializeComponent(); InitializeComponent();
BindingContext = ParcourirManager; BindingContext = ParcourirManager;
} }
async void OnGame_Tapped(System.Object sender, EventArgs e) async void OnGame_Tapped(System.Object sender, EventArgs e)
{ {
var selectedjeu = (sender as ImageButton)?.BindingContext as Jeu; var selectedjeu = (sender as ImageButton)?.BindingContext as Jeu;
if (selectedjeu != null) if (selectedjeu != null)
{ {
await Navigation.PushAsync(new PageJeu(selectedjeu)); await Navigation.PushAsync(new PageJeu(selectedjeu));
} }
} }
async void Back_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) async void Back_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e)
{ {
await Navigation.PopAsync(); await Navigation.PopAsync();
} }
private void SearchBar_TextChanged(object sender, TextChangedEventArgs e) private void SearchBar_TextChanged(object sender, TextChangedEventArgs e)
{ {
if(string.IsNullOrWhiteSpace(e.NewTextValue)) if(string.IsNullOrWhiteSpace(e.NewTextValue))
{ {
searchResults.ItemsSource = ParcourirManager.ListJeux; searchResults.ItemsSource = ParcourirManager.ListJeux;
} }
else else
{ {
searchResults.ItemsSource = ParcourirManager.ListJeux.Where(i => i.Nom.ToLower().Contains(e.NewTextValue.ToLower())); searchResults.ItemsSource = ParcourirManager.ListJeux.Where(i => i.Nom.ToLower().Contains(e.NewTextValue.ToLower()));
} }
} }
} }

@ -1,48 +1,48 @@
using GameAtlas.Models; using GameAtlas.Models;
namespace GameAtlas.Views; namespace GameAtlas.Views;
public partial class PageProfil : ContentPage public partial class PageProfil : ContentPage
{ {
public Manager ProfilManager => (App.Current as App).MyManager; public Manager ProfilManager => (App.Current as App).MyManager;
public PageProfil() public PageProfil()
{ {
InitializeComponent(); InitializeComponent();
BindingContext = ProfilManager; BindingContext = ProfilManager;
SwitchPage(); SwitchPage();
} }
async void SwitchPage() async void SwitchPage()
{ {
if (ProfilManager.ConnectedUser == null) if (ProfilManager.ConnectedUser == null)
{ {
await Navigation.PushAsync(new PageConnexion()); await Navigation.PushAsync(new PageConnexion());
} }
else else
{ {
await Shell.Current.GoToAsync("//page/PageProfil"); await Shell.Current.GoToAsync("//page/PageProfil");
} }
} }
async void OnGame_Tapped(System.Object sender, EventArgs e) async void OnGame_Tapped(System.Object sender, EventArgs e)
{ {
var selectedjeu = (sender as ImageButton)?.BindingContext as Jeu; var selectedjeu = (sender as ImageButton)?.BindingContext as Jeu;
if (selectedjeu != null) if (selectedjeu != null)
{ {
await Navigation.PushAsync(new PageJeu(selectedjeu)); await Navigation.PushAsync(new PageJeu(selectedjeu));
} }
} }
async void OnAdmin_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) async void OnAdmin_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e)
{ {
await Shell.Current.GoToAsync(nameof(PageAdmin)); await Shell.Current.GoToAsync(nameof(PageAdmin));
} }
async void OnDisconnect_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e) async void OnDisconnect_Tapped(System.Object sender, Microsoft.Maui.Controls.TappedEventArgs e)
{ {
await Shell.Current.GoToAsync("//page/PageAccueil"); await Shell.Current.GoToAsync("//page/PageAccueil");
ProfilManager.ConnectedUser = null; ProfilManager.ConnectedUser = null;
} }
} }

@ -0,0 +1,429 @@
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "GameAtlas"
PROJECT_NUMBER = 1.0.0
PROJECT_BRIEF = "Une Application Android .NET MAUI avec XAML et C#"
PROJECT_LOGO = images/mylogo.png
OUTPUT_DIRECTORY = /docs/doxygen
CREATE_SUBDIRS = NO
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = French
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO
JAVADOC_BANNER = NO
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
PYTHON_DOCSTRING = YES
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
# Well... the one for Java looks so similar to the one for C#...
OPTIMIZE_OUTPUT_JAVA = YES
OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
OPTIMIZE_OUTPUT_SLICE = NO
EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES
TOC_INCLUDE_HEADINGS = 5
AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = NO
CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = NO
GROUP_NESTED_COMPOUNDS = NO
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO
LOOKUP_CACHE_SIZE = 0
NUM_PROC_THREADS = 1
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = YES
# I do not like other members to see my private members... but you can set it to YES if you prefer.
EXTRACT_PRIVATE = NO
EXTRACT_PRIV_VIRTUAL = NO
EXTRACT_PACKAGE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO
RESOLVE_UNNAMED_PARAMS = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = NO
HIDE_SCOPE_NAMES = NO
HIDE_COMPOUND_REFERENCE= NO
SHOW_HEADERFILE = YES
SHOW_INCLUDE_FILES = YES
SHOW_GROUPED_MEMB_INC = NO
FORCE_LOCAL_INCLUDES = NO
INLINE_INFO = YES
SORT_MEMBER_DOCS = NO
SORT_BRIEF_DOCS = NO
SORT_MEMBERS_CTORS_1ST = NO
SORT_GROUP_NAMES = NO
SORT_BY_SCOPE_NAME = NO
STRICT_PROTO_MATCHING = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_FILES = YES
SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
LAYOUT_FILE =
CITE_BIB_FILES =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_IF_INCOMPLETE_DOC = YES
WARN_NO_PARAMDOC = NO
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../../Sources
INPUT_ENCODING = UTF-8
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.idl \
*.ddl \
*.odl \
*.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.l \
*.cs \
*.d \
*.php \
*.php4 \
*.php5 \
*.phtml \
*.inc \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.py \
*.pyw \
*.f90 \
*.f95 \
*.f03 \
*.f08 \
*.f18 \
*.f \
*.for \
*.vhd \
*.vhdl \
*.ucf \
*.qsf \
*.ice
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = */Tests/*
EXCLUDE_PATTERNS += */bin/*
EXCLUDE_PATTERNS += */obj/*
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
REFERENCES_LINK_SOURCE = YES
SOURCE_TOOLTIPS = YES
USE_HTAGS = NO
VERBATIM_HEADERS = YES
CLANG_ASSISTED_PARSING = NO
CLANG_ADD_INC_PATHS = YES
CLANG_OPTIONS =
CLANG_DATABASE_PATH =
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER = footer.html
HTML_STYLESHEET =
HTML_EXTRA_STYLESHEET =
HTML_EXTRA_FILES = images/CodeFirst.png images/clubinfo.png
HTML_COLORSTYLE_HUE = 215
HTML_COLORSTYLE_SAT = 45
HTML_COLORSTYLE_GAMMA = 240
HTML_TIMESTAMP = NO
HTML_DYNAMIC_MENUS = YES
HTML_DYNAMIC_SECTIONS = NO
HTML_INDEX_NUM_ENTRIES = 100
GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_FEEDURL =
DOCSET_BUNDLE_ID = org.doxygen.Project
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
DOCSET_PUBLISHER_NAME = Publisher
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
CHM_INDEX_ENCODING =
BINARY_TOC = NO
TOC_EXPAND = NO
GENERATE_QHP = NO
QCH_FILE =
QHP_NAMESPACE = org.doxygen.Project
QHP_VIRTUAL_FOLDER = doc
QHP_CUST_FILTER_NAME =
QHP_CUST_FILTER_ATTRS =
QHP_SECT_FILTER_ATTRS =
QHG_LOCATION =
GENERATE_ECLIPSEHELP = NO
ECLIPSE_DOC_ID = org.doxygen.Project
DISABLE_INDEX = NO
GENERATE_TREEVIEW = NO
FULL_SIDEBAR = NO
ENUM_VALUES_PER_LINE = 4
TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO
OBFUSCATE_EMAILS = YES
HTML_FORMULA_FORMAT = png
FORMULA_FONTSIZE = 10
FORMULA_TRANSPARENT = YES
FORMULA_MACROFILE =
USE_MATHJAX = NO
MATHJAX_VERSION = MathJax_2
MATHJAX_FORMAT = HTML-CSS
MATHJAX_RELPATH =
MATHJAX_EXTENSIONS =
MATHJAX_CODEFILE =
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
EXTERNAL_SEARCH = NO
SEARCHENGINE_URL =
SEARCHDATA_FILE = searchdata.xml
EXTERNAL_SEARCH_ID =
EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT = latex
LATEX_CMD_NAME =
MAKEINDEX_CMD_NAME = makeindex
LATEX_MAKEINDEX_CMD = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4
EXTRA_PACKAGES =
LATEX_HEADER =
LATEX_FOOTER =
LATEX_EXTRA_STYLESHEET =
LATEX_EXTRA_FILES =
PDF_HYPERLINKS = YES
USE_PDFLATEX = YES
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
LATEX_BIB_STYLE = plain
LATEX_TIMESTAMP = NO
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_SUBDIR =
MAN_LINKS = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_OUTPUT = xml
XML_PROGRAMLISTING = YES
XML_NS_MEMB_FILE_SCOPE = NO
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
GENERATE_DOCBOOK = NO
DOCBOOK_OUTPUT = docbook
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to Sqlite3 output
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
DOT_NUM_THREADS = 0
DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10
DOT_FONTPATH =
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
UML_LIMIT_NUM_FIELDS = 10
DOT_UML_DETAILS = NO
DOT_WRAP_THRESHOLD = 17
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO
CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DIR_GRAPH_MAX_DEPTH = 1
DOT_IMAGE_FORMAT = png
INTERACTIVE_SVG = NO
DOT_PATH =
DOTFILE_DIRS =
MSCFILE_DIRS =
DIAFILE_DIRS =
PLANTUML_JAR_PATH =
PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
Loading…
Cancel
Save