Bladeren bron

More stuff

Kenric Nugteren 2 maanden geleden
bovenliggende
commit
1d02856ae2
2 gewijzigde bestanden met toevoegingen van 38 en 64 verwijderingen
  1. 3 7
      prs.desktop/Components/Calendar/Calendar.xaml
  2. 35 57
      prs.desktop/Components/Calendar/Calendar.xaml.cs

+ 3 - 7
prs.desktop/Components/Calendar/Calendar.xaml

@@ -175,19 +175,15 @@
                         Padding="2">
                         <Polygon Points="0,0 8,5, 0,10" Stroke="Gray" Fill="Silver" />
                     </Button>
-                    
+
                     <ComboBox 
                         x:Name="CalendarViewSelector" 
                         DockPanel.Dock="Left" 
                         SelectionChanged="CalendarViewSelector_SelectionChanged"
                         VerticalContentAlignment="Center" 
                         SelectedIndex="-1"
-                        Margin="5,0,0,0">
-                        <ComboBoxItem Content="Day" />
-                        <ComboBoxItem Content="Work Week" />
-                        <ComboBoxItem Content="Week" />
-                    </ComboBox>
-                    
+                        Margin="5,0,0,0"/>
+
                 </DockPanel>
                 
 

+ 35 - 57
prs.desktop/Components/Calendar/Calendar.xaml.cs

@@ -106,11 +106,11 @@ namespace PRSDesktop
 
             if (!EventSuppressor.IsSet(Suppress.Settings))
             {
-                Properties.SettingsVisible = SettingsVisible;
+                // Properties.SettingsVisible = SettingsVisible;
                 Properties.Date = SelectedDate;
                 // Properties.StartHour = (int)Bookings.DaysViewSettings.StartHour;
                 // Properties.EndHour = (int)Bookings.DaysViewSettings.EndHour;
-                Properties.CalendarView = CalendarView;
+                // Properties.CalendarView = CalendarView;
                 Properties.EmployeeSelector = EmployeeSettings;
                 Properties.EmployeeSelection = EmployeeSelection;
                 Properties.TimeInterval = TimeInterval;
@@ -146,32 +146,28 @@ namespace PRSDesktop
                 nameof(SettingsVisible), 
                 typeof(CalendarSettingsVisibility), 
                 typeof(Calendar), 
-                new UIPropertyMetadata(CalendarSettingsVisibility.Disabled)
+                new UIPropertyMetadata(CalendarSettingsVisibility.Disabled, SettingsVisible_Changed)
             );
-        
-        public CalendarSettingsVisibility SettingsVisible
+
+        private static void SettingsVisible_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
         {
-            get => (CalendarSettingsVisibility)GetValue(SettingsVisibleProperty);
-            set => SetSettingsVisibility(value);
+            if (d is not Calendar calendar) return;
+            var value = (CalendarSettingsVisibility)e.NewValue;
+
+            calendar.Properties.SettingsVisible = value;
+
+            calendar._splitPanel.View = value == CalendarSettingsVisibility.Visible
+                ? DynamicSplitPanelView.Combined
+                : DynamicSplitPanelView.Master;
+            calendar._splitPanel.AllowableViews = value == CalendarSettingsVisibility.Disabled
+                ? DynamicSplitPanelView.Master
+                : DynamicSplitPanelView.Master | DynamicSplitPanelView.Combined;
         }
-        
-        private void SetSettingsVisibility(CalendarSettingsVisibility value)
+
+        public CalendarSettingsVisibility SettingsVisible
         {
-            DoSetValue(
-                SettingsVisibleProperty,
-                value,
-                () => { },
-                () =>
-                {
-                    _splitPanel.View = value == CalendarSettingsVisibility.Visible
-                        ? DynamicSplitPanelView.Combined
-                        : DynamicSplitPanelView.Master;
-                    _splitPanel.AllowableViews = value == CalendarSettingsVisibility.Disabled
-                        ? DynamicSplitPanelView.Master
-                        : DynamicSplitPanelView.Master | DynamicSplitPanelView.Combined;
-                    // ResizeColumns(this.ActualWidth);
-                }
-            );
+            get => (CalendarSettingsVisibility)GetValue(SettingsVisibleProperty);
+            set => SetValue(SettingsVisibleProperty, value);
         }
         
         #endregion
@@ -191,39 +187,13 @@ namespace PRSDesktop
             get => (CalendarViewType)GetValue(CalendarViewProperty);
             set => SetValue(CalendarViewProperty, value);
         }
-        
-        private void SetCalendarView(CalendarViewType value)
-        {
-            // DoSetValue(
-            //     CalendarViewProperty,
-            //     value,
-            //     () =>
-            //     {
-            //         Bookings.ViewType = value switch
-            //         {
-            //             CalendarViewType.Day => SchedulerViewType.Day,
-            //             CalendarViewType.WorkWeek => SchedulerViewType.WorkWeek,
-            //             CalendarViewType.Week => SchedulerViewType.Week,
-            //             _ => SchedulerViewType.Day
-            //         };
-            //         ResizeColumns(this.ActualWidth);
-            //     }
-            // );
-        }
 
         private static void CalendarView_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
         {
             if (d is not Calendar calendar) return;
-            calendar.CalendarViewSelector.SelectedIndex = (int)calendar.CalendarView;
             calendar.Properties.CalendarView = calendar.CalendarView;
-        }
-        
-        private void CalendarViewSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            if (EventSuppressor.IsSet(Suppress.Events))
-                return;
-            using (new EventSuppressor(Suppress.Selector))
-                SetCalendarView((CalendarViewType)CalendarViewSelector.SelectedIndex);
+
+            // TODO: Update Calendar columns based on this.
         }
 
         #endregion
@@ -715,6 +685,15 @@ namespace PRSDesktop
                 SetValue(EndHourProperty, 24);
                 // SfSkinManager.SetTheme(Bookings, new Theme() { ThemeName = "Office2019White", ScrollBarMode = ScrollBarMode.Compact });
             }
+
+            CalendarViewSelector.ItemsSource = new List<KeyValuePair<CalendarViewType, string>>
+            {
+                new(CalendarViewType.Day, "Day"),
+                new(CalendarViewType.WorkWeek, "Work Week"),
+                new(CalendarViewType.Week, "Week"),
+            };
+            CalendarViewSelector.DisplayMemberPath = "Value";
+            CalendarViewSelector.SelectedValuePath = "Key";
         }
         
         public virtual void Setup()
@@ -723,15 +702,14 @@ namespace PRSDesktop
             {
          
                 Properties = LoadSettings?.Invoke(this) ?? new CalendarSettings();
-                SetCalendarView(Properties.CalendarView);
-                SetSettingsVisibility(Properties.SettingsVisible);
+                SettingsVisible = Properties.SettingsVisible;
                 SetSelectedDate(Properties.AlwaysStartOnToday ? DateTime.Today : Properties.Date);
                 SetStartHour(Properties.StartHour);
                 SetEndHour(Properties.EndHour);
                 SetTimeInterval(Properties.TimeInterval);
                 SetAssignmentType(Properties.AssignmentType);
                 SetBackgroundType(Properties.BackgroundType);
-                SetCalendarView(Properties.CalendarView);
+                CalendarView = Properties.CalendarView;
                 SetZoom(Properties.Zoom);
                 EmployeeSelector.Setup();
                 SetEmployeeSettings(Properties.EmployeeSelector);
@@ -1632,9 +1610,9 @@ namespace PRSDesktop
             if (EventSuppressor.IsSet(Suppress.Events))
                 return;
             if (e.View == DynamicSplitPanelView.Combined && SettingsVisible != CalendarSettingsVisibility.Visible)
-                SetSettingsVisibility(CalendarSettingsVisibility.Visible);
+                SettingsVisible = CalendarSettingsVisibility.Visible;
             else if (e.View == DynamicSplitPanelView.Master && SettingsVisible == CalendarSettingsVisibility.Visible)
-                SetSettingsVisibility(CalendarSettingsVisibility.Hidden);
+                SettingsVisible = CalendarSettingsVisibility.Hidden;
         }
         
         private void Bookings_OnQueryAppointments(object? sender, QueryAppointmentsEventArgs e)