diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2019-12-15 22:30:38 +0100 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2019-12-15 22:30:38 +0100 |
| commit | 0f98b398520a3f5cc6a299e7fd3b8fab494480d7 (patch) | |
| tree | a1c0ab173723c47adf23d7dc5c1894185052cc39 /ViewModels | |
| download | avalar-0f98b398520a3f5cc6a299e7fd3b8fab494480d7.tar.gz avalar-0f98b398520a3f5cc6a299e7fd3b8fab494480d7.tar.bz2 avalar-0f98b398520a3f5cc6a299e7fd3b8fab494480d7.zip | |
Initial commit, skeleton project.
Diffstat (limited to 'ViewModels')
| -rw-r--r-- | ViewModels/Image/ImageLoadedViewModel.cs | 23 | ||||
| -rw-r--r-- | ViewModels/Image/ImageNotLoadedViewModel.cs | 15 | ||||
| -rw-r--r-- | ViewModels/Image/ImageViewModel.cs | 38 | ||||
| -rw-r--r-- | ViewModels/Settings/SettingsViewModel.cs | 7 |
4 files changed, 83 insertions, 0 deletions
diff --git a/ViewModels/Image/ImageLoadedViewModel.cs b/ViewModels/Image/ImageLoadedViewModel.cs new file mode 100644 index 0000000..f9e322c --- /dev/null +++ b/ViewModels/Image/ImageLoadedViewModel.cs @@ -0,0 +1,23 @@ +using Avalonia.Media.Imaging; +using ReactiveUI; + +namespace Avalar.ViewModels.Image +{ + public class ImageLoadedViewModel : ReactiveObject + { + public ImageLoadedViewModel(IBitmap bitmap) + { + Bitmap = bitmap; + } + + private IBitmap m_Bitmap; + public IBitmap Bitmap + { + get => m_Bitmap; + set + { + this.RaiseAndSetIfChanged(ref m_Bitmap, value); + } + } + } +} diff --git a/ViewModels/Image/ImageNotLoadedViewModel.cs b/ViewModels/Image/ImageNotLoadedViewModel.cs new file mode 100644 index 0000000..bf7b65e --- /dev/null +++ b/ViewModels/Image/ImageNotLoadedViewModel.cs @@ -0,0 +1,15 @@ +using ReactiveUI; +using System.Reactive; + +namespace Avalar.ViewModels.Image +{ + public class ImageNotLoadedViewModel : ReactiveObject + { + public ImageNotLoadedViewModel(ReactiveCommand<Unit, Unit> openFileCommand) + { + OpenFileCommand = openFileCommand; + } + + public ReactiveCommand<Unit, Unit> OpenFileCommand { get; } + } +} diff --git a/ViewModels/Image/ImageViewModel.cs b/ViewModels/Image/ImageViewModel.cs new file mode 100644 index 0000000..030a95b --- /dev/null +++ b/ViewModels/Image/ImageViewModel.cs @@ -0,0 +1,38 @@ + +using Avalar.ViewModels.Image; +using Avalar.Views; +using Avalonia.Media.Imaging; +using ReactiveUI; +using System.Linq; + +namespace Avalar.Viewmodels.Image +{ + public class ImageViewModel : ReactiveObject + { + public ImageViewModel(IAvalarViewService viewService) + { + ViewService = viewService; + ChildViewModel = new ImageNotLoadedViewModel(ReactiveCommand.Create(OpenFile)); + } + + private IAvalarViewService ViewService { get; } + + private object m_ChildViewModel; + + public object ChildViewModel + { + get => m_ChildViewModel; + set { + this.RaiseAndSetIfChanged(ref m_ChildViewModel, value); + } + } + + public async void OpenFile() + { + var result = await ViewService.ShowOpenImageFileDialog(); + if (result.Length != 1) return; + + ChildViewModel = new ImageLoadedViewModel(new Bitmap(result.First())); + } + } +} diff --git a/ViewModels/Settings/SettingsViewModel.cs b/ViewModels/Settings/SettingsViewModel.cs new file mode 100644 index 0000000..b9f076b --- /dev/null +++ b/ViewModels/Settings/SettingsViewModel.cs @@ -0,0 +1,7 @@ + +namespace Avalar.ViewModels.Settings +{ + class SettingsViewModel + { + } +} |
