Ruben 1 year ago
parent
commit
9a1468bd83

+ 6 - 7
src/PicView.Avalonia/App.axaml

@@ -1,10 +1,9 @@
-<Application xmlns="https://github.com/avaloniaui"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="PicView.Avalonia.App"
-             RequestedThemeVariant="Default">
-             <!-- "Default" ThemeVariant follows system theme variant. "Dark" or "Light" are other available options. -->
-  
+<Application
+    x:Class="PicView.Avalonia.App"
+    xmlns="https://github.com/avaloniaui"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    RequestedThemeVariant="Default">
     <Application.Styles>
-        <FluentTheme />
+        <SimpleTheme />
     </Application.Styles>
 </Application>

+ 2 - 12
src/PicView.Avalonia/App.axaml.cs

@@ -1,7 +1,6 @@
 using Avalonia;
 using Avalonia.Controls.ApplicationLifetimes;
 using Avalonia.Markup.Xaml;
-using PicView.Avalonia.ViewModels;
 using PicView.Avalonia.Views;
 using PicView.Core.Config;
 using System.Runtime;
@@ -11,13 +10,10 @@ namespace PicView.Avalonia;
 
 public partial class App : Application
 {
-    private ISettingsManager settingsManager;
-
     public override void Initialize()
     {
         ProfileOptimization.SetProfileRoot(AppDomain.CurrentDomain.BaseDirectory);
         ProfileOptimization.StartProfile("ProfileOptimization");
-        settingsManager = new SettingsManager();
         AvaloniaXamlLoader.Load(this);
     }
 
@@ -28,17 +24,11 @@ public partial class App : Application
             // Run MacOS specific style
             if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
             {
-                desktop.MainWindow = new MacMainWindow
-                {
-                    DataContext = new MainViewModel(settingsManager),
-                };
+                desktop.MainWindow = new MacMainWindow();
             }
             else
             {
-                desktop.MainWindow = new MainWindow
-                {
-                    DataContext = new MainViewModel(settingsManager),
-                };
+                desktop.MainWindow = new MainWindow();
             }
         }
 

+ 5 - 5
src/PicView.Avalonia/Models/LoadSettings.cs

@@ -4,10 +4,10 @@ internal static class LoadSettings
 {
     internal static void StartLoading()
     {
-        //Task.Run(async () =>
-        //{
-        //    await Core.Localization.TranslationHelper.DetermineLanguage("da").ConfigureAwait(false);
-        //    await Core.Config.SettingsHelper.LoadSettingsAsync().ConfigureAwait(false);
-        //});
+        Task.Run(async () =>
+        {
+            await Core.Localization.TranslationHelper.DetermineLanguage("da").ConfigureAwait(false);
+            await Core.Config.SettingsHelper.LoadSettingsAsync().ConfigureAwait(false);
+        });
     }
 }

+ 0 - 4
src/PicView.Avalonia/PicView.Avalonia.csproj

@@ -40,11 +40,8 @@
   <ItemGroup>
     <PackageReference Include="Avalonia" Version="11.0.6" />
     <PackageReference Include="Avalonia.Desktop" Version="11.0.6" />
-    <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.2" />
-    <PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.2" />
     <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
     <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="11.0.6" />
-    <PackageReference Include="Avalonia.ReactiveUI" Version="11.0.6" />
   </ItemGroup>
 
 
@@ -67,7 +64,6 @@
 
 
   <ItemGroup>
-    <Using Include="ReactiveUI" />
     <Using Include="System.Diagnostics" />
   </ItemGroup>
 </Project>

+ 14 - 18
src/PicView.Avalonia/Program.cs

@@ -1,25 +1,21 @@
 using Avalonia;
-using Avalonia.ReactiveUI;
-using System;
 
-namespace PicView.Avalonia
+namespace PicView.Avalonia;
+
+internal class Program
 {
-    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) => BuildAvaloniaApp()
-            .StartWithClassicDesktopLifetime(args);
+    // 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) => BuildAvaloniaApp()
+        .StartWithClassicDesktopLifetime(args);
 
-        // Avalonia configuration, don't remove; also used by visual designer.
-        public static AppBuilder BuildAvaloniaApp()
-            => AppBuilder.Configure<App>()
-                .UsePlatformDetect()
+    // Avalonia configuration, don't remove; also used by visual designer.
+    public static AppBuilder BuildAvaloniaApp()
+        => AppBuilder.Configure<App>()
 #if DEBUG
-                .LogToTrace()
+            .LogToTrace()
 #endif
-                .UseReactiveUI();
-    }
+            .UsePlatformDetect();
 }

+ 0 - 48
src/PicView.Avalonia/ViewModels/MainViewModel.cs

@@ -1,48 +0,0 @@
-using Avalonia;
-using PicView.Core.Config;
-using ReactiveUI;
-using System;
-using System.Diagnostics;
-using System.Reactive;
-
-namespace PicView.Avalonia.ViewModels
-{
-    public class MainViewModel : ReactiveObject
-    {
-        private readonly ISettingsManager settingsManager;
-
-        public MainViewModel(ISettingsManager settingsManager)
-        {
-            this.settingsManager = settingsManager;
-
-            // ReactiveCommand for loading settings
-            LoadSettingsCommand = ReactiveCommand.CreateFromTask(LoadSettings);
-
-            // Execute the command on ViewModel initialization
-            LoadSettingsCommand.Execute().Subscribe();
-        }
-
-        private async Task LoadSettings()
-        {
-            try
-            {
-                // Load settings using the injected ISettingsManager
-                await settingsManager.LoadSettingsAsync();
-
-                // Reactively update the properties bound to the UI
-                this.RaisePropertyChanged(nameof(AppSettings));
-            }
-            catch (Exception ex)
-            {
-                // Handle exceptions appropriately (logging, notifying the user, etc.)
-                Trace.WriteLine($"{nameof(LoadSettings)}: error loading settings:\n {ex.Message}");
-            }
-        }
-
-        // Expose AppSettings as a property for data binding in the View
-        public AppSettings? AppSettings => settingsManager.AppSettings;
-
-        // ReactiveCommand for loading settings
-        public ReactiveCommand<Unit, Unit> LoadSettingsCommand { get; }
-    }
-}

+ 0 - 7
src/PicView.Avalonia/ViewModels/ViewModelBase.cs

@@ -1,7 +0,0 @@
-using ReactiveUI;
-
-namespace PicView.Avalonia.ViewModels;
-
-public class ViewModelBase : ReactiveObject
-{
-}

+ 0 - 2
src/PicView.Avalonia/Views/MacMainWindow.axaml

@@ -4,13 +4,11 @@
     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:vm="using:PicView.Avalonia.ViewModels"
     Title="Loading..."
     MinWidth="462"
     MinHeight="400"
     d:DesignHeight="450"
     d:DesignWidth="800"
-    x:DataType="vm:MainViewModel"
     Background="Transparent"
     ExtendClientAreaChromeHints="PreferSystemChrome"
     ExtendClientAreaTitleBarHeightHint="-1"

+ 4 - 3
src/PicView.Avalonia/Views/MainWindow.axaml

@@ -4,13 +4,11 @@
     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:vm="using:PicView.Avalonia.ViewModels"
     Title="Loading..."
     MinWidth="462"
     MinHeight="400"
     d:DesignHeight="450"
     d:DesignWidth="800"
-    x:DataType="vm:MainViewModel"
     Background="Transparent"
     ExtendClientAreaChromeHints="PreferSystemChrome"
     ExtendClientAreaTitleBarHeightHint="-1"
@@ -21,7 +19,10 @@
     mc:Ignorable="d">
     <Border>
         <DockPanel>
-            <TextBox Width="200" Height="30" />
+            <TextBox
+                Width="200"
+                Height="30"
+                Text="Test" />
         </DockPanel>
     </Border>
 </Window>

+ 0 - 10
src/PicView.Core/Config/ISettingsManager.cs

@@ -1,10 +0,0 @@
-namespace PicView.Core.Config;
-
-public interface ISettingsManager
-{
-    AppSettings? AppSettings { get; set; }
-
-    Task LoadSettingsAsync();
-
-    Task SaveSettingsAsync();
-}

+ 5 - 5
src/PicView.Core/Config/SettingsManager.cs → src/PicView.Core/Config/SettingsHelper.cs

@@ -3,12 +3,12 @@ using System.Text.Json;
 
 namespace PicView.Core.Config;
 
-public class SettingsManager : ISettingsManager
+public static class SettingsHelper
 {
-    public AppSettings? AppSettings { get; set; }
-    private JsonSerializerOptions? _jsonSerializerOptions;
+    public static AppSettings? AppSettings { get; set; }
+    private static JsonSerializerOptions? _jsonSerializerOptions;
 
-    public async Task LoadSettingsAsync()
+    public static async Task LoadSettingsAsync()
     {
         try
         {
@@ -30,7 +30,7 @@ public class SettingsManager : ISettingsManager
         }
     }
 
-    public async Task SaveSettingsAsync()
+    public static async Task SaveSettingsAsync()
     {
         try
         {

+ 9 - 10
src/PicView.WPF/ChangeImage/QuickLoad.cs

@@ -1,20 +1,19 @@
-using System.Diagnostics;
-using System.IO;
-using System.Windows;
-using System.Windows.Input;
-using System.Windows.Threading;
-using PicView.Core.FileHandling;
+using PicView.Core.FileHandling;
 using PicView.WPF.ImageHandling;
 using PicView.WPF.PicGallery;
 using PicView.WPF.Properties;
 using PicView.WPF.SystemIntegration;
 using PicView.WPF.UILogic;
+using System.Diagnostics;
+using System.IO;
+using System.Windows;
+using System.Windows.Input;
+using System.Windows.Threading;
 using XamlAnimatedGif;
 using static PicView.WPF.ChangeImage.LoadPic;
 using static PicView.WPF.ChangeImage.Navigation;
 using static PicView.WPF.ChangeImage.PreLoader;
 using static PicView.WPF.ChangeTitlebar.SetTitle;
-using static PicView.WPF.FileHandling.ArchiveExtraction;
 using static PicView.WPF.FileHandling.FileLists;
 using static PicView.WPF.UILogic.Sizing.ScaleImage;
 
@@ -26,10 +25,10 @@ namespace PicView.WPF.ChangeImage
         /// Load Image from blank values and show loading preview
         /// </summary>
         /// <param name="file"></param>
-        internal static async Task QuickLoadAsync(string file)
+        internal static async Task QuickLoadAsync(string file) => await Task.Run(async () =>
         {
             var mainWindow = ConfigureWindows.GetMainWindow;
-            InitialPath = file;
+
             var fileInfo = new FileInfo(file);
             if (!fileInfo.Exists) // If not file, try to load if URL, base64 or directory
             {
@@ -122,6 +121,6 @@ namespace PicView.WPF.ChangeImage
                 GetFileHistory ??= new FileHistory();
                 GetFileHistory.Add(Pics[FolderIndex]);
             }
-        }
+        });
     }
 }

+ 2 - 15
src/PicView.WPF/UILogic/DragAndDrop/Image_DragAndDrop.cs

@@ -187,21 +187,8 @@ namespace PicView.WPF.UILogic.DragAndDrop
 
             await Task.Run(async () =>
             {
-                if (files[0].IsSupported() == false)
-                {
-                    if (Directory.Exists(files[0]))
-                    {
-                        await LoadPic.LoadPicFromFolderAsync(files[0]).ConfigureAwait(false);
-                    }
-                    else if (files[0].IsArchive())
-                    {
-                        await LoadPic.LoadPicFromArchiveAsync(files[0]).ConfigureAwait(false);
-                    }
-                }
-                else
-                {
-                    await LoadPic.LoadPicFromStringAsync(files[0]).ConfigureAwait(false);
-                }
+                InitialPath = files[0];
+                await QuickLoad.QuickLoadAsync(files[0]).ConfigureAwait(false);
 
                 // Open additional windows if multiple files dropped
                 foreach (var file in files.Skip(1))

+ 1 - 0
src/PicView.WPF/UILogic/Loading/StartLoading.cs

@@ -85,6 +85,7 @@ namespace PicView.WPF.UILogic.Loading
             }
             else
             {
+                InitialPath = args[1];
                 await QuickLoad.QuickLoadAsync(args[1]).ConfigureAwait(false);
             }
         }