/// <summary> /// Salvo la posizione e la dimensione della finestra dello SlideShow. /// I dati vengono persistiti nella configurazione utente. /// </summary> public bool salvaGeometriaFinestraSlideShow() { bool esito; if (this.geomSS == null || this.geomSS.isEmpty()) { esito = false; } else { // Questo modifica geomSS ... memorizzaGeometriaFinestraSlideShow(); // ... Questo lo persiste Configurazione.UserConfigLumen.geometriaFinestraSlideShow = this.geomSS; _giornale.Debug("Devo salvare la configurazione utente su file xml"); UserConfigSerializer.serializeToFile(Configurazione.UserConfigLumen); _giornale.Info("Salvata la configurazione utente su file xml"); esito = true; } return(esito); }
/// <summary> /// Salvo la nuova configurazione e poi la ricarico /// </summary> /// <param name="newUserConfig"></param> public void SalvaNuovaConfigurazione(UserConfig newUserConfig) { UserConfigSerializer.serializeToFile(newUserConfig); caricaConfigurazione(); // Per sicurezza riparto da capo pagina = 0; puntatore = 999; }
void caricaConfigurazione() { userConfig = UserConfigSerializer.deserialize(); if (userConfig == null) { userConfig = new UserConfig { intervallo = 2000, numRighe = 2, numColonne = 3 } } ; }
/// <summary> /// Copio i valori delle preferenze utente, nella configurazione e quindi la salvo (serializzo su disco) /// </summary> private void uscire(bool salvare) { if (salvare) { if (cfg.prefGalleryViste == null) { cfg.prefGalleryViste = new Griglia[Configurazione.MAX_STELLINE]; } this.prefGalleryViste.CopyTo(cfg.prefGalleryViste, 0); UserConfigSerializer.serializeToFile(Configurazione.UserConfigLumen); LastUsedConfigSerializer.serializeToFile(Configurazione.LastUsedConfigLumen); _giornale.Info("Salvate le preferenze utente su file xml"); } this.CloseCommand.Execute(null); }
/// <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"); } }