Exemple #1
0
        private async void BtnSearch_Clicked(object sender, EventArgs e)
        {
            // if flickrTask already running, prompt user
            if (flickrTask?.Status != TaskStatus.RanToCompletion)
            {
                flickrClient.CancelPendingRequests();
            }

            // Flickr's web service URL for searches
            var flickrURL = "https://api.flickr.com/services/rest/?method=" +
                            $"flickr.photos.search&api_key={KEY}&" +
                            $"tags={txtSearch.Text.Replace(" ", ",")}" +
                            "&tag_mode=all&per_page=500&privacy_filter=1";

            ListView.ItemsSource = null;
            flickrPhotos         = new List <FlickrResult>()
            {
            };
            masterNavigationItems = new List <MasterNavigationItem>()
            {
            };

            flickrTask = flickrClient.GetStringAsync(flickrURL);

            XDocument flickrXML = XDocument.Parse(await flickrTask);

            flickrPhotos =
                (from photo in flickrXML.Descendants("photo")
                 let id = photo.Attribute("id").Value
                          let title = photo.Attribute("title").Value
                                      let secret = photo.Attribute("secret").Value
                                                   let server = photo.Attribute("server").Value
                                                                let farm = photo.Attribute("farm").Value
                                                                           select new FlickrResult
            {
                Title = title,
                URL = $"https://farm{farm}.staticflickr.com/" +
                      $"{server}/{id}_{secret}.jpg"
            }).ToList();

            if (flickrPhotos.Any())
            {
                await Task.Factory.StartNew(() => {
                    ParallelLoopResult loopResult = Parallel.ForEach <FlickrResult>(flickrPhotos, photo =>
                    {
                        MasterNavigationItem item = new MasterNavigationItem();
                        item.Icon  = photo.URL;
                        item.Title = photo.Title;

                        masterNavigationItems.Add(item);
                    });
                });

                ListView.ItemsSource = masterNavigationItems;
            }
            else // no matches were found
            {
                //imagesListBox.Items.Add("No matches");
            }
        }
Exemple #2
0
 public DetailPageView(MasterNavigationItem item)
 {
     InitializeComponent();
     lblImageName.Text = item.Title;
     imgDetail.Source  = item.Icon;
 }
Exemple #3
0
        private async void BtnSearch_Clicked(object sender, EventArgs e)
        {
            if (txtSearch.Text != " ")
            {
                try
                {
                    // if flickrTask already running, prompt user
                    if (flickrTask?.Status != TaskStatus.RanToCompletion)
                    {
                        bool answer = await DisplayAlert("Alert", "Cancel the current Flickr search?", "No", "Yes");

                        if (answer)
                        {
                            return;
                        }
                        else
                        {
                            flickrClient.CancelPendingRequests(); // cancel search
                        }
                    }

                    // Flickr's web service URL for searches
                    var flickrURL = "https://api.flickr.com/services/rest/?method=" +
                                    $"flickr.photos.search&api_key={KEY}&" +
                                    $"tags={txtSearch.Text.Replace(" ", ",")}" +
                                    "&tag_mode=all&per_page=500&privacy_filter=1";

                    ListView.ItemsSource = null;
                    flickrPhotos         = new List <FlickrResult>()
                    {
                    };
                    masterNavigationItems = new List <MasterNavigationItem>()
                    {
                    };

                    flickrTask = flickrClient.GetStringAsync(flickrURL);

                    XDocument flickrXML = XDocument.Parse(await flickrTask);

                    flickrPhotos =
                        (from photo in flickrXML.Descendants("photo")
                         let id = photo.Attribute("id").Value
                                  let title = photo.Attribute("title").Value
                                              let secret = photo.Attribute("secret").Value
                                                           let server = photo.Attribute("server").Value
                                                                        let farm = photo.Attribute("farm").Value
                                                                                   select new FlickrResult
                    {
                        Title = title,
                        URL = $"https://farm{farm}.staticflickr.com/" +
                              $"{server}/{id}_{secret}.jpg"
                    }).ToList();

                    if (flickrPhotos.Any())
                    {
                        await Task.Factory.StartNew(() =>
                        {
                            ParallelLoopResult loopResult = Parallel.ForEach <FlickrResult>(flickrPhotos, photo =>
                            {
                                MasterNavigationItem item = new MasterNavigationItem
                                {
                                    Icon   = photo.URL,
                                    Title  = photo.Title,
                                    Target = typeof(DetailPageView)
                                };

                                masterNavigationItems.Add(item);
                            });
                        });

                        ListView.ItemsSource = masterNavigationItems;
                    }
                    else
                    {
                        await DisplayAlert("Alert", "No matches", "OK");
                    }
                }
                catch (Exception ex)
                {
                    await DisplayAlert("Exception!", ex.Message, "OK");
                }
            }
        }