309 lines
16 KiB
XML
309 lines
16 KiB
XML
<abstract:CalendarAppShellAbstract
|
|
x:Class="Wino.Mail.WinUI.Views.Calendar.CalendarAppShell"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:abstract="using:Wino.Mail.Views.Abstract"
|
|
xmlns:animatedvisuals="using:Microsoft.UI.Xaml.Controls.AnimatedVisuals"
|
|
xmlns:animations="using:CommunityToolkit.WinUI.Animations"
|
|
xmlns:calendarControls="using:Wino.Calendar.Controls"
|
|
xmlns:communityControls="using:CommunityToolkit.WinUI.Controls"
|
|
xmlns:coreControls="using:Wino.Mail.WinUI.Controls"
|
|
xmlns:coreSelectors="using:Wino.Mail.WinUI.Selectors"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:data="using:Wino.Calendar.ViewModels.Data"
|
|
xmlns:domain="using:Wino.Core.Domain"
|
|
xmlns:helpers="using:Wino.Helpers"
|
|
xmlns:local="using:Wino.Calendar.Views"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:menu="using:Wino.Core.Domain.MenuItems"
|
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
|
Loaded="OnLoaded"
|
|
PreviewKeyDown="OnPreviewKeyDown"
|
|
mc:Ignorable="d">
|
|
|
|
<Page.Resources>
|
|
<DataTemplate x:Key="CalendarSettingsItemTemplate" x:DataType="menu:SettingsItem">
|
|
<coreControls:WinoNavigationViewItem DataContext="{x:Bind}" SelectsOnInvoked="False">
|
|
<coreControls:WinoNavigationViewItem.Icon>
|
|
<muxc:AnimatedIcon>
|
|
<muxc:AnimatedIcon.Source>
|
|
<animatedvisuals:AnimatedSettingsVisualSource />
|
|
</muxc:AnimatedIcon.Source>
|
|
<muxc:AnimatedIcon.FallbackIconSource>
|
|
<muxc:SymbolIconSource Symbol="Setting" />
|
|
</muxc:AnimatedIcon.FallbackIconSource>
|
|
</muxc:AnimatedIcon>
|
|
</coreControls:WinoNavigationViewItem.Icon>
|
|
<TextBlock VerticalAlignment="Center" Text="{x:Bind domain:Translator.MenuSettings}" />
|
|
</coreControls:WinoNavigationViewItem>
|
|
</DataTemplate>
|
|
|
|
<DataTemplate x:Key="CalendarStoreUpdateItemTemplate" x:DataType="menu:StoreUpdateMenuItem">
|
|
<coreControls:WinoNavigationViewItem DataContext="{x:Bind}" SelectsOnInvoked="False">
|
|
<muxc:NavigationViewItem.Icon>
|
|
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="" />
|
|
</muxc:NavigationViewItem.Icon>
|
|
<TextBlock VerticalAlignment="Center" Text="{x:Bind domain:Translator.MenuUpdateAvailable}" />
|
|
</coreControls:WinoNavigationViewItem>
|
|
</DataTemplate>
|
|
|
|
<coreSelectors:NavigationMenuTemplateSelector
|
|
x:Key="NavigationMenuTemplateSelector"
|
|
RatingItemTemplate="{StaticResource RatingItemTemplate}"
|
|
SeperatorTemplate="{StaticResource SeperatorTemplate}" />
|
|
|
|
<Style
|
|
x:Key="CalendarNavigationButtonStyle"
|
|
BasedOn="{StaticResource DefaultButtonStyle}"
|
|
TargetType="Button">
|
|
<Setter Property="Margin" Value="0,4,0,0" />
|
|
<Setter Property="Padding" Value="8,4,8,6" />
|
|
<Setter Property="CornerRadius" Value="6" />
|
|
<Setter Property="Width" Value="40" />
|
|
</Style>
|
|
</Page.Resources>
|
|
|
|
<Grid
|
|
x:Name="RootGrid"
|
|
Padding="0"
|
|
ColumnSpacing="0"
|
|
RowSpacing="0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="48" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
|
|
<Grid
|
|
Grid.ColumnSpan="2"
|
|
Background="{ThemeResource WinoApplicationBackgroundColor}"
|
|
IsHitTestVisible="False">
|
|
<Grid.BackgroundTransition>
|
|
<BrushTransition />
|
|
</Grid.BackgroundTransition>
|
|
</Grid>
|
|
|
|
<muxc:NavigationView
|
|
x:Name="navigationView"
|
|
Grid.Row="1"
|
|
Grid.ColumnSpan="3"
|
|
Background="Transparent"
|
|
DisplayModeChanged="NavigationViewDisplayModeChanged"
|
|
IsBackButtonVisible="Collapsed"
|
|
IsPaneOpen="{x:Bind ViewModel.PreferencesService.IsNavigationPaneOpened, Mode=TwoWay}"
|
|
IsPaneToggleButtonVisible="False"
|
|
IsSettingsVisible="False"
|
|
IsTitleBarAutoPaddingEnabled="False"
|
|
ItemInvoked="NavigationViewItemInvoked"
|
|
MenuItemTemplateSelector="{StaticResource NavigationMenuTemplateSelector}"
|
|
MenuItemsSource="{x:Bind ViewModel.MenuItems, Mode=OneWay}"
|
|
OpenPaneLength="{x:Bind ViewModel.StatePersistenceService.OpenPaneLength, Mode=TwoWay}"
|
|
PaneClosed="NavigationPaneClosed"
|
|
PaneDisplayMode="Auto"
|
|
PaneOpened="NavigationPaneOpened"
|
|
Style="{StaticResource CalendarShellNavigationViewStyle}">
|
|
<muxc:NavigationView.PaneCustomContent>
|
|
<Grid x:Name="PaneCustomContent" Padding="0,0,0,6">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<coreControls:WinoNavigationViewItem
|
|
x:Name="NewCalendarEventNavigationItem"
|
|
Grid.Row="0"
|
|
Height="50"
|
|
Margin="0,0,0,12"
|
|
AutomationProperties.Name="{x:Bind domain:Translator.CalendarEventCompose_NewEventButton, Mode=OneTime}"
|
|
IsTabStop="True"
|
|
KeyDown="NewCalendarEventNavigationItemKeyDown"
|
|
SelectsOnInvoked="False"
|
|
Tapped="NewCalendarEventNavigationItemTapped">
|
|
<muxc:NavigationViewItem.Icon>
|
|
<coreControls:WinoFontIcon Icon="NewMail" />
|
|
</muxc:NavigationViewItem.Icon>
|
|
<TextBlock
|
|
Margin="0,-2,0,0"
|
|
VerticalAlignment="Center"
|
|
FontSize="16"
|
|
Style="{StaticResource FlyoutPickerTitleTextBlockStyle}"
|
|
Text="{x:Bind domain:Translator.CalendarEventCompose_NewEventButton, Mode=OneTime}" />
|
|
</coreControls:WinoNavigationViewItem>
|
|
|
|
<Border
|
|
x:Name="RangeSummaryCard"
|
|
Grid.Row="1"
|
|
Margin="16,0,16,12"
|
|
Padding="12"
|
|
Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"
|
|
CornerRadius="8">
|
|
<StackPanel Spacing="12">
|
|
<TextBlock
|
|
FontWeight="SemiBold"
|
|
Text="{x:Bind ViewModel.VisibleDateRangeText, Mode=OneWay}"
|
|
TextWrapping="WrapWholeWords" />
|
|
|
|
<muxc:CalendarView
|
|
x:Name="VisibleDateRangeCalendarView"
|
|
HorizontalAlignment="Stretch"
|
|
SelectionMode="Multiple"
|
|
SelectedDatesChanged="VisibleDateRangeCalendarViewSelectedDatesChanged" />
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Account Calendars Host -->
|
|
<ListView
|
|
x:Name="CalendarHostListView"
|
|
Grid.Row="2"
|
|
ItemsSource="{x:Bind ViewModel.AccountCalendarStateService.GroupedAccountCalendars}"
|
|
SelectionMode="None">
|
|
<ListView.Header>
|
|
<TextBlock
|
|
Margin="20,12,12,12"
|
|
FontSize="16"
|
|
Text="Calendars" />
|
|
</ListView.Header>
|
|
<ListView.ItemTemplate>
|
|
<DataTemplate x:DataType="data:GroupedAccountCalendarViewModel">
|
|
<muxc:Expander
|
|
HorizontalAlignment="Stretch"
|
|
HorizontalContentAlignment="Stretch"
|
|
IsExpanded="{x:Bind IsExpanded, Mode=TwoWay}">
|
|
<muxc:Expander.Header>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<CheckBox
|
|
Width="26"
|
|
MinWidth="0"
|
|
IsChecked="{x:Bind IsCheckedState, Mode=TwoWay}"
|
|
IsThreeState="True" />
|
|
|
|
<TextBlock
|
|
Grid.Column="1"
|
|
VerticalAlignment="Center"
|
|
TextWrapping="Wrap">
|
|
<Run FontWeight="SemiBold" Text="{x:Bind Account.Name}" />
|
|
<Run FontSize="12" Text="(" /><Run FontSize="12" Text="{x:Bind Account.Address}" /><Run FontSize="12" Text=")" />
|
|
</TextBlock>
|
|
</Grid>
|
|
</muxc:Expander.Header>
|
|
<muxc:Expander.Content>
|
|
<ItemsControl ItemsSource="{x:Bind AccountCalendars}">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate x:DataType="data:AccountCalendarViewModel">
|
|
<CheckBox
|
|
HorizontalAlignment="Stretch"
|
|
VerticalAlignment="Center"
|
|
HorizontalContentAlignment="Stretch"
|
|
VerticalContentAlignment="Stretch"
|
|
IsChecked="{x:Bind IsChecked, Mode=TwoWay}">
|
|
<Grid Margin="0,0,0,5" ColumnSpacing="6">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Ellipse
|
|
Width="20"
|
|
Height="20"
|
|
Fill="{x:Bind helpers:XamlHelpers.GetSolidColorBrushFromHex(BackgroundColorHex), Mode=OneWay}" />
|
|
|
|
<TextBlock
|
|
Grid.Column="1"
|
|
VerticalAlignment="Center"
|
|
FontSize="14"
|
|
Text="{x:Bind Name, Mode=OneWay}"
|
|
TextWrapping="Wrap" />
|
|
</Grid>
|
|
</CheckBox>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
</muxc:Expander.Content>
|
|
</muxc:Expander>
|
|
</DataTemplate>
|
|
</ListView.ItemTemplate>
|
|
</ListView>
|
|
</Grid>
|
|
</muxc:NavigationView.PaneCustomContent>
|
|
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- Main Content -->
|
|
<Frame
|
|
x:Name="InnerShellFrame"
|
|
Padding="0,0,7,7"
|
|
CacheSize="0"
|
|
IsNavigationStackEnabled="True">
|
|
<Frame.ContentTransitions>
|
|
<TransitionCollection>
|
|
<PopupThemeTransition />
|
|
</TransitionCollection>
|
|
</Frame.ContentTransitions>
|
|
</Frame>
|
|
|
|
<!-- InfoBar -->
|
|
<coreControls:WinoInfoBar
|
|
x:Name="ShellInfoBar"
|
|
MaxWidth="700"
|
|
Margin="0,60,25,0"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Top"
|
|
IsClosable="False"
|
|
IsOpen="False" />
|
|
</Grid>
|
|
</muxc:NavigationView>
|
|
|
|
<VisualStateManager.VisualStateGroups>
|
|
<VisualStateGroup x:Name="LowResolutionStates">
|
|
<VisualState x:Name="BigScreen">
|
|
<VisualState.StateTriggers>
|
|
<AdaptiveTrigger MinWindowWidth="1200" />
|
|
</VisualState.StateTriggers>
|
|
<VisualState.Setters>
|
|
<Setter Target="navigationView.IsPaneOpen" Value="True" />
|
|
</VisualState.Setters>
|
|
</VisualState>
|
|
<VisualState x:Name="SmallScreen">
|
|
<VisualState.Setters>
|
|
<Setter Target="navigationView.IsPaneOpen" Value="False" />
|
|
</VisualState.Setters>
|
|
<VisualState.StateTriggers>
|
|
<AdaptiveTrigger MinWindowWidth="0" />
|
|
</VisualState.StateTriggers>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
|
|
<VisualStateGroup x:Name="CalendarOrientationStates">
|
|
<VisualState x:Name="HorizontalCalendar" />
|
|
<VisualState x:Name="VerticalCalendar" />
|
|
</VisualStateGroup>
|
|
|
|
<VisualStateGroup x:Name="ShellStateContentGroup">
|
|
<VisualState x:Name="DefaultShellContentState" />
|
|
<VisualState x:Name="EventDetailsContentState">
|
|
<VisualState.Setters>
|
|
<Setter Target="RangeSummaryCard.IsEnabled" Value="False" />
|
|
<Setter Target="CalendarHostListView.IsEnabled" Value="False" />
|
|
</VisualState.Setters>
|
|
<VisualState.StateTriggers>
|
|
<StateTrigger IsActive="{x:Bind ViewModel.StatePersistenceService.IsEventDetailsVisible, Mode=OneWay}" />
|
|
</VisualState.StateTriggers>
|
|
</VisualState>
|
|
</VisualStateGroup>
|
|
</VisualStateManager.VisualStateGroups>
|
|
</Grid>
|
|
</abstract:CalendarAppShellAbstract>
|
|
|
|
|
|
|
|
|