public void chiusoSnapshotPubblicoWindow(object sender, EventArgs e) { _snapshotPubblicoWindow.Closed -= chiusoSnapshotPubblicoWindow; _snapshotPubblicoWindow = null; // Se ho aperto lo ss, lo riporto in primo piano. if (_slideShowWindow != null) { _slideShowWindow.Topmost = true; } FormuleMagiche.attendiGcFinalizers(); }
public void chiudereFinestraSnapshotPubblico() { if (_snapshotPubblicoWindow != null) { ClosableWiewModel cvm = (ClosableWiewModel)snapshotPubblicoViewModel; Object param = null; if (cvm.CloseCommand.CanExecute(param)) { cvm.CloseCommand.Execute(param); } _snapshotPubblicoWindow = null; // Se quando mi sono aperta, stava girando lo ss, allora lo avevo messo in pausa, // quindi adesso lo riattivo. if (stavaGirandoLoSlideShow) { if (slideShowViewModel != null && slideShowViewModel.isPaused) { slideShowViewModel.start(); } } stavaGirandoLoSlideShow = false; } }
/// <summary> /// Se la finestra dello slide show non è aperta (o non è istanziata) /// la creo sul momento /// </summary> private bool forseApriSnapshotPubblicoWindow() { // Se è già aperta, non faccio niente if (_snapshotPubblicoWindow != null) { return(false); } IInputElement elementoKeyboardInfuocato = Keyboard.FocusedElement; // Apro la finestra modeless // Create a window and make this window its owner _snapshotPubblicoWindow = new SnapshotPubblicoWindow(); _snapshotPubblicoWindow.Closed += chiusoSnapshotPubblicoWindow; if (_slideShowWindow != null) { // Se ho lo ss attivo, allora devo prendere il suo posto if (_slideShowWindow.WindowState == WindowState.Maximized) { // In questo caso non posso massimizzare a mia volta :-( // Se sono sul secondo monitor, devo lavorare come se fosse in normal WpfScreen scrn = WpfScreen.GetScreenFrom(_slideShowWindow); _snapshotPubblicoWindow.Height = scrn.WorkingArea.Height; _snapshotPubblicoWindow.Width = scrn.WorkingArea.Width; _snapshotPubblicoWindow.Top = scrn.WorkingArea.Top; _snapshotPubblicoWindow.Left = scrn.WorkingArea.Left; } else { _snapshotPubblicoWindow.Height = _slideShowWindow.Height; _snapshotPubblicoWindow.Width = _slideShowWindow.Width; _snapshotPubblicoWindow.Top = _slideShowWindow.Top; _snapshotPubblicoWindow.Left = _slideShowWindow.Left; } _snapshotPubblicoWindow.WindowState = WindowState.Normal; } else { // valorizzo la geometria del form = a quella del form slide show (praticamente lo ricopro) _snapshotPubblicoWindow.Height = Configurazione.UserConfigLumen.geometriaFinestraSlideShow.Height; _snapshotPubblicoWindow.Width = Configurazione.UserConfigLumen.geometriaFinestraSlideShow.Width; _snapshotPubblicoWindow.Top = Configurazione.UserConfigLumen.geometriaFinestraSlideShow.Top; _snapshotPubblicoWindow.Left = Configurazione.UserConfigLumen.geometriaFinestraSlideShow.Left; /* * if( Configurazione.UserConfigLumen.fullScreen ) * _snapshotPubblicoWindow.WindowState = WindowState.Maximized; * else * _snapshotPubblicoWindow.WindowState = WindowState.Normal; * */ } _snapshotPubblicoWindow.Show(); _snapshotPubblicoWindow.Topmost = true; // Riposiziono il fuoco sul componente che lo deteneva prima di aprire la finestra Keyboard.Focus(elementoKeyboardInfuocato); if (Configurazione.UserConfigLumen.geometriaFinestraSlideShow.fullScreen) { _snapshotPubblicoWindow.WindowState = WindowState.Maximized; } else { _snapshotPubblicoWindow.WindowState = WindowState.Normal; } return(true); }