public void OnNext(Messaggio msg)
        {
            if (msg is CambioStatoMsg)
            {
                if (msg.sender is IScaricatoreFotoSrv)
                {
                    // Per qualsiasi cambio di stato del servizio, devo rivalutare la possibilità di scaricare le foto
                    OnPropertyChanged("isScaricatoreBusy");
                    OnPropertyChanged("isScaricatoreIdle");
                    OnPropertyChanged("isScaricamentoInCorso");
                }
            }

            if (msg is ScaricoFotoMsg)
            {
                ScaricoFotoMsg msgScaricoFotoMsg = msg as ScaricoFotoMsg;

                if (msgScaricoFotoMsg.fase == FaseScaricoFoto.FineScarico)
                {
                    bool discoRemovibile = false;

                    DriveInfo driveInfo = new DriveInfo(msgScaricoFotoMsg.sorgente);
                    if (driveInfo.DriveType == DriveType.Removable)
                    {
                        discoRemovibile = true;
                    }

                    if (!msgScaricoFotoMsg.esitoScarico.riscontratiErrori)
                    {
                        StringBuilder msgScarico = new StringBuilder();
                        msgScarico.AppendFormat("Scaricate {0} foto.{1}",
                                                msgScaricoFotoMsg.esitoScarico.totFotoCopiateOk,
                                                discoRemovibile ? " Si può estrarre la card." : null);

                        trayIconProvider.showInfo("AVVISO", msgScarico.ToString(), 5000);
                    }
                    else
                    {
                        StringBuilder msgError = new StringBuilder("Confermare scarico foto:\n").Append(msgScaricoFotoMsg.esitoScarico.totFotoCopiateOk);
                        msgError.Append("\nErrori  = ").Append(msgScaricoFotoMsg.esitoScarico.totFotoNonCopiate);
                        if (discoRemovibile)
                        {
                            msgError.Append("\nSi può estrarre la card.");
                        }

                        trayIconProvider.showError("ERRORE", msgError.ToString(), 5000);
                    }
                }
                else if (msgScaricoFotoMsg.fase == FaseScaricoFoto.FineLavora)
                {
                    aggiornareSpazioLiberoSuDisco();

                    StringBuilder msgProvinatura = new StringBuilder();
                    msgProvinatura.AppendFormat("Scaricate {0}\nProvinate {1}", msgScaricoFotoMsg.esitoScarico.totFotoCopiateOk, msgScaricoFotoMsg.esitoScarico.totFotoProvinate);

                    trayIconProvider.showInfo("Esito acquisizione", msgProvinatura.ToString(), 5000);
                }
            }

            // Questo messaggio me lo lancia il mio servizio quando ha acquisito i dati di una nuova chiavetta
            if (msg.senderTag != null && msg.senderTag.Equals("::OnLetturaFlashCardConfig"))
            {
                // carico i dati dell'ultima chiavetta inserita
                if (isScaricatoreIdle)
                {
                    using (new UnitOfWorkScope()) {
                        caricaDatiDaChiavetta();
                    }
                }
            }
        }
Esempio n. 2
0
        public void OnNext(Messaggio msg)
        {
            if (msg is StampatoMsg)
            {
                StampatoMsg sm = (StampatoMsg)msg;

                if (sm.lavoroDiStampa.esitostampa == EsitoStampa.Errore)
                {
                    App.Current.Dispatcher.BeginInvoke(
                        new Action(() => {
                        dialogProvider.ShowError(sm.lavoroDiStampa.ToString(), "Lavoro di stampa fallito", null);
                    }
                                   ));
                }
            }

            if (msg is ScaricoFotoMsg)
            {
                ScaricoFotoMsg sm = (ScaricoFotoMsg)msg;
                if (sm.fase == FaseScaricoFoto.InizioScarico)
                {
                    numFotoFaseVisibility = true;
                    numFotoFase           = String.Format("Scaricate = {0:000}", 0);
                }
                else if (sm.fase == FaseScaricoFoto.Scaricamento)
                {
                    numFotoFaseVisibility = true;
                    numFotoFase           = String.Format("Scaricate = {0:000}", sm.esitoScarico.totFotoScaricateProg);
                }
                else if (sm.fase == Digiphoto.Lumen.Servizi.Scaricatore.FaseScaricoFoto.Provinatura)
                {
                    numFotoFase = String.Format("Provinate = {0:000}/{1:000}", sm.esitoScarico.totFotoProvinateProg, sm.esitoScarico.totFotoScaricate);
                }
                else if (sm.fase == FaseScaricoFoto.FineLavora)
                {
                    numFotoFaseVisibility = false;
                }
            }

            if (msg.showInStatusBar)
            {
                InformazioneUtente infoUser = new InformazioneUtente(msg.descrizione);
                infoUser.esito = msg.esito;

                App.Current.Dispatcher.BeginInvoke(
                    new Action(() =>
                {
                    informazioniUtente.Write(infoUser);
                    OnPropertyChanged("ultimaInformazioneUtente");
                    OnPropertyChanged("informazioniUtente");
                }
                               ));
            }

            if (msg is VolumeCambiatoMsg)
            {
                caricaElencoDischiRimovibili();
            }

            if (msg is CambioStatoMsg)
            {
                if (msg.sender is SlideShowViewModel)
                {
                    // Devo aggiornare lo stato della icona dello slide show
                    CambioStatoMsg  csm        = (CambioStatoMsg)msg;
                    SlideShowStatus nuovoStato = (SlideShowStatus)csm.nuovoStato;
                    OnPropertyChanged("statusSlideShowImage");
                }
            }

            if (msg is RilevataInconsistenzaDatabaseMsg)
            {
                bool   ricostruire = false;
                bool   possoAdesso = aprirePopupRicostruzioneDbCommand.CanExecute(null);
                string titolo      = "Rilevata inconsistenza database";
                string testo       = "ATTENZIONE\nE' stata riscontrata una differenza\ntra le foto scaricate e quelle elaborate.\nE' necessario lanciare la ricostruzione database!";

                App.Current.Dispatcher.BeginInvoke(new Action(() => {
                    if (possoAdesso)
                    {
                        testo += "\nVuoi eseguirlo adesso ?";

                        dialogProvider.ShowConfirmation(testo, titolo, (sino) => {
                            ricostruire = sino;
                        });

                        if (ricostruire)
                        {
                            aprirePopupRicostruzioneDbCommand.Execute(null);
                        }
                    }
                    else
                    {
                        dialogProvider.ShowMessage(testo, titolo);
                    }
                }));
            }
        }