From 302059277a7a774561a600326361364a55389dfc Mon Sep 17 00:00:00 2001 From: Rene Evertz Date: Fri, 29 Nov 2024 12:28:59 +0100 Subject: [PATCH] Bug: Potentieller Speicherverlust + Speichert jetzt letztes Einstellungsfenster --- BeWo/Core/Config/AppSettings.cs | 3 + BeWo/View/Master/AdministrationView.xaml.cs | 71 +++++++++++++++++++-- 2 files changed, 70 insertions(+), 4 deletions(-) diff --git a/BeWo/Core/Config/AppSettings.cs b/BeWo/Core/Config/AppSettings.cs index 0e9ddc202..a9c6db339 100644 --- a/BeWo/Core/Config/AppSettings.cs +++ b/BeWo/Core/Config/AppSettings.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using BeWo.View.Navigation.Filter; using BS.Shared; +using DevExpress.Xpf.Accordion; using DevExpress.Xpf.Scheduling; using DevExpress.XtraScheduler; @@ -421,6 +422,8 @@ namespace BeWo.Core.Config public bool ShowPivotGrid { get; set; } public string ExpandedAdministrationItems { get; set; } + public string SelectedAdministrationItem { get; set; } + public bool ShowUrlaubsplanung { get; set; } public bool DontShowSpitzabrechnung { get; set; } public bool ShowDienstplanung { get; set; } diff --git a/BeWo/View/Master/AdministrationView.xaml.cs b/BeWo/View/Master/AdministrationView.xaml.cs index 5fac1fd4b..f2b75926d 100644 --- a/BeWo/View/Master/AdministrationView.xaml.cs +++ b/BeWo/View/Master/AdministrationView.xaml.cs @@ -14,6 +14,7 @@ using BeWo.ViewModel; using BeWo.ViewModel.ListViewModel; using DevExpress.Xpf.Accordion; using BeWo.View.Detail.Administration; +using System.Linq; namespace BeWo.View.Master { @@ -29,7 +30,6 @@ namespace BeWo.View.Master { InitializeComponent(); //GenerateNewView(TabitemMandator); - Root.SelectedItem = TabitemMandator; this.Loaded += AdministrationView_Loaded; @@ -136,6 +136,15 @@ namespace BeWo.View.Master // item.IsExpanded = true; //} } + + if (BeWoApp.AppSettings.SelectedAdministrationItem is string selected) + { + Root.SelectedItem = searchAccordionItem(selected); + } + else + { + Root.SelectedItem = TabitemMandator; + } } private void Tabitem_Selected(object sender, RoutedEventArgs e) @@ -143,10 +152,16 @@ namespace BeWo.View.Master if (!(sender is AccordionItem selectedAccordionItem)) return; - if (_OpenViews.ContainsKey(selectedAccordionItem.Header.ToString())) - SetView(_OpenViews[selectedAccordionItem.Header.ToString()]); + var header = selectedAccordionItem.Header.ToString(); + if (_OpenViews.TryGetValue(header, out var view)) + { + if(view is object) + SetView(_OpenViews[header]); + } else GenerateNewView(selectedAccordionItem); + + BeWoApp.AppSettings.SelectedAdministrationItem = header; } public override bool IsDirty => SelectedView != null && @@ -226,7 +241,7 @@ namespace BeWo.View.Master pView.MaxHeight = ActualHeight - 120; } - _OpenViews.Add(pTabItem.Header.ToString(), pView); + _OpenViews[pTabItem.Header.ToString()] = pView; SetView(pView); } @@ -247,6 +262,17 @@ namespace BeWo.View.Master if (accordionItem == null) return; + + var header = accordionItem.Header.ToString(); + if (_OpenViews.TryGetValue(header, out var view)) + { + return; + } + else + { + _OpenViews.Add(header, null); + } + switch (accordionItem.Name) { case nameof(TabitemMandator): @@ -458,6 +484,43 @@ namespace BeWo.View.Master } } + private AccordionItem searchAccordionItem(string header) + { + foreach (var item in Root.Items) + { + var rtn = searchAccordionItem(item as AccordionItem, header); + + if (rtn is object) + return rtn; + } + + return null; + } + + private AccordionItem searchAccordionItem(AccordionItem accordion, string header) + { + if (accordion is null) + return null; + + if (!accordion.Items.Any()) + { + if (header == accordion.Header.ToString()) + return accordion; + else + return null; + } + + foreach (var item in accordion.Items) + { + var rtn = searchAccordionItem(item as AccordionItem, header); + + if (rtn is object) + return rtn; + } + + return null; + } + private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e) { //e.Handled = true;