1using CommunityToolkit.Mvvm.ComponentModel;
2using System.Collections.ObjectModel;
3using System.ComponentModel;
13 private const int defaultIconHeight = 150;
15 private readonly ServiceProvidersNavigationArgs? navigationArgs;
24 this.navigationArgs = Args;
28 this.Title = Args.Title;
29 this.Description = Args.Description;
31 foreach (IServiceProvider ServiceProvider
in Args.ServiceProviders)
33 this.
ServiceProviders.Add(
new ServiceProviderViewModel(ServiceProvider, defaultIconHeight,
this));
41 if (this.navigationArgs?.ServiceProvider is TaskCompletionSource<IServiceProvider> TaskSource)
42 TaskSource.TrySetResult(
null);
44 await base.OnDispose();
53 private string? title;
59 private string? description;
70 private ServiceProviderViewModel? selectedServiceProvider;
75 base.OnPropertyChanged(e);
77 switch (e.PropertyName)
79 case nameof(this.SelectedServiceProvider):
80 MainThread.BeginInvokeOnMainThread(async () =>
82 await this.TrySetResultAndClosePage(this.SelectedServiceProvider?.ServiceProvider);
93 return this.TrySetResultAndClosePage(
null);
96 private async Task TrySetResultAndClosePage(IServiceProvider? ServiceProvider)
98 TaskCompletionSource<IServiceProvider?>? TaskSource =
null;
100 if (this.navigationArgs is not
null)
102 TaskSource = this.navigationArgs.ServiceProvider;
103 this.navigationArgs.ServiceProvider =
null;
108 TaskSource?.TrySetResult(ServiceProvider);
115 internal async Task SelectServiceProvider(ServiceProviderViewModel ServiceProvider)
117 await MainThread.InvokeOnMainThreadAsync(async () =>
119 await this.TrySetResultAndClosePage(ServiceProvider.ServiceProvider);
The view model to bind to for when displaying a list of service providers.
ObservableCollection< ServiceProviderViewModel > ServiceProviders
Holds a list of service providers
override async Task OnDispose()
Method called when the view is disposed, and will not be used more. Use this method to unregister eve...
override void OnPropertyChanged(PropertyChangedEventArgs e)
override Task GoBack()
Method called when user wants to navigate to the previous screen.
ServiceProvidersViewModel(ServiceProvidersNavigationArgs? Args)
Creates an instance of the ServiceProvidersViewModel class.
A view model that holds the XMPP state.
Interface for information about a service provider.