Esempio n. 1
0
        private void stampare(object objStampanteAbbinata)
        {
            bool procediPure = false;

            int quante = stampaSoloSelezionate ? totaleFotoSelezionate : totoleFotoGallery;

            int numFotPag = paramStampaProvini.numeroRighe * paramStampaProvini.numeroColonne;

            int numPag = numFotPag > 0 ? (int)Math.Ceiling((decimal)quante / numFotPag) : 1;

            StringBuilder msg = new StringBuilder();

            dialogProvider.ShowConfirmation(msg.AppendFormat("Confermi la stampa di {0} foto ?\n e N° {1} fogli di Provini?", quante, numPag).ToString(),
                                            "Richiesta conferma",
                                            (confermato) =>
            {
                procediPure = confermato;
            });

            if (procediPure)
            {
                // Salvo la configurazioneLast-Used con i margini di stampa
                salvaLastUsedMargini(paramStampaProvini.margini);

                StampanteAbbinata stampanteAbbinata = (StampanteAbbinata)objStampanteAbbinata;
                paramStampaProvini.formatoCarta  = stampanteAbbinata.FormatoCarta;
                paramStampaProvini.nomeStampante = stampanteAbbinata.StampanteInstallata.NomeStampante;
                stampaProviniDialog.DialogResult = true;
                stampaProviniDialog.Hide();
            }
        }
        /// <summary>
        /// Quando viene disegnato il menu contestuale per la prima volta,
        /// devo fare una operazione che da XAML non si riesce.
        /// Ovvero devo creare le voci di menu nel menu "padre" rispetto al sottomenu che si riesce a creare
        /// nello xaml.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        void onMenuItemStampePieneUpdated(object sender, DataTransferEventArgs args)
        {
            MenuItem menuItemStampePiene      = (MenuItem)sender;
            MenuItem menuItemSingolaFoto      = (MenuItem)menuItemStampePiene.Parent;
            SelettoreAzioneRapidaViewModel vm = (SelettoreAzioneRapidaViewModel)menuItemStampePiene.DataContext;

            if (vm == null)
            {
                // Questa cosa non ha senso, perché il VM dovrebbe essere sempre valorizzato

#if DEBUG
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    System.Diagnostics.Debugger.Break();
                }
#endif
                vm = azioniRapideViewModel;
            }

            if (vm == null)
            {
                _giornale.Warn("data context vuoto per menu contestuale. Come mai ?");
            }
            else
            {
                if (menuItemStampePiene.HasItems)
                {
                    int conta = 0;
                    foreach (var item in menuItemStampePiene.Items)
                    {
                        // Creo una nuova voce di menu
                        MenuItem newItem = new MenuItem();

                        newItem.DataContext = vm;

                        StampanteAbbinata cartaStampabile = (StampanteAbbinata)item;

                        // bindo il comando di stampa
                        newItem.Command          = vm.stampaRapidaCommand;
                        newItem.CommandParameter = cartaStampabile;

                        newItem.Header = cartaStampabile.ToString();

                        Uri uri = new Uri("/Resources/Printer-16x16.ico", UriKind.Relative);
                        newItem.Icon = new System.Windows.Controls.Image {
                            Source  = new BitmapImage(uri),
                            ToolTip = "Stampa immediata a formato pieno"
                        };

                        // Inserisco l'elemento appena creato, nel menu superiore.
                        ((MenuItem)menuItemStampePiene.Parent).Items.Insert(conta++, newItem);
                    }

                    // Ora che ho aggiunto tutte le voci al menu superiore, rimuovo il sottomenu che risulterebbe un doppione.
                    menuItemSingolaFoto.Items.Remove(menuItemStampePiene);
                }
            }
        }
Esempio n. 3
0
        private void stampare(object objStampanteAbbinata)
        {
            StampanteAbbinata stampanteAbbinata = (StampanteAbbinata)objStampanteAbbinata;

            formatoCarta  = stampanteAbbinata.FormatoCarta;
            nomeStampante = stampanteAbbinata.StampanteInstallata.NomeStampante;
            _selezionaStampanteDialog.DialogResult = true;
            _selezionaStampanteDialog.Hide();
        }
        private ParamStampaFoto creaParamStampaFoto(StampanteAbbinata stampanteAbbinata, bool autoZoomNoBordiBianchi)
        {
            ParamStampaFoto p = venditoreSrv.creaParamStampaFoto();

            p.nomeStampante          = stampanteAbbinata.StampanteInstallata.NomeStampante;
            p.formatoCarta           = stampanteAbbinata.FormatoCarta;
            p.autoZoomNoBordiBianchi = autoZoomNoBordiBianchi;
            // TODO per ora il nome della Porta a cui è collegata la stampante non lo uso. Non so cosa farci.

            return(p);
        }
        private void stampaRapida(StampanteAbbinata stampanteAbbinata, bool autoZoomNoBordiBianchi, String intestazione)
        {
            // Un parametro della configurazione mi dice il totale foto oltre il quale chiedere conferma
            if (targetMode == TargetMode.Selezionate &&
                Configurazione.UserConfigLumen.sogliaNumFotoConfermaInStampaRapida > 0 &&
                countSelezionate >= Configurazione.UserConfigLumen.sogliaNumFotoConfermaInStampaRapida)
            {
                bool procediPure = false;

                procediPure = chiedereConfermaPerProseguire("Sei sicuro di voler stampare\nle " + countSelezionate + " fotografie selezionate?", "Stampa rapida foto senza carrello");

                if (!procediPure)
                {
                    return;
                }
            }

            using (IVenditoreSrv venditoreSpampaRapida = LumenApplication.Instance.creaServizio <IVenditoreSrv>())
            {
                venditoreSpampaRapida.start();
                venditoreSpampaRapida.creareNuovoCarrello();
                venditoreSpampaRapida.carrello.intestazione = intestazione;
                var listaFoto = getListaFotoTarget();
                var param     = creaParamStampaFoto(stampanteAbbinata, autoZoomNoBordiBianchi);

                venditoreSpampaRapida.aggiungereStampe(listaFoto, param);

                string msgErrore = venditoreSpampaRapida.vendereCarrello();
                bool   esitoOk   = (msgErrore == null);
                if (esitoOk)
                {
                    // Spengo le foto che ormai sono andate
                    deselezionaFoto();
                }
                else
                {
                    dialogProvider.ShowError("Stampa diretta non riuscita.", "Errore", null);
                }
                venditoreSpampaRapida.stop();
            }
        }
        /// <summary>
        /// Devo mandare in stampa le foto selezionate
        /// Nel parametro mi arriva l'oggetto StampanteAbbinata che mi da tutte le indicazioni
        /// per la stampa: il formato carta e la stampante
        /// </summary>
        private void stampare(StampanteAbbinata stampanteAbbinata)
        {
            // Se ho selezionato più di una foto, e lavoro in stampa diretta, allora chiedo conferma
            bool procediPure = true;

            if (countSelezionate >= 1 && Configurazione.UserConfigLumen.modoVendita == ModoVendita.StampaDiretta)
            {
                procediPure = chiedereConfermaPerProseguire("Confermi la stampa di " + countSelezionate + " foto ?");
            }

            if (procediPure)
            {
                if (Configurazione.UserConfigLumen.modoVendita == ModoVendita.StampaDiretta)
                {
                    using (IVenditoreSrv venditoreStampaDiretta = LumenApplication.Instance.creaServizio <IVenditoreSrv>()) {
                        venditoreStampaDiretta.creareNuovoCarrello();
                        venditoreStampaDiretta.carrello.intestazione = VenditoreSrvImpl.INTESTAZIONE_STAMPA_RAPIDA;
                        venditoreStampaDiretta.aggiungereStampe(getListaFotoTarget(), creaParamStampaFoto(stampanteAbbinata));
                        string msgErrore = venditoreStampaDiretta.vendereCarrello();
                        bool   esitoOk   = (msgErrore == null);
                        if (esitoOk)
                        {
                            dialogProvider.ShowMessage("Carrello venduto Correttamente", "Avviso");
                        }
                        else
                        {
                            dialogProvider.ShowError("Errore inserimento carrello nella cassa", "Errore", null);
                        }
                    }
                }
                else
                {
                    venditoreSrv.aggiungereStampe(getListaFotoTarget(), creaParamStampaFoto(stampanteAbbinata));
                }

                deselezionaFoto();
            }
        }
        void stampaFotoTessera(StampanteAbbinata stampanteAbbinata)
        {
            // Le foto-tessera le stampo una alla volta. Non è molto probabile la stampa multipla
            if (targetMode != TargetMode.Singola)
            {
                return;
            }

            using (IVenditoreSrv venditoreFtessera = LumenApplication.Instance.creaServizio <IVenditoreSrv>()) {
                venditoreFtessera.start();
                venditoreFtessera.creareNuovoCarrello();
                venditoreFtessera.carrello.intestazione = VenditoreSrvImpl.INTESTAZIONE_STAMPA_FOTOTESSERA;
                var listaFoto = getListaFotoTarget();

                var param = new ParamStampaTessera {
                    nomeStampante = stampanteAbbinata.StampanteInstallata.NomeStampante,
                    formatoCarta  = stampanteAbbinata.FormatoCarta,
                    numCopie      = 1
                };

                venditoreFtessera.aggiungereStampe(listaFoto, param);

                string msgErrore = venditoreFtessera.vendereCarrello();
                bool   esitoOk   = (msgErrore == null);
                if (esitoOk)
                {
                    // Spengo le foto che ormai sono andate
                    deselezionaFoto();
                }
                else
                {
                    dialogProvider.ShowError("Stampa foto tessera non riuscita.", "Errore", null);
                }
                venditoreFtessera.stop();
            }
        }
 /// <summary>
 /// Creo i parametri di stampa, mixando un pò di informazioni prese
 /// dalla configurazione, dallo stato dell'applicazione, e dalla scelta dell'utente.
 /// </summary>
 /// <param name="stampanteAbbinata"></param>
 /// <returns></returns>
 private ParamStampaFoto creaParamStampaFoto(StampanteAbbinata stampanteAbbinata)
 {
     return(creaParamStampaFoto(stampanteAbbinata, true));
 }
 private void stampaRapida(StampanteAbbinata stampanteAbbinata, bool autoZoomNoBordiBianchi)
 {
     stampaRapida(stampanteAbbinata, autoZoomNoBordiBianchi, VenditoreSrvImpl.INTESTAZIONE_STAMPA_RAPIDA);
 }