2021-11-07 19:42:59 +01:00
|
|
|
|
using TINK.MultilingualResources;
|
|
|
|
|
using TINK.ViewModel.Info;
|
|
|
|
|
using TINK.Services.CopriApi.ServerUris;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using TINK.View.Themes;
|
|
|
|
|
using TINK.Services;
|
|
|
|
|
|
|
|
|
|
namespace TINK.ViewModel.RootShell
|
|
|
|
|
{
|
|
|
|
|
public class AppShellViewModel : INotifyPropertyChanged
|
|
|
|
|
{
|
|
|
|
|
public AppShellViewModel()
|
|
|
|
|
{
|
|
|
|
|
App.ModelRoot.ActiveUser.StateChanged += (sender, eventargs) =>
|
|
|
|
|
{
|
|
|
|
|
// Login state changed. Update related menu entries.
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsMyBikesPageVisible)));
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsFindBikePageVisible)));
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsAccountPageVisible)));
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsLoginPageVisible)));
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsSettingsPageVisible)));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Update flyout view model whenever theme is switched.
|
|
|
|
|
App.ModelRoot.Themes.PropertyChanged += (sender, eventargs) =>
|
|
|
|
|
{
|
|
|
|
|
if (!(sender is ServicesContainerMutable<object> themes))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
MasterDetailMenuTitlte = GetMasterDetailMenuTitle(themes.Active);
|
|
|
|
|
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(MasterDetailMenuTitlte)));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
MasterDetailMenuTitlte = GetMasterDetailMenuTitle(App.ModelRoot.Themes.Active);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Gets the flyout title from theme name
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="theme">Name of theme.</param>
|
|
|
|
|
/// <returns>Flyout title.</returns>
|
|
|
|
|
private string GetMasterDetailMenuTitle(object theme)
|
|
|
|
|
{
|
|
|
|
|
if (!(theme is ITheme active))
|
|
|
|
|
return TINK.Themes.ShareeBike.OPERATORINFO;
|
|
|
|
|
|
|
|
|
|
return $"{(!string.IsNullOrEmpty(active.OperatorInfo) ? ($"{active.OperatorInfo}") : "sharee.bike")}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Holds the title of the fylout page.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string MasterDetailMenuTitlte { get; private set; }
|
|
|
|
|
|
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
|
|
|
|
|
|
public bool IsMyBikesPageVisible => App.ModelRoot.ActiveUser.IsLoggedIn;
|
|
|
|
|
|
|
|
|
|
public bool IsFindBikePageVisible => App.ModelRoot.ActiveUser.IsLoggedIn;
|
|
|
|
|
|
|
|
|
|
public bool IsAccountPageVisible => App.ModelRoot.ActiveUser.IsLoggedIn;
|
|
|
|
|
|
|
|
|
|
public bool IsLoginPageVisible => !App.ModelRoot.ActiveUser.IsLoggedIn;
|
|
|
|
|
|
|
|
|
|
public bool IsSettingsPageVisible => App.ModelRoot.Uris.ActiveUri.Host.GetIsCopri()
|
|
|
|
|
|| App.ModelRoot.ActiveUser.IsLoggedIn;
|
|
|
|
|
|
2021-11-07 21:28:13 +01:00
|
|
|
|
public string TabbedPageIngoTitle => AppResources.MarkingAbout;
|
2021-11-07 19:42:59 +01:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|