Пример #1
0
 public void ChangeState(FlyoutViewState state)
 {
     Trace.WriteLine($"OSDWindowViewModel: ChangeState {State} -> {state}");
     // TODO: should assert all state transitions are legal/valid/expected, like FlyoutVieModel.cs.
     State = state;
     StateChanged?.Invoke(this, state);
 }
Пример #2
0
        private void ValidateStateChange(FlyoutViewState newState)
        {
            var  oldState = State;
            bool isValidStateTransition =
                (oldState == FlyoutViewState.NotLoaded && newState == FlyoutViewState.Hidden) ||
                (oldState == FlyoutViewState.Hidden && newState == FlyoutViewState.Opening) ||
                (oldState == FlyoutViewState.Opening && newState == FlyoutViewState.Open) ||
                (oldState == FlyoutViewState.Open && newState == FlyoutViewState.Closing_Stage1) ||
                (oldState == FlyoutViewState.Closing_Stage1 && newState == FlyoutViewState.Closing_Stage2) ||
                (oldState == FlyoutViewState.Closing_Stage1 && newState == FlyoutViewState.Hidden) ||
                (oldState == FlyoutViewState.Closing_Stage2 && newState == FlyoutViewState.Hidden);

            Debug.Assert(isValidStateTransition);
        }
Пример #3
0
        public void ChangeState(FlyoutViewState state)
        {
            Trace.WriteLine($"FlyoutViewModel ChangeState {state}");
            ValidateStateChange(state);
            State = state;
            StateChanged?.Invoke(this, null);

            switch (State)
            {
            case FlyoutViewState.Open:
                _mainViewModel.OnTrayFlyoutShown();

                if (_closedDuringOpen)
                {
                    _closedDuringOpen = false;
                    BeginClose(InputType.Command);
                }
                break;

            case FlyoutViewState.Closing_Stage1:
                _mainViewModel.OnTrayFlyoutHidden();
                Dialog.IsVisible = false;

                if (LastInput == InputType.Keyboard && !IsExpandingOrCollapsing)
                {
                    _returnFocusToTray.Invoke();
                }
                break;

            case FlyoutViewState.Closing_Stage2:
                _deBounceTimer.Start();
                break;

            case FlyoutViewState.Hidden:
                if (IsExpandingOrCollapsing)
                {
                    IsExpandingOrCollapsing = false;
                    DoExpandCollapse();
                    BeginOpen(LastInput);
                }
                break;
            }
        }