From e81e3817c0a4b735da47e6c45529c6f88ed4d52f Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Mon, 8 Feb 2021 21:27:18 -0500 Subject: Moved playback to backend; Menu; Size now matches --- Erable/Assets/erable.png | Bin 0 -> 76609 bytes Erable/Erable.csproj | 1 - Erable/Program.cs | 13 +++++++++--- Erable/ViewModels/MainWindowViewModel.cs | 33 +++++++++++-------------------- Erable/Views/MainWindow.axaml | 23 ++++++++++++++++----- Erable/Views/MainWindow.axaml.cs | 7 +++++++ Sirop.Backend/Playback.cs | 30 ++++++++++++++++++++++++++++ 7 files changed, 77 insertions(+), 30 deletions(-) create mode 100644 Erable/Assets/erable.png create mode 100644 Sirop.Backend/Playback.cs diff --git a/Erable/Assets/erable.png b/Erable/Assets/erable.png new file mode 100644 index 0000000..1d25b8a Binary files /dev/null and b/Erable/Assets/erable.png differ diff --git a/Erable/Erable.csproj b/Erable/Erable.csproj index cee2a9c..fa7cecb 100644 --- a/Erable/Erable.csproj +++ b/Erable/Erable.csproj @@ -38,7 +38,6 @@ - diff --git a/Erable/Program.cs b/Erable/Program.cs index 312bbb4..f461a79 100644 --- a/Erable/Program.cs +++ b/Erable/Program.cs @@ -10,11 +10,18 @@ namespace Erable // Initialization code. Don't use any Avalonia, third-party APIs or any // SynchronizationContext-reliant code before AppMain is called: things aren't initialized // yet and stuff might break. - public static void Main(string[] args) => BuildAvaloniaApp() - .StartWithClassicDesktopLifetime(args); + public static void Main(string[] args) + { + Console.WriteLine("Erable: Audio Player by Alee Productions"); + Console.WriteLine("Running on .NET " + Environment.Version + ", and " + Environment.OSVersion); + #if DEBUG + Console.WriteLine("Opening MainWindow..."); + #endif + try { BuildAvaloniaApp().StartWithClassicDesktopLifetime(args); }catch (Exception ex) { Console.WriteLine(ex); } + } // Avalonia configuration, don't remove; also used by visual designer. - public static AppBuilder BuildAvaloniaApp() + static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure() .UsePlatformDetect() .LogToTrace() diff --git a/Erable/ViewModels/MainWindowViewModel.cs b/Erable/ViewModels/MainWindowViewModel.cs index ab41886..899b49c 100644 --- a/Erable/ViewModels/MainWindowViewModel.cs +++ b/Erable/ViewModels/MainWindowViewModel.cs @@ -1,40 +1,26 @@ -using System.Threading; +using System; +using System.Threading; using Avalonia.Controls; using Erable.Views; -using Gst; +using Sirop.Backend; namespace Erable.ViewModels { public class MainWindowViewModel : ViewModelBase { - public string Greeting => "Welcome to Erable Audio Player!"; public void PlayFunction() { - Thread t = new (AudioPlay); + Thread t = new (Playback.PlayAudio); t.Start(); } - - static void AudioPlay() - { - Application.Init(); - // Build the pipeline - var pipeline = Parse.Launch("playbin uri=file:///home/andrew/Music/4616-werq-by-kevin-macleod.mp3"); - - // Start playing - pipeline.SetState(State.Playing); - // Wait until error or EOS - var bus = pipeline.Bus; - var msg = bus.TimedPopFiltered (Constants.CLOCK_TIME_NONE, MessageType.Eos | MessageType.Error); - - // Free resources - pipeline.SetState (State.Null); + public void StopFunction() + { } - - public async void BrowseFunction() + public void BrowseFunction() { var dialog = new OpenFileDialog(); // dialog.Title @@ -61,6 +47,11 @@ namespace Erable.ViewModels { MessageBox.Show(new MainWindow(), "Hello world", "Test Title", MessageBox.MessageBoxButtons.Ok); } + + public void Quit() + { + Environment.Exit(0); + } } } diff --git a/Erable/Views/MainWindow.axaml b/Erable/Views/MainWindow.axaml index 02d362a..de6c5b7 100644 --- a/Erable/Views/MainWindow.axaml +++ b/Erable/Views/MainWindow.axaml @@ -5,18 +5,31 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="Erable.Views.MainWindow" - Icon="/Assets/avalonia-logo.ico" + Width="800" + Height="450" + Icon="/Assets/erable.png" Title="Erable"> - + + + + + + + + + + + + - + - - + + diff --git a/Erable/Views/MainWindow.axaml.cs b/Erable/Views/MainWindow.axaml.cs index 814bc0f..78cde38 100644 --- a/Erable/Views/MainWindow.axaml.cs +++ b/Erable/Views/MainWindow.axaml.cs @@ -1,5 +1,7 @@ +using System; using Avalonia; using Avalonia.Controls; +using Avalonia.Input; using Avalonia.Markup.Xaml; namespace Erable.Views @@ -18,5 +20,10 @@ namespace Erable.Views { AvaloniaXamlLoader.Load(this); } + + private void InputElement_OnPointerPressed(object? sender, PointerPressedEventArgs e) + { + Environment.Exit(0); + } } } \ No newline at end of file diff --git a/Sirop.Backend/Playback.cs b/Sirop.Backend/Playback.cs new file mode 100644 index 0000000..a073ce3 --- /dev/null +++ b/Sirop.Backend/Playback.cs @@ -0,0 +1,30 @@ +using Gst; + +namespace Sirop.Backend.Audio +{ + public static class Playback + { + public static void PlayAudio() + { + Application.Init(); + // Build the pipeline + var pipeline = Parse.Launch("playbin uri=file:///home/andrew/Music/4616-werq-by-kevin-macleod.mp3"); + + // Start playing + pipeline.SetState(State.Playing); + + // Wait until error or EOS + var bus = pipeline.Bus; + var msg = bus.TimedPopFiltered (Constants.CLOCK_TIME_NONE, MessageType.Eos | MessageType.Error); + + // Free resources + pipeline.SetState (State.Null); + + } + + public static void StopAudio() + { + + } + } +} \ No newline at end of file -- cgit v1.2.3