From 71f317412cd903b6fcf04158fde67593811f4e20 Mon Sep 17 00:00:00 2001 From: Lars van der Lee Date: Sat, 24 Jul 2021 09:52:17 +0100 Subject: [PATCH] Link up events on load --- RevolveTestDiaryXf/Models/DiaryEntry.cs | 13 +++++++++--- RevolveTestDiaryXf/Models/Session.cs | 7 +++++++ RevolveTestDiaryXf/Models/TestDay.cs | 21 ++++++++++++------- .../PublishProfiles/FolderProfile.pubxml | 3 +-- .../PublishProfiles/FolderProfile.pubxml.user | 2 +- RevolveTestDiaryXf/RevolveTestDiaryXf.csproj | 2 +- .../ViewModels/MainWindowViewModel.cs | 19 +++++++++++++++++ 7 files changed, 52 insertions(+), 15 deletions(-) diff --git a/RevolveTestDiaryXf/Models/DiaryEntry.cs b/RevolveTestDiaryXf/Models/DiaryEntry.cs index e208e85..98c9fc2 100644 --- a/RevolveTestDiaryXf/Models/DiaryEntry.cs +++ b/RevolveTestDiaryXf/Models/DiaryEntry.cs @@ -9,7 +9,7 @@ namespace RevolveTestDiaryXf.Models public class DiaryEntry { public DateTime Timestamp { get; set; } - + public event EventHandler TriggerAutoSaveEvent; public DiaryEntry(DateTime timestamp, EntryType entryType, string body) { Timestamp = timestamp; @@ -25,9 +25,16 @@ public DiaryEntry() [JsonIgnore] public ObservableCollection EntryTypes => new ObservableCollection(Enum.GetValues(typeof(EntryType)).Cast()); - public EntryType EntryType { get; set; } + public EntryType EntryType { get => entryType; set { entryType = value; TriggerAutoSaveEvent?.Invoke(this, this); } } + + private string _body; + private EntryType entryType; - public string Body { get; set; } + public string Body + { + get { return _body; } + set { _body = value; TriggerAutoSaveEvent?.Invoke(this, this); } + } public DiaryEntry(EntryType entryType, string body) { diff --git a/RevolveTestDiaryXf/Models/Session.cs b/RevolveTestDiaryXf/Models/Session.cs index 496298f..e4e6d53 100644 --- a/RevolveTestDiaryXf/Models/Session.cs +++ b/RevolveTestDiaryXf/Models/Session.cs @@ -48,6 +48,7 @@ public Session() { } public void AddDiaryEntryCommand() { var diaryEntry = new DiaryEntry(NewEntryType, NewEntryBody); + diaryEntry.TriggerAutoSaveEvent += TriggerAutoSaveFromEntry; NewEntryBody = null; AddDiaryEntry(diaryEntry); TriggerAutoSaveEvent?.Invoke(this, this); @@ -58,5 +59,11 @@ public void AddDiaryEntry(DiaryEntry entry) SessionEntries.Add(entry); this.RaisePropertyChanged(nameof(SessionEntries)); } + + + public void TriggerAutoSaveFromEntry(object? sender, DiaryEntry e) + { + TriggerAutoSaveEvent?.Invoke(this, this); + } } } diff --git a/RevolveTestDiaryXf/Models/TestDay.cs b/RevolveTestDiaryXf/Models/TestDay.cs index 4953a00..5985899 100644 --- a/RevolveTestDiaryXf/Models/TestDay.cs +++ b/RevolveTestDiaryXf/Models/TestDay.cs @@ -79,7 +79,7 @@ public void AddGoalCommand() goal.TriggerAutoSaveEvent += TriggerAutoSaveFromGoal; NewGoalBody = null; AddGoal(goal); - TriggerAutoSaveEvent.Invoke(this, this); + TriggerAutoSaveEvent?.Invoke(this, this); } public void AddGoal(DiaryGoal goal) { @@ -93,22 +93,27 @@ public void AddSessionCommand() session.TriggerAutoSaveEvent += TriggerAutoSaveFromSession; NewSessionTitle = null; AddSession(session); - TriggerAutoSaveEvent.Invoke(this, this); + TriggerAutoSaveEvent?.Invoke(this, this); } - private void TriggerAutoSaveFromSession(object? sender, Session e) + public void TriggerAutoSaveFromSession(object? sender, Session e) { - TriggerAutoSaveEvent.Invoke(this, this); + TriggerAutoSaveEvent?.Invoke(this, this); } - private void TriggerAutoSaveFromGoal(object? sender, DiaryGoal e) + public void TriggerAutoSaveFromGoal(object? sender, DiaryGoal e) { - TriggerAutoSaveEvent.Invoke(this, this); + TriggerAutoSaveEvent?.Invoke(this, this); } - private void TriggerAutoSaveFromDebrief(object? sender, Debrief e) + public void TriggerAutoSaveFromDebrief(object? sender, Debrief e) { - TriggerAutoSaveEvent.Invoke(this, this); + TriggerAutoSaveEvent?.Invoke(this, this); + } + + public void TriggerAutoSaveFromEntry(object? sender, DiaryEntry e) + { + TriggerAutoSaveEvent?.Invoke(this, this); } public void AddSession(Session session) diff --git a/RevolveTestDiaryXf/Properties/PublishProfiles/FolderProfile.pubxml b/RevolveTestDiaryXf/Properties/PublishProfiles/FolderProfile.pubxml index 24526d0..2495057 100644 --- a/RevolveTestDiaryXf/Properties/PublishProfiles/FolderProfile.pubxml +++ b/RevolveTestDiaryXf/Properties/PublishProfiles/FolderProfile.pubxml @@ -10,8 +10,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. FileSystem netcoreapp3.1 false - win-x86 + linux-x64 True - False \ No newline at end of file diff --git a/RevolveTestDiaryXf/Properties/PublishProfiles/FolderProfile.pubxml.user b/RevolveTestDiaryXf/Properties/PublishProfiles/FolderProfile.pubxml.user index 245d7f6..40636a9 100644 --- a/RevolveTestDiaryXf/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/RevolveTestDiaryXf/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -4,6 +4,6 @@ https://go.microsoft.com/fwlink/?LinkID=208121. --> - True|2021-07-23T23:19:50.3698139Z;True|2021-07-24T00:19:21.3372652+01:00;True|2021-07-22T23:40:30.9776005+01:00;True|2021-07-22T23:39:18.5301353+01:00;True|2021-07-22T23:29:19.7722048+01:00;True|2021-07-22T23:28:55.1739726+01:00;True|2021-07-22T23:28:30.5225280+01:00;True|2021-07-22T23:26:31.3242797+01:00;True|2021-07-22T23:24:51.1262948+01:00;False|2021-07-22T23:24:11.4380470+01:00;True|2021-07-22T23:22:47.8896701+01:00;False|2021-07-22T23:21:01.9118945+01:00;True|2021-07-22T23:20:02.2727035+01:00;True|2021-07-22T23:19:19.2709540+01:00;True|2021-07-22T23:16:55.5922301+01:00;True|2021-07-22T23:15:51.4190974+01:00;False|2021-07-22T23:15:03.3156239+01:00;True|2021-07-22T23:14:19.7324710+01:00;True|2021-07-22T23:12:31.5976603+01:00;False|2021-07-22T23:11:48.1206383+01:00;True|2021-07-22T23:10:44.0144142+01:00;True|2021-07-22T23:09:34.5315819+01:00;True|2021-07-22T23:08:20.5062411+01:00;True|2021-07-22T23:07:46.8030011+01:00;True|2021-07-22T22:59:53.1099845+01:00;True|2021-07-22T22:52:25.1583748+01:00;True|2021-07-22T22:52:05.8567743+01:00;True|2021-07-22T22:36:16.6413609+01:00;True|2021-07-22T22:29:15.6562188+01:00;True|2021-07-20T23:59:57.3230195+01:00;True|2021-07-20T23:59:06.2065642+01:00; + True|2021-07-24T08:50:44.0579560Z;True|2021-07-24T09:49:48.4714980+01:00;True|2021-07-24T00:19:50.3698139+01:00;True|2021-07-24T00:19:21.3372652+01:00;True|2021-07-22T23:40:30.9776005+01:00;True|2021-07-22T23:39:18.5301353+01:00;True|2021-07-22T23:29:19.7722048+01:00;True|2021-07-22T23:28:55.1739726+01:00;True|2021-07-22T23:28:30.5225280+01:00;True|2021-07-22T23:26:31.3242797+01:00;True|2021-07-22T23:24:51.1262948+01:00;False|2021-07-22T23:24:11.4380470+01:00;True|2021-07-22T23:22:47.8896701+01:00;False|2021-07-22T23:21:01.9118945+01:00;True|2021-07-22T23:20:02.2727035+01:00;True|2021-07-22T23:19:19.2709540+01:00;True|2021-07-22T23:16:55.5922301+01:00;True|2021-07-22T23:15:51.4190974+01:00;False|2021-07-22T23:15:03.3156239+01:00;True|2021-07-22T23:14:19.7324710+01:00;True|2021-07-22T23:12:31.5976603+01:00;False|2021-07-22T23:11:48.1206383+01:00;True|2021-07-22T23:10:44.0144142+01:00;True|2021-07-22T23:09:34.5315819+01:00;True|2021-07-22T23:08:20.5062411+01:00;True|2021-07-22T23:07:46.8030011+01:00;True|2021-07-22T22:59:53.1099845+01:00;True|2021-07-22T22:52:25.1583748+01:00;True|2021-07-22T22:52:05.8567743+01:00;True|2021-07-22T22:36:16.6413609+01:00;True|2021-07-22T22:29:15.6562188+01:00;True|2021-07-20T23:59:57.3230195+01:00;True|2021-07-20T23:59:06.2065642+01:00; \ No newline at end of file diff --git a/RevolveTestDiaryXf/RevolveTestDiaryXf.csproj b/RevolveTestDiaryXf/RevolveTestDiaryXf.csproj index 04a1faa..27a84f8 100644 --- a/RevolveTestDiaryXf/RevolveTestDiaryXf.csproj +++ b/RevolveTestDiaryXf/RevolveTestDiaryXf.csproj @@ -7,7 +7,7 @@ RevolveTestDiaryXf.Program - 3.0.0 + 3.1.0 Revolve NTNU Revolve NTNU diff --git a/RevolveTestDiaryXf/ViewModels/MainWindowViewModel.cs b/RevolveTestDiaryXf/ViewModels/MainWindowViewModel.cs index f88c765..c87fd5e 100644 --- a/RevolveTestDiaryXf/ViewModels/MainWindowViewModel.cs +++ b/RevolveTestDiaryXf/ViewModels/MainWindowViewModel.cs @@ -88,6 +88,25 @@ public async void LoadTestDayFromFileCommand() try { TestDay testDay = await JsonSerializer.DeserializeAsync(stream, typeof(TestDay)) as TestDay; + testDay.TriggerAutoSaveEvent += SaveTestDay; + testDay.CloseTestDayEvent += CloseTestDay; + + foreach (var session in testDay.Sessions) + { + session.TriggerAutoSaveEvent += testDay.TriggerAutoSaveFromSession; + foreach (var entry in session.SessionEntries) + { + entry.TriggerAutoSaveEvent += testDay.TriggerAutoSaveFromEntry; + } + } + foreach (var goal in testDay.Goals) + { + goal.TriggerAutoSaveEvent += testDay.TriggerAutoSaveFromGoal; + } + + testDay.Debrief.TriggerAutoSaveEvent += testDay.TriggerAutoSaveFromDebrief; + + if (testDay != null) TestDays.Add(testDay); }