Fix footer
continuous-integration/drone/push Build is passing Details

pull/24/head
Corentin LEMAIRE 2 years ago
parent acce913c33
commit 2e307e5974

@ -1,45 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="Linaris.FooterPage">
<Grid Grid.ColumnSpan="2" Grid.Row="1" BackgroundColor="Gray" Style="{StaticResource FooterTrigger}">
<Grid Grid.ColumnSpan="2" Grid.Row="1" BackgroundColor="Gray" ColumnDefinitions="16*,7*">
<HorizontalStackLayout Margin="10">
<Image Source="album10.jpg" SemanticProperties.Description="Album 3" Aspect="AspectFit"/>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Style="{StaticResource LabelFooterTrigger}" Text="Morceau" VerticalOptions="Center" Margin="8,0,0,0" WidthRequest="200" LineBreakMode="TailTruncation"></Label>
<Label Grid.Row="1" Style="{StaticResource ArtistFooterTrigger}" Text="Artiste" VerticalOptions="Center" Margin="8,0,0,0" WidthRequest="200" LineBreakMode="TailTruncation"></Label>
</Grid>
</HorizontalStackLayout>
<toolkit:MediaElement Source="embed://peaches.mp3" ShouldShowPlaybackControls="True" Grid.Column="0" Speed="1" ShouldKeepScreenOn="false"/>
<StackLayout Grid.Column="1" Orientation="Horizontal" HorizontalOptions="CenterAndExpand">
<ImageButton Source="rdm.png" Margin="0,10,8,10" WidthRequest="25" HeightRequest="25" Aspect="AspectFit" MinimumWidthRequest="1" MinimumHeightRequest="1" BackgroundColor="Transparent" Style="{StaticResource SecondaryButtonFooterTrigger}"/>
<ImageButton Clicked="RewindButton_Clicked" Source="back.png" Margin="8,10,8,10" WidthRequest="20" HeightRequest="20" Aspect="AspectFit" MinimumWidthRequest="1" MinimumHeightRequest="1" BackgroundColor="Transparent"/>
<ImageButton Clicked="PlayButton_Clicked" Source="play.png" Margin="8,0,8,0" WidthRequest="38" HeightRequest="38" Aspect="AspectFit" MinimumWidthRequest="5" MinimumHeightRequest="5" BackgroundColor="Transparent"/>
<ImageButton Clicked="NextButton_Clicked" Source="next.png" Margin="8,10,8,10" WidthRequest="20" HeightRequest="20" Aspect="AspectFit" MinimumWidthRequest="1" MinimumHeightRequest="1" BackgroundColor="Transparent"/>
<ImageButton Source="loop.png" Margin="8,10,0,10" WidthRequest="25" HeightRequest="25" Aspect="AspectFit" MinimumWidthRequest="1" MinimumHeightRequest="1" BackgroundColor="Transparent" Style="{StaticResource SecondaryButtonFooterTrigger}"/>
</StackLayout>
<HorizontalStackLayout Grid.ColumnSpan="3" HorizontalOptions="Center" Spacing="10" MinimumWidthRequest="15" Style="{StaticResource TimeStackFooterTrigger}">
<Label VerticalOptions="Center" Text="00:00:00" x:Name="currentTime"></Label>
<Slider Value="0" ValueChanged="Bar_ValueChanged" WidthRequest="250" VerticalOptions="Center" x:Name="bar"/>
<Label VerticalOptions="Center" Text="00:00:00" x:Name="endTime"></Label>
</HorizontalStackLayout>
<Grid Grid.Column="2" Style="{StaticResource VolumeTrigger}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<HorizontalStackLayout Grid.Column="1" VerticalOptions="Center" Margin="0,0,15,0" HorizontalOptions="Fill">
<Image Source="volume.png" VerticalOptions="Center" WidthRequest="30" HeightRequest="30" Margin="25,25,5,25"/>
<Slider Grid.Column="1" x:Name="slider" WidthRequest="125" VerticalOptions="Center" Value="1" ValueChanged="Slider_ValueChanged"/>
</HorizontalStackLayout>
<Grid Grid.Column="1" HorizontalOptions="CenterAndExpand" RowDefinitions="*,*" ColumnDefinitions="*,*">
<ImageButton Style="{StaticResource FooterButton}" Source="rdm.png" Grid.Row="0" Grid.Column="0"/>
<ImageButton Style="{StaticResource FooterButton}" Source="loop.png" Grid.Row="0" Grid.Column="1"/>
<ImageButton Style="{StaticResource FooterButton}" Clicked="RewindButton_Clicked" Source="back.png" Grid.Row="1" Grid.Column="0"/>
<ImageButton Style="{StaticResource FooterButton}" Clicked="NextButton_Clicked" Source="next.png" Grid.Row="1" Grid.Column="1"/>
</Grid>
</Grid>

@ -5,57 +5,12 @@ namespace Linaris;
public partial class FooterPage : ContentView
{
/*WaveOutEvent outputDevice;
AudioFileReader audioFile;
System.Timers.Timer timer;
bool changementManuel = true;
bool closing = false;
string morceauEnCours;*/
public FooterPage()
{
InitializeComponent();
/*outputDevice = new WaveOutEvent();*/
// (s,a) = convention, s = sender, a = arguments, si appli fermée, on free tout
/*outputDevice.PlaybackStopped += PlaybackStoppedHandler;
morceauEnCours = Path.Combine(AppContext.BaseDirectory, "Resources", "Musics", "winter.mp3");
audioFile = new AudioFileReader(morceauEnCours);
outputDevice.Init(audioFile);*/
}
public void PlayAudio(string path)
{
using (var stream = File.OpenRead(path))
{
var audioPlayer = AudioManager.Current.CreatePlayer(stream);
audioPlayer.Volume = 100.0f;
audioPlayer.Play();
}
BindingContext = (Application.Current as App).Manager;
}
public void PlayButton_Clicked(object sender, EventArgs e)
{
string CurrentPath = (Application.Current as App).Manager.CurrentPlaying.Path;
if (CurrentPath == null) return;
PlayAudio(CurrentPath);
/*string url = ((FileImageSource)Play.Source).File;*/
/*if (url == "play.png")
{
outputDevice?.Play();
Play.Source = "pause.png";
Timer_Elapsed(sender, e);
timer = new System.Timers.Timer(1000);
timer.Elapsed += Timer_Elapsed;
timer.Enabled = true;
}
else
{
outputDevice?.Pause();
Play.Source = "play.png";
}*/
}
public void RewindButton_Clicked(Object sender, EventArgs e)
{

@ -52,6 +52,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Maui.MediaElement" Version="1.0.2" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
<PackageReference Include="NAudio" Version="2.1.0" />
<PackageReference Include="Plugin.Maui.Audio" Version="1.0.0" />

@ -1,9 +1,5 @@
using Model;
using Model.Serialization;
using Model.Stub;
using System;
using System.Collections.ObjectModel;
using System.Diagnostics.Eventing.Reader;
namespace Linaris
{
@ -96,6 +92,20 @@ namespace Linaris
}
}
string SaveIconToDataFolder(MemoryStream stream, string iconName)
{
string dataFolderPath = FileSystem.AppDataDirectory;
string iconPath = Path.Combine(dataFolderPath, $"{iconName}.png");
using (FileStream fileStream = new FileStream(iconPath, FileMode.Create, FileAccess.Write))
{
stream.Position = 0;
stream.CopyTo(fileStream);
}
return iconPath;
}
async void AddToPlaylist(object sender, EventArgs e)
{
if (sender is Button button)

@ -2,6 +2,7 @@
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Linaris"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="Linaris.MainPage"
Title="Home"
Style="{StaticResource PageFlyoutTrigger}">
@ -12,10 +13,8 @@
<local:Layout Grid.Column="0"/>
<ScrollView Grid.Column="1" BackgroundColor="#404040">
<VerticalStackLayout>
<Button Text="test" Clicked="play"/>
<VerticalStackLayout>
<SearchBar Style="{StaticResource SearchBar}"/>

@ -1,11 +1,12 @@
using Model;
using Plugin.Maui.Audio;
using CommunityToolkit.Maui.Views;
using Model;
using System.Collections.ObjectModel;
namespace Linaris;
public partial class MainPage : ContentPage
{
private readonly ObservableCollection<Album> albums = (Application.Current as App).Manager.GetAlbums();
public ObservableCollection<Album> Albums
@ -30,38 +31,5 @@ public partial class MainPage : ContentPage
}
}
}
public async void PlayAudio(string path)
{
var audioPlayer = AudioManager.Current.CreatePlayer(await FileSystem.OpenAppPackageFileAsync("peaches.mp3"));
audioPlayer.Play();
/*using (var stream = File.OpenRead(path))
{
audioPlayer = audioManager.CreatePlayer(stream);
audioPlayer.Play();
}*/
}
public void play(object sender, EventArgs e)
{
/*string CurrentPath = (Application.Current as App).Manager.CurrentPlaying.Path;
if (CurrentPath == null) return;*/
PlayAudio("");
/*string url = ((FileImageSource)Play.Source).File;*/
/*if (url == "play.png")
{
outputDevice?.Play();
Play.Source = "pause.png";
Timer_Elapsed(sender, e);
timer = new System.Timers.Timer(1000);
timer.Elapsed += Timer_Elapsed;
timer.Enabled = true;
}
else
{
outputDevice?.Pause();
Play.Source = "play.png";
}*/
}
}

@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;
using CommunityToolkit.Maui;
using Microsoft.Extensions.Logging;
using Plugin.Maui.Audio;
namespace Linaris;
@ -10,13 +11,12 @@ public static class MauiProgram
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseMauiCommunityToolkitMediaElement()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
builder.Services.AddSingleton(AudioManager.Current);
builder.Services.AddTransient<MainPage>();
#if DEBUG
builder.Services.AddLogging();

@ -35,7 +35,6 @@ public partial class PlaylistPage : ContentPage
{
(Application.Current as App).Manager.CurrentPlaying = playlist.Titles.FirstOrDefault();
if ((Application.Current as App).Manager.CurrentPlaying == null) return;
(Application.Current as App).Manager.Play();
}
}
}

@ -136,7 +136,7 @@
</Setter>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
@ -147,6 +147,23 @@
<VisualStateGroupList>
<VisualStateGroup>
<VisualState x:Name="Portrait">
<VisualState.StateTriggers>
<OrientationStateTrigger Orientation="Portrait"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="ColumnDefinitions">
<Setter.Value>
<ColumnDefinitionCollection>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="0"/>
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Wide">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1200"/>
@ -162,14 +179,6 @@
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
<Setter Property="RowDefinitions">
<Setter.Value>
<RowDefinitionCollection>
<RowDefinition Height="*"/>
<RowDefinition Height="0"/>
</RowDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
@ -182,20 +191,12 @@
<Setter Property="ColumnDefinitions">
<Setter.Value>
<ColumnDefinitionCollection>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="8*"/>
<ColumnDefinition Width="16*"/>
<ColumnDefinition Width="7*"/>
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
<Setter Property="RowDefinitions">
<Setter.Value>
<RowDefinitionCollection>
<RowDefinition Height="2*"/>
<RowDefinition Height="*"/>
</RowDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
@ -208,20 +209,12 @@
<Setter Property="ColumnDefinitions">
<Setter.Value>
<ColumnDefinitionCollection>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="0"/>
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
<Setter Property="RowDefinitions">
<Setter.Value>
<RowDefinitionCollection>
<RowDefinition Height="2*"/>
<RowDefinition Height="*"/>
</RowDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
@ -230,66 +223,6 @@
</Setter>
</Style>
<Style x:Key="VolumeTrigger" TargetType="Grid">
<Setter Property="VisualStateManager.VisualStateGroups">
<Setter.Value>
<VisualStateGroupList>
<VisualStateGroup>
<VisualState x:Name="Narrow">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="ColumnDefinitions">
<Setter.Value>
<ColumnDefinitionCollection>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="*"/>
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Medium">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="ColumnDefinitions">
<Setter.Value>
<ColumnDefinitionCollection>
<ColumnDefinition Width="0"/>
<ColumnDefinition Width="*"/>
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Wide">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1200"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="ColumnDefinitions">
<Setter.Value>
<ColumnDefinitionCollection>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</ColumnDefinitionCollection>
</Setter.Value>
</Setter>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="LabelFooterTrigger" TargetType="Label">
<Setter Property="VisualStateManager.VisualStateGroups">
<Setter.Value>
@ -368,123 +301,6 @@
</Setter>
</Style>
<Style x:Key="SecondaryButtonFooterTrigger" TargetType="Image">
<Setter Property="IsVisible" Value="True"/>
<Setter Property="VisualStateManager.VisualStateGroups">
<Setter.Value>
<VisualStateGroupList>
<VisualStateGroup>
<VisualState x:Name="Wide">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1200"/>
</VisualState.StateTriggers>
</VisualState>
<VisualState x:Name="Medium">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
</VisualState>
<VisualState x:Name="Narrow">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="IsVisible" Value="False"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ButtonStackFooterTrigger" TargetType="StackLayout">
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup>
<VisualState x:Name="Wide">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1200"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="Margin" Value="0,5,0,35"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Medium">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="Margin" Value="0,5,0,0"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Narrow">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="Margin" Value="0,5,0,0"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>
<Style x:Key="TimeStackFooterTrigger" TargetType="HorizontalStackLayout">
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup>
<VisualState x:Name="Wide">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1200"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="Grid.Row" Value="0"/>
<Setter Property="Margin" Value="0,35,0,0"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Medium">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="Grid.Row" Value="1"/>
<Setter Property="Margin" Value="0,0,0,0"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Narrow">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="Grid.Row" Value="1"/>
<Setter Property="Margin" Value="0,0,0,0"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>
<Style x:Key="InfosComplementairesGridTrigger" TargetType="Grid">
<Setter Property="VisualStateManager.VisualStateGroups">
<Setter.Value>
@ -545,6 +361,16 @@
</Setter>
</Style>
<Style TargetType="ImageButton" x:Key="FooterButton">
<Setter Property="Margin" Value="0,10,8,10"/>
<Setter Property="WidthRequest" Value="25"/>
<Setter Property="HeightRequest" Value="25"/>
<Setter Property="Aspect" Value="AspectFill"/>
<Setter Property="MinimumWidthRequest" Value="1"/>
<Setter Property="MinimumHeightRequest" Value="1"/>
<Setter Property="BackgroundColor" Value="Transparent"/>
</Style>
<Style TargetType="ActivityIndicator">
<Setter Property="Color" Value="{AppThemeBinding Light={StaticResource Primary}, Dark={StaticResource White}}" />
</Style>

@ -131,11 +131,6 @@ public class Manager
currentPlaying = null;
}
public void Play()
{
}
public void AddAlbum(Album album)
{
if (GetAlbumByName(album.Name) != null) return;

Loading…
Cancel
Save