Merge branch 'developpement'
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
5d4ed6dd06
@ -1,28 +1,46 @@
|
||||
using Biblioteque_de_Class;
|
||||
using Windows.UI.Core;
|
||||
|
||||
namespace notus;
|
||||
|
||||
public partial class ConnecPage : ContentPage
|
||||
{
|
||||
string mail = "";
|
||||
string MDP = "";
|
||||
User selectUser = (Application.Current as App).SelectedUser;
|
||||
Database db = (Application.Current as App).db;
|
||||
public string Username { get; set; }
|
||||
public string Password { get; set; }
|
||||
|
||||
public ConnecPage()
|
||||
{
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
BindingContext = this;
|
||||
}
|
||||
|
||||
private async void Valid_Clicked(object sender, EventArgs e)
|
||||
private void Connec_Clicked(object sender, EventArgs e)
|
||||
{
|
||||
mail = Mail.Text;
|
||||
MDP = Password.Text;
|
||||
if ((Application.Current as App).db.SearchUser(mail, MDP))
|
||||
try
|
||||
{
|
||||
selectUser = db.GetUser(Username);
|
||||
}
|
||||
catch (NotFoundException)
|
||||
{
|
||||
await Navigation.PushAsync(new RecherPage());
|
||||
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
|
||||
{
|
||||
ResultSearch.IsVisible = true;
|
||||
DisplayAlert("Erreur", "Le mot de passe est incorrect", "OK");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void Back_Clicked(object sender, EventArgs e)
|
||||
{
|
||||
Navigation.PopAsync();
|
||||
}
|
||||
}
|
@ -1,82 +1,133 @@
|
||||
<?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">
|
||||
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 BackgroundColor="#1C1C1C">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="150"/>
|
||||
<RowDefinition Height="150"/>
|
||||
<RowDefinition Height="150"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Entry
|
||||
Placeholder="Pseudo"
|
||||
HorizontalOptions="Center"
|
||||
VerticalOptions="Center"
|
||||
WidthRequest="600"
|
||||
HeightRequest="100"
|
||||
FontSize="32"
|
||||
<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
|
||||
|
||||
<Entry
|
||||
Placeholder="Mot de passe"
|
||||
HorizontalOptions="Center"
|
||||
VerticalOptions="Center"
|
||||
WidthRequest="600"
|
||||
HeightRequest="100"
|
||||
FontSize="32"
|
||||
Grid.Column="1"
|
||||
Grid.Row="2"
|
||||
FontSize="22"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="3"
|
||||
Grid.Row="5"
|
||||
IsPassword="true"
|
||||
TextColor="#74fabd"
|
||||
BackgroundColor="#4A4A4A"
|
||||
PlaceholderColor="#74fabd"
|
||||
Text="{Binding Password}"
|
||||
/>
|
||||
|
||||
<Entry
|
||||
<Entry
|
||||
Placeholder ="Verif mot de passe"
|
||||
HorizontalOptions="Center"
|
||||
VerticalOptions="Center"
|
||||
WidthRequest="600"
|
||||
HeightRequest="100"
|
||||
FontSize="32"
|
||||
Grid.Column="1"
|
||||
Grid.Row="3"
|
||||
FontSize="22"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="3"
|
||||
Grid.Row="7"
|
||||
IsPassword="true"
|
||||
TextColor="#74fabd"
|
||||
BackgroundColor="#4A4A4A"
|
||||
PlaceholderColor="#74fabd"
|
||||
Text="{Binding RePassword}"
|
||||
/>
|
||||
|
||||
<Button
|
||||
Text="Valider"
|
||||
Grid.Column="1"
|
||||
Grid.Row="4"
|
||||
HorizontalOptions="End"
|
||||
VerticalOptions="Center"
|
||||
WidthRequest="110"
|
||||
HeightRequest="70"
|
||||
BackgroundColor="#74fabd"
|
||||
TextColor="Black"
|
||||
CornerRadius="10"
|
||||
Clicked="Valid_Clicked"
|
||||
/>
|
||||
<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,17 +1,101 @@
|
||||
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 ProfilPage()
|
||||
|
||||
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;
|
||||
}
|
||||
void ProfilClicked(System.Object sender, System.EventArgs e)
|
||||
|
||||
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,134 +1,152 @@
|
||||
<?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"
|
||||
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2021/maui/toolkit"
|
||||
xmlns:muxc = "using:Microsoft.UI.Xaml.Controls"
|
||||
x:Class="notus.RecherPage"
|
||||
Title="RecherPage"
|
||||
Title="Main Page"
|
||||
BackgroundColor="#1C1C1C">
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="1.5*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="1.8*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="1.8*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="4*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Shell.BackButtonBehavior>
|
||||
<BackButtonBehavior
|
||||
IsVisible="False"
|
||||
IsEnabled="False"/>
|
||||
</Shell.BackButtonBehavior>
|
||||
<ContentPage.Content>
|
||||
<Grid>
|
||||
|
||||
<Border
|
||||
Background="#6E6E6E"
|
||||
Grid.Column="0"
|
||||
Grid.RowSpan="9"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
Source="profl.png"
|
||||
Aspect="AspectFit"
|
||||
Grid.Column="4"
|
||||
Grid.Row="0"
|
||||
HorizontalOptions="Start"
|
||||
VerticalOptions="Start"
|
||||
WidthRequest="200"
|
||||
HeightRequest="120"
|
||||
BackgroundColor="#6E6E6E"
|
||||
CornerRadius="10"
|
||||
Clicked="Profil_Clicked"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
Source="supp.png"
|
||||
Aspect="AspectFill"
|
||||
Grid.Column="2"
|
||||
Grid.Row="0"
|
||||
Margin="20"
|
||||
HorizontalOptions="End"
|
||||
VerticalOptions="Start"
|
||||
WidthRequest="50"
|
||||
HeightRequest="50"
|
||||
BackgroundColor="#4A4A4A"
|
||||
CornerRadius="50"
|
||||
/>
|
||||
|
||||
<Label x:Name="NomNote"
|
||||
Text="{Binding Name}"
|
||||
Grid.Column="1"
|
||||
Grid.Row="0"
|
||||
TextColor="#74fabd"
|
||||
Margin="20"
|
||||
FontSize="34"
|
||||
BackgroundColor="#4A4A4A"
|
||||
WidthRequest="250"
|
||||
HeightRequest="50"
|
||||
HorizontalOptions="Center"
|
||||
VerticalOptions="Start"
|
||||
/>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition x:Name="MasterColumn" Width="320" />
|
||||
<ColumnDefinition x:Name="DetailColumn" Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<ImageButton
|
||||
Source="edit.png"
|
||||
Aspect="AspectFit"
|
||||
Grid.Column="1"
|
||||
Grid.Row="0"
|
||||
Margin="20"
|
||||
HorizontalOptions="Start"
|
||||
VerticalOptions="Start"
|
||||
WidthRequest="50"
|
||||
HeightRequest="50"
|
||||
BackgroundColor="#4A4A4A"
|
||||
CornerRadius="50"
|
||||
/>
|
||||
|
||||
<Entry
|
||||
Placeholder="Rechercher"
|
||||
HorizontalOptions="Start"
|
||||
Margin="20"
|
||||
VerticalOptions="Center"
|
||||
WidthRequest="300"
|
||||
HeightRequest="50"
|
||||
FontSize="25"
|
||||
Grid.Column="0"
|
||||
Grid.Row="0"
|
||||
TextColor="#74fabd"
|
||||
BackgroundColor="#4A4A4A"
|
||||
PlaceholderColor="#74fabd"
|
||||
/>
|
||||
<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>
|
||||
|
||||
<ListView x:Name="ListNote"
|
||||
Grid.Column="0"
|
||||
Grid.Row="2"
|
||||
Grid.RowSpan="5"
|
||||
ItemsSource="{Binding NoteList}"
|
||||
/>
|
||||
<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>
|
||||
|
||||
<Editor
|
||||
Placeholder="Texte"
|
||||
IsSpellCheckEnabled="True"
|
||||
FontSize="20"
|
||||
HorizontalOptions="Start"
|
||||
VerticalOptions="Center"
|
||||
Margin="20"
|
||||
WidthRequest="800"
|
||||
HeightRequest="750"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="4"
|
||||
Grid.Row="4"
|
||||
Grid.RowSpan="3"
|
||||
TextColor="White"
|
||||
BackgroundColor="#4A4A4A"
|
||||
PlaceholderColor="#74fabd"
|
||||
/>
|
||||
|
||||
</Grid>
|
||||
|
||||
</ContentPage>
|
@ -1,23 +1,361 @@
|
||||
using Microsoft.Maui.Controls;
|
||||
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
|
||||
namespace notus
|
||||
{
|
||||
PersistenceManager manager = (Application.Current as App).manager;
|
||||
public RecherPage()
|
||||
{
|
||||
manager.LoadDatabaseData();
|
||||
InitializeComponent();
|
||||
ListNote.BindingContext = manager;
|
||||
NomNote.BindingContext = manager;
|
||||
}
|
||||
|
||||
private async void Profil_Clicked(object sender, EventArgs e)
|
||||
public partial class RecherPage : ContentPage, INotifyPropertyChanged
|
||||
{
|
||||
await Navigation.PushAsync(new ProfilPage());
|
||||
private ObservableCollection<Note> noteList;
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue