Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
![]() |
3cb1d41fdd | 2 years ago |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,34 @@
|
|||||||
|
using Biblioteque_de_Class;
|
||||||
|
|
||||||
|
namespace Notus_UnitTest_Database
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class GetLogoLinksTests
|
||||||
|
{
|
||||||
|
private Database database;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
database = new Database();
|
||||||
|
database.GetDefaultLogoList().Add(new Logo("Logo1", "link1"));
|
||||||
|
database.GetDefaultLogoList().Add(new Logo("Logo2", "link2"));
|
||||||
|
database.GetDefaultLogoList().Add(new Logo("Logo3", "link3"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetLogoLink_LogoExists_ReturnsLogoLink()
|
||||||
|
{
|
||||||
|
string logoName = "Logo2";
|
||||||
|
string logoLink = database.GetLogoLink(logoName);
|
||||||
|
Assert.That(logoLink, Is.EqualTo("link2"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetLogoLink_LogoDoesNotExist_ThrowsException()
|
||||||
|
{
|
||||||
|
string logoName = "Logo4";
|
||||||
|
Assert.Throws<Exception>(() => database.GetLogoLink(logoName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,223 +0,0 @@
|
|||||||
using Biblioteque_de_Class;
|
|
||||||
namespace UnitTests_Model
|
|
||||||
{
|
|
||||||
[TestFixture]
|
|
||||||
public class Database_Tests
|
|
||||||
{
|
|
||||||
private Database database;
|
|
||||||
|
|
||||||
[SetUp]
|
|
||||||
public void Setup()
|
|
||||||
{
|
|
||||||
database = new Database();
|
|
||||||
database.UserList.Add(new User("John", "john@example.com", "password123"));
|
|
||||||
database.UserList.Add(new User("Jane", "jane@example.com", "choco"));
|
|
||||||
database.UserList.Add(new User("Alice", "alice@example.com", "choco"));
|
|
||||||
database.DefaultLogoList.Add(new Logo("Logo1", "link1"));
|
|
||||||
database.DefaultLogoList.Add(new Logo("Logo2", "link2"));
|
|
||||||
database.DefaultLogoList.Add(new Logo("Logo3", "link3"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// SearchUser tests
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void SearchUser_UserDoesNotExist_ThrowsException()
|
|
||||||
{
|
|
||||||
string searchName = "Bob";
|
|
||||||
Assert.Throws<NotFoundException>(() => database.SearchUser(searchName));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void SearchUser_CaseInsensitiveSearch_ReturnsMatchingUsers()
|
|
||||||
{
|
|
||||||
string searchName = "Alice";
|
|
||||||
User searchedUser = database.SearchUser(searchName);
|
|
||||||
Assert.That(searchedUser.Username, Is.EqualTo("Alice"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetLogoLink tests
|
|
||||||
[Test]
|
|
||||||
public void GetLogoLink_LogoExists_ReturnsLogoLink()
|
|
||||||
{
|
|
||||||
Assert.That(database.GetLogoLink("Logo2"), Is.EqualTo("link2"));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void GetLogoLink_LogoDoesNotExist_ThrowsException()
|
|
||||||
{
|
|
||||||
string logoName = "Logo4";
|
|
||||||
Assert.Throws<NotFoundException>(() => database.GetLogoLink(logoName));
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetUser tests
|
|
||||||
[Test]
|
|
||||||
public void GetUser_UserExists_ReturnsUser()
|
|
||||||
{
|
|
||||||
string userName = "Alice";
|
|
||||||
User user = database.GetUser(userName);
|
|
||||||
Assert.IsNotNull(user);
|
|
||||||
Assert.That(user.Username, Is.EqualTo(userName));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void GetUser_UserDoesNotExist_ThrowsException()
|
|
||||||
{
|
|
||||||
string userName = "Eve";
|
|
||||||
Assert.Throws<NotFoundException>(() => database.GetUser(userName));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ComparePassword tests
|
|
||||||
[Test]
|
|
||||||
public void ComparePassword_CorrectPassword_ReturnsTrue()
|
|
||||||
{
|
|
||||||
User user = database.UserList[0];
|
|
||||||
string password = "password123";
|
|
||||||
bool result = Database.ComparePassword(user, password);
|
|
||||||
Assert.That(result, Is.True);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ComparePassword_IncorrectPassword_ReturnsFalse()
|
|
||||||
{
|
|
||||||
User user = database.UserList[0];
|
|
||||||
string password = "incorrectPassword";
|
|
||||||
bool result = Database.ComparePassword(user, password);
|
|
||||||
Assert.That(result, Is.False);
|
|
||||||
}
|
|
||||||
|
|
||||||
// FindEmail tests
|
|
||||||
[Test]
|
|
||||||
public void FindEmail_ExistingEmail_ReturnsTrue()
|
|
||||||
{
|
|
||||||
string email = "john@example.com";
|
|
||||||
bool result = database.FindEmail(email);
|
|
||||||
Assert.IsTrue(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void FindEmail_NonExistingEmail_ReturnsFalse()
|
|
||||||
{
|
|
||||||
string email = "olivedecarglass@example.com";
|
|
||||||
bool result = database.FindEmail(email);
|
|
||||||
Assert.IsFalse(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddUser tests
|
|
||||||
[Test]
|
|
||||||
public void AddUser_ValidUser_AddsUserToList()
|
|
||||||
{
|
|
||||||
User user = new User("Bob", "bob@example.com", "password123");
|
|
||||||
database.AddUser(user);
|
|
||||||
Assert.That(database.UserList, Contains.Item(user));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void AddUser_DuplicateUserName_ThrowsException()
|
|
||||||
{
|
|
||||||
User user = new User("John", "johnDae@example.com", "password123");
|
|
||||||
Assert.Throws<AlreadyUsedException>(() => database.AddUser(user));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void AddUser_DuplicateUserEmail_ThrowsException()
|
|
||||||
{
|
|
||||||
User user = new User("Bob", "john@example.com", "password123");
|
|
||||||
Assert.Throws<AlreadyUsedException>(() => database.AddUser(user));
|
|
||||||
}
|
|
||||||
|
|
||||||
// removeUser tests
|
|
||||||
[Test]
|
|
||||||
public void RemoveUser_ExistingUser_RemovesUserFromList()
|
|
||||||
{
|
|
||||||
User user = database.UserList[0];
|
|
||||||
database.RemoveUser(user);
|
|
||||||
Assert.That(database.UserList, !Contains.Item(user));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void RemoveUser_NotExistingUser_ThrowsException()
|
|
||||||
{
|
|
||||||
User user = new User("Bob", "bob@example.com", "password123");
|
|
||||||
Assert.Throws<NotFoundException>(() => database.RemoveUser(user));
|
|
||||||
}
|
|
||||||
|
|
||||||
// AddTheme tests
|
|
||||||
[Test]
|
|
||||||
public void AddTheme_ValidTheme_AddsThemeToList()
|
|
||||||
{
|
|
||||||
Theme theme = new Theme("Theme1", ",,,".Split().ToList());
|
|
||||||
database.AddTheme(theme);
|
|
||||||
Assert.That(database.ThemeList, Contains.Item(theme));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void AddTheme_DuplicateTheme_ThrowsException()
|
|
||||||
{
|
|
||||||
Theme theme = new Theme("Theme1", ",,,".Split().ToList());
|
|
||||||
database.ThemeList.Add(theme);
|
|
||||||
Assert.Throws<AlreadyExistException>(() => database.AddTheme(theme));
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetTheme tests
|
|
||||||
[Test]
|
|
||||||
public void GetTheme_ExistingTheme_ReturnsTheme()
|
|
||||||
{
|
|
||||||
Theme expectedTheme = new Theme("Theme1", ",,,".Split().ToList());
|
|
||||||
database.ThemeList.Add(expectedTheme);
|
|
||||||
|
|
||||||
Theme theme = database.GetTheme("Theme1");
|
|
||||||
Assert.IsNotNull(theme);
|
|
||||||
Assert.That(theme, Is.EqualTo(expectedTheme));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void GetTheme_NonExistingTheme_ReturnsNull()
|
|
||||||
{
|
|
||||||
Theme expectedTheme = new Theme("Theme1", ",,,".Split().ToList());
|
|
||||||
database.ThemeList.Add(expectedTheme);
|
|
||||||
Assert.Throws<NotFoundException>(() => database.GetTheme("NonExistingTheme"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ChangeUsername tests
|
|
||||||
[Test]
|
|
||||||
public void ChangeUsername_CorrectReplaceName_ChangesUsername()
|
|
||||||
{
|
|
||||||
User userSelected = database.UserList[0];
|
|
||||||
string newUsername = "duberlute";
|
|
||||||
|
|
||||||
database.ChangeUsername(userSelected, newUsername);
|
|
||||||
|
|
||||||
User updatedUser = database.UserList.Where(u => u.Username == newUsername).First();
|
|
||||||
Assert.IsNotNull(updatedUser);
|
|
||||||
Assert.That(updatedUser.Username, Is.EqualTo(newUsername));
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void ChangeUsername_UsernameAlreadyUsed_ThrowsException()
|
|
||||||
{
|
|
||||||
User userNotSelected = database.UserList[2];
|
|
||||||
string newUsername = "Jane";
|
|
||||||
|
|
||||||
Assert.Throws<AlreadyUsedException>(() => database.ChangeUsername(userNotSelected, newUsername));
|
|
||||||
}
|
|
||||||
|
|
||||||
// VerifThemeNameNotTaken tests
|
|
||||||
[Test]
|
|
||||||
public void VerifThemeNameNotTaken_NameNotTaken_ReturnsTrue()
|
|
||||||
{
|
|
||||||
string themeName = "NewTheme";
|
|
||||||
bool result = database.VerifThemeNameNotTaken(themeName);
|
|
||||||
Assert.IsTrue(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void VerifThemeNameNotTaken_NameAlreadyTaken_ReturnsFalse()
|
|
||||||
{
|
|
||||||
Theme expectedTheme = new Theme("Theme1", ",,,".Split().ToList());
|
|
||||||
database.ThemeList.Add(expectedTheme);
|
|
||||||
string themeName = "Theme1";
|
|
||||||
bool result = database.VerifThemeNameNotTaken(themeName);
|
|
||||||
Assert.IsFalse(result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
|
|
||||||
<IsPackable>false</IsPackable>
|
|
||||||
<IsTestProject>true</IsTestProject>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
|
||||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
|
|
||||||
<PackageReference Include="NUnit.Analyzers" Version="3.6.1" />
|
|
||||||
<PackageReference Include="coverlet.collector" Version="3.2.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\..\Biblioteque_de_Class\Biblioteque_de_Class.csproj" />
|
|
||||||
<ProjectReference Include="..\..\Notus_Persistence\Notus_Persistance.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
@ -1 +0,0 @@
|
|||||||
global using NUnit.Framework;
|
|
@ -1,46 +1,9 @@
|
|||||||
using Biblioteque_de_Class;
|
|
||||||
using Windows.UI.Core;
|
|
||||||
|
|
||||||
namespace notus;
|
namespace notus;
|
||||||
|
|
||||||
public partial class ConnecPage : ContentPage
|
public partial class ConnecPage : ContentPage
|
||||||
{
|
{
|
||||||
User selectUser = (Application.Current as App).SelectedUser;
|
public ConnecPage()
|
||||||
Database db = (Application.Current as App).db;
|
{
|
||||||
public string Username { get; set; }
|
InitializeComponent();
|
||||||
public string Password { get; set; }
|
}
|
||||||
|
|
||||||
public ConnecPage()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
BindingContext = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Connec_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
selectUser = db.GetUser(Username);
|
|
||||||
}
|
|
||||||
catch (NotFoundException)
|
|
||||||
{
|
|
||||||
DisplayAlert("Erreur", "Cet utilisateur n'existe pas" , "OK");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Database.ComparePassword(selectUser, HashCodeModel.GetSHA256Hash(Password).ToString()))
|
|
||||||
{
|
|
||||||
selectUser.IsConnected = true;
|
|
||||||
(Application.Current as App).SelectedUser = selectUser;
|
|
||||||
Navigation.PushAsync(new RecherPage());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DisplayAlert("Erreur", "Le mot de passe est incorrect", "OK");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Back_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Navigation.PopAsync();
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,133 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
|
||||||
xmlns:toolkit="http://schemas.microsoft.com/dodnet/2022/maui/toolkit"
|
|
||||||
x:Class="notus.InscrPage"
|
|
||||||
Title="InscrPage"
|
|
||||||
BackgroundColor="#1C1C1C">
|
|
||||||
<Shell.BackButtonBehavior>
|
|
||||||
<BackButtonBehavior
|
|
||||||
IsVisible="False"
|
|
||||||
IsEnabled="False"/>
|
|
||||||
</Shell.BackButtonBehavior>
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="2*"/>
|
|
||||||
<RowDefinition Height="80"/>
|
|
||||||
<RowDefinition Height="2*"/>
|
|
||||||
<RowDefinition Height="1.8*"/>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
<RowDefinition Height="1.8*"/>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
<RowDefinition Height="1.8*"/>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
<RowDefinition Height="1.6*"/>
|
|
||||||
<RowDefinition Height="4*"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="4*"/>
|
|
||||||
<ColumnDefinition Width="4*"/>
|
|
||||||
<ColumnDefinition Width="0.9*"/>
|
|
||||||
<ColumnDefinition Width="0.2*"/>
|
|
||||||
<ColumnDefinition Width="4*"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<ImageButton
|
|
||||||
Source="return.png"
|
|
||||||
Aspect="AspectFit"
|
|
||||||
Grid.Column="0"
|
|
||||||
Grid.Row="0"
|
|
||||||
HorizontalOptions="Start"
|
|
||||||
VerticalOptions="Start"
|
|
||||||
WidthRequest="50"
|
|
||||||
HeightRequest="50"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
Margin="10,10,0,0"
|
|
||||||
CornerRadius="50"
|
|
||||||
Clicked="Back_Clicked"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Label
|
|
||||||
Grid.Column="1"
|
|
||||||
Grid.ColumnSpan="3"
|
|
||||||
Grid.Row="1"
|
|
||||||
HorizontalOptions="Center"
|
|
||||||
VerticalOptions="Center"
|
|
||||||
Text="Inscription"
|
|
||||||
TextColor="#74fabd"
|
|
||||||
FontSize="80"
|
|
||||||
FontFamily="strong"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Entry
|
|
||||||
Placeholder="Pseudo"
|
|
||||||
FontSize="22"
|
|
||||||
Grid.Column="1"
|
|
||||||
Grid.ColumnSpan="3"
|
|
||||||
Grid.Row="3"
|
|
||||||
TextColor="#74fabd"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
PlaceholderColor="#74fabd"
|
|
||||||
Text="{Binding Username}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Entry
|
|
||||||
Placeholder="Mot de passe"
|
|
||||||
FontSize="22"
|
|
||||||
Grid.Column="1"
|
|
||||||
Grid.ColumnSpan="3"
|
|
||||||
Grid.Row="5"
|
|
||||||
IsPassword="true"
|
|
||||||
TextColor="#74fabd"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
PlaceholderColor="#74fabd"
|
|
||||||
Text="{Binding Password}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Entry
|
|
||||||
Placeholder ="Verif mot de passe"
|
|
||||||
FontSize="22"
|
|
||||||
Grid.Column="1"
|
|
||||||
Grid.ColumnSpan="3"
|
|
||||||
Grid.Row="7"
|
|
||||||
IsPassword="true"
|
|
||||||
TextColor="#74fabd"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
PlaceholderColor="#74fabd"
|
|
||||||
Text="{Binding RePassword}"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
WidthRequest="80"
|
|
||||||
Grid.Column="2"
|
|
||||||
Grid.ColumnSpan="1"
|
|
||||||
Grid.Row="9"
|
|
||||||
Text="Valider"
|
|
||||||
TextColor="Black"
|
|
||||||
BackgroundColor="#74fabd"
|
|
||||||
Clicked="Inscription_Clicked"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Label
|
|
||||||
x:Name="userUser"
|
|
||||||
Text="User Already exist."
|
|
||||||
IsVisible="false"
|
|
||||||
Grid.Column="1"
|
|
||||||
Grid.Row="4"
|
|
||||||
TextColor="Red"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Label
|
|
||||||
x:Name="shortPassword"
|
|
||||||
Text="Password to short."
|
|
||||||
IsVisible="false"
|
|
||||||
Grid.Column="1"
|
|
||||||
Grid.Row="6"
|
|
||||||
TextColor="Red"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
</ContentPage>
|
|
||||||
|
|
@ -1,179 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
|
||||||
xmlns:toolkit="http://schemas.microsoft.com/dodnet/2022/maui/toolkit"
|
|
||||||
x:Class="notus.ProfilPage"
|
|
||||||
Title="ProfilPage"
|
|
||||||
BackgroundColor="#1C1C1C">
|
|
||||||
|
|
||||||
<Shell.BackButtonBehavior>
|
|
||||||
<BackButtonBehavior
|
|
||||||
IsVisible="False"
|
|
||||||
IsEnabled="False"/>
|
|
||||||
</Shell.BackButtonBehavior>
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="4*"/>
|
|
||||||
<ColumnDefinition Width="6*"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<ImageButton
|
|
||||||
Source="return.png"
|
|
||||||
Aspect="AspectFit"
|
|
||||||
Grid.Column="0"
|
|
||||||
Grid.Row="0"
|
|
||||||
HorizontalOptions="Start"
|
|
||||||
VerticalOptions="Start"
|
|
||||||
WidthRequest="50"
|
|
||||||
HeightRequest="50"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
Margin="10,10,0,0"
|
|
||||||
CornerRadius="50"
|
|
||||||
Clicked="Back_Clicked"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Grid Grid.Column="0">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
<RowDefinition Height="250"/>
|
|
||||||
<RowDefinition Height="20"/>
|
|
||||||
<RowDefinition Height="20"/>
|
|
||||||
<RowDefinition Height="90"/>
|
|
||||||
<RowDefinition Height="100"/>
|
|
||||||
<RowDefinition Height="90"/>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
<Image Source="{Binding ProfilPicture}"
|
|
||||||
HorizontalOptions="Center"
|
|
||||||
VerticalOptions="Center"
|
|
||||||
Grid.Row="1"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
WidthRequest="250"
|
|
||||||
HeightRequest="250"
|
|
||||||
Margin="0,0,0,30"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Label Text="{Binding Username}" VerticalOptions="Center"
|
|
||||||
Grid.Row="2"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
WidthRequest="260"
|
|
||||||
HeightRequest="60"
|
|
||||||
TextColor="#74fabd"/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
VerticalOptions="End"
|
|
||||||
Text="Modifier Profil"
|
|
||||||
TextColor="#74fabd"
|
|
||||||
WidthRequest="300"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
Grid.Row="4"
|
|
||||||
HeightRequest="80"
|
|
||||||
FontSize="30"
|
|
||||||
Margin="0,20,0,0"
|
|
||||||
Clicked="Modify_Profil"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
VerticalOptions="Center"
|
|
||||||
Text="Modifier Theme"
|
|
||||||
TextColor="#74fabd"
|
|
||||||
WidthRequest="300"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
Grid.Row="5"
|
|
||||||
HeightRequest="80"
|
|
||||||
FontSize="30"
|
|
||||||
Margin="0,20,0,0"
|
|
||||||
Clicked="Modify_Theme"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
VerticalOptions="Start"
|
|
||||||
Text="se déconnecter"
|
|
||||||
FontSize="30"
|
|
||||||
TextColor="#74fabd"
|
|
||||||
WidthRequest="300"
|
|
||||||
BackgroundColor="#4A4A4A"
|
|
||||||
Grid.Row="6"
|
|
||||||
HeightRequest="80"
|
|
||||||
Margin="0,20,0,0"
|
|
||||||
Clicked="Disconnect_Clicked"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<Grid x:Name="TagsZone" Grid.Column="1" Margin="40" BackgroundColor="#4A4A4A" IsVisible="True">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
<RowDefinition Height="250"/>
|
|
||||||
<RowDefinition Height="40"/>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<ScrollView Grid.Row="1" VerticalScrollBarVisibility="Always" HorizontalScrollBarVisibility="Never">
|
|
||||||
<StackLayout x:Name="TagListContainer" Padding="10" Spacing="5">
|
|
||||||
<ListView x:Name="TagListView" SeparatorVisibility="None" BackgroundColor="Transparent">
|
|
||||||
<ListView.ItemTemplate>
|
|
||||||
<DataTemplate>
|
|
||||||
<ViewCell>
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="40" />
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<BoxView Grid.Column="0" BackgroundColor="{Binding Color}" WidthRequest="40" />
|
|
||||||
<Label Grid.Column="1" Text="{Binding Name}" VerticalTextAlignment="Center" />
|
|
||||||
<Button Grid.Column="2" Text="Modify" Clicked="Modify_Clicked"/>
|
|
||||||
<Button Grid.Column="3" Text="Delete" Clicked="Delete_Clicked" VerticalOptions="End"/>
|
|
||||||
</Grid>
|
|
||||||
</ViewCell>
|
|
||||||
</DataTemplate>
|
|
||||||
</ListView.ItemTemplate>
|
|
||||||
</ListView>
|
|
||||||
</StackLayout>
|
|
||||||
</ScrollView>
|
|
||||||
|
|
||||||
<Grid Grid.Row="2" HorizontalOptions="Center">
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<Button Grid.Column="0" Text="Add" Command="{Binding AddTagCommand}" HorizontalOptions="Center" />
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<Grid x:Name="ProfilZone" Grid.Column="1" Margin="40" BackgroundColor="#4A4A4A" IsVisible="false">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
<RowDefinition Height="250"/>
|
|
||||||
<RowDefinition Height="20"/>
|
|
||||||
<RowDefinition Height="20"/>
|
|
||||||
<RowDefinition Height="90"/>
|
|
||||||
<RowDefinition Height="100"/>
|
|
||||||
<RowDefinition Height="90"/>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
<Grid x:Name="ThemeZone" Grid.Column="1" Margin="40" BackgroundColor="#4A4A4A" IsVisible="false">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
<RowDefinition Height="250"/>
|
|
||||||
<RowDefinition Height="20"/>
|
|
||||||
<RowDefinition Height="20"/>
|
|
||||||
<RowDefinition Height="90"/>
|
|
||||||
<RowDefinition Height="100"/>
|
|
||||||
<RowDefinition Height="90"/>
|
|
||||||
<RowDefinition Height="1*"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ContentPage>
|
|
@ -1,101 +0,0 @@
|
|||||||
using Microsoft.Maui.Controls;
|
|
||||||
using Biblioteque_de_Class;
|
|
||||||
using Notus_Persistance;
|
|
||||||
using NHibernate.Mapping;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
|
|
||||||
namespace notus;
|
|
||||||
|
|
||||||
public partial class ProfilPage : ContentPage
|
|
||||||
{
|
|
||||||
|
|
||||||
public User SelectedUser = (Application.Current as App).SelectedUser;
|
|
||||||
private string username;
|
|
||||||
public string Username
|
|
||||||
{
|
|
||||||
get => username;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
username = value;
|
|
||||||
OnPropertyChanged(nameof(Username));
|
|
||||||
(Application.Current as App).SelectedUser.Username = username;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private string password;
|
|
||||||
public string Password
|
|
||||||
{
|
|
||||||
get => password;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
password = value;
|
|
||||||
OnPropertyChanged(nameof(Password));
|
|
||||||
(Application.Current as App).SelectedUser.Password = password;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private string profilPicture;
|
|
||||||
public string ProfilPicture
|
|
||||||
{
|
|
||||||
get => profilPicture;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
profilPicture = value;
|
|
||||||
OnPropertyChanged(nameof(ProfilPicture));
|
|
||||||
(Application.Current as App).SelectedUser.Picture = profilPicture;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProfilPage()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
Username = SelectedUser.Username;
|
|
||||||
Password = SelectedUser.Password;
|
|
||||||
ProfilPicture = SelectedUser.Picture;
|
|
||||||
BindingContext = this;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
private void Back_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Navigation.PopAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Disconnect_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
(Application.Current as App).SelectedUser.IsConnected = false;
|
|
||||||
Navigation.PopAsync();
|
|
||||||
Navigation.PopAsync();
|
|
||||||
Navigation.PopAsync();
|
|
||||||
(Application.Current as App).SelectedUser = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddTag_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// Handle add tag action
|
|
||||||
// Show color picker and name input dialog
|
|
||||||
// Create a new Tag object and add it to the Tags collection
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Modify_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// Handle modify action for the tag
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Delete_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// Handle delete action for the tag
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Modify_Profil(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (ProfilZone.IsVisible == true) { ProfilZone.IsVisible = false; return; }
|
|
||||||
ThemeZone.IsVisible = false;
|
|
||||||
ProfilZone.IsVisible = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Modify_Theme(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (ThemeZone.IsVisible == true) { ThemeZone.IsVisible = false; return;}
|
|
||||||
ProfilZone.IsVisible = false;
|
|
||||||
ThemeZone.IsVisible = true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,152 +1,17 @@
|
|||||||
|
<?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/2021/maui/toolkit"
|
xmlns:toolkit="http://schemas.microsoft.com/dodnet/2022/maui/toolkit"
|
||||||
xmlns:muxc = "using:Microsoft.UI.Xaml.Controls"
|
|
||||||
x:Class="notus.RecherPage"
|
x:Class="notus.RecherPage"
|
||||||
Title="Main Page"
|
Title="RecherPage"
|
||||||
BackgroundColor="#1C1C1C">
|
BackgroundColor="#1C1C1C">
|
||||||
|
|
||||||
<Shell.BackButtonBehavior>
|
|
||||||
<BackButtonBehavior
|
|
||||||
IsVisible="False"
|
|
||||||
IsEnabled="False"/>
|
|
||||||
</Shell.BackButtonBehavior>
|
|
||||||
<ContentPage.Content>
|
|
||||||
<Grid>
|
|
||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition x:Name="MasterColumn" Width="320" />
|
|
||||||
<ColumnDefinition x:Name="DetailColumn" Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<Border Background="#6E6E6E" Grid.Column="0" Grid.RowSpan="3" />
|
|
||||||
<Grid Margin="0,11,0,13" Grid.Column="0">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<SearchBar Placeholder="Search Note" Text="{Binding SearchNoteText}" HorizontalOptions="Start" Margin="10" VerticalOptions="Center" WidthRequest="300" HeightRequest="50" FontSize="25" TextColor="#74fabd" BackgroundColor="#4A4A4A" PlaceholderColor="#74fabd" TextChanged="OnSearchNoteTextChanged" />
|
|
||||||
<CheckBox x:Name="FavoritesCheckBox" CheckedChanged="FavoritesFilter_CheckedChanged" WidthRequest="50" HeightRequest="50" Margin="40,0,0,0" HorizontalOptions="Start" VerticalOptions="Center" Grid.Row="1" />
|
|
||||||
<ImageButton Source="tagsfilter.png" BackgroundColor="#4A4A4A" Clicked="TagsFilter_Clicked" WidthRequest="50" HeightRequest="50" CornerRadius="50" Margin="20" HorizontalOptions="Center" VerticalOptions="Center" Grid.Row="1"/>
|
|
||||||
<ImageButton Source="Datefilter.png" BackgroundColor="#4A4A4A" Clicked="DatesFilter_Clicked" WidthRequest="50" HeightRequest="50" CornerRadius="50" Margin="20" HorizontalOptions="End" VerticalOptions="Center" Grid.Row="1"/>
|
|
||||||
<ScrollView x:Name="TheScrollView" Grid.Row="2" Grid.Column="0" VerticalOptions="Start" Margin="5,5,5,5">
|
|
||||||
<ContentView>
|
|
||||||
<ListView ItemsSource="{Binding NoteList, Mode=TwoWay}" ItemSelected="NoteListView_ItemSelected" VerticalOptions="StartAndExpand">
|
|
||||||
<ListView.ItemTemplate>
|
|
||||||
<DataTemplate>
|
|
||||||
<ViewCell>
|
|
||||||
<StackLayout Orientation="Horizontal" HeightRequest="40" Padding="3" Margin="3" BackgroundColor="#4A4A4A" MinimumWidthRequest="400" MaximumWidthRequest="400">
|
|
||||||
<CheckBox IsChecked="{Binding IsFavorite, Mode=TwoWay}" CheckedChanged="FavoriteCheckBox_CheckedChanged" HeightRequest="20" HorizontalOptions="End" VerticalOptions="Center"/>
|
|
||||||
<StackLayout Orientation="Horizontal">
|
|
||||||
<Image Source="{Binding LogoPath}" HorizontalOptions="Start" VerticalOptions="Center"/>
|
|
||||||
<Label Text="{Binding Name}" TextColor="#74fabd" HorizontalOptions="Center" VerticalOptions="Center"/>
|
|
||||||
</StackLayout>
|
|
||||||
</StackLayout>
|
|
||||||
</ViewCell>
|
|
||||||
</DataTemplate>
|
|
||||||
</ListView.ItemTemplate>
|
|
||||||
</ListView>
|
|
||||||
</ContentView>
|
|
||||||
</ScrollView>
|
|
||||||
</Grid>
|
|
||||||
<ImageButton Source="create.png" BackgroundColor="#4A4A4A" Clicked="CreateNote_Clicked" WidthRequest="50" HeightRequest="50" CornerRadius="50" Margin="20" HorizontalOptions="Start" VerticalOptions="End" />
|
|
||||||
<Grid Grid.Row="0" Grid.Column="1">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="350" />
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<ImageButton Source="{Binding LogoPath}" Aspect="AspectFit" Grid.Column="0" Grid.Row="0" Margin="20" HorizontalOptions="Start" VerticalOptions="Start" WidthRequest="50" HeightRequest="50" BackgroundColor="#4A4A4A" CornerRadius="50" />
|
|
||||||
<Entry Text="{Binding Name}" Grid.Column="0" Grid.Row="0" TextColor="#74fabd" Margin="20" FontSize="21" BackgroundColor="#4A4A4A" WidthRequest="250" HeightRequest="50" HorizontalOptions="End" VerticalOptions="Start" />
|
|
||||||
<ImageButton Source="supp.png" Clicked="Delete_Note" Aspect="AspectFill" Grid.Column="2" Grid.Row="0" Margin="20" HorizontalOptions="Start" VerticalOptions="Start" WidthRequest="50" HeightRequest="50" BackgroundColor="#4A4A4A" CornerRadius="50" />
|
|
||||||
<ImageButton Source="AddUser.png" Clicked="AddUser_Clicked" Grid.Column="2" Grid.Row="0" BackgroundColor="#4A4A4A" Margin="120,20,20,20" HorizontalOptions="Start" VerticalOptions="Start" WidthRequest="50" HeightRequest="50" CornerRadius="50"/>
|
|
||||||
<ImageButton Source="{Binding ProfilPicture}" Clicked="Profil_Clicked" Aspect="AspectFit" Grid.Column="2" Grid.Row="0" HorizontalOptions="End" VerticalOptions="Start" WidthRequest="200" HeightRequest="120" BackgroundColor="#6E6E6E"/>
|
|
||||||
|
|
||||||
<Editor
|
|
||||||
x:Name="textZone"
|
|
||||||
Placeholder="Text"
|
|
||||||
FontSize="18"
|
|
||||||
Text="{Binding Text, Mode=TwoWay}"
|
|
||||||
TextColor="#74fabd" BackgroundColor="#4A4A4A"
|
|
||||||
PlaceholderColor="#74fabd"
|
|
||||||
Grid.Row="1"
|
|
||||||
Grid.Column="0"
|
|
||||||
Grid.ColumnSpan="2"
|
|
||||||
VerticalTextAlignment="Start"
|
|
||||||
Margin="20"
|
|
||||||
TextChanged="OnEditorTextChanged"
|
|
||||||
Completed="OnEditorCompleted"/>
|
|
||||||
|
|
||||||
<Grid
|
|
||||||
x:Name="AddUser_Zone"
|
|
||||||
Grid.Row="1"
|
|
||||||
Grid.Column="0"
|
|
||||||
Grid.ColumnSpan="2"
|
|
||||||
BackgroundColor="#6E6E6E"
|
|
||||||
IsVisible="false"
|
|
||||||
Margin="20">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<SearchBar Placeholder="Search User" Text="{Binding SearchNoteText}" HorizontalOptions="Start" Margin="20" VerticalOptions="Center" WidthRequest="400" HeightRequest="50" FontSize="25" TextColor="#74fabd" BackgroundColor="#4A4A4A" PlaceholderColor="#74fabd" TextChanged="OnSearchNoteTextChanged" />
|
|
||||||
<ScrollView x:Name="UserListScrollView" Grid.Row="0" Grid.RowSpan="4" Grid.Column="0" Grid.ColumnSpan="3" VerticalOptions="Start" HorizontalOptions="Start" Margin="20,90,0,0" BackgroundColor="#4A4A4A" MinimumWidthRequest="600" MaximumWidthRequest="600">
|
|
||||||
<ContentView>
|
|
||||||
<ListView ItemsSource="{Binding UserList, Mode=TwoWay}" ItemSelected="NoteListView_ItemSelected" VerticalOptions="StartAndExpand">
|
|
||||||
<ListView.ItemTemplate>
|
|
||||||
<DataTemplate>
|
|
||||||
<ViewCell>
|
|
||||||
<StackLayout Orientation="Horizontal" HeightRequest="40" Padding="3" Margin="3" BackgroundColor="#4A4A4A" MinimumWidthRequest="300" MaximumWidthRequest="300">
|
|
||||||
<CheckBox IsChecked="{Binding AJouter, Mode=TwoWay}" CheckedChanged="AddUserCheckBox_CheckedChanged" HeightRequest="20" HorizontalOptions="End" VerticalOptions="Center"/>
|
|
||||||
<Image Source="{Binding ProfilPictureUser}" HorizontalOptions="Start" VerticalOptions="Center"/>
|
|
||||||
<Label Text="{Binding UserNameUser}" TextColor="#74fabd" HorizontalOptions="Center" VerticalOptions="Center"/>
|
|
||||||
</StackLayout>
|
|
||||||
</ViewCell>
|
|
||||||
</DataTemplate>
|
|
||||||
</ListView.ItemTemplate>
|
|
||||||
</ListView>
|
|
||||||
</ContentView>
|
|
||||||
</ScrollView>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
x:Name="Valid"
|
|
||||||
Text="Valid"
|
|
||||||
Grid.Row="3"
|
|
||||||
Grid.Column="3"
|
|
||||||
TextColor="#74fabd"
|
|
||||||
WidthRequest="70"
|
|
||||||
HeightRequest="50"
|
|
||||||
HorizontalOptions="End"
|
|
||||||
VerticalOptions="End"
|
|
||||||
Margin="0,0,20,20"
|
|
||||||
Clicked="Valid_Clicked"
|
|
||||||
BackgroundColor="#4A4A4A"/>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
|
||||||
</ContentPage.Content>
|
|
||||||
|
|
||||||
</ContentPage>
|
</ContentPage>
|
@ -1,361 +1,9 @@
|
|||||||
using Microsoft.Maui.Controls;
|
namespace notus;
|
||||||
using Biblioteque_de_Class;
|
|
||||||
using Notus_Persistance;
|
|
||||||
using System.Xml.Linq;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using Microsoft.Maui;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Drawing;
|
|
||||||
|
|
||||||
namespace notus
|
public partial class RecherPage : ContentPage
|
||||||
{
|
{
|
||||||
public partial class RecherPage : ContentPage, INotifyPropertyChanged
|
public RecherPage()
|
||||||
{
|
{
|
||||||
private ObservableCollection<Note> noteList;
|
InitializeComponent();
|
||||||
public ObservableCollection<Note> NoteList
|
}
|
||||||
{
|
|
||||||
get { return noteList; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
noteList = value;
|
|
||||||
OnPropertyChanged(nameof(NoteList));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private ObservableCollection<Note> allNotes; // Store all notes initially
|
|
||||||
private Database db = (Application.Current as App).db;
|
|
||||||
public User SelectedUser = (Application.Current as App).SelectedUser;
|
|
||||||
public Note SelectedNote
|
|
||||||
{
|
|
||||||
get => (Application.Current as App).SelectedNote;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if ((Application.Current as App).SelectedNote != value)
|
|
||||||
{
|
|
||||||
(Application.Current as App).SelectedNote = value;
|
|
||||||
OnPropertyChanged(nameof(SelectedNote));
|
|
||||||
NoteList = new ObservableCollection<Note>(SelectedUser.NoteList);
|
|
||||||
allNotes = new ObservableCollection<Note>(NoteList);
|
|
||||||
Name = SelectedNote.Name;
|
|
||||||
Text = SelectedNote.Text;
|
|
||||||
LogoPath = SelectedNote.LogoPath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string name;
|
|
||||||
public string Name
|
|
||||||
{
|
|
||||||
get { return name; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (name != value)
|
|
||||||
{
|
|
||||||
name = value;
|
|
||||||
OnPropertyChanged(nameof(Name));
|
|
||||||
if (SelectedNote != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
SelectedNote.ChangeName(SelectedUser, value);
|
|
||||||
}
|
|
||||||
catch (NotAllowedException)
|
|
||||||
{
|
|
||||||
Name = SelectedNote.Name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private string text;
|
|
||||||
public string Text
|
|
||||||
{
|
|
||||||
get { return text; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (text != value)
|
|
||||||
{
|
|
||||||
text = value;
|
|
||||||
OnPropertyChanged(nameof(Text));
|
|
||||||
if (SelectedNote != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
SelectedNote.VerifyPrivilege(SelectedUser);
|
|
||||||
}
|
|
||||||
catch (NotAllowedException)
|
|
||||||
{
|
|
||||||
Text = SelectedNote.Text;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
SelectedNote.Text = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private string logoPath;
|
|
||||||
public string LogoPath
|
|
||||||
{
|
|
||||||
get { return logoPath; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (logoPath != value)
|
|
||||||
{
|
|
||||||
logoPath = value;
|
|
||||||
OnPropertyChanged(nameof(LogoPath));
|
|
||||||
if (SelectedNote != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
SelectedNote.ChangeLogo(SelectedUser, value);
|
|
||||||
}
|
|
||||||
catch (NotAllowedException)
|
|
||||||
{
|
|
||||||
LogoPath = SelectedNote.LogoPath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public string SearchNoteText { get; set; }
|
|
||||||
public string ProfilPicture { get; set; }
|
|
||||||
public RecherPage()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
allNotes = new ObservableCollection<Note>(SelectedUser.NoteList);
|
|
||||||
NoteList = allNotes;
|
|
||||||
|
|
||||||
SelectedNote = SelectedUser.NoteList
|
|
||||||
.OrderByDescending(note => note.ModificationDate)
|
|
||||||
.FirstOrDefault();
|
|
||||||
|
|
||||||
(Application.Current as App).SelectedNote = SelectedNote;
|
|
||||||
Name = SelectedNote.Name;
|
|
||||||
Text = SelectedNote.Text;
|
|
||||||
LogoPath = SelectedNote.LogoPath;
|
|
||||||
ProfilPicture = SelectedUser.Picture;
|
|
||||||
BindingContext = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CreateNote_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SelectedUser.CreateNote("", "");
|
|
||||||
SelectedNote = SelectedUser.NoteList[SelectedUser.NoteList.Count - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
private async void Profil_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
(Application.Current as App).SelectedUser = SelectedUser;
|
|
||||||
await Navigation.PushAsync(new ProfilPage());
|
|
||||||
}
|
|
||||||
|
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
|
||||||
|
|
||||||
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
||||||
{
|
|
||||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnEditorTextChanged(object sender, TextChangedEventArgs e)
|
|
||||||
{
|
|
||||||
string newText = e.NewTextValue;
|
|
||||||
if (SelectedNote != null)
|
|
||||||
{
|
|
||||||
SelectedNote.Text = newText;
|
|
||||||
(Application.Current as App).SelectedNote = SelectedNote;
|
|
||||||
}
|
|
||||||
Text = SelectedNote.Text;
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnEditorCompleted(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (SelectedNote != null)
|
|
||||||
{
|
|
||||||
SelectedNote.Text = ((Editor)sender).Text;
|
|
||||||
(Application.Current as App).SelectedNote = SelectedNote;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void NoteListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.SelectedItem is Note selectedNote)
|
|
||||||
{
|
|
||||||
SelectedNote = selectedNote;
|
|
||||||
(Application.Current as App).SelectedNote = SelectedNote;
|
|
||||||
Name = SelectedNote.Name;
|
|
||||||
Text = SelectedNote.Text;
|
|
||||||
LogoPath = SelectedNote.LogoPath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddUser_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (AddUser_Zone.IsVisible)
|
|
||||||
AddUser_Zone.IsVisible = false;
|
|
||||||
else
|
|
||||||
AddUser_Zone.IsVisible = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Valid_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
AddUser_Zone.IsVisible = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddUserCheckBox_CheckedChanged(object sender, CheckedChangedEventArgs e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Delete_Note(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (SelectedNote != null)
|
|
||||||
{
|
|
||||||
SelectedUser.NoteList.Remove(SelectedNote);
|
|
||||||
if (SelectedUser.NoteList.Count == 0)
|
|
||||||
{
|
|
||||||
SelectedUser.CreateNote("","");
|
|
||||||
}
|
|
||||||
SelectedNote = SelectedUser.NoteList.FirstOrDefault(); // Select the first note in the list (or null if empty)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private int windowHeight;
|
|
||||||
public int WindowHeight
|
|
||||||
{
|
|
||||||
get { return windowHeight; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (windowHeight != value)
|
|
||||||
{
|
|
||||||
windowHeight = value - 300;
|
|
||||||
OnPropertyChanged(nameof(WindowHeight));
|
|
||||||
UpdateScrollViewHeight();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnSizeAllocated(double width, double height)
|
|
||||||
{
|
|
||||||
base.OnSizeAllocated(width, height);
|
|
||||||
|
|
||||||
if (WindowHeight != (int)height)
|
|
||||||
{
|
|
||||||
WindowHeight = (int)height;
|
|
||||||
UpdateScrollViewHeight();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateScrollViewHeight()
|
|
||||||
{
|
|
||||||
double availableHeight = WindowHeight;
|
|
||||||
TheScrollView.MaximumHeightRequest = availableHeight;
|
|
||||||
UserListScrollView.MinimumHeightRequest = availableHeight;
|
|
||||||
UserListScrollView.MaximumHeightRequest = availableHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool isFavoritesFilterChecked = false;
|
|
||||||
private List<Tags> selectedTags = new List<Tags>();
|
|
||||||
private DateOnly startDate;
|
|
||||||
private DateOnly endDate;
|
|
||||||
private bool isfavorite;
|
|
||||||
public bool IsFavorite
|
|
||||||
{
|
|
||||||
get => isfavorite;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (IsFavorite != value)
|
|
||||||
{
|
|
||||||
IsFavorite = value;
|
|
||||||
OnPropertyChanged(nameof(IsFavorite));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnSearchNoteTextChanged(object sender, TextChangedEventArgs e)
|
|
||||||
{
|
|
||||||
string searchText = e.NewTextValue;
|
|
||||||
if (string.IsNullOrEmpty(searchText))
|
|
||||||
{
|
|
||||||
ApplyFilters();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var filteredNotes = NoteList.Where(note => note.Name.Contains(searchText));
|
|
||||||
NoteList = new ObservableCollection<Note>(filteredNotes);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void FavoritesFilter_CheckedChanged(object sender, CheckedChangedEventArgs e)
|
|
||||||
{
|
|
||||||
isFavoritesFilterChecked = e.Value;
|
|
||||||
ApplyFilters();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void TagsFilter_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ApplyFilters();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DatesFilter_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ApplyFilters();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ApplyFilters()
|
|
||||||
{
|
|
||||||
|
|
||||||
var filteredNotes = allNotes;
|
|
||||||
|
|
||||||
if (isFavoritesFilterChecked)
|
|
||||||
{
|
|
||||||
var FavfilteredNotes = allNotes.Where(note => SelectedUser.FavList.Contains(note));
|
|
||||||
NoteList = new ObservableCollection<Note>(FavfilteredNotes);
|
|
||||||
filteredNotes = NoteList;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (selectedTags.Count > 0)
|
|
||||||
{
|
|
||||||
filteredNotes = (ObservableCollection<Note>)filteredNotes.Where(note => SelectedUser.NoteTagged[note].Any(tag => selectedTags.Contains(tag)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (startDate != default && endDate != default)
|
|
||||||
{
|
|
||||||
filteredNotes = (ObservableCollection<Note>)filteredNotes.Where(note => note.CreationDate >= startDate && note.CreationDate <= endDate || note.ModificationDate >= startDate && note.ModificationDate <= endDate);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var note in filteredNotes)
|
|
||||||
{
|
|
||||||
note.IsFavorite = SelectedUser.FavList.Contains(note);
|
|
||||||
IsFavorite = note.IsFavorite;
|
|
||||||
}
|
|
||||||
|
|
||||||
NoteList = new ObservableCollection<Note>(filteredNotes);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void FavoriteCheckBox_CheckedChanged(object sender, CheckedChangedEventArgs e)
|
|
||||||
{
|
|
||||||
CheckBox checkBox = (CheckBox)sender;
|
|
||||||
Note note = checkBox.BindingContext as Note;
|
|
||||||
|
|
||||||
if (note != null)
|
|
||||||
{
|
|
||||||
if (e.Value)
|
|
||||||
{
|
|
||||||
if(note.IsFavorite == false)
|
|
||||||
SelectedUser.AddFavorite(note);
|
|
||||||
(Application.Current as App).SelectedUser = SelectedUser;
|
|
||||||
allNotes = new ObservableCollection<Note>(SelectedUser.NoteList);
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (note.IsFavorite == true)
|
|
||||||
SelectedUser.RemoveFavorite(note);
|
|
||||||
(Application.Current as App).SelectedUser = SelectedUser;
|
|
||||||
allNotes = new ObservableCollection<Note>(SelectedUser.NoteList);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 11 KiB |
Loading…
Reference in new issue