Monthly calendar basics.

This commit is contained in:
Burak Kaan Köse
2025-01-06 21:56:33 +01:00
parent 125c277c88
commit 0f57a4dfd7
43 changed files with 915 additions and 336 deletions

View File

@@ -34,49 +34,30 @@ namespace Wino.Services
public Type GetPageType(WinoPage winoPage)
{
switch (winoPage)
return winoPage switch
{
case WinoPage.None:
return null;
case WinoPage.IdlePage:
return typeof(IdlePage);
case WinoPage.AccountDetailsPage:
return typeof(AccountDetailsPage);
case WinoPage.MergedAccountDetailsPage:
return typeof(MergedAccountDetailsPage);
case WinoPage.AccountManagementPage:
return typeof(NewAccountManagementPage);
case WinoPage.SignatureManagementPage:
return typeof(SignatureManagementPage);
case WinoPage.AboutPage:
return typeof(AboutPage);
case WinoPage.PersonalizationPage:
return typeof(PersonalizationPage);
case WinoPage.MessageListPage:
return typeof(MessageListPage);
case WinoPage.ReadComposePanePage:
return typeof(ReadComposePanePage);
case WinoPage.MailRenderingPage:
return typeof(MailRenderingPage);
case WinoPage.ComposePage:
return typeof(ComposePage);
case WinoPage.MailListPage:
return typeof(MailListPage);
case WinoPage.SettingsPage:
return typeof(SettingsPage);
case WinoPage.WelcomePage:
return typeof(WelcomePage);
case WinoPage.SettingOptionsPage:
return typeof(SettingOptionsPage);
case WinoPage.AppPreferencesPage:
return typeof(AppPreferencesPage);
case WinoPage.AliasManagementPage:
return typeof(AliasManagementPage);
case WinoPage.LanguageTimePage:
return typeof(LanguageTimePage);
default:
return null;
}
WinoPage.None => null,
WinoPage.IdlePage => typeof(IdlePage),
WinoPage.AccountDetailsPage => typeof(AccountDetailsPage),
WinoPage.MergedAccountDetailsPage => typeof(MergedAccountDetailsPage),
WinoPage.AccountManagementPage => typeof(AccountManagementPage),
WinoPage.ManageAccountsPage => typeof(ManageAccountsPage),
WinoPage.SignatureManagementPage => typeof(SignatureManagementPage),
WinoPage.AboutPage => typeof(AboutPage),
WinoPage.PersonalizationPage => typeof(PersonalizationPage),
WinoPage.MessageListPage => typeof(MessageListPage),
WinoPage.ReadComposePanePage => typeof(ReadComposePanePage),
WinoPage.MailRenderingPage => typeof(MailRenderingPage),
WinoPage.ComposePage => typeof(ComposePage),
WinoPage.MailListPage => typeof(MailListPage),
WinoPage.SettingsPage => typeof(SettingsPage),
WinoPage.WelcomePage => typeof(WelcomePage),
WinoPage.SettingOptionsPage => typeof(SettingOptionsPage),
WinoPage.AppPreferencesPage => typeof(AppPreferencesPage),
WinoPage.AliasManagementPage => typeof(AliasManagementPage),
WinoPage.LanguageTimePage => typeof(LanguageTimePage),
_ => null,
};
}
public Frame GetCoreFrame(NavigationReferenceFrame frameType)

View File

@@ -1,9 +0,0 @@
using Wino.Core.UWP;
using Wino.Core.ViewModels;
namespace Wino.Views.Abstract
{
public abstract class NewAccountManagementPageAbstract : BasePage<NewAccountManagementPageViewModel>
{
}
}

View File

@@ -8,7 +8,6 @@
xmlns:coreControls="using:Wino.Core.UWP.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:domain="using:Wino.Core.Domain"
xmlns:entites="using:Wino.Core.Domain.Entities"
xmlns:folders="using:Wino.Core.Domain.Models.Folders"
xmlns:helpers="using:Wino.Helpers"
xmlns:interactionsCore="using:Microsoft.Xaml.Interactions.Core"

View File

@@ -1,49 +0,0 @@
<abstract:NewAccountManagementPageAbstract
x:Class="Wino.Views.NewAccountManagementPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:abstract="using:Wino.Views.Abstract"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:helpers="using:Wino.Helpers"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModelData="using:Wino.Mail.ViewModels.Data"
xmlns:winuiControls="using:Microsoft.UI.Xaml.Controls"
Style="{StaticResource PageStyle}"
mc:Ignorable="d">
<Border Style="{StaticResource PageRootBorderStyle}">
<Grid
MaxWidth="900"
Padding="20"
HorizontalAlignment="Stretch"
RowSpacing="20">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<winuiControls:BreadcrumbBar
x:Name="Breadcrumb"
ItemClicked="BreadItemClicked"
ItemsSource="{x:Bind PageHistory, Mode=OneWay}">
<winuiControls:BreadcrumbBar.ItemTemplate>
<DataTemplate>
<winuiControls:BreadcrumbBarItem Margin="0,0,8,0">
<winuiControls:BreadcrumbBarItem.ContentTemplate>
<DataTemplate x:DataType="viewModelData:BreadcrumbNavigationItemViewModel">
<TextBlock
Margin="0,0,8,10"
FontWeight="{x:Bind helpers:XamlHelpers.GetFontWeightBySyncState(IsActive), Mode=OneWay}"
Style="{StaticResource TitleTextBlockStyle}"
Text="{Binding Title, Mode=OneWay}" />
</DataTemplate>
</winuiControls:BreadcrumbBarItem.ContentTemplate>
</winuiControls:BreadcrumbBarItem>
</DataTemplate>
</winuiControls:BreadcrumbBar.ItemTemplate>
</winuiControls:BreadcrumbBar>
<Frame x:Name="AccountPagesFrame" Grid.Row="1" />
</Grid>
</Border>
</abstract:NewAccountManagementPageAbstract>

View File

@@ -1,112 +0,0 @@
using System;
using System.Collections.ObjectModel;
using System.Linq;
using CommunityToolkit.Mvvm.Messaging;
using MoreLinq;
using Windows.UI.Xaml.Media.Animation;
using Windows.UI.Xaml.Navigation;
using Wino.Core.Domain.Enums;
using Wino.Mail.ViewModels.Data;
using Wino.Messaging.Client.Navigation;
using Wino.Messaging.UI;
using Wino.Views.Abstract;
using Wino.Views.Account;
using Wino.Views.Settings;
namespace Wino.Views
{
public sealed partial class NewAccountManagementPage : NewAccountManagementPageAbstract,
IRecipient<BackBreadcrumNavigationRequested>,
IRecipient<BreadcrumbNavigationRequested>,
IRecipient<MergedInboxRenamed>
{
public ObservableCollection<BreadcrumbNavigationItemViewModel> PageHistory { get; set; } = new ObservableCollection<BreadcrumbNavigationItemViewModel>();
public NewAccountManagementPage()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
var initialRequest = new BreadcrumbNavigationRequested("Manage Accounts", Core.Domain.Enums.WinoPage.AccountManagementPage);
PageHistory.Add(new BreadcrumbNavigationItemViewModel(initialRequest, true));
AccountPagesFrame.Navigate(typeof(AccountManagementPage), null, new SuppressNavigationTransitionInfo());
}
private Type GetPageNavigationType(WinoPage page)
{
return page switch
{
WinoPage.SignatureManagementPage => typeof(SignatureManagementPage),
WinoPage.AccountDetailsPage => typeof(AccountDetailsPage),
WinoPage.MergedAccountDetailsPage => typeof(MergedAccountDetailsPage),
WinoPage.AliasManagementPage => typeof(AliasManagementPage),
_ => null,
};
}
void IRecipient<BreadcrumbNavigationRequested>.Receive(BreadcrumbNavigationRequested message)
{
var pageType = GetPageNavigationType(message.PageType);
if (pageType == null) return;
AccountPagesFrame.Navigate(pageType, message.Parameter, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight });
PageHistory.ForEach(a => a.IsActive = false);
PageHistory.Add(new BreadcrumbNavigationItemViewModel(message, true));
}
private void GoBackFrame()
{
if (AccountPagesFrame.CanGoBack)
{
PageHistory.RemoveAt(PageHistory.Count - 1);
AccountPagesFrame.GoBack(new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight });
}
}
private void BreadItemClicked(Microsoft.UI.Xaml.Controls.BreadcrumbBar sender, Microsoft.UI.Xaml.Controls.BreadcrumbBarItemClickedEventArgs args)
{
var clickedPageHistory = PageHistory[args.Index];
while (PageHistory.FirstOrDefault(a => a.IsActive) != clickedPageHistory)
{
AccountPagesFrame.GoBack(new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight });
PageHistory.RemoveAt(PageHistory.Count - 1);
PageHistory[PageHistory.Count - 1].IsActive = true;
}
}
public void Receive(BackBreadcrumNavigationRequested message)
{
GoBackFrame();
}
public void Receive(AccountUpdatedMessage message)
{
// TODO: Find better way to retrieve page history from the stack for the account.
var activePage = PageHistory.LastOrDefault();
if (activePage == null) return;
activePage.Title = message.Account.Name;
}
public void Receive(MergedInboxRenamed message)
{
// TODO: Find better way to retrieve page history from the stack for the merged account.
var activePage = PageHistory.LastOrDefault();
if (activePage == null) return;
activePage.Title = message.NewName;
}
}
}

View File

@@ -281,7 +281,6 @@
<Compile Include="Views\Abstract\MailRenderingPageAbstract.cs" />
<Compile Include="Views\Abstract\MergedAccountDetailsPageAbstract.cs" />
<Compile Include="Views\Abstract\MessageListPageAbstract.cs" />
<Compile Include="Views\Abstract\NewAccountManagementPageAbstract.cs" />
<Compile Include="Views\Abstract\PersonalizationPageAbstract.cs" />
<Compile Include="Views\Abstract\ReadComposePanePageAbstract.cs" />
<Compile Include="Views\Abstract\SignatureManagementPageAbstract.cs" />
@@ -322,9 +321,6 @@
<Compile Include="Views\MailRenderingPage.xaml.cs">
<DependentUpon>MailRenderingPage.xaml</DependentUpon>
</Compile>
<Compile Include="Views\NewAccountManagementPage.xaml.cs">
<DependentUpon>NewAccountManagementPage.xaml</DependentUpon>
</Compile>
<Compile Include="Views\PersonalizationPage.xaml.cs">
<DependentUpon>PersonalizationPage.xaml</DependentUpon>
</Compile>
@@ -452,10 +448,6 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\NewAccountManagementPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\PersonalizationPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>