120 lines
2.4 KiB
C#
120 lines
2.4 KiB
C#
using Model.Website.Enums;
|
|
|
|
namespace Services.Website;
|
|
|
|
public class NavigationService : INavigationService
|
|
{
|
|
private int navigationStateId = -1;
|
|
private string navigationStateType = NavigationStateType.Default;
|
|
|
|
private NavSelectionType navSelectionType = NavSelectionType.None;
|
|
|
|
|
|
private Type renderType = null!;
|
|
private int webPageType;
|
|
private int webSectionType;
|
|
|
|
|
|
public void Subscribe(Action action)
|
|
{
|
|
OnChange += action;
|
|
}
|
|
|
|
public void Unsubscribe(Action action)
|
|
{
|
|
OnChange += action;
|
|
}
|
|
|
|
public void ChangeNavigationSectionId(int newState)
|
|
{
|
|
navigationStateId = newState;
|
|
NotifyDataChanged();
|
|
}
|
|
|
|
public int GetNavigationSectionId()
|
|
{
|
|
return navigationStateId;
|
|
}
|
|
|
|
public void ChangeNavigationState(string newState)
|
|
{
|
|
if (newState.Equals(navigationStateType))
|
|
return;
|
|
|
|
navigationStateType = newState;
|
|
|
|
NotifyDataChanged();
|
|
}
|
|
|
|
public string GetNavigationState()
|
|
{
|
|
return navigationStateType;
|
|
}
|
|
|
|
public void SelectPage(int pageType, Type page)
|
|
{
|
|
if (renderType != page)
|
|
{
|
|
renderType = page;
|
|
webPageType = pageType;
|
|
navSelectionType = NavSelectionType.Page;
|
|
NotifyDataChanged();
|
|
}
|
|
}
|
|
|
|
|
|
public void SelectSection(int section)
|
|
{
|
|
if (section == webSectionType) return;
|
|
webSectionType = section;
|
|
navSelectionType = NavSelectionType.Section;
|
|
|
|
NotifyDataChanged();
|
|
}
|
|
|
|
public void Back()
|
|
{
|
|
if (navSelectionType == NavSelectionType.Page)
|
|
{
|
|
navSelectionType = NavSelectionType.Section;
|
|
webPageType = 0;
|
|
NotifyDataChanged();
|
|
return;
|
|
}
|
|
|
|
if (navSelectionType == NavSelectionType.Section)
|
|
{
|
|
navSelectionType = NavSelectionType.None;
|
|
webSectionType = 0;
|
|
webPageType = 0;
|
|
NotifyDataChanged();
|
|
}
|
|
}
|
|
|
|
public NavSelectionType GetNavSelectionType()
|
|
{
|
|
return navSelectionType;
|
|
}
|
|
|
|
public int GetWebPageId()
|
|
{
|
|
return webPageType;
|
|
}
|
|
|
|
public int GetWebSectionId()
|
|
{
|
|
return webSectionType;
|
|
}
|
|
|
|
public Type GetRenderType()
|
|
{
|
|
return renderType;
|
|
}
|
|
|
|
private event Action OnChange = null!;
|
|
|
|
private void NotifyDataChanged()
|
|
{
|
|
OnChange?.Invoke();
|
|
}
|
|
} |