private void MediaStatistics(object parameter) { if (null == MediaStatisticsView.Instance) { MediaStatisticsView.Instance = new MediaStatisticsView(); } MediaStatisticsView.Instance.Shows(); DisplayUtil.CenterWindowOnMasterWindowScreen(MediaStatisticsView.Instance, LayoutBackgroundWindow.Instance); // 2018/03/08 - Do NOT force media statistics window to be always topest // MediaStatisticsView.Instance.Owner = _layoutBackgroundWindow.GetTopestWindow(); }
private void UpdateWindowVisibility() { LoginStatus loginStatus = LoginManager.Instance.CurrentLoginStatus; CallStatus callStatus = CallController.Instance.CurrentCallStatus; log.InfoFormat("Update window visibility, login status: {0}, call status: {1}", loginStatus, callStatus); bool isInCall = CallStatus.Dialing == callStatus || CallStatus.ConfIncoming == callStatus || CallStatus.P2pIncoming == callStatus || CallStatus.P2pOutgoing == callStatus || CallStatus.Connected == callStatus; bool isLoginWindowVisible = LoginStatus.NotLogin == loginStatus || LoginStatus.LoggingIn == loginStatus || LoginStatus.LoginFailed == loginStatus || LoginStatus.AnonymousLoggingIn == loginStatus || (LoginStatus.AnonymousLoggedIn == loginStatus && !isInCall); bool isMainWindowVisible = (LoginStatus.LoggedIn == loginStatus) && !isInCall; bool isVideoPeopleWindowVisible = isInCall; Application.Current.Dispatcher.InvokeAsync(() => { if (null != LoginManager.Instance.LoginWindow) { log.InfoFormat("Login window visible:{0}", isLoginWindowVisible); Visibility visibility = isLoginWindowVisible ? Visibility.Visible : Visibility.Collapsed; if (visibility != LoginManager.Instance.LoginWindow.Visibility) { LoginManager.Instance.LoginWindow.Visibility = visibility; if ( Visibility.Visible == SoftwareUpdateWindow.Instance.Visibility && Visibility.Visible == LoginManager.Instance.LoginWindow.Visibility ) { LoginWindow loginWindow = LoginManager.Instance.LoginWindow as LoginWindow; DisplayUtil.SetWindowCenterAndOwner(SoftwareUpdateWindow.Instance, loginWindow); log.Info("Set soft update window owner to login window"); } } else { log.InfoFormat("Login window has been visibility: {0}", visibility); } } if (null != Application.Current.MainWindow) { log.InfoFormat("Main window visible:{0}", isMainWindowVisible); Visibility visibility = isMainWindowVisible ? Visibility.Visible : Visibility.Collapsed; if (visibility != Application.Current.MainWindow.Visibility) { Application.Current.MainWindow.Visibility = visibility; if ( Visibility.Visible == SoftwareUpdateWindow.Instance.Visibility && Visibility.Visible == Application.Current.MainWindow.Visibility && Application.Current.MainWindow.IsLoaded ) { MainWindow mainWindow = Application.Current.MainWindow as MainWindow; DisplayUtil.SetWindowCenterAndOwner(SoftwareUpdateWindow.Instance, mainWindow); log.Info("Set soft update window owner to main window"); } } else { log.InfoFormat("Main window has been visibility: {0}", visibility); } } if (null != VideoPeopleWindow.Instance) { log.InfoFormat("Video people window visible:{0}", isVideoPeopleWindowVisible); Visibility visibility = isVideoPeopleWindowVisible ? Visibility.Visible : Visibility.Collapsed; if (visibility != VideoPeopleWindow.Instance.Visibility) { log.InfoFormat( "Update VideoPeopleWindow visible, FirstShow:{0}, ActualWidth:{1}, ActualHeight:{2}, WindowState: {3}" , VideoPeopleWindow.Instance.FirstShow , VideoPeopleWindow.Instance.ActualWidth , VideoPeopleWindow.Instance.ActualHeight , VideoPeopleWindow.Instance.WindowState ); Visibility currentStatus = VideoPeopleWindow.Instance.Visibility; if (Visibility.Visible == currentStatus && !isVideoPeopleWindowVisible && WindowState.Minimized == VideoPeopleWindow.Instance.WindowState) { // in the case: sending content and the window is minimized, then disconnect it in remote. it should be resume to preseting state and then hidden. VideoPeopleWindow.Instance.Set2PresettingState(); } VideoPeopleWindow.Instance.Visibility = isVideoPeopleWindowVisible ? Visibility.Visible : Visibility.Collapsed; if (isVideoPeopleWindowVisible && (VideoPeopleWindow.Instance.FirstShow || 0 == VideoPeopleWindow.Instance.ActualWidth || 0 == VideoPeopleWindow.Instance.ActualHeight) ) { log.Info("Reset initial size for VideoPeopleWindow"); // resume window size and center the screen on first show VideoPeopleWindow.Instance.FirstShow = false; VideoPeopleWindow.Instance.ResetInitialSize(); DisplayUtil.CenterWindowOnMasterWindowScreen(View.VideoPeopleWindow.Instance, LoginManager.Instance.LoginWindow as LoginWindow); } //VideoPeopleWindow.Instance.Visibility = isVideoPeopleWindowVisible ? Visibility.Visible : Visibility.Collapsed; if (Visibility.Visible == VideoPeopleWindow.Instance.Visibility && currentStatus != Visibility.Visible) { VideoPeopleWindow.Instance.AdjustWindowSize(); } log.InfoFormat("VideoPeopleWindow, left: {0}, top: {1}", VideoPeopleWindow.Instance.Left, VideoPeopleWindow.Instance.Top); if ( Visibility.Visible == SoftwareUpdateWindow.Instance.Visibility && Visibility.Visible == VideoPeopleWindow.Instance.Visibility ) { DisplayUtil.SetWindowCenterAndOwner(SoftwareUpdateWindow.Instance, VideoPeopleWindow.Instance); log.Info("Set soft update window owner to video people window"); } } else { log.InfoFormat("Video people window has been visibility: {0}", visibility); } } }); }