private void ProcessSearch(string searchString)
        {
            int routeNumber = 0;

            bool canConvert = int.TryParse(searchString, out routeNumber); //check if it's a number

            if (canConvert == true)                                        //it's a route or stop number
            {
                int number = int.Parse(searchString);
                if (number < 1000) //route number
                {
                    viewModel.SearchByRoute(searchString, SearchByRouteCallback);
                }
                else //stop number
                {
                    viewModel.SearchByStop(searchString, SearchByStopCallback);
                }
            }
            else if (string.IsNullOrEmpty(searchString) == false) // Try to find the location
            {
                viewModel.SearchByAddress(searchString, SearchByLocationCallback);
            }

            SearchStoryboard.Seek(TimeSpan.Zero);
            SearchStoryboard.Stop();
            this.Focus();
        }
        private void SearchByLocationCallback(LocationForQuery location)
        {
            Dispatcher.BeginInvoke(() =>
            {
                SearchStoryboard.Seek(TimeSpan.Zero);
                SearchStoryboard.Stop();
                this.Focus();
            });

            if (location == null)
            {
                Dispatcher.BeginInvoke(() => MessageBox.Show(searchErrorMessage, "No results found", MessageBoxButton.OK));
            }
            else
            {
                Dispatcher.BeginInvoke(() =>
                {
                    viewModel.CurrentViewState.CurrentRoute          = null;
                    viewModel.CurrentViewState.CurrentRouteDirection = null;
                    viewModel.CurrentViewState.CurrentStop           = null;
                    viewModel.CurrentViewState.CurrentSearchLocation = location;

                    Navigate(new Uri("/StopsMapPage.xaml", UriKind.Relative));
                });
            }
        }
        private void SearchByStopCallback(List <Stop> stops)
        {
            Dispatcher.BeginInvoke(() =>
            {
                SearchStoryboard.Seek(TimeSpan.Zero);
                SearchStoryboard.Stop();
                this.Focus();
            });

            if (stops.Count == 0)
            {
                Dispatcher.BeginInvoke(() => MessageBox.Show(searchErrorMessage, "No results found", MessageBoxButton.OK));
            }
            else
            {
                Dispatcher.BeginInvoke(() =>
                {
                    viewModel.CurrentViewState.CurrentRoute          = null;
                    viewModel.CurrentViewState.CurrentRouteDirection = null;
                    viewModel.CurrentViewState.CurrentStop           = stops[0];
                    viewModel.CurrentViewState.CurrentSearchLocation = null;

                    Navigate(new Uri("/DetailsPage.xaml", UriKind.Relative));
                });
            }
        }
Exemple #4
0
        private void SearchByRouteCallback(List <Route> routes, Exception error)
        {
            Dispatcher.BeginInvoke(() =>
            {
                SearchStoryboard.Seek(TimeSpan.Zero);
                SearchStoryboard.Stop();
                this.Focus();
            });

            if (error != null)
            {
                viewModel_ErrorHandler(this, new ViewModel.EventArgs.ErrorHandlerEventArgs(error));
            }
            else if (routes.Count == 0)
            {
                Dispatcher.BeginInvoke(() => MessageBox.Show(searchErrorMessage, "No results found", MessageBoxButton.OK));
            }
            else
            {
                Dispatcher.BeginInvoke(() =>
                {
                    viewModel.CurrentViewState.CurrentRoutes = routes;
                    Navigate(new Uri("/BusDirectionPage.xaml", UriKind.Relative));
                });
            }
        }
 private void appbar_search_Click(object sender, EventArgs e)
 {
     if (SearchPanel.Opacity == 0)
     {
         SearchStoryboard.Begin();
         SearchInputBox.Focus();
         SearchInputBox.SelectAll();
     }
     else
     {
         ProcessSearch(SearchInputBox.Text);
     }
 }
 private void SearchInputBox_LostFocus(object sender, RoutedEventArgs e)
 {
     SearchStoryboard.Seek(TimeSpan.Zero);
     SearchStoryboard.Stop();
     this.Focus();
 }