private async void OnGridButtonClick()

in Apps/Phrasor/MainPage.xaml.cs [315:376]


        private async void OnGridButtonClick(object sender, RoutedEventArgs e)
        {
            var button = sender as Button;
            var phraseNode = button.DataContext as PhraseNode;
            var caption = phraseNode != null ? phraseNode.Caption : button.Content.ToString();

            if (caption == "\uE72B")
            {
                MasterViewModel.GoToNode(MasterViewModel.CurrentNode);
                ShowHideTileNavigation();
                return;
            }
            else if (caption == "\uE72A")
            {
                MasterViewModel.GoToNode(MasterViewModel.CurrentNode);
                ShowHideTileNavigation();
                return;
            }

            switch (_pageMode)
            {
                case PageMode.Delete:
                    if ((phraseNode.IsCategory) && (phraseNode.Children.Count > 0))
                    {
                        // TODO: Add status info somewhere.
                        return;
                    }
                    SetButtonDwellResponse(false);
                    MasterViewModel.CurrentNode.Children.Remove(phraseNode);
                    SetPageMode(PageMode.Run);
                    MasterViewModel.GoToNode(MasterViewModel.CurrentNode);
                    ShowHideTileNavigation();
                    break;

                case PageMode.Edit:
                    var navParams = new KeyboardPageNavigationParams
                    {
                        RootNode = MasterViewModel.RootNode,
                        CurrentNode = MasterViewModel.CurrentNode,
                        ChildNode = phraseNode,
                        NeedsSaving = false,
                        GazePlusClickMode = MasterViewModel.Settings.GazePlusClickMode
                    };
                    Frame.Navigate(typeof(KeyboardPage), navParams);
                    break;

                default:
                    if (phraseNode.IsCategory)
                    {
                        MasterViewModel.GoToNode(phraseNode);
                        ShowHideTileNavigation();
                    }
                    else
                    {
                        var stream = await _speechSynthesizer.SynthesizeTextToStreamAsync(caption);
                        _mediaElement.SetSource(stream, stream.ContentType);
                        _mediaElement.AutoPlay = true;
                        _mediaElement.Play();
                    }
                    break;
            }
        }