예제 #1
0
        private async void HandleItemSelected(Product product)
        {
            // Check for internet connection
            if (!CrossConnectivity.Current.IsConnected)
            {
                await Application.Current.MainPage.DisplayAlert("", "No internet connection", "OK");

                return;
            }

            if (SelectedItem != null)
            {
                SelectedItem = null;

                string document = "";

                if (product.DataURL != null && product.DataURL != "")
                {
                    document = BingWebRequest.SendRequest(product.DataURL);
                }

                if (document != null && document != "")
                {
                    new ProductExtractor().ExtractDetails(product, document);
                }

                await Application.Current.MainPage.Navigation.PushModalAsync(new NavigationPage(new ProductPage(product, true)));
            }
        }
예제 #2
0
        private async void HandleSearch(string text)
        {
            // Check for internet connection
            if (!CrossConnectivity.Current.IsConnected)
            {
                await Application.Current.MainPage.DisplayAlert("", "No internet connection", "OK");

                return;
            }

            string          document = "";
            IList <Product> products = null;

            if (text != null && text.Trim() != "")
            {
                string query = Uri.EscapeDataString(text.Trim());
                document = BingWebRequest.SendRequest("/shop?q=" + query);
            }

            if (document != null && document != "")
            {
                products = new ProductExtractor().ExtractProducts(document);
            }

            if (products != null && products.Count > 0)
            {
                Products       = new ObservableCollection <Product>(products);
                SelectedOption = null;
            }
            else
            {
                await Application.Current.MainPage.DisplayAlert("", "No results", "OK");
            }
        }
예제 #3
0
        private async void ProcessImage(MediaFile file)
        {
            // Check for internet connection
            if (!CrossConnectivity.Current.IsConnected)
            {
                await Application.Current.MainPage.DisplayAlert("", "No internet connection", "OK");

                return;
            }

            if (file == null)
            {
                return;
            }

            // Show photo and enable loading animation
            Source    = file.Path;
            IsRunning = true;
            IsVisible = true;

            // Annotate image on another thread
            string keywords = "";

            try
            {
                await Task.Run(async() =>
                {
                    keywords = await AnnotateAsync(file.Path);
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }

            // Show placeholder and disable loading animation
            Source    = "placeholder.png";
            IsRunning = false;
            IsVisible = false;

            // Search for the item using Bing shop
            if (keywords.Trim() != "")
            {
                string          document = "";
                IList <Product> products = null;

                string query = Uri.EscapeDataString(keywords.Trim());
                document = BingWebRequest.SendRequest("/shop?q=" + query);

                if (document != null && document != "")
                {
                    products = new ProductExtractor().ExtractProducts(document);
                }

                if (products != null && products.Count > 0)
                {
                    await Application.Current.MainPage.Navigation.PushModalAsync(new NavigationPage(new ResultPage(products)));
                }
                else
                {
                    await Application.Current.MainPage.DisplayAlert("", "No results", "OK");
                }
            }
            else
            {
                await Application.Current.MainPage.DisplayAlert("", "No results", "OK");
            }
        }