Beispiel #1
0
        /// <summary>
        /// Shows the side panel corresponding to the given display mode.
        /// </summary>
        /// <param name="displayMode">The display mode.</param>
        /// <remarks>If the display mode is Hidden, then the side panel will (obviously) be hidden.</remarks>
        public void ToggleSidePanel(SidePanelDisplayMode displayMode)
        {
            TabItem selectedTab = null;

            switch(displayMode)
            {
                case SidePanelDisplayMode.DisplaySettings:
                {
                    selectedTab = displaySettingsPanel;
                    _restoreFocusTarget = showDisplaySettingsButton;
                    break;
                }
                case SidePanelDisplayMode.Navigation:
                {
                    selectedTab = navigationPanel;
                    _restoreFocusTarget = showNavPanelButton;
                    break;
                }
                case SidePanelDisplayMode.Search:
                {
                    selectedTab = searchPanel;
                    _restoreFocusTarget = showSearchPanelButton;
                    break;
                }
                case SidePanelDisplayMode.Help:
                {
                    selectedTab = helpPanel;
                    _restoreFocusTarget = showHelpButton;
                    break;
                }
            }

            if(selectedTab != null)
            {
                sidePanelContainer.SelectedItem = selectedTab;
                ShowSidePanel();
                //Need to refresh surface's scale so it fits properly in ScrollViewer
                DisplaySurface.SetScale(_displayAttributes.VisualScale);

                if(displayMode == SidePanelDisplayMode.Navigation)
                {
                    navigation.RefreshContentsScrollPosition();
                }
            }
            else
            {
                //Switch the tabpanel to an empty panel before hiding
                //This unloads the controls meaning we don't need two sets of code to set focus
                //as controls will always be loaded and call Loaded events

                NoFocus.Focus(); //Stops some of the buggy speech reading and ensures a consistent state
                SelfVoicingSpeakText(this, new SpeechTextEventArgs(Speech.PanelClosedMessage));
                HideSidePanel();
            }

            DisplaySurface.SetFocus();
        }
 /// <summary>
 /// Constructor for the PanelDisplayModeEventArgs, this EventArgs will be used to pass
 /// a display mode.
 /// </summary>
 /// <param name="displayMode"></param>
 public PanelDisplayModeEventArgs(SidePanelDisplayMode displayMode)
 {
     PanelDisplayMode = displayMode;
 }