summaryrefslogtreecommitdiff
path: root/ViewModels
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2019-12-15 22:30:38 +0100
committerDennis Brentjes <d.brentjes@gmail.com>2019-12-15 22:30:38 +0100
commit0f98b398520a3f5cc6a299e7fd3b8fab494480d7 (patch)
treea1c0ab173723c47adf23d7dc5c1894185052cc39 /ViewModels
downloadavalar-0f98b398520a3f5cc6a299e7fd3b8fab494480d7.tar.gz
avalar-0f98b398520a3f5cc6a299e7fd3b8fab494480d7.tar.bz2
avalar-0f98b398520a3f5cc6a299e7fd3b8fab494480d7.zip
Initial commit, skeleton project.
Diffstat (limited to 'ViewModels')
-rw-r--r--ViewModels/Image/ImageLoadedViewModel.cs23
-rw-r--r--ViewModels/Image/ImageNotLoadedViewModel.cs15
-rw-r--r--ViewModels/Image/ImageViewModel.cs38
-rw-r--r--ViewModels/Settings/SettingsViewModel.cs7
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
+ {
+ }
+}