From 524107e7e400a0cf2a932648687dfccdf591b893 Mon Sep 17 00:00:00 2001 From: Banyc <36535895+Banyc@users.noreply.github.com> Date: Mon, 7 Dec 2020 00:55:51 +0800 Subject: [PATCH] [desktop] Restore window position --- .../MainWindow.xaml.Settings.cs | 36 +++++++++++++++++++ .../MainWindow.xaml.cs | 17 +++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/UnforgettableMemo.WinDesktop/MainWindow.xaml.Settings.cs diff --git a/src/UnforgettableMemo.WinDesktop/MainWindow.xaml.Settings.cs b/src/UnforgettableMemo.WinDesktop/MainWindow.xaml.Settings.cs new file mode 100644 index 0000000..2732cae --- /dev/null +++ b/src/UnforgettableMemo.WinDesktop/MainWindow.xaml.Settings.cs @@ -0,0 +1,36 @@ +using System.IO; +using System.Text.Json; + +namespace UnforgettableMemo.WinDesktop +{ + public partial class MainWindow + { + public class MainWindowSettings + { + public double? TopLocation { get; set; } + public double? LeftLocation { get; set; } + } + + private MainWindowSettings LoadSettings() + { + string filePath = System.IO.Path.Combine(this.settingsDirectory, this.settingsFilename); + if (!File.Exists(filePath)) + { + return new MainWindowSettings(); + } + string fileText = File.ReadAllText(filePath); + MainWindowSettings settings = JsonSerializer.Deserialize(fileText); + return settings; + } + + public void SaveSettings(MainWindowSettings settings) + { + Directory.CreateDirectory(this.settingsDirectory); + string fileText = JsonSerializer.Serialize(settings, new JsonSerializerOptions() + { + WriteIndented = true + }); + File.WriteAllText(System.IO.Path.Combine(this.settingsDirectory, this.settingsFilename), fileText); + } + } +} diff --git a/src/UnforgettableMemo.WinDesktop/MainWindow.xaml.cs b/src/UnforgettableMemo.WinDesktop/MainWindow.xaml.cs index 2eb25c8..759c105 100644 --- a/src/UnforgettableMemo.WinDesktop/MainWindow.xaml.cs +++ b/src/UnforgettableMemo.WinDesktop/MainWindow.xaml.cs @@ -27,11 +27,23 @@ public class MainWindowViewModel public Memo DisplayingMemo { get; set; } } + private readonly string settingsDirectory = "desktop"; + private readonly string settingsFilename = "mainWindowSettings.json"; + private readonly MainWindowViewModel viewModel = new MainWindowViewModel(); private MemoScheduler memoScheduler; public MainWindow() { + MainWindowSettings settings = LoadSettings(); + if (settings.LeftLocation != null) + { + this.Left = settings.LeftLocation.Value; + } + if (settings.TopLocation != null) + { + this.Top = settings.TopLocation.Value; + } InitializeComponent(); } @@ -84,6 +96,11 @@ private void btnReview_Click(object sender, RoutedEventArgs e) private void btnExit_Click(object sender, RoutedEventArgs e) { + SaveSettings(new MainWindowSettings() + { + LeftLocation = this.Left, + TopLocation = this.Top + }); this.Close(); }