From 370ad0dbda950f226c6bd24cd0cd1efdf92dfb8d Mon Sep 17 00:00:00 2001 From: mrxx99 Date: Sun, 13 Aug 2023 23:06:49 +0200 Subject: [PATCH 01/56] WIP: avalonia port --- .../youtubedownloader.metadata.v7.bin | Bin 0 -> 244160 bytes .../youtubedownloader.projects.v7.bin | Bin 0 -> 225482 bytes .../DesignTimeBuild/.dtbcache.v2 | Bin 0 -> 165537 bytes ...21103d1d-fe8c-4d50-94dc-43b5fe0fecc1.vsidx | Bin 0 -> 70951 bytes ...f943ceba-d49a-46b0-a931-4fd6767e78b8.vsidx | Bin 0 -> 157836 bytes .vs/YoutubeDownloader/v17/.futdcache.v2 | Bin 0 -> 364 bytes Directory.Build.props | 2 +- YoutubeDownloader.sln | 10 +- YoutubeDownloader/App.xaml | 540 +++--------------- YoutubeDownloader/App.xaml.cs | 112 +++- .../MultiSelectionListBoxBehavior.cs | 96 ---- .../VideoMultiSelectionListBoxBehavior.cs | 7 - YoutubeDownloader/Bootstrapper.cs | 50 -- YoutubeDownloader/Controls/Hyperlink.cs | 95 +++ .../Converters/BoolToVisibilityConverter.cs | 44 -- .../Converters/InverseBoolConverter.cs | 17 - .../Converters/IsEqualConverter.cs | 24 + ...VideoQualityPreferenceToStringConverter.cs | 7 +- ...eoToHighestQualityThumbnailUrlConverter.cs | 7 +- ...deoToLowestQualityThumbnailUrlConverter.cs | 8 +- YoutubeDownloader/Program.cs | 41 ++ YoutubeDownloader/Services/SettingsService.cs | 14 +- YoutubeDownloader/Utils/MediaColor.cs | 4 +- .../Components/DownloadViewModel.cs | 16 +- .../Dialogs/DownloadMultipleSetupViewModel.cs | 27 +- .../Dialogs/DownloadSingleSetupViewModel.cs | 13 +- .../ViewModels/Framework/DialogManager.cs | 102 +++- YoutubeDownloader/ViewModels/RootViewModel.cs | 37 +- .../Views/Components/DashboardView.xaml | 313 +++++----- .../Views/Components/DashboardView.xaml.cs | 17 +- .../Views/Dialogs/AuthSetupView.xaml | 36 +- .../Views/Dialogs/AuthSetupView.xaml.cs | 92 +-- .../Dialogs/DownloadMultipleSetupView.xaml | 95 ++- .../Dialogs/DownloadMultipleSetupView.xaml.cs | 10 +- .../Dialogs/DownloadSingleSetupView.xaml | 84 ++- .../Dialogs/DownloadSingleSetupView.xaml.cs | 10 +- .../Views/Dialogs/MessageBoxView.xaml | 28 +- .../Views/Dialogs/MessageBoxView.xaml.cs | 10 +- .../Views/Dialogs/SettingsView.xaml | 81 ++- .../Views/Dialogs/SettingsView.xaml.cs | 11 +- YoutubeDownloader/Views/RootView.xaml | 54 +- YoutubeDownloader/Views/RootView.xaml.cs | 10 +- YoutubeDownloader/YoutubeDownloader.csproj | 38 +- YoutubeDownloader/app.manifest | 18 + 44 files changed, 965 insertions(+), 1215 deletions(-) create mode 100644 .vs/ProjectEvaluation/youtubedownloader.metadata.v7.bin create mode 100644 .vs/ProjectEvaluation/youtubedownloader.projects.v7.bin create mode 100644 .vs/YoutubeDownloader/DesignTimeBuild/.dtbcache.v2 create mode 100644 .vs/YoutubeDownloader/FileContentIndex/21103d1d-fe8c-4d50-94dc-43b5fe0fecc1.vsidx create mode 100644 .vs/YoutubeDownloader/FileContentIndex/f943ceba-d49a-46b0-a931-4fd6767e78b8.vsidx create mode 100644 .vs/YoutubeDownloader/v17/.futdcache.v2 delete mode 100644 YoutubeDownloader/Behaviors/MultiSelectionListBoxBehavior.cs delete mode 100644 YoutubeDownloader/Behaviors/VideoMultiSelectionListBoxBehavior.cs delete mode 100644 YoutubeDownloader/Bootstrapper.cs create mode 100644 YoutubeDownloader/Controls/Hyperlink.cs delete mode 100644 YoutubeDownloader/Converters/BoolToVisibilityConverter.cs delete mode 100644 YoutubeDownloader/Converters/InverseBoolConverter.cs create mode 100644 YoutubeDownloader/Converters/IsEqualConverter.cs create mode 100644 YoutubeDownloader/Program.cs create mode 100644 YoutubeDownloader/app.manifest diff --git a/.vs/ProjectEvaluation/youtubedownloader.metadata.v7.bin b/.vs/ProjectEvaluation/youtubedownloader.metadata.v7.bin new file mode 100644 index 0000000000000000000000000000000000000000..1628ab5d15f77ca1f6594a52bc11256a97c65156 GIT binary patch literal 244160 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

-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�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 z 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 Wqzs6>qgRE!17f@rWsG#a~N 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⪙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 literal 0 HcmV?d00001 diff --git a/.vs/YoutubeDownloader/v17/.futdcache.v2 b/.vs/YoutubeDownloader/v17/.futdcache.v2 new file mode 100644 index 0000000000000000000000000000000000000000..8864e89a1695daa7a25c715c7a9579b8c6b4ec0b GIT binary patch literal 364 zcmZQ#U|^_mwu*7iPf3mOFUd$PiiylGEh$Y(b;&Q!%gIkn!6u^XSeBTRpO={!kY7|1 z?^sfjnp;p}gsD@{Ilm|shp=99aY0dj78B3`yw3S~X_@JzMTsSu`FX4^sY#{j9056r zC29FZxonPkmCga7tR0`H1C@foLO$jSvpKgpifHC=EN&*vx!X=(lH^Qf`d|ulX2Vfc GuyX;ju!d9s literal 0 HcmV?d00001 diff --git a/Directory.Build.props b/Directory.Build.props index de68d17d3..676fd2b5d 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,7 +1,7 @@ - net7.0-windows + net7.0 1.10.1 Tyrrrz Copyright (C) Oleksii Holub diff --git a/YoutubeDownloader.sln b/YoutubeDownloader.sln index d9159752d..e0906555a 100644 --- a/YoutubeDownloader.sln +++ b/YoutubeDownloader.sln @@ -1,19 +1,19 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27428.2015 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.33920.267 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YoutubeDownloader", "YoutubeDownloader\YoutubeDownloader.csproj", "{AF6D645E-DDDD-4034-B644-D5328CC893C1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YoutubeDownloader", "YoutubeDownloader\YoutubeDownloader.csproj", "{AF6D645E-DDDD-4034-B644-D5328CC893C1}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{131C2561-E5A1-43E8-BF38-40E2E23DB0A4}" ProjectSection(SolutionItems) = preProject Changelog.md = Changelog.md + Directory.Build.props = Directory.Build.props License.txt = License.txt Readme.md = Readme.md - Directory.Build.props = Directory.Build.props EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YoutubeDownloader.Core", "YoutubeDownloader.Core\YoutubeDownloader.Core.csproj", "{5122A9DE-232C-4DA8-AD76-8B72AA377D5E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YoutubeDownloader.Core", "YoutubeDownloader.Core\YoutubeDownloader.Core.csproj", "{5122A9DE-232C-4DA8-AD76-8B72AA377D5E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/YoutubeDownloader/App.xaml b/YoutubeDownloader/App.xaml index 002332beb..0790a90c2 100644 --- a/YoutubeDownloader/App.xaml +++ b/YoutubeDownloader/App.xaml @@ -1,473 +1,109 @@ - - - - - - - - - - - - - - - #006400 - #FF8C00 - #8B0000 - - - - - - - - - - - + + + + - - + - + - + - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + #006400 + #FF8C00 + #8B0000 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/YoutubeDownloader/App.xaml.cs b/YoutubeDownloader/App.xaml.cs index 69c3a32fb..2cc0724b0 100644 --- a/YoutubeDownloader/App.xaml.cs +++ b/YoutubeDownloader/App.xaml.cs @@ -1,8 +1,20 @@ -using System; +using System; +using System.Net; using System.Reflection; -using System.Windows.Media; -using MaterialDesignThemes.Wpf; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Input.Platform; +using Avalonia.Markup.Xaml; +using Avalonia.Media; +using Avalonia.Styling; +using AvaloniaWebView; +using Material.Styles.Themes; +using PropertyChanged; +using Stylet; +using StyletIoC; +using YoutubeDownloader.Services; using YoutubeDownloader.Utils; +using YoutubeDownloader.ViewModels; +using YoutubeDownloader.ViewModels.Framework; namespace YoutubeDownloader; @@ -10,7 +22,7 @@ public partial class App { private static Assembly Assembly { get; } = Assembly.GetExecutingAssembly(); - public static string Name { get; } = Assembly.GetName().Name!; + public new static string Name { get; } = Assembly.GetName().Name!; public static Version Version { get; } = Assembly.GetName().Version!; @@ -21,37 +33,103 @@ public partial class App public static string ChangelogUrl { get; } = ProjectUrl + "/blob/master/Changelog.md"; } -public partial class App +[DoNotNotify] +public partial class App : StyletApplication { private static Theme LightTheme { get; } = Theme.Create( - new MaterialDesignLightTheme(), + Theme.Light, MediaColor.FromHex("#343838"), MediaColor.FromHex("#F9A825") ); private static Theme DarkTheme { get; } = Theme.Create( - new MaterialDesignDarkTheme(), + Theme.Dark, MediaColor.FromHex("#E8E8E8"), MediaColor.FromHex("#F9A825") ); public static void SetLightTheme() { - var paletteHelper = new PaletteHelper(); - paletteHelper.SetTheme(LightTheme); + App.Current!.RequestedThemeVariant = ThemeVariant.Light; + var theme = App.Current!.LocateMaterialTheme(); + theme.CurrentTheme = LightTheme; - Current.Resources["SuccessBrush"] = new SolidColorBrush(Colors.DarkGreen); - Current.Resources["CanceledBrush"] = new SolidColorBrush(Colors.DarkOrange); - Current.Resources["FailedBrush"] = new SolidColorBrush(Colors.DarkRed); + Current!.Resources["SuccessBrush"] = new SolidColorBrush(Colors.DarkGreen); + Current!.Resources["CanceledBrush"] = new SolidColorBrush(Colors.DarkOrange); + Current!.Resources["FailedBrush"] = new SolidColorBrush(Colors.DarkRed); } public static void SetDarkTheme() { - var paletteHelper = new PaletteHelper(); - paletteHelper.SetTheme(DarkTheme); + App.Current!.RequestedThemeVariant = ThemeVariant.Dark; + var theme = App.Current!.LocateMaterialTheme(); + theme.CurrentTheme = DarkTheme; + + Current!.Resources["SuccessBrush"] = new SolidColorBrush(Colors.LightGreen); + Current!.Resources["CanceledBrush"] = new SolidColorBrush(Colors.Orange); + Current!.Resources["FailedBrush"] = new SolidColorBrush(Colors.OrangeRed); + } + + protected override void OnStart() + { + base.OnStart(); + + // Set the default theme. + // Preferred theme will be set later, once the settings are loaded. + //App.SetLightTheme(); + + // Increase maximum concurrent connections + ServicePointManager.DefaultConnectionLimit = 20; + } + + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + base.Initialize(); + } + + public override void OnFrameworkInitializationCompleted() + { + base.OnFrameworkInitializationCompleted(); + } + + public override void RegisterServices() + { + base.RegisterServices(); + + AvaloniaWebViewBuilder.Initialize(default); + } + + protected override void ConfigureIoC(IStyletIoCBuilder builder) + { + base.ConfigureIoC(builder); + + builder.Bind().ToSelf().InSingletonScope(); + builder.Bind().ToAbstractFactory(); + builder.Bind().ToFactory(ctx => (ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)!.MainWindow!.Clipboard); + } + + protected override void OnLaunch() + { + base.OnLaunch(); + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime classicDesktopStyleApplicationLifetime) + { + classicDesktopStyleApplicationLifetime.MainWindow = GetActiveWindow(); + } + } + + // tODO +#if !DEBUG + protected override void OnUnhandledException(DispatcherUnhandledExceptionEventArgs args) + { + base.OnUnhandledException(args); - Current.Resources["SuccessBrush"] = new SolidColorBrush(Colors.LightGreen); - Current.Resources["CanceledBrush"] = new SolidColorBrush(Colors.Orange); - Current.Resources["FailedBrush"] = new SolidColorBrush(Colors.OrangeRed); + MessageBox.Show( + args.Exception.ToString(), + "Error occured", + MessageBoxButton.OK, + MessageBoxImage.Error + ); } +#endif } \ No newline at end of file diff --git a/YoutubeDownloader/Behaviors/MultiSelectionListBoxBehavior.cs b/YoutubeDownloader/Behaviors/MultiSelectionListBoxBehavior.cs deleted file mode 100644 index 66bf1f6cd..000000000 --- a/YoutubeDownloader/Behaviors/MultiSelectionListBoxBehavior.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System.Collections; -using System.Collections.Specialized; -using System.Linq; -using System.Windows; -using System.Windows.Controls; -using Microsoft.Xaml.Behaviors; - -namespace YoutubeDownloader.Behaviors; - -public class MultiSelectionListBoxBehavior : Behavior -{ - public static readonly DependencyProperty SelectedItemsProperty = - DependencyProperty.Register( - nameof(SelectedItems), - typeof(IList), - typeof(MultiSelectionListBoxBehavior), - new FrameworkPropertyMetadata( - null, - FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, - OnSelectedItemsChanged - ) - ); - - private static void OnSelectedItemsChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) - { - var behavior = (MultiSelectionListBoxBehavior) sender; - if (behavior._modelHandled) - return; - - if (behavior.AssociatedObject is null) - return; - - behavior._modelHandled = true; - behavior.SelectItems(); - behavior._modelHandled = false; - } - - private bool _viewHandled; - private bool _modelHandled; - - public IList? SelectedItems - { - get => (IList?) GetValue(SelectedItemsProperty); - set => SetValue(SelectedItemsProperty, value); - } - - // Propagate selected items from the model to the view - private void SelectItems() - { - _viewHandled = true; - - AssociatedObject.SelectedItems.Clear(); - if (SelectedItems is not null) - { - foreach (var item in SelectedItems) - AssociatedObject.SelectedItems.Add(item); - } - - _viewHandled = false; - } - - // Propagate selected items from the view to the model - private void OnListBoxSelectionChanged(object? sender, SelectionChangedEventArgs args) - { - if (_viewHandled) return; - if (AssociatedObject.Items.SourceCollection is null) return; - - SelectedItems = AssociatedObject.SelectedItems.Cast().ToArray(); - } - - private void OnListBoxItemsChanged(object? sender, NotifyCollectionChangedEventArgs args) - { - if (_viewHandled) return; - if (AssociatedObject.Items.SourceCollection is null) return; - SelectItems(); - } - - protected override void OnAttached() - { - base.OnAttached(); - - AssociatedObject.SelectionChanged += OnListBoxSelectionChanged; - ((INotifyCollectionChanged) AssociatedObject.Items).CollectionChanged += OnListBoxItemsChanged; - } - - protected override void OnDetaching() - { - base.OnDetaching(); - - if (AssociatedObject is not null) - { - AssociatedObject.SelectionChanged -= OnListBoxSelectionChanged; - ((INotifyCollectionChanged) AssociatedObject.Items).CollectionChanged -= OnListBoxItemsChanged; - } - } -} \ No newline at end of file diff --git a/YoutubeDownloader/Behaviors/VideoMultiSelectionListBoxBehavior.cs b/YoutubeDownloader/Behaviors/VideoMultiSelectionListBoxBehavior.cs deleted file mode 100644 index ec6f36126..000000000 --- a/YoutubeDownloader/Behaviors/VideoMultiSelectionListBoxBehavior.cs +++ /dev/null @@ -1,7 +0,0 @@ -using YoutubeExplode.Videos; - -namespace YoutubeDownloader.Behaviors; - -public class VideoMultiSelectionListBoxBehavior : MultiSelectionListBoxBehavior -{ -} \ No newline at end of file diff --git a/YoutubeDownloader/Bootstrapper.cs b/YoutubeDownloader/Bootstrapper.cs deleted file mode 100644 index d4873d631..000000000 --- a/YoutubeDownloader/Bootstrapper.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System.Net; -using Stylet; -using StyletIoC; -using YoutubeDownloader.Services; -using YoutubeDownloader.ViewModels; -using YoutubeDownloader.ViewModels.Framework; - -#if !DEBUG -using System.Windows; -using System.Windows.Threading; -#endif - -namespace YoutubeDownloader; - -public class Bootstrapper : Bootstrapper -{ - protected override void OnStart() - { - base.OnStart(); - - // Set the default theme. - // Preferred theme will be set later, once the settings are loaded. - App.SetLightTheme(); - - // Increase maximum concurrent connections - ServicePointManager.DefaultConnectionLimit = 20; - } - - protected override void ConfigureIoC(IStyletIoCBuilder builder) - { - base.ConfigureIoC(builder); - - builder.Bind().ToSelf().InSingletonScope(); - builder.Bind().ToAbstractFactory(); - } - -#if !DEBUG - protected override void OnUnhandledException(DispatcherUnhandledExceptionEventArgs args) - { - base.OnUnhandledException(args); - - MessageBox.Show( - args.Exception.ToString(), - "Error occured", - MessageBoxButton.OK, - MessageBoxImage.Error - ); - } -#endif -} \ No newline at end of file diff --git a/YoutubeDownloader/Controls/Hyperlink.cs b/YoutubeDownloader/Controls/Hyperlink.cs new file mode 100644 index 000000000..cb7854c13 --- /dev/null +++ b/YoutubeDownloader/Controls/Hyperlink.cs @@ -0,0 +1,95 @@ +using System; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Documents; +using Avalonia.Input; +using Avalonia.Interactivity; +using Avalonia.Media; +using PropertyChanged; + +namespace YoutubeDownloader.Controls; + +[DoNotNotify] +public class Hyperlink : InlineUIContainer +{ + private readonly Underline _underline; + + public Span Content => _underline; + + ///

+ /// Defines the event. + /// + public static readonly RoutedEvent ClickEvent = + RoutedEvent.Register(nameof(Click), RoutingStrategies.Bubble); + private Button _button; + + /// + /// Raised when the user clicks the button. + /// + public event EventHandler? Click + { + add => _button.AddHandler(Button.ClickEvent, value); + remove => _button.RemoveHandler(Button.ClickEvent, value); + } + + public Hyperlink() + { + _underline = new Underline(); + + var textBlock = new TextBlock + { + Inlines = new InlineCollection + { + _underline + } + }; + + + _button = new Button + { + Background = Brushes.Transparent, + Margin = new Thickness(), + Padding = new Thickness(), + Cursor = new Cursor(StandardCursorType.Hand), + Content = textBlock + }; + + Child = _button; + } + + //private static async Task OpenUrl(Uri? url) + //{ + // if (url != null) + // { + // await OpenBrowserAsync(url); + // } + //} + + //public static async Task OpenBrowserAsync(Uri uri, bool external = false) + //{ + // var url = uri.ToString(); + + // try + // { + // Process.Start(url); + // } + // catch + // { + // if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + // { + // url = url.Replace("&", "^&"); + // Process.Start(new ProcessStartInfo(url) { UseShellExecute = true }); + // } + // else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + // { + // Process.Start("xdg-open", url); + // } + // else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + // { + // Process.Start("open", url); + // } + // } + + // await Task.Yield(); + //} +} diff --git a/YoutubeDownloader/Converters/BoolToVisibilityConverter.cs b/YoutubeDownloader/Converters/BoolToVisibilityConverter.cs deleted file mode 100644 index d06998c6d..000000000 --- a/YoutubeDownloader/Converters/BoolToVisibilityConverter.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Globalization; -using System.Windows; -using System.Windows.Data; - -namespace YoutubeDownloader.Converters; - -[ValueConversion(typeof(bool), typeof(Visibility))] -public partial class BoolToVisibilityConverter : IValueConverter -{ - private readonly Visibility _trueVisibility; - private readonly Visibility _falseVisibility; - - public BoolToVisibilityConverter(Visibility trueVisibility, Visibility falseVisibility) - { - _trueVisibility = trueVisibility; - _falseVisibility = falseVisibility; - } - - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) => - value is true - ? _trueVisibility - : _falseVisibility; - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => - value is Visibility visibility - ? visibility == _trueVisibility - : throw new NotSupportedException(); -} - -public partial class BoolToVisibilityConverter -{ - public static BoolToVisibilityConverter VisibleOrCollapsed { get; } = - new(Visibility.Visible, Visibility.Collapsed); - - public static BoolToVisibilityConverter VisibleOrHidden { get; } = - new(Visibility.Visible, Visibility.Hidden); - - public static BoolToVisibilityConverter CollapsedOrVisible { get; } = - new(Visibility.Collapsed, Visibility.Visible); - - public static BoolToVisibilityConverter HiddenOrVisible { get; } = - new(Visibility.Hidden, Visibility.Visible); -} \ No newline at end of file diff --git a/YoutubeDownloader/Converters/InverseBoolConverter.cs b/YoutubeDownloader/Converters/InverseBoolConverter.cs deleted file mode 100644 index 729d310be..000000000 --- a/YoutubeDownloader/Converters/InverseBoolConverter.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Globalization; -using System.Windows.Data; - -namespace YoutubeDownloader.Converters; - -[ValueConversion(typeof(bool), typeof(bool))] -public class InverseBoolConverter : IValueConverter -{ - public static InverseBoolConverter Instance { get; } = new(); - - public object Convert(object? value, Type targetType, object parameter, CultureInfo culture) => - value is false; - - public object ConvertBack(object? value, Type targetType, object parameter, CultureInfo culture) => - value is false; -} \ No newline at end of file diff --git a/YoutubeDownloader/Converters/IsEqualConverter.cs b/YoutubeDownloader/Converters/IsEqualConverter.cs new file mode 100644 index 000000000..3de10589c --- /dev/null +++ b/YoutubeDownloader/Converters/IsEqualConverter.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using Avalonia.Data.Converters; + +namespace YoutubeDownloader.Converters; + +public class IsEqualConverter : IValueConverter +{ + public bool Inverted { get; init; } = false; + + public static IsEqualConverter IsEqual { get; } = new IsEqualConverter(); + public static IsEqualConverter IsNotEqual { get; } = new IsEqualConverter { Inverted = true }; + + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + return EqualityComparer.Default.Equals(value, parameter) != Inverted; + } + + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } +} diff --git a/YoutubeDownloader/Converters/VideoQualityPreferenceToStringConverter.cs b/YoutubeDownloader/Converters/VideoQualityPreferenceToStringConverter.cs index eac92d49f..08c5fa55a 100644 --- a/YoutubeDownloader/Converters/VideoQualityPreferenceToStringConverter.cs +++ b/YoutubeDownloader/Converters/VideoQualityPreferenceToStringConverter.cs @@ -1,16 +1,15 @@ using System; using System.Globalization; -using System.Windows.Data; +using Avalonia.Data.Converters; using YoutubeDownloader.Core.Downloading; namespace YoutubeDownloader.Converters; -[ValueConversion(typeof(VideoQualityPreference), typeof(string))] public class VideoQualityPreferenceToStringConverter : IValueConverter { public static VideoQualityPreferenceToStringConverter Instance { get; } = new(); - public object? Convert(object? value, Type targetType, object parameter, CultureInfo culture) + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is VideoQualityPreference preference) return preference.GetDisplayName(); @@ -18,6 +17,6 @@ public class VideoQualityPreferenceToStringConverter : IValueConverter return default(string); } - public object ConvertBack(object? value, Type targetType, object parameter, CultureInfo culture) => + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => throw new NotSupportedException(); } \ No newline at end of file diff --git a/YoutubeDownloader/Converters/VideoToHighestQualityThumbnailUrlConverter.cs b/YoutubeDownloader/Converters/VideoToHighestQualityThumbnailUrlConverter.cs index b0332dc33..541bcf130 100644 --- a/YoutubeDownloader/Converters/VideoToHighestQualityThumbnailUrlConverter.cs +++ b/YoutubeDownloader/Converters/VideoToHighestQualityThumbnailUrlConverter.cs @@ -1,21 +1,20 @@ using System; using System.Globalization; -using System.Windows.Data; +using Avalonia.Data.Converters; using YoutubeExplode.Common; using YoutubeExplode.Videos; namespace YoutubeDownloader.Converters; -[ValueConversion(typeof(IVideo), typeof(string))] public class VideoToHighestQualityThumbnailUrlConverter : IValueConverter { public static VideoToHighestQualityThumbnailUrlConverter Instance { get; } = new(); - public object? Convert(object? value, Type targetType, object parameter, CultureInfo culture) => + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) => value is IVideo video ? video.Thumbnails.TryGetWithHighestResolution()?.Url : null; - public object ConvertBack(object? value, Type targetType, object parameter, CultureInfo culture) => + public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => throw new NotSupportedException(); } \ No newline at end of file diff --git a/YoutubeDownloader/Converters/VideoToLowestQualityThumbnailUrlConverter.cs b/YoutubeDownloader/Converters/VideoToLowestQualityThumbnailUrlConverter.cs index 8b9555904..c593ec6d9 100644 --- a/YoutubeDownloader/Converters/VideoToLowestQualityThumbnailUrlConverter.cs +++ b/YoutubeDownloader/Converters/VideoToLowestQualityThumbnailUrlConverter.cs @@ -1,21 +1,21 @@ using System; using System.Globalization; using System.Linq; -using System.Windows.Data; +using Avalonia.Data.Converters; using YoutubeExplode.Videos; namespace YoutubeDownloader.Converters; -[ValueConversion(typeof(IVideo), typeof(string))] + public class VideoToLowestQualityThumbnailUrlConverter : IValueConverter { public static VideoToLowestQualityThumbnailUrlConverter Instance { get; } = new(); - public object? Convert(object? value, Type targetType, object parameter, CultureInfo culture) => + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) => value is IVideo video ? video.Thumbnails.MinBy(t => t.Resolution.Area)?.Url : null; - public object ConvertBack(object? value, Type targetType, object parameter, CultureInfo culture) => + public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => throw new NotSupportedException(); } \ No newline at end of file diff --git a/YoutubeDownloader/Program.cs b/YoutubeDownloader/Program.cs new file mode 100644 index 000000000..a5adced5d --- /dev/null +++ b/YoutubeDownloader/Program.cs @@ -0,0 +1,41 @@ +using System; +using Avalonia; +using Avalonia.WebView.Desktop; +using GLib; + +namespace YoutubeDownloader; + +internal class Program +{ + // 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. + [STAThread] + public static void Main(string[] args) + { + try + { + // prepare and run your App here + BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + } + catch (Exception e) + { + // TODO how to show messagebox here? As MessageBox.Avalonia needs running application + //MessageBox.Show( + // args.Exception.ToString(), + // "Error occured", + // MessageBoxButton.OK, + // MessageBoxImage.Error + //); + } + } + + // Avalonia configuration, don't remove; also used by visual designer. + public static AppBuilder BuildAvaloniaApp() + => AppBuilder.Configure() + .UsePlatformDetect() + .WithInterFont() + .LogToTrace() + .UseDesktopWebView(); +} diff --git a/YoutubeDownloader/Services/SettingsService.cs b/YoutubeDownloader/Services/SettingsService.cs index e422cb96a..7a4ce468c 100644 --- a/YoutubeDownloader/Services/SettingsService.cs +++ b/YoutubeDownloader/Services/SettingsService.cs @@ -5,8 +5,8 @@ using System.Net; using System.Text.Json; using System.Text.Json.Serialization; +using Avalonia.Styling; using Cogwheel; -using Microsoft.Win32; using PropertyChanged; using YoutubeDownloader.Core.Downloading; using Container = YoutubeExplode.Videos.Streams.Container; @@ -64,17 +64,7 @@ public partial class SettingsService { private static bool IsDarkModeEnabledByDefault() { - try - { - return Registry.CurrentUser.OpenSubKey( - "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", - false - )?.GetValue("AppsUseLightTheme") is 0; - } - catch - { - return false; - } + return App.Current?.ActualThemeVariant == ThemeVariant.Dark; } } diff --git a/YoutubeDownloader/Utils/MediaColor.cs b/YoutubeDownloader/Utils/MediaColor.cs index 4147128e1..1bccac077 100644 --- a/YoutubeDownloader/Utils/MediaColor.cs +++ b/YoutubeDownloader/Utils/MediaColor.cs @@ -1,8 +1,8 @@ -using System.Windows.Media; +using Avalonia.Media; namespace YoutubeDownloader.Utils; internal static class MediaColor { - public static Color FromHex(string hex) => (Color) ColorConverter.ConvertFromString(hex); + public static Color FromHex(string hex) => Color.Parse(hex); } \ No newline at end of file diff --git a/YoutubeDownloader/ViewModels/Components/DownloadViewModel.cs b/YoutubeDownloader/ViewModels/Components/DownloadViewModel.cs index 110cd81ff..317849202 100644 --- a/YoutubeDownloader/ViewModels/Components/DownloadViewModel.cs +++ b/YoutubeDownloader/ViewModels/Components/DownloadViewModel.cs @@ -1,8 +1,10 @@ using System; using System.IO; using System.Threading; -using System.Windows; +using System.Threading.Tasks; +using Avalonia.Input.Platform; using Gress; +using PropertyChanged; using Stylet; using YoutubeDownloader.Core.Downloading; using YoutubeDownloader.Utils; @@ -16,7 +18,7 @@ public class DownloadViewModel : PropertyChangedBase, IDisposable { private readonly IViewModelFactory _viewModelFactory; private readonly DialogManager _dialogManager; - + private readonly IClipboard _clipboard; private readonly CancellationTokenSource _cancellationTokenSource = new(); public IVideo? Video { get; set; } @@ -35,16 +37,20 @@ public class DownloadViewModel : PropertyChangedBase, IDisposable public CancellationToken CancellationToken => _cancellationTokenSource.Token; + [AlsoNotifyFor(nameof(IsRunning))] public DownloadStatus Status { get; set; } = DownloadStatus.Enqueued; + public bool IsRunning => Status is DownloadStatus.Started; + public bool IsCanceledOrFailed => Status is DownloadStatus.Canceled or DownloadStatus.Failed; public string? ErrorMessage { get; set; } - public DownloadViewModel(IViewModelFactory viewModelFactory, DialogManager dialogManager) + public DownloadViewModel(IViewModelFactory viewModelFactory, DialogManager dialogManager, IClipboard clipboard) { _viewModelFactory = viewModelFactory; _dialogManager = dialogManager; + _clipboard = clipboard; Progress.Bind( o => o.Current, @@ -103,12 +109,12 @@ await _dialogManager.ShowDialogAsync( public bool CanCopyErrorMessage => !string.IsNullOrWhiteSpace(ErrorMessage); - public void CopyErrorMessage() + public async Task CopyErrorMessage() { if (!CanCopyErrorMessage) return; - Clipboard.SetText(ErrorMessage!); + await _clipboard.SetTextAsync(ErrorMessage!); } public void Dispose() => _cancellationTokenSource.Dispose(); diff --git a/YoutubeDownloader/ViewModels/Dialogs/DownloadMultipleSetupViewModel.cs b/YoutubeDownloader/ViewModels/Dialogs/DownloadMultipleSetupViewModel.cs index b4a9a3b1b..612cc1031 100644 --- a/YoutubeDownloader/ViewModels/Dialogs/DownloadMultipleSetupViewModel.cs +++ b/YoutubeDownloader/ViewModels/Dialogs/DownloadMultipleSetupViewModel.cs @@ -1,8 +1,11 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.IO; using System.Linq; -using System.Windows; +using System.Threading.Tasks; +using Avalonia.Input.Platform; +using PropertyChanged; using YoutubeDownloader.Core.Downloading; using YoutubeDownloader.Services; using YoutubeDownloader.Utils; @@ -18,12 +21,13 @@ public class DownloadMultipleSetupViewModel : DialogScreen? AvailableVideos { get; set; } - public IReadOnlyList? SelectedVideos { get; set; } + public ObservableCollection SelectedVideos { get; set; } = new ObservableCollection(); public IReadOnlyList AvailableContainers { get; } = new[] { @@ -43,11 +47,14 @@ public class DownloadMultipleSetupViewModel : DialogScreen NotifyOfPropertyChange(nameof(CanConfirm)); } public void OnViewLoaded() @@ -56,13 +63,13 @@ public void OnViewLoaded() SelectedVideoQualityPreference = _settingsService.LastVideoQualityPreference; } - public void CopyTitle() => Clipboard.SetText(Title!); + public async Task CopyTitle() => await _clipboard.SetTextAsync(Title!); public bool CanConfirm => SelectedVideos!.Any(); - public void Confirm() + public async Task Confirm() { - var dirPath = _dialogManager.PromptDirectoryPath(); + var dirPath = await _dialogManager.PromptDirectoryPath(); if (string.IsNullOrWhiteSpace(dirPath)) return; @@ -118,9 +125,11 @@ public static DownloadMultipleSetupViewModel CreateDownloadMultipleSetupViewMode viewModel.Title = title; viewModel.AvailableVideos = availableVideos; - viewModel.SelectedVideos = preselectVideos - ? availableVideos - : Array.Empty(); + + if (preselectVideos) + { + viewModel.SelectedVideos = new ObservableCollection(availableVideos); + } return viewModel; } diff --git a/YoutubeDownloader/ViewModels/Dialogs/DownloadSingleSetupViewModel.cs b/YoutubeDownloader/ViewModels/Dialogs/DownloadSingleSetupViewModel.cs index 9efdb2c40..792fd8a45 100644 --- a/YoutubeDownloader/ViewModels/Dialogs/DownloadSingleSetupViewModel.cs +++ b/YoutubeDownloader/ViewModels/Dialogs/DownloadSingleSetupViewModel.cs @@ -2,7 +2,9 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; using System.Windows; +using Avalonia.Input.Platform; using YoutubeDownloader.Core.Downloading; using YoutubeDownloader.Services; using YoutubeDownloader.Utils; @@ -17,6 +19,7 @@ public class DownloadSingleSetupViewModel : DialogScreen private readonly IViewModelFactory _viewModelFactory; private readonly DialogManager _dialogManager; private readonly SettingsService _settingsService; + private readonly IClipboard _clipboard; public IVideo? Video { get; set; } @@ -27,11 +30,13 @@ public class DownloadSingleSetupViewModel : DialogScreen public DownloadSingleSetupViewModel( IViewModelFactory viewModelFactory, DialogManager dialogManager, - SettingsService settingsService) + SettingsService settingsService, + IClipboard clipboard) { _viewModelFactory = viewModelFactory; _dialogManager = dialogManager; _settingsService = settingsService; + _clipboard = clipboard; } public void OnViewLoaded() @@ -41,13 +46,13 @@ public void OnViewLoaded() ); } - public void CopyTitle() => Clipboard.SetText(Video!.Title); + public async Task CopyTitle() => await _clipboard.SetTextAsync(Video!.Title); - public void Confirm() + public async Task Confirm() { var container = SelectedDownloadOption!.Container; - var filePath = _dialogManager.PromptSaveFilePath( + var filePath = await _dialogManager.PromptSaveFilePath( $"{container.Name} file|*.{container.Name}", FileNameTemplate.Apply( _settingsService.FileNameTemplate, diff --git a/YoutubeDownloader/ViewModels/Framework/DialogManager.cs b/YoutubeDownloader/ViewModels/Framework/DialogManager.cs index 777567ada..129cf72f0 100644 --- a/YoutubeDownloader/ViewModels/Framework/DialogManager.cs +++ b/YoutubeDownloader/ViewModels/Framework/DialogManager.cs @@ -1,9 +1,13 @@ using System; +using System.Collections.Generic; using System.IO; +using System.Linq; using System.Threading; using System.Threading.Tasks; -using MaterialDesignThemes.Wpf; -using Ookii.Dialogs.Wpf; +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Platform.Storage; +using DialogHostAvalonia; using Stylet; namespace YoutubeDownloader.ViewModels.Framework; @@ -53,31 +57,99 @@ void OnScreenClosed(object? closeSender, EventArgs closeArgs) } } - public string? PromptSaveFilePath(string filter = "All files|*.*", string defaultFilePath = "") + public async Task PromptSaveFilePath(string? filter = null, string defaultFilePath = "") { - var dialog = new VistaSaveFileDialog + var topLevel = (Application.Current?.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)?.MainWindow; + + var storageProvider = topLevel?.StorageProvider; + if (storageProvider is null) { - Filter = filter, - AddExtension = true, - FileName = defaultFilePath, - DefaultExt = Path.GetExtension(defaultFilePath) - }; + return null; + } - return dialog.ShowDialog() == true ? dialog.FileName : null; + var filePickResult = await storageProvider.SaveFilePickerAsync(new() + { + FileTypeChoices = ParseFileTypes(filter), + SuggestedFileName = defaultFilePath, + DefaultExtension = Path.GetExtension(defaultFilePath).TrimStart('.') + }); + + if (filePickResult?.Path is Uri path) + { + return path.LocalPath; + } + + return null; } - public string? PromptDirectoryPath(string defaultDirPath = "") + public async Task PromptDirectoryPath(string defaultDirPath = "") { - var dialog = new VistaFolderBrowserDialog + var topLevel = (Application.Current?.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime)?.MainWindow; + + var storageProvider = topLevel?.StorageProvider; + if (storageProvider is null) + { + return null; + } + + var startLocation = await GetStorageFolder(storageProvider, defaultDirPath); + var folderPickResult = await storageProvider.OpenFolderPickerAsync(new() { - SelectedPath = defaultDirPath - }; + AllowMultiple = false, + SuggestedStartLocation = startLocation + }); + - return dialog.ShowDialog() == true ? dialog.SelectedPath : null; + if (folderPickResult.FirstOrDefault()?.Path is Uri path) + { + return path.LocalPath; + } + + return null; } public void Dispose() { _dialogLock.Dispose(); } + + private static async Task GetStorageFolder(IStorageProvider storageProvider, string path) + { + if (string.IsNullOrEmpty(path)) + { + return null; + } + + var storageFolder = await storageProvider.TryGetFolderFromPathAsync(path); + + return storageFolder; + } + + private static IReadOnlyList ParseFileTypes(string? filterString) + { + if (filterString is null) + { + return new[] { FilePickerFileTypes.All }; + } + + var filters = new List(); + + var filterStrings = filterString.Split('|').Chunk(2); + + foreach (var filter in filterStrings) + { + if (filter.Length == 2) + { + var extensions = filter[1].Split(";").ToArray(); + var appleTypeIdentifiers = extensions.Select(s => s.Replace("*.", "public.")).ToArray(); + filters.Add(new FilePickerFileType(filter[0]) + { + Patterns = extensions, + AppleUniformTypeIdentifiers = appleTypeIdentifiers + }); + } + } + + return filters; + } } \ No newline at end of file diff --git a/YoutubeDownloader/ViewModels/RootViewModel.cs b/YoutubeDownloader/ViewModels/RootViewModel.cs index 0a71c5cbc..f1f7ceaab 100644 --- a/YoutubeDownloader/ViewModels/RootViewModel.cs +++ b/YoutubeDownloader/ViewModels/RootViewModel.cs @@ -1,6 +1,8 @@ using System; using System.Threading.Tasks; -using MaterialDesignThemes.Wpf; +using Avalonia.Threading; +using Material.Styles.Controls; +using Material.Styles.Models; using Stylet; using YoutubeDownloader.Services; using YoutubeDownloader.Utils; @@ -17,7 +19,7 @@ public class RootViewModel : Screen private readonly SettingsService _settingsService; private readonly UpdateService _updateService; - public SnackbarMessageQueue Notifications { get; } = new(TimeSpan.FromSeconds(5)); + private readonly TimeSpan _snackbarMessageDuration = TimeSpan.FromSeconds(5); public DashboardViewModel Dashboard { get; } @@ -69,22 +71,28 @@ private async Task CheckForUpdatesAsync() if (updateVersion is null) return; - Notifications.Enqueue($"Downloading update to {App.Name} v{updateVersion}..."); + SnackbarHost.Post(new SnackbarModel($"Downloading update to {App.Name} v{updateVersion}...", _snackbarMessageDuration), null, DispatcherPriority.Normal); await _updateService.PrepareUpdateAsync(updateVersion); - Notifications.Enqueue( + SnackbarHost.Post(new SnackbarModel( "Update has been downloaded and will be installed when you exit", - "INSTALL NOW", () => + _snackbarMessageDuration, + new SnackbarButtonModel { - _updateService.FinalizeUpdate(true); - RequestClose(); - } - ); + Text = "INSTALL NOW", + Action = () => + { + _updateService.FinalizeUpdate(true); + RequestClose(); + } + }), + null, + DispatcherPriority.Normal); } catch { // Failure to update shouldn't crash the application - Notifications.Enqueue("Failed to perform application update"); + SnackbarHost.Post(new SnackbarModel("Failed to perform application update", _snackbarMessageDuration), null, DispatcherPriority.Normal); } } @@ -113,10 +121,11 @@ protected override void OnViewLoaded() // App has just been updated, display the changelog if (_settingsService.LastAppVersion is not null && _settingsService.LastAppVersion != App.Version) { - Notifications.Enqueue( - $"Successfully updated to {App.Name} v{App.VersionString}", - "CHANGELOG", () => ProcessEx.StartShellExecute(App.ChangelogUrl) - ); + // TODO + //Notifications.Enqueue( + // $"Successfully updated to {App.Name} v{App.VersionString}", + // "CHANGELOG", () => ProcessEx.StartShellExecute(App.ChangelogUrl) + //); _settingsService.LastAppVersion = App.Version; _settingsService.Save(); diff --git a/YoutubeDownloader/Views/Components/DashboardView.xaml b/YoutubeDownloader/Views/Components/DashboardView.xaml index 0c26acec7..ee856fda3 100644 --- a/YoutubeDownloader/Views/Components/DashboardView.xaml +++ b/YoutubeDownloader/Views/Components/DashboardView.xaml @@ -1,81 +1,71 @@ - - - - - - - + + - + - - - - - - - - - - - - - - - - - + Margin="8" + VerticalAlignment="Center" + Foreground="{DynamicResource PrimaryHueMidBrush}" + Kind="Search" /> + + + + + + @@ -85,12 +75,12 @@ Padding="4" Command="{s:Action ShowAuthSetup}" Foreground="{DynamicResource MaterialDesignDarkForeground}" - Style="{DynamicResource MaterialDesignFlatButton}" - ToolTip="Authentication"> + Theme="{StaticResource FlatButton}" + ToolTip.Tip="Authentication"> - @@ -103,12 +93,12 @@ Padding="4" Command="{s:Action ShowSettings}" Foreground="{DynamicResource MaterialDesignDarkForeground}" - Style="{DynamicResource MaterialDesignFlatButton}" - ToolTip="Settings"> + Theme="{StaticResource FlatButton}" + ToolTip.Tip="Settings"> - @@ -128,8 +118,8 @@ - + + IsVisible="{Binding IsDownloadsAvailable}"> @@ -173,21 +162,16 @@ - - - + + @@ -199,7 +183,7 @@ Width="48" Height="48" VerticalAlignment="Center" - Source="{Binding Video, Converter={x:Static converters:VideoToLowestQualityThumbnailUrlConverter.Instance}}" /> + asyncImageLoader:ImageLoader.Source="{Binding Video, Converter={x:Static converters:VideoToLowestQualityThumbnailUrlConverter.Instance}}" /> @@ -217,7 +201,7 @@ Foreground="{DynamicResource MaterialDesignBody}" Text="{Binding FileName}" TextTrimming="CharacterEllipsis" - ToolTip="{Binding FileName}" /> + ToolTip.Tip="{Binding FileName}" /> @@ -229,84 +213,58 @@ SortMemberPath="ProgressOperation.Progress"> - - - - - + - - - - + Value="{Binding Progress.Current.Fraction, Mode=OneWay}" + IsVisible="{Binding IsRunning}"/> - - + + + + - + + @@ -327,10 +285,10 @@ VerticalAlignment="Center" s:View.ActionTarget="{Binding}" Command="{s:Action ShowFile}" - Style="{DynamicResource MaterialDesignFlatButton}" - ToolTip="Show file" - Visibility="{Binding CanShowFile, Converter={x:Static converters:BoolToVisibilityConverter.VisibleOrCollapsed}}"> - + @@ -342,10 +300,10 @@ VerticalAlignment="Center" s:View.ActionTarget="{Binding}" Command="{s:Action OpenFile}" - Style="{DynamicResource MaterialDesignFlatButton}" - ToolTip="Play" - Visibility="{Binding CanOpenFile, Converter={x:Static converters:BoolToVisibilityConverter.VisibleOrCollapsed}}"> - + @@ -357,10 +315,10 @@ VerticalAlignment="Center" s:View.ActionTarget="{Binding}" Command="{s:Action Cancel}" - Style="{DynamicResource MaterialDesignFlatButton}" - ToolTip="Cancel download" - Visibility="{Binding CanCancel, Converter={x:Static converters:BoolToVisibilityConverter.VisibleOrCollapsed}}"> - + @@ -372,10 +330,10 @@ VerticalAlignment="Center" Command="{s:Action RestartDownload}" CommandParameter="{Binding}" - Style="{DynamicResource MaterialDesignFlatButton}" - ToolTip="Restart download" - Visibility="{Binding IsCanceledOrFailed, Converter={x:Static converters:BoolToVisibilityConverter.VisibleOrCollapsed}}"> - + @@ -384,8 +342,19 @@ + + + + + + + + + + - \ No newline at end of file + + diff --git a/YoutubeDownloader/Views/Components/DashboardView.xaml.cs b/YoutubeDownloader/Views/Components/DashboardView.xaml.cs index 664922e72..7d1c3f17f 100644 --- a/YoutubeDownloader/Views/Components/DashboardView.xaml.cs +++ b/YoutubeDownloader/Views/Components/DashboardView.xaml.cs @@ -1,23 +1,28 @@ -using System.Windows.Input; +using Avalonia.Controls; +using Avalonia.Input; +using Avalonia.Interactivity; +using PropertyChanged; namespace YoutubeDownloader.Views.Components; -public partial class DashboardView +[DoNotNotify] +public partial class DashboardView : UserControl { public DashboardView() { InitializeComponent(); + QueryTextBox.AddHandler(InputElement.KeyDownEvent, OnQueryTextBoxKeyDown, RoutingStrategies.Tunnel); } - private void QueryTextBox_OnPreviewKeyDown(object sender, KeyEventArgs args) + private void OnQueryTextBoxKeyDown(object? sender, KeyEventArgs e) { // Disable new lines when pressing enter without shift - if (args.Key == Key.Enter && args.KeyboardDevice.Modifiers != ModifierKeys.Shift) + if (e.Key == Key.Enter && e.KeyModifiers != KeyModifiers.Shift) { - args.Handled = true; + e.Handled = true; // We handle the event here so we have to directly "press" the default button - AccessKeyManager.ProcessKey(null, "\x000D", false); + ProcessQueryButton.Command?.Execute(ProcessQueryButton.CommandParameter); } } } \ No newline at end of file diff --git a/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml b/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml index 20a4ef686..ec4c87a4d 100644 --- a/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml +++ b/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml @@ -1,17 +1,17 @@  @@ -39,8 +39,8 @@ Margin="16" HorizontalAlignment="Center" VerticalAlignment="Center" - Visibility="{Binding IsAuthenticated, Converter={x:Static s:BoolToVisibilityConverter.Instance}}"> - + - - - Log out - + @@ -74,8 +75,8 @@ Margin="6" Padding="4" Command="{Binding ShowAuthSetup}" - Foreground="{DynamicResource MaterialDesignDarkForeground}" - Theme="{StaticResource FlatButton}" + Foreground="{DynamicResource MaterialDarkForegroundBrush}" + Theme="{StaticResource MaterialFlatButton}" ToolTip.Tip="Authentication"> @@ -92,8 +93,8 @@ Margin="6" Padding="4" Command="{Binding ShowSettings}" - Foreground="{DynamicResource MaterialDesignDarkForeground}" - Theme="{StaticResource FlatButton}" + Foreground="{DynamicResource MaterialDarkForegroundBrush}" + Theme="{StaticResource MaterialFlatButton}" ToolTip.Tip="Settings"> @@ -108,12 +109,12 @@ - + + Theme="{StaticResource MaterialOutlineButton}" /> \ No newline at end of file diff --git a/YoutubeDownloader/Views/Dialogs/DownloadMultipleSetupView.xaml b/YoutubeDownloader/Views/Dialogs/DownloadMultipleSetupView.xaml index b7349cf3e..5a573c4be 100644 --- a/YoutubeDownloader/Views/Dialogs/DownloadMultipleSetupView.xaml +++ b/YoutubeDownloader/Views/Dialogs/DownloadMultipleSetupView.xaml @@ -2,11 +2,8 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:b="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity" - xmlns:behaviors="clr-namespace:YoutubeDownloader.Behaviors" xmlns:converters="clr-namespace:YoutubeDownloader.Converters" xmlns:dialogs="clr-namespace:YoutubeDownloader.ViewModels.Dialogs" - xmlns:materialDesign="clr-namespace:Material.Styles.Controls;assembly=Material.Styles" xmlns:materialIcon="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia" xmlns:asyncImageLoader="clr-namespace:AsyncImageLoader;assembly=AsyncImageLoader.Avalonia" xmlns:s="using:Stylet.Xaml" @@ -169,7 +166,7 @@ diff --git a/YoutubeDownloader/Views/Dialogs/MessageBoxView.xaml b/YoutubeDownloader/Views/Dialogs/MessageBoxView.xaml index b5810f274..8c6947d03 100644 --- a/YoutubeDownloader/Views/Dialogs/MessageBoxView.xaml +++ b/YoutubeDownloader/Views/Dialogs/MessageBoxView.xaml @@ -16,6 +16,7 @@ Title="Message Title" Message="This is a message" OkButtonText="OK" + IsOkButtonVisible="True" CancelButtonText="CANCEL" IsCancelButtonVisible="True"/> @@ -60,7 +61,7 @@ Command="{Binding Close}" Content="{Binding OkButtonText}" IsDefault="True" - Theme="{StaticResource MaterialOutlineButton}" + Theme="{DynamicResource MaterialOutlineButton}" IsVisible="{Binding IsOkButtonVisible}"> True diff --git a/YoutubeDownloader/Views/Dialogs/SettingsView.xaml b/YoutubeDownloader/Views/Dialogs/SettingsView.xaml index 98f174c4d..314f86e68 100644 --- a/YoutubeDownloader/Views/Dialogs/SettingsView.xaml +++ b/YoutubeDownloader/Views/Dialogs/SettingsView.xaml @@ -6,11 +6,11 @@ Width="380" mc:Ignorable="d" x:Class="YoutubeDownloader.Views.Dialogs.SettingsView" + Theme="{DynamicResource MaterialDesignRoot}" x:DataType="dialogs:SettingsViewModel"> - - + @@ -164,7 +164,7 @@ diff --git a/YoutubeDownloader/Views/Dialogs/SettingsView.xaml.cs b/YoutubeDownloader/Views/Dialogs/SettingsView.xaml.cs index 469311866..e9451d854 100644 --- a/YoutubeDownloader/Views/Dialogs/SettingsView.xaml.cs +++ b/YoutubeDownloader/Views/Dialogs/SettingsView.xaml.cs @@ -1,5 +1,4 @@ using Avalonia.Interactivity; -using YoutubeDownloader.Views.Components; using YoutubeDownloader.Views.Framework; namespace YoutubeDownloader.Views.Dialogs; diff --git a/YoutubeDownloader/Views/Framework/ViewModelAwareUserControl.cs b/YoutubeDownloader/Views/Framework/ViewModelAwareUserControl.cs index e78bbb9b8..73597e3e9 100644 --- a/YoutubeDownloader/Views/Framework/ViewModelAwareUserControl.cs +++ b/YoutubeDownloader/Views/Framework/ViewModelAwareUserControl.cs @@ -1,7 +1,6 @@ using System; using Avalonia.Controls; using PropertyChanged; -using YoutubeDownloader.ViewModels; using YoutubeDownloader.ViewModels.Framework; namespace YoutubeDownloader.Views.Framework; diff --git a/YoutubeDownloader/Views/Framework/ViewModelAwareWindow.cs b/YoutubeDownloader/Views/Framework/ViewModelAwareWindow.cs index b49b8becf..2dfdac367 100644 --- a/YoutubeDownloader/Views/Framework/ViewModelAwareWindow.cs +++ b/YoutubeDownloader/Views/Framework/ViewModelAwareWindow.cs @@ -1,7 +1,6 @@ using System; using Avalonia.Controls; using PropertyChanged; -using YoutubeDownloader.ViewModels; using YoutubeDownloader.ViewModels.Framework; namespace YoutubeDownloader.Views.Framework; diff --git a/YoutubeDownloader/Views/RootView.xaml.cs b/YoutubeDownloader/Views/RootView.xaml.cs index 39c78daa1..5d38a877f 100644 --- a/YoutubeDownloader/Views/RootView.xaml.cs +++ b/YoutubeDownloader/Views/RootView.xaml.cs @@ -1,4 +1,3 @@ -using Avalonia.Controls; using PropertyChanged; using YoutubeDownloader.Views.Framework; diff --git a/YoutubeDownloader/YoutubeDownloader.csproj b/YoutubeDownloader/YoutubeDownloader.csproj index 499d32964..96c6767df 100644 --- a/YoutubeDownloader/YoutubeDownloader.csproj +++ b/YoutubeDownloader/YoutubeDownloader.csproj @@ -20,7 +20,6 @@ - @@ -34,7 +33,6 @@ - From 7fbad0eff32aba27c8be004482197961c19a019c Mon Sep 17 00:00:00 2001 From: mrxx99 Date: Fri, 23 Feb 2024 20:47:43 +0100 Subject: [PATCH 31/56] properly getting dark mode of platform --- YoutubeDownloader/Services/SettingsService.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/YoutubeDownloader/Services/SettingsService.cs b/YoutubeDownloader/Services/SettingsService.cs index 1ab8e2843..cbe76eab8 100644 --- a/YoutubeDownloader/Services/SettingsService.cs +++ b/YoutubeDownloader/Services/SettingsService.cs @@ -5,7 +5,7 @@ using System.Net; using System.Text.Json; using System.Text.Json.Serialization; -using Avalonia.Styling; +using Avalonia.Platform; using Cogwheel; using PropertyChanged; using YoutubeDownloader.Core.Downloading; @@ -64,7 +64,9 @@ public partial class SettingsService { private static bool IsDarkModeEnabledByDefault() { - return App.Current?.ActualThemeVariant == ThemeVariant.Dark; + var platformColors = App.Current?.PlatformSettings?.GetColorValues(); + var isDark = platformColors?.ThemeVariant == PlatformThemeVariant.Dark; + return isDark; } } From 56acb0e8030e5a89be7ebf5c06c5037d5aead914 Mon Sep 17 00:00:00 2001 From: mrxx99 Date: Fri, 23 Feb 2024 21:07:33 +0100 Subject: [PATCH 32/56] add missing close button in settings --- YoutubeDownloader/Views/Dialogs/SettingsView.xaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/YoutubeDownloader/Views/Dialogs/SettingsView.xaml b/YoutubeDownloader/Views/Dialogs/SettingsView.xaml index 314f86e68..e40a5ce63 100644 --- a/YoutubeDownloader/Views/Dialogs/SettingsView.xaml +++ b/YoutubeDownloader/Views/Dialogs/SettingsView.xaml @@ -203,6 +203,16 @@ + + + Classes="accent" + Content="Log out" + FontSize="18" /> From d66dd9ea76b553ccf65bf49aedfdc34ae1a435d3 Mon Sep 17 00:00:00 2001 From: mrxx99 Date: Tue, 5 Mar 2024 20:22:30 +0100 Subject: [PATCH 54/56] remove unused WebView event handler --- YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml | 1 - YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml.cs | 8 -------- 2 files changed, 9 deletions(-) diff --git a/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml b/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml index 22f831152..d8b45adc1 100644 --- a/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml +++ b/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml @@ -81,7 +81,6 @@ Loaded="WebBrowser_OnLoaded" WebViewCreated="WebBrowser_OnWebViewCreated" NavigationStarting="WebBrowser_OnNavigationStarting" - Unloaded="WebBrowser_OnUnloaded" IsVisible="{Binding !IsAuthenticated}" /> diff --git a/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml.cs b/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml.cs index a4e1525c3..08bce49a1 100644 --- a/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml.cs +++ b/YoutubeDownloader/Views/Dialogs/AuthSetupView.xaml.cs @@ -71,12 +71,4 @@ WebViewUrlLoadingEventArg args ViewModel.Cookies = cookies.Select(c => c.ToSystemNetCookie()).ToArray(); } } - - private void WebBrowser_OnUnloaded(object? sender, RoutedEventArgs e) - { - // This will most likely not work because WebView2 would still be running at this point, - // and there doesn't seem to be any way to shut it down using the .NET API. - // if (_coreWebView2?.Profile is not null) - // await _coreWebView2.Profile.ClearBrowsingDataAsync(); - } } From fd72e7bfeb8a61d97cea0f7ebecefd5ca04d5745 Mon Sep 17 00:00:00 2001 From: mrxx99 Date: Mon, 11 Mar 2024 22:13:18 +0100 Subject: [PATCH 55/56] add Async PostFix and fix commands --- .../Components/DashboardViewModel.cs | 26 ++++++++++++++++--- .../Components/DownloadViewModel.cs | 26 ++++++++++++++++--- .../Dialogs/DownloadMultipleSetupViewModel.cs | 7 ++--- .../Dialogs/DownloadSingleSetupViewModel.cs | 11 +++++--- .../ViewModels/Framework/DialogManager.cs | 8 +++--- YoutubeDownloader/ViewModels/RootViewModel.cs | 4 +-- .../Views/Components/DashboardView.xaml | 12 ++++----- .../Views/Components/DashboardView.xaml.cs | 3 ++- .../Dialogs/DownloadMultipleSetupView.xaml | 2 +- .../Dialogs/DownloadSingleSetupView.xaml | 4 +-- 10 files changed, 72 insertions(+), 31 deletions(-) diff --git a/YoutubeDownloader/ViewModels/Components/DashboardViewModel.cs b/YoutubeDownloader/ViewModels/Components/DashboardViewModel.cs index 922d368da..2c8769c19 100644 --- a/YoutubeDownloader/ViewModels/Components/DashboardViewModel.cs +++ b/YoutubeDownloader/ViewModels/Components/DashboardViewModel.cs @@ -2,8 +2,10 @@ using System.Collections.ObjectModel; using System.IO; using System.Linq; +using System.Reactive.Linq; using System.Threading.Tasks; using Avalonia.Metadata; +using Avalonia.Threading; using CommunityToolkit.Mvvm.Input; using Gress; using Gress.Completable; @@ -61,16 +63,29 @@ SettingsService settingsService Downloads .WhenAnyValue(o => o.Count) .Subscribe(_ => OnPropertyChanged(nameof(IsDownloadsAvailable))); + this.WhenAnyValue(o => o.Query) + .ObserveOn(RxApp.MainThreadScheduler) + .Subscribe(_ => ProcessQueryCommand.NotifyCanExecuteChanged()); + this.WhenAnyValue(o => o.IsBusy) + .ObserveOn(RxApp.MainThreadScheduler) + .Subscribe(_ => + { + ProcessQueryCommand.NotifyCanExecuteChanged(); + ShowAuthSetupCommand.NotifyCanExecuteChanged(); + ShowSettingsCommand.NotifyCanExecuteChanged(); + }); } public bool CanShowAuthSetup => !IsBusy; - public async Task ShowAuthSetup() => + [RelayCommand(CanExecute = nameof(CanShowAuthSetup))] + public async Task ShowAuthSetupAsync() => await _dialogManager.ShowDialogAsync(_viewModelFactory.CreateAuthSetupViewModel()); public bool CanShowSettings => !IsBusy; - public async Task ShowSettings() => + [RelayCommand(CanExecute = nameof(CanShowSettings))] + public async Task ShowSettingsAsync() => await _dialogManager.ShowDialogAsync(_viewModelFactory.CreateSettingsViewModel()); private void EnqueueDownload(DownloadViewModel download, int position = 0) @@ -157,10 +172,13 @@ ex is OperationCanceledException [DependsOn(nameof(IsBusy))] [DependsOn(nameof(Query))] - public bool CanProcessQuery(object _) => !IsBusy && !string.IsNullOrWhiteSpace(Query); + public bool CanProcessQuery => !IsBusy && !string.IsNullOrWhiteSpace(Query); - public async Task ProcessQuery() + [RelayCommand(CanExecute = nameof(CanProcessQuery))] + public async Task ProcessQueryAsync() { + Dispatcher.UIThread.CheckAccess(); + if (string.IsNullOrWhiteSpace(Query)) return; diff --git a/YoutubeDownloader/ViewModels/Components/DownloadViewModel.cs b/YoutubeDownloader/ViewModels/Components/DownloadViewModel.cs index 3a0d8fc57..774cc07c2 100644 --- a/YoutubeDownloader/ViewModels/Components/DownloadViewModel.cs +++ b/YoutubeDownloader/ViewModels/Components/DownloadViewModel.cs @@ -1,8 +1,10 @@ using System; using System.IO; +using System.Reactive.Linq; using System.Threading; using System.Threading.Tasks; using Avalonia.Input.Platform; +using CommunityToolkit.Mvvm.Input; using Gress; using PropertyChanged; using ReactiveUI; @@ -14,7 +16,7 @@ namespace YoutubeDownloader.ViewModels.Components; -public class DownloadViewModel : ViewModelBase, IDisposable +public partial class DownloadViewModel : ViewModelBase, IDisposable { private readonly IViewModelFactory _viewModelFactory; private readonly DialogManager _dialogManager; @@ -59,10 +61,23 @@ IClipboard clipboard Progress .WhenAnyValue(o => o.Current) .Subscribe(_ => OnPropertyChanged(nameof(IsProgressIndeterminate))); + this.WhenAnyValue(o => o.Status) + .ObserveOn(RxApp.MainThreadScheduler) + .Subscribe(_ => + { + OnPropertyChanged(nameof(IsRunning)); + CancelCommand.NotifyCanExecuteChanged(); + ShowFileCommand.NotifyCanExecuteChanged(); + OpenFileCommand.NotifyCanExecuteChanged(); + }); + this.WhenAnyValue(o => o.ErrorMessage) + .ObserveOn(RxApp.MainThreadScheduler) + .Subscribe(_ => CopyErrorMessageCommand.NotifyCanExecuteChanged()); } public bool CanCancel => Status is DownloadStatus.Enqueued or DownloadStatus.Started; + [RelayCommand(CanExecute = nameof(CanCancel))] public void Cancel() { if (!CanCancel) @@ -73,7 +88,8 @@ public void Cancel() public bool CanShowFile => Status == DownloadStatus.Completed; - public async Task ShowFile() + [RelayCommand(CanExecute = nameof(CanShowFile))] + public async Task ShowFileAsync() { if (!CanShowFile) return; @@ -93,7 +109,8 @@ await _dialogManager.ShowDialogAsync( public bool CanOpenFile => Status == DownloadStatus.Completed; - public async Task OpenFile() + [RelayCommand(CanExecute = nameof(CanOpenFile))] + public async Task OpenFileAsync() { if (!CanOpenFile) return; @@ -112,7 +129,8 @@ await _dialogManager.ShowDialogAsync( public bool CanCopyErrorMessage => !string.IsNullOrWhiteSpace(ErrorMessage); - public async Task CopyErrorMessage() + [RelayCommand(CanExecute = nameof(CanCopyErrorMessage))] + public async Task CopyErrorMessageAsync() { if (!CanCopyErrorMessage) return; diff --git a/YoutubeDownloader/ViewModels/Dialogs/DownloadMultipleSetupViewModel.cs b/YoutubeDownloader/ViewModels/Dialogs/DownloadMultipleSetupViewModel.cs index 69eb47ff5..417458400 100644 --- a/YoutubeDownloader/ViewModels/Dialogs/DownloadMultipleSetupViewModel.cs +++ b/YoutubeDownloader/ViewModels/Dialogs/DownloadMultipleSetupViewModel.cs @@ -48,14 +48,15 @@ protected override void OnViewLoaded() SelectedVideos.CollectionChanged += (_, _) => ConfirmCommand.NotifyCanExecuteChanged(); } - public async Task CopyTitle() => await clipboard.SetTextAsync(Title!); + [RelayCommand] + public async Task CopyTitleAsync() => await clipboard.SetTextAsync(Title!); public bool CanConfirm => SelectedVideos.Any(); [RelayCommand(CanExecute = nameof(CanConfirm))] - public async Task Confirm() + public async Task ConfirmAsync() { - var dirPath = await dialogManager.PromptDirectoryPath(); + var dirPath = await dialogManager.PromptDirectoryPathAsync(); if (string.IsNullOrWhiteSpace(dirPath)) return; diff --git a/YoutubeDownloader/ViewModels/Dialogs/DownloadSingleSetupViewModel.cs b/YoutubeDownloader/ViewModels/Dialogs/DownloadSingleSetupViewModel.cs index 241c3fd76..83cc77357 100644 --- a/YoutubeDownloader/ViewModels/Dialogs/DownloadSingleSetupViewModel.cs +++ b/YoutubeDownloader/ViewModels/Dialogs/DownloadSingleSetupViewModel.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using Avalonia.Input.Platform; using Avalonia.Platform.Storage; +using CommunityToolkit.Mvvm.Input; using YoutubeDownloader.Core.Downloading; using YoutubeDownloader.Services; using YoutubeDownloader.Utils; @@ -14,7 +15,7 @@ namespace YoutubeDownloader.ViewModels.Dialogs; -public class DownloadSingleSetupViewModel( +public partial class DownloadSingleSetupViewModel( IViewModelFactory viewModelFactory, DialogManager dialogManager, SettingsService settingsService, @@ -34,9 +35,11 @@ protected override void OnViewLoaded() ); } - public async Task CopyTitle() => await clipboard.SetTextAsync(Video!.Title); + [RelayCommand] + public async Task CopyTitleAsync() => await clipboard.SetTextAsync(Video!.Title); - public async Task Confirm() + [RelayCommand] + public async Task ConfirmAsync() { var container = SelectedDownloadOption!.Container; @@ -45,7 +48,7 @@ public async Task Confirm() Patterns = new[] { $"*.{container.Name}" }, }; - var filePath = await dialogManager.PromptSaveFilePath( + var filePath = await dialogManager.PromptSaveFilePathAsync( new[] { fileType }, FileNameTemplate.Apply(settingsService.FileNameTemplate, Video!, container) ); diff --git a/YoutubeDownloader/ViewModels/Framework/DialogManager.cs b/YoutubeDownloader/ViewModels/Framework/DialogManager.cs index 34a2250ef..20ed07416 100644 --- a/YoutubeDownloader/ViewModels/Framework/DialogManager.cs +++ b/YoutubeDownloader/ViewModels/Framework/DialogManager.cs @@ -49,7 +49,7 @@ void OnScreenClosed(object? closeSender, EventArgs closeArgs) } } - public async Task PromptSaveFilePath( + public async Task PromptSaveFilePathAsync( IReadOnlyList? fileTypes = null, string defaultFilePath = "" ) @@ -79,7 +79,7 @@ void OnScreenClosed(object? closeSender, EventArgs closeArgs) return null; } - public async Task PromptDirectoryPath(string defaultDirPath = "") + public async Task PromptDirectoryPathAsync(string defaultDirPath = "") { var topLevel = viewManager.GetTopLevel(); @@ -89,7 +89,7 @@ void OnScreenClosed(object? closeSender, EventArgs closeArgs) return null; } - var startLocation = await GetStorageFolder(storageProvider, defaultDirPath); + var startLocation = await GetStorageFolderAsync(storageProvider, defaultDirPath); var folderPickResult = await storageProvider.OpenFolderPickerAsync( new() { AllowMultiple = false, SuggestedStartLocation = startLocation } ); @@ -107,7 +107,7 @@ public void Dispose() _dialogLock.Dispose(); } - private static async Task GetStorageFolder( + private static async Task GetStorageFolderAsync( IStorageProvider storageProvider, string path ) diff --git a/YoutubeDownloader/ViewModels/RootViewModel.cs b/YoutubeDownloader/ViewModels/RootViewModel.cs index 69fe191b3..4210842ab 100644 --- a/YoutubeDownloader/ViewModels/RootViewModel.cs +++ b/YoutubeDownloader/ViewModels/RootViewModel.cs @@ -94,7 +94,7 @@ private async Task CheckForUpdatesAsync() } } - public async Task OnViewFullyLoaded() + public async Task OnViewFullyLoadedAsync() { await ShowUkraineSupportMessageAsync(); await CheckForUpdatesAsync(); @@ -130,7 +130,7 @@ _settingsService.LastAppVersion is not null _settingsService.Save(); } - _ = OnViewFullyLoaded(); + _ = OnViewFullyLoadedAsync(); } protected override void OnClose() diff --git a/YoutubeDownloader/Views/Components/DashboardView.xaml b/YoutubeDownloader/Views/Components/DashboardView.xaml index 583424e27..59a14d094 100644 --- a/YoutubeDownloader/Views/Components/DashboardView.xaml +++ b/YoutubeDownloader/Views/Components/DashboardView.xaml @@ -51,7 +51,7 @@ x:Name="ProcessQueryButton" Margin="0,0,6,0" Padding="4" - Command="{Binding ProcessQuery}" + Command="{Binding ProcessQueryCommand}" IsDefault="True" Theme="{StaticResource MaterialFlatButton}" ToolTip.Tip="Process query (Enter)"> @@ -70,7 +70,7 @@ Grid.Column="1" Margin="6" Padding="4" - Command="{Binding ShowAuthSetup}" + Command="{Binding ShowAuthSetupCommand}" Foreground="{DynamicResource MaterialDarkForegroundBrush}" Theme="{StaticResource MaterialFlatButton}" ToolTip.Tip="Authentication"> @@ -88,7 +88,7 @@ Grid.Column="2" Margin="6" Padding="4" - Command="{Binding ShowSettings}" + Command="{Binding ShowSettingsCommand}" Foreground="{DynamicResource MaterialDarkForegroundBrush}" Theme="{StaticResource MaterialFlatButton}" ToolTip.Tip="Settings"> @@ -279,7 +279,7 @@