diff --git a/Wino.Calendar.ViewModels/CalendarPageViewModel.cs b/Wino.Calendar.ViewModels/CalendarPageViewModel.cs index fc598419..28cb9c3d 100644 --- a/Wino.Calendar.ViewModels/CalendarPageViewModel.cs +++ b/Wino.Calendar.ViewModels/CalendarPageViewModel.cs @@ -115,6 +115,7 @@ public partial class CalendarPageViewModel : CalendarBaseViewModel, [ObservableProperty] [NotifyPropertyChangedFor(nameof(IsEventDetailsVisible))] [NotifyCanExecuteChangedFor(nameof(JoinOnlineCommand))] + [NotifyPropertyChangedFor(nameof(CanJoinOnline))] public partial CalendarItemViewModel DisplayDetailsCalendarItemViewModel { get; set; } public bool IsEventDetailsVisible => DisplayDetailsCalendarItemViewModel != null; @@ -227,12 +228,6 @@ public partial class CalendarPageViewModel : CalendarBaseViewModel, }; } - public override void OnNavigatedFrom(NavigationMode mode, object parameters) - { - // Do not call base method because that will unregister messenger recipient. - // This is a singleton view model and should not be unregistered. - } - public override void OnNavigatedTo(NavigationMode mode, object parameters) { base.OnNavigatedTo(mode, parameters); diff --git a/Wino.Mail.WinUI/Controls/Calendar/CalendarItemControl.xaml b/Wino.Mail.WinUI/Controls/Calendar/CalendarItemControl.xaml index 0001c2ae..fb7d9711 100644 --- a/Wino.Mail.WinUI/Controls/Calendar/CalendarItemControl.xaml +++ b/Wino.Mail.WinUI/Controls/Calendar/CalendarItemControl.xaml @@ -23,6 +23,7 @@ Tapped="ControlTapped" ToolTipService.ToolTip="{x:Bind CalendarItem.DisplayTitle, Mode=OneWay}"> + @@ -36,20 +37,36 @@ + + Background="{x:Bind helpers:XamlHelpers.GetSolidColorBrushFromHex(CalendarItem.AssignedCalendar.BackgroundColorHex), Mode=OneWay}" + Opacity="0.9" /> + + + +/// DataTemplateSelector that selects the appropriate stripe template based on CalendarItemShowAs status. +/// +public class CalendarItemShowAsStripeTemplateSelector : DataTemplateSelector +{ + public DataTemplate FreeTemplate { get; set; } + public DataTemplate TentativeTemplate { get; set; } + public DataTemplate BusyTemplate { get; set; } + public DataTemplate OutOfOfficeTemplate { get; set; } + public DataTemplate WorkingElsewhereTemplate { get; set; } + + protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) + { + if (item is CalendarItemViewModel calendarItem) + { + return calendarItem.CalendarItem.ShowAs switch + { + CalendarItemShowAs.Free => FreeTemplate, + CalendarItemShowAs.Tentative => TentativeTemplate, + CalendarItemShowAs.Busy => BusyTemplate, + CalendarItemShowAs.OutOfOffice => OutOfOfficeTemplate, + CalendarItemShowAs.WorkingElsewhere => WorkingElsewhereTemplate, + _ => BusyTemplate // Default to Busy + }; + } + + return base.SelectTemplateCore(item, container); + } +} diff --git a/Wino.Mail.WinUI/Styles/WinoCalendarResources.xaml b/Wino.Mail.WinUI/Styles/WinoCalendarResources.xaml index 9a545f5e..242934c0 100644 --- a/Wino.Mail.WinUI/Styles/WinoCalendarResources.xaml +++ b/Wino.Mail.WinUI/Styles/WinoCalendarResources.xaml @@ -25,9 +25,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -60,7 +93,11 @@ - +