63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using System;
|
|
using Windows.UI.Xaml;
|
|
using Windows.UI.Xaml.Controls;
|
|
using Wino.Calendar.Views;
|
|
using Wino.Calendar.Views.Account;
|
|
using Wino.Calendar.Views.Settings;
|
|
using Wino.Core.Domain.Enums;
|
|
using Wino.Core.Domain.Interfaces;
|
|
using Wino.Core.Domain.Models.Navigation;
|
|
using Wino.Core.UWP.Services;
|
|
using Wino.Views;
|
|
|
|
namespace Wino.Calendar.Services;
|
|
|
|
public class NavigationService : NavigationServiceBase, INavigationService
|
|
{
|
|
public Type GetPageType(WinoPage winoPage)
|
|
{
|
|
return winoPage switch
|
|
{
|
|
WinoPage.CalendarPage => typeof(CalendarPage),
|
|
WinoPage.SettingsPage => typeof(SettingsPage),
|
|
WinoPage.CalendarSettingsPage => typeof(CalendarSettingsPage),
|
|
WinoPage.AccountManagementPage => typeof(AccountManagementPage),
|
|
WinoPage.ManageAccountsPage => typeof(ManageAccountsPage),
|
|
WinoPage.PersonalizationPage => typeof(PersonalizationPage),
|
|
WinoPage.AccountDetailsPage => typeof(AccountDetailsPage),
|
|
WinoPage.EventDetailsPage => typeof(EventDetailsPage),
|
|
_ => throw new Exception("Page is not implemented yet."),
|
|
};
|
|
}
|
|
|
|
public void GoBack()
|
|
{
|
|
if (Window.Current.Content is Frame appFrame && appFrame.Content is AppShell shellPage)
|
|
{
|
|
var shellFrame = shellPage.GetShellFrame();
|
|
|
|
if (shellFrame.CanGoBack)
|
|
{
|
|
shellFrame.GoBack();
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool Navigate(WinoPage page, object parameter = null, NavigationReferenceFrame frame = NavigationReferenceFrame.ShellFrame, NavigationTransitionType transition = NavigationTransitionType.None)
|
|
{
|
|
// All navigations are performed on shell frame for calendar.
|
|
|
|
if (Window.Current.Content is Frame appFrame && appFrame.Content is AppShell shellPage)
|
|
{
|
|
var shellFrame = shellPage.GetShellFrame();
|
|
|
|
var pageType = GetPageType(page);
|
|
|
|
shellFrame.Navigate(pageType, parameter);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|