Guest User

Untitled

a guest
Oct 16th, 2021
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.50 KB | None | 0 0
  1. using Soulseek;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Collections.ObjectModel;
  5. using System.ComponentModel;
  6. using System.Threading.Tasks;
  7. using System.Windows.Input;
  8. using Xamarin.Forms;
  9.  
  10. namespace XSeek.ViewModels
  11. {
  12.    
  13.     public class SearchViewModel : INotifyPropertyChanged
  14.     {
  15.         public event PropertyChangedEventHandler PropertyChanged;
  16.         public ICommand SearchCommand { get; }
  17.         private string st;
  18.         public string SearchText
  19.         {
  20.             get
  21.             {
  22.                 return st;
  23.             }
  24.             set
  25.             {
  26.                 if (st != value)
  27.                 {
  28.                     st = value;
  29.                     OnPropertyChanged("SearchText");
  30.                 }
  31.             }
  32.         }
  33.         public Soulseek.Search SearchResponses {get; set;}
  34.         public ObservableCollection<SearchResponse> ResponseResponses { get; set; }
  35.  
  36.         public SearchViewModel()
  37.         {
  38.             var searchProgress = new Progress<Soulseek.Search>(s => UpdateSearchResults(s));
  39.             var responseProgress = new Progress<IReadOnlyCollection<SearchResponse>>(r => UpdateResponseResults(r));
  40.             SearchCommand = new Command(async () => await SearchSoulseekAsync(SearchText, App.AppClient, searchProgress, responseProgress));
  41.         }
  42.         private void UpdateSearchResults(Soulseek.Search s)
  43.         {
  44.             SearchResponses = s;
  45.         }
  46.         private void UpdateResponseResults(IReadOnlyCollection<SearchResponse> r)
  47.         {
  48.             ResponseResponses = (ObservableCollection<SearchResponse>)r;
  49.         }
  50.  
  51.  
  52.         private async Task SearchSoulseekAsync(string SearchText, SoulseekClient AppClient, IProgress<Soulseek.Search> searchProgress, IProgress<IReadOnlyCollection<SearchResponse>> responseProgress)
  53.         {
  54.             (Soulseek.Search SearchRes, IReadOnlyCollection<SearchResponse> ResponseRes) responses = await AppClient.SearchAsync(SearchQuery.FromText(SearchText));
  55.             //return (ObservableCollection<SearchResponse>)responses.ResponseRes;
  56.             searchProgress.Report(responses.SearchRes);
  57.             responseProgress.Report(responses.ResponseRes);
  58.         }
  59.  
  60.         //var responses = await client.SearchAsync(SearchQuery.FromText("Mariya Takeuchi"));
  61.         protected void OnPropertyChanged(string propName)
  62.         {
  63.             if (PropertyChanged != null)
  64.                 PropertyChanged(this, new PropertyChangedEventArgs(propName));
  65.         }
  66.     }
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment