Calendar buttons etc.

This commit is contained in:
Burak Kaan Köse
2026-03-20 13:26:16 +01:00
parent 1fe569e0ac
commit eb8cd7651d
8 changed files with 94 additions and 586 deletions
@@ -38,10 +38,7 @@ public partial class CustomCalendarFlipView : FlipView
{
base.OnApplyTemplate();
PreviousButtonHorizontal = GetTemplateChild(PART_PreviousButtonHorizontal) as Button;
NextButtonHorizontal = GetTemplateChild(PART_NextButtonHorizontal) as Button;
PreviousButtonVertical = GetTemplateChild(PART_PreviousButtonVertical) as Button;
NextButtonVertical = GetTemplateChild(PART_NextButtonVertical) as Button;
RefreshNavigationButtons();
// Hide navigation buttons
HideButton(PreviousButtonHorizontal);
@@ -78,25 +75,47 @@ public partial class CustomCalendarFlipView : FlipView
public void GoPreviousFlip()
{
var previousButton = DisplayType == CalendarDisplayType.Month
? PreviousButtonVertical ?? PreviousButtonHorizontal
: PreviousButtonHorizontal ?? PreviousButtonVertical;
if (previousButton == null) return;
var backPeer = new ButtonAutomationPeer(previousButton);
backPeer.Invoke();
InvokeNavigationButton(PreviousButtonHorizontal, PreviousButtonVertical);
}
public void GoNextFlip()
{
var nextButton = DisplayType == CalendarDisplayType.Month
? NextButtonVertical ?? NextButtonHorizontal
: NextButtonHorizontal ?? NextButtonVertical;
InvokeNavigationButton(NextButtonHorizontal, NextButtonVertical);
}
if (nextButton == null) return;
private void RefreshNavigationButtons()
{
PreviousButtonHorizontal = GetTemplateChild(PART_PreviousButtonHorizontal) as Button;
NextButtonHorizontal = GetTemplateChild(PART_NextButtonHorizontal) as Button;
PreviousButtonVertical = GetTemplateChild(PART_PreviousButtonVertical) as Button;
NextButtonVertical = GetTemplateChild(PART_NextButtonVertical) as Button;
}
var nextPeer = new ButtonAutomationPeer(nextButton);
nextPeer.Invoke();
private void InvokeNavigationButton(Button? primaryButton, Button? secondaryButton)
{
if (Items == null || Items.Count == 0)
return;
RefreshNavigationButtons();
var previousIndex = SelectedIndex;
if (TryInvokeNavigationButton(primaryButton, previousIndex))
{
return;
}
TryInvokeNavigationButton(secondaryButton, previousIndex);
}
private bool TryInvokeNavigationButton(Button? navigationButton, int previousIndex)
{
if (navigationButton == null)
return false;
var peer = new ButtonAutomationPeer(navigationButton);
peer.Invoke();
return SelectedIndex != previousIndex;
}
}
+9 -20
View File
@@ -92,27 +92,17 @@
BorderBrush="Transparent"
Visibility="{x:Bind helpers:XamlHelpers.ReverseBoolToVisibilityConverter(PreferencesService.IsWinoAccountButtonHidden), Mode=OneWay}">
<Button.Flyout>
<Flyout
x:Name="WinoAccountFlyout"
Placement="Bottom">
<Flyout x:Name="WinoAccountFlyout" Placement="Bottom">
<Grid MinWidth="320" MaxWidth="360">
<StackPanel
x:Name="WinoAccountSignedOutView"
Spacing="12">
<TextBlock
Style="{StaticResource BodyStrongTextBlockStyle}"
Text="{x:Bind domain:Translator.WinoAccount_Titlebar_SignedOutTitle}" />
<StackPanel x:Name="WinoAccountSignedOutView" Spacing="12">
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Titlebar_SignedOutTitle}" />
<TextBlock
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind domain:Translator.WinoAccount_Titlebar_SignedOutDescription}"
TextWrapping="WrapWholeWords" />
<StackPanel Orientation="Horizontal" Spacing="8">
<Button
Click="RegisterWinoAccountClicked"
Content="{x:Bind domain:Translator.WinoAccount_RegisterButton_Action}" />
<Button
Click="LoginWinoAccountClicked"
Content="{x:Bind domain:Translator.WinoAccount_LoginButton_Action}" />
<Button Click="RegisterWinoAccountClicked" Content="{x:Bind domain:Translator.WinoAccount_RegisterButton_Action}" />
<Button Click="LoginWinoAccountClicked" Content="{x:Bind domain:Translator.WinoAccount_LoginButton_Action}" />
</StackPanel>
</StackPanel>
@@ -155,13 +145,12 @@
<Border
x:Name="WinoAccountSignedOutIcon"
Width="30"
Height="30"
Background="{ThemeResource AccentFillColorDefaultBrush}"
CornerRadius="15">
<FontIcon
Height="30">
<Image Source="/Assets/AppEntries/MailAssets/Square150x150Logo.png" />
<!--<FontIcon
FontSize="16"
Foreground="White"
Glyph="&#xE77B;" />
Glyph="&#xE77B;" />-->
</Border>
</Grid>
</Button>
@@ -63,87 +63,6 @@
</Style>
</Page.Resources>
<abstract:CalendarAppShellAbstract.ShellContent>
<Grid
Margin="4,0,0,0"
Background="Transparent"
ColumnSpacing="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid x:Name="ShellContentArea" ColumnSpacing="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel
x:Name="NavigationTitleStack"
Grid.Column="0"
Margin="0,0,12,4"
Orientation="Horizontal"
Spacing="6">
<Button
x:Name="PreviousDateButton"
Click="PreviousDateClicked"
Style="{StaticResource CalendarNavigationButtonStyle}">
<PathIcon x:Name="PreviousDateButtonPathIcon" Data="F1 M 8.72 18.599998 C 8.879999 18.733334 9.059999 18.799999 9.26 18.799999 C 9.459999 18.799999 9.633332 18.719999 9.78 18.559999 C 9.926666 18.4 10 18.219999 10 18.019999 C 10 17.82 9.92 17.653332 9.76 17.52 L 4.52 12.559999 L 17.24 12.559999 C 17.453333 12.559999 17.633331 12.486667 17.779999 12.339999 C 17.926666 12.193334 18 12.013333 18 11.799999 C 18 11.586666 17.926666 11.406667 17.779999 11.259999 C 17.633331 11.113333 17.453333 11.039999 17.24 11.039999 L 4.52 11.039999 L 9.76 6.08 C 9.973333 5.893333 10.046666 5.653332 9.98 5.359999 C 9.913333 5.066666 9.74 4.880001 9.46 4.799999 C 9.179999 4.720001 8.933332 4.786667 8.72 5 L 2.32 11.08 C 2.16 11.24 2.053333 11.426666 2 11.639999 C 1.973333 11.746666 1.973333 11.853333 2 11.959999 C 2.053333 12.173333 2.16 12.360001 2.32 12.52 Z " />
</Button>
<Button
x:Name="NextDateButton"
Click="NextDateClicked"
Style="{StaticResource CalendarNavigationButtonStyle}">
<PathIcon x:Name="NextDateButtonPathIcon" Data="F1 M 11.28 5 C 11.12 4.866667 10.94 4.806667 10.74 4.82 C 10.539999 4.833334 10.366666 4.913334 10.219999 5.059999 C 10.073333 5.206665 10 5.379999 10 5.58 C 10 5.779999 10.08 5.946667 10.24 6.08 L 15.48 11.039999 L 2.76 11.039999 C 2.546667 11.039999 2.366667 11.113333 2.22 11.259999 C 2.073333 11.406667 2 11.586666 2 11.799999 C 2 12.013333 2.073333 12.193334 2.22 12.339999 C 2.366667 12.486667 2.546667 12.559999 2.76 12.559999 L 15.48 12.559999 L 10.24 17.52 C 10.026667 17.706665 9.953333 17.946667 10.02 18.24 C 10.086666 18.533333 10.259999 18.719999 10.54 18.799999 C 10.82 18.879999 11.066667 18.813334 11.28 18.599998 L 17.68 12.52 C 17.84 12.360001 17.946667 12.173333 18 11.959999 C 18 11.853333 18 11.746666 18 11.639999 C 17.946667 11.426666 17.84 11.24 17.68 11.08 Z " />
</Button>
<calendarControls:CustomCalendarFlipView
x:Name="DayHeaderNavigationItemsFlipView"
MaxHeight="30"
Margin="8,4,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
HorizontalContentAlignment="Left"
Background="Transparent"
DisplayType="{x:Bind ViewModel.StatePersistenceService.CalendarDisplayType, Mode=OneWay}"
FontSize="14"
FontWeight="Normal"
IsHitTestVisible="False"
ItemsSource="{x:Bind ViewModel.DateNavigationHeaderItems}"
SelectedIndex="{x:Bind ViewModel.SelectedDateNavigationHeaderIndex, Mode=OneWay}">
<FlipView.ItemTemplate>
<DataTemplate x:DataType="x:String">
<TextBlock
VerticalAlignment="Center"
FontSize="18"
Style="{StaticResource BodyTextBlockStyle}"
Text="{x:Bind}" />
</DataTemplate>
</FlipView.ItemTemplate>
</calendarControls:CustomCalendarFlipView>
</StackPanel>
<AutoSuggestBox
x:Name="SearchBox"
Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
BorderBrush="Transparent"
PlaceholderText="Search" />
</Grid>
<calendarControls:WinoCalendarTypeSelectorControl
x:Name="CalendarTypeSelector"
Grid.Column="2"
HorizontalAlignment="Right"
DisplayDayCount="{x:Bind ViewModel.StatePersistenceService.DayDisplayCount, Mode=OneWay}"
SelectedType="{x:Bind ViewModel.StatePersistenceService.CalendarDisplayType, Mode=TwoWay}"
TodayClickedCommand="{x:Bind ViewModel.TodayClickedCommand}" />
</Grid>
</abstract:CalendarAppShellAbstract.ShellContent>
<Grid
x:Name="RootGrid"
Padding="0"
@@ -179,9 +98,9 @@
MenuItemTemplateSelector="{StaticResource NavigationMenuTemplateSelector}"
MenuItemsSource="{x:Bind ViewModel.MenuItems, Mode=OneWay}"
OpenPaneLength="{x:Bind ViewModel.StatePersistenceService.OpenPaneLength, Mode=TwoWay}"
PaneClosed="NavigationPaneClosed"
PaneDisplayMode="Auto"
PaneOpened="NavigationPaneOpened"
PaneClosed="NavigationPaneClosed"
Style="{StaticResource CalendarShellNavigationViewStyle}">
<muxc:NavigationView.PaneCustomContent>
<Grid x:Name="PaneCustomContent" Padding="0,0,0,6">
+13 -103
View File
@@ -80,18 +80,22 @@
</TransitionCollection>
</StackPanel.ChildrenTransitions>
<!-- App About hero card -->
<!-- About hero card. -->
<Border
Padding="24,20"
Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"
BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}"
BorderThickness="1"
CornerRadius="8">
<Grid ColumnSpacing="16">
<Grid ColumnSpacing="16" RowSpacing="16">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel
VerticalAlignment="Center"
@@ -104,8 +108,12 @@
Source="ms-appx:///Assets/AppEntries/MailAssets/Square150x150Logo.scale-100.png"
Stretch="Uniform" />
<StackPanel VerticalAlignment="Center">
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="Wino Mail" />
<TextBlock
VerticalAlignment="Center"
Style="{StaticResource TitleTextBlockStyle}"
Text="Wino Mail" />
<TextBlock
VerticalAlignment="Top"
Foreground="{ThemeResource TextFillColorTertiaryBrush}"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{x:Bind ViewModel.VersionText, Mode=OneWay}" />
@@ -130,6 +138,7 @@
Stretch="Uniform" />
</Viewbox>
</Button>
<Button
Command="{x:Bind ViewModel.NavigateExternalCommand}"
CommandParameter="{x:Bind ViewModel.GitHubUrl, Mode=OneWay}"
@@ -142,6 +151,7 @@
Stretch="Uniform" />
</Viewbox>
</Button>
<Button
Command="{x:Bind ViewModel.NavigateExternalCommand}"
CommandParameter="Store"
@@ -157,106 +167,6 @@
</Grid>
</Border>
<!-- Loading indicator -->
<ProgressRing
x:Name="WinoAccountBusyRing"
Width="24"
Height="24"
HorizontalAlignment="Center"
x:Load="{x:Bind ViewModel.IsWinoAccountBusy, Mode=OneWay}"
IsActive="True" />
<!-- Wino Account: Signed-out state -->
<controls:SettingsCard
x:Name="SignedOutCard"
Description="{x:Bind domain:Translator.SettingsHome_WinoAccount_SignedOutDescription}"
Header="{x:Bind domain:Translator.SettingsHome_WinoAccount_Title}"
x:Load="{x:Bind ViewModel.IsWinoAccountSignedOut, Mode=OneWay}">
<controls:SettingsCard.HeaderIcon>
<FontIcon Glyph="&#xE77B;" />
</controls:SettingsCard.HeaderIcon>
<StackPanel Orientation="Horizontal" Spacing="8">
<Button
Command="{x:Bind ViewModel.WinoAccountSignInCommand}"
Content="{x:Bind domain:Translator.Buttons_SignIn}"
Style="{StaticResource AccentButtonStyle}" />
<Button Command="{x:Bind ViewModel.WinoAccountRegisterCommand}" Content="{x:Bind domain:Translator.Buttons_CreateAccount}" />
</StackPanel>
</controls:SettingsCard>
<!-- Wino Account: Signed-in state -->
<controls:SettingsExpander
x:Name="SignedInExpander"
Description="{x:Bind ViewModel.WinoAccountStatusText, Mode=OneWay}"
Header="{x:Bind ViewModel.WinoAccountEmail, Mode=OneWay}"
x:Load="{x:Bind ViewModel.IsWinoAccountSignedIn, Mode=OneWay}">
<controls:SettingsExpander.HeaderIcon>
<FontIcon Glyph="&#xE77B;" />
</controls:SettingsExpander.HeaderIcon>
<Button
Command="{x:Bind ViewModel.WinoAccountSignOutCommand}"
Content="{x:Bind domain:Translator.WinoAccount_SignOutButton_Action}" />
<controls:SettingsExpander.Items>
<!-- AI Pack active (with progress bar) -->
<controls:SettingsCard
x:Name="AiPackActiveCard"
Description="{x:Bind ViewModel.AiUsageSummary, Mode=OneWay}"
Header="{x:Bind domain:Translator.SettingsHome_AiPack_Title}"
x:Load="{x:Bind ViewModel.CanShowAiUsage, Mode=OneWay}">
<controls:SettingsCard.HeaderIcon>
<ImageIcon Source="ms-appx:///Assets/AIPackIcon.png" />
</controls:SettingsCard.HeaderIcon>
<StackPanel MinWidth="200" Spacing="4">
<ProgressBar
Height="8"
Maximum="100"
Value="{x:Bind ViewModel.AiUsagePercent, Mode=OneWay}" />
<TextBlock
Foreground="{ThemeResource TextFillColorTertiaryBrush}"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{x:Bind ViewModel.AiBillingPeriodSummary, Mode=OneWay}" />
</StackPanel>
</controls:SettingsCard>
<!-- AI Pack not purchased -->
<controls:SettingsCard
x:Name="AiPackBuyCard"
Description="{x:Bind domain:Translator.WinoAccount_Management_AiPackBuyDescription}"
Header="{x:Bind domain:Translator.SettingsHome_AiPack_Title}"
x:Load="{x:Bind ViewModel.CanShowBuyAiPack, Mode=OneWay}">
<controls:SettingsCard.HeaderIcon>
<ImageIcon Source="ms-appx:///Assets/AIPackIcon.png" />
</controls:SettingsCard.HeaderIcon>
<Button
Command="{x:Bind ViewModel.OpenBuyAiPackPageCommand}"
Content="{x:Bind domain:Translator.Buttons_Purchase}"
Style="{StaticResource AccentButtonStyle}" />
</controls:SettingsCard>
<!-- Settings sync -->
<controls:SettingsCard
Click="WinoAccountManagementClicked"
Description="{x:Bind domain:Translator.SettingsHome_SettingsSync_Description}"
Header="{x:Bind domain:Translator.SettingsHome_SettingsSync_Title}"
IsClickEnabled="True">
<controls:SettingsCard.HeaderIcon>
<FontIcon Glyph="&#xE895;" />
</controls:SettingsCard.HeaderIcon>
</controls:SettingsCard>
<!-- Manage Wino Account -->
<controls:SettingsCard
Click="WinoAccountManagementClicked"
Header="{x:Bind domain:Translator.SettingsHome_WinoAccount_ManageLink}"
IsClickEnabled="True">
<controls:SettingsCard.HeaderIcon>
<FontIcon Glyph="&#xE713;" />
</controls:SettingsCard.HeaderIcon>
</controls:SettingsCard>
</controls:SettingsExpander.Items>
</controls:SettingsExpander>
<Border
Padding="12,0,34,20"
+3 -3
View File
@@ -523,10 +523,10 @@
ItemInvoked="NavigationViewItemInvoked"
MenuItemTemplateSelector="{StaticResource NavigationMenuTemplateSelector}"
OpenPaneLength="{x:Bind ViewModel.StatePersistenceService.OpenPaneLength, Mode=TwoWay}"
PaneDisplayMode="Auto"
PaneOpening="NavigationPaneOpening"
PaneOpened="NavigationPaneOpened"
PaneClosed="NavigationPaneClosed"
PaneDisplayMode="Auto"
PaneOpened="NavigationPaneOpened"
PaneOpening="NavigationPaneOpening"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
SelectionChanged="MenuSelectionChanged"
Style="{StaticResource CalendarShellNavigationViewStyle}">