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);
        }
Esempio n. 4
0
        /// <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");
            }
        }