public bool posizionaFinestraPubblico() { // carico la eventuale geometria salvata nella configurazione // _pubblicoWindow.posizionamentoInCorso = true; // Come concordato con Ciccio, la finestra pubblico deve avere la stessa posizione di quella dello Slide Show // Quindi non ha una sua propria configurazione. GeometriaFinestra geomPub = (geomSS == null || geomSS.isEmpty()) ? Configurazione.creaGeometriaSlideShowDefault() : geomSS; // Primo tentativo bool esito; esito = posizionaFinestra(_pubblicoWindow, geomPub); // Secondo tentativo con default if (!esito) { geomPub = Configurazione.creaGeometriaSlideShowDefault(); esito = posizionaFinestra(_pubblicoWindow, geomPub); } // _pubblicoWindow.posizionamentoInCorso = false; return(esito); }
public bool posizionaFinestraSlideShow() { // carico la eventuale geometria salvata nella configurazione _slideShowWindow.posizionamentoInCorso = true; // Non ho ancora salvato una geometria. Ne creo una che va sicuramente bene if (geomSS == null || geomSS.isEmpty()) { geomSS = Configurazione.creaGeometriaSlideShowDefault(); } // Primo tentativo bool esito; esito = posizionaFinestra(_slideShowWindow, geomSS); // Secondo tentativo con default if (!esito) { geomSS = Configurazione.creaGeometriaSlideShowDefault(); esito = posizionaFinestra(_slideShowWindow, geomSS); } _slideShowWindow.posizionamentoInCorso = false; return(esito); }
/// <summary> /// Posiziono la finestra dello slide show sul monitor primario, /// con una dimensione che sicuramente è visibile (cioè con una geometria di default) /// </summary> internal void normalizzareFinestraSlideShowSulMonitor1() { // Per prima cosa apro la finestra se questa è chiusa aprireFinestraSlideShow(); // Creo una geometria dalle dimensioni del monitor. GeometriaFinestra geo = Configurazione.creaGeometriaSlideShowDefault(); posizionaFinestra(_slideShowWindow, geo); }
/// <summary> /// Controllo che la geometria della finestra sia posizionabile in un monitor. /// </summary> private void gestisciPosizione() { // Per prima cosa, provo a posizionare la finestra nella posizione indicata in configurazione // Mi copio in locale la geometria della finestra per poterla modificare con lo spostamento geoCurrent = (GeometriaFinestra)Configurazione.UserConfigLumen.geometriaFinestraSlideShow.Clone(); WpfScreen scrn = WpfScreen.GetScreenFrom(geoCurrent.deviceEnum); if (scrn == null) { scrn = WpfScreen.GetFirstScreen(); // Prendo quello di default } // this.WindowStartupLocation = WindowStartupLocation.Manual; _giornale.Debug("SlideShow Primary Device Info:\n " + WpfScreen.Primary.ToDebugString()); _giornale.Debug("SlideShow Configuration Device Info:\n " + scrn.ToDebugString()); if (geoCurrent.deviceEnum != scrn.deviceEnum) { _giornale.Debug("Il monitor impostato non è stato trovato!!!"); geoCurrent.deviceEnum = WpfScreen.Primary.deviceEnum; } if (!verificaProiettabile(scrn, geoCurrent)) { _giornale.Debug("I valori calcolati non sono ammissibili utilizzo quelli di default"); this.geoCurrent = Configurazione.creaGeometriaSlideShowDefault(); } //Se ho messo il full screen resetto i Top e Left if (geoCurrent.fullScreen) { Screen s = (Screen)Screen.AllScreens.GetValue(geoCurrent.deviceEnum); System.Drawing.Rectangle r = s.WorkingArea; geoCurrent.Top = r.Top; geoCurrent.Left = r.Left; } else if (geoCurrent.screenHeight != (int)scrn.WorkingArea.Height || geoCurrent.screenWidth != (int)scrn.WorkingArea.Width) { _giornale.Debug("Ricalcolo la geometria dello slideShow in base al nuovo monitor"); _giornale.Debug("*** VALORI VECCHI ***"); _giornale.Debug(geoCurrent.ToDebugString()); geoCurrent.Top = geoCurrent.Top <= 0 ? 0 : (int)(geoCurrent.Top * scrn.WorkingArea.Height / geoCurrent.screenHeight); geoCurrent.Left = geoCurrent.Left <= 0 ? 0 : (int)(geoCurrent.Left * scrn.WorkingArea.Width / geoCurrent.screenWidth); geoCurrent.Height = (int)(geoCurrent.Height * scrn.WorkingArea.Height / geoCurrent.screenHeight); geoCurrent.Width = (int)(geoCurrent.Width * scrn.WorkingArea.Width / geoCurrent.screenWidth); Screen s = (Screen)Screen.AllScreens.GetValue(geoCurrent.deviceEnum); System.Drawing.Rectangle r = s.WorkingArea; geoCurrent.screenHeight = (int)scrn.WorkingArea.Height; geoCurrent.screenWidth = (int)scrn.WorkingArea.Width; _giornale.Debug("*** VALORI RICALCOLATI ***"); _giornale.Debug(geoCurrent.ToDebugString()); } GestoreFinestrePubbliche.risposizionaFinestra(this, geoCurrent); // Il salvataggio della posizione, lo farei solo su richiesta esplicita dell'utente if (salvaNuoviValori) { _giornale.Debug("Devo salvare i nuovi valori ricalcolati"); _giornale.Debug("Devo salvare la configurazione utente su file xml"); UserConfigSerializer.serializeToFile(cfg); _giornale.Info("Salvata la configurazione utente su file xml"); } }