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.OnDisposeAsync();
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.
override async Task OnDisposeAsync()
Method called when the view is disposed, and will not be used more. Use this method to unregister eve...
ObservableCollection< ServiceProviderViewModel > ServiceProviders
Holds a list of service providers
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.