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); }
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); }
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; } }