src/gui/dialogs/qprintdialog_unix.cpp
changeset 30 5dc02b23752f
parent 25 e24348a560a6
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
    69 #endif
    69 #endif
    70 
    70 
    71 #include <private/qprinterinfo_unix_p.h>
    71 #include <private/qprinterinfo_unix_p.h>
    72 
    72 
    73 QT_BEGIN_NAMESPACE
    73 QT_BEGIN_NAMESPACE
    74 
       
    75 extern int qt_printerRealNumCopies(QPaintEngine *);
       
    76 
    74 
    77 class QOptionTreeItem;
    75 class QOptionTreeItem;
    78 class QPPDOptionsModel;
    76 class QPPDOptionsModel;
    79 
    77 
    80 class QPrintPropertiesDialog : public QDialog
    78 class QPrintPropertiesDialog : public QDialog
   440     case QPrinter::DuplexAuto:
   438     case QPrinter::DuplexAuto:
   441         options.duplexLong->setChecked(true); break;
   439         options.duplexLong->setChecked(true); break;
   442     case QPrinter::DuplexShortSide:
   440     case QPrinter::DuplexShortSide:
   443         options.duplexShort->setChecked(true); break;
   441         options.duplexShort->setChecked(true); break;
   444     }
   442     }
   445     options.copies->setValue(qt_printerRealNumCopies(p->paintEngine()));
   443     options.copies->setValue(p->copyCount());
   446     options.collate->setChecked(p->collateCopies());
   444     options.collate->setChecked(p->collateCopies());
   447     options.reverse->setChecked(p->pageOrder() == QPrinter::LastPageFirst);
   445     options.reverse->setChecked(p->pageOrder() == QPrinter::LastPageFirst);
   448     top->d->applyPrinterProperties(p);
   446     top->d->applyPrinterProperties(p);
   449 }
   447 }
   450 
   448 
   505         p->setPrintRange(QPrinter::AllPages);
   503         p->setPrintRange(QPrinter::AllPages);
   506         p->setFromTo(0,0);
   504         p->setFromTo(0,0);
   507     } else if (options.printSelection->isChecked()) {
   505     } else if (options.printSelection->isChecked()) {
   508         p->setPrintRange(QPrinter::Selection);
   506         p->setPrintRange(QPrinter::Selection);
   509         p->setFromTo(0,0);
   507         p->setFromTo(0,0);
       
   508     } else if (options.printCurrentPage->isChecked()) {
       
   509         p->setPrintRange(QPrinter::CurrentPage);
       
   510         p->setFromTo(0,0);
   510     } else if (options.printRange->isChecked()) {
   511     } else if (options.printRange->isChecked()) {
   511         p->setPrintRange(QPrinter::PageRange);
   512         p->setPrintRange(QPrinter::PageRange);
   512         p->setFromTo(options.from->value(), qMax(options.from->value(), options.to->value()));
   513         p->setFromTo(options.from->value(), qMax(options.from->value(), options.to->value()));
   513     }
   514     }
   514 
   515 
   515     // copies
   516     // copies
   516     p->setNumCopies(options.copies->value());
   517     p->setCopyCount(options.copies->value());
   517     p->setCollateCopies(options.collate->isChecked());
   518     p->setCollateCopies(options.collate->isChecked());
   518 
   519 
   519     top->d->setupPrinter();
   520     top->d->setupPrinter();
   520 }
   521 }
   521 
   522 
   522 void QPrintDialogPrivate::updateWidgets()
   523 void QPrintDialogPrivate::updateWidgets()
   523 {
   524 {
   524     Q_Q(QPrintDialog);
   525     Q_Q(QPrintDialog);
   525     options.gbPrintRange->setVisible(q->isOptionEnabled(QPrintDialog::PrintPageRange) ||
   526     options.gbPrintRange->setVisible(q->isOptionEnabled(QPrintDialog::PrintPageRange) ||
   526                                 q->isOptionEnabled(QPrintDialog::PrintSelection));
   527                                      q->isOptionEnabled(QPrintDialog::PrintSelection) ||
       
   528                                      q->isOptionEnabled(QPrintDialog::PrintCurrentPage));
   527 
   529 
   528     options.printRange->setEnabled(q->isOptionEnabled(QPrintDialog::PrintPageRange));
   530     options.printRange->setEnabled(q->isOptionEnabled(QPrintDialog::PrintPageRange));
   529     options.printSelection->setVisible(q->isOptionEnabled(QPrintDialog::PrintSelection));
   531     options.printSelection->setVisible(q->isOptionEnabled(QPrintDialog::PrintSelection));
       
   532     options.printCurrentPage->setVisible(q->isOptionEnabled(QPrintDialog::PrintCurrentPage));
   530     options.collate->setVisible(q->isOptionEnabled(QPrintDialog::PrintCollateCopies));
   533     options.collate->setVisible(q->isOptionEnabled(QPrintDialog::PrintCollateCopies));
   531 
   534 
   532     switch (q->printRange()) {
   535     switch (q->printRange()) {
   533     case QPrintDialog::AllPages:
   536     case QPrintDialog::AllPages:
   534         options.printAll->setChecked(true);
   537         options.printAll->setChecked(true);
   537         options.printSelection->setChecked(true);
   540         options.printSelection->setChecked(true);
   538         break;
   541         break;
   539     case QPrintDialog::PageRange:
   542     case QPrintDialog::PageRange:
   540         options.printRange->setChecked(true);
   543         options.printRange->setChecked(true);
   541         break;
   544         break;
       
   545     case QPrintDialog::CurrentPage:
       
   546         if (q->isOptionEnabled(QPrintDialog::PrintCurrentPage))
       
   547             options.printCurrentPage->setChecked(true);
       
   548         break;
   542     default:
   549     default:
   543         break;
   550         break;
   544     }
   551     }
   545     const int minPage = qMax(1, qMin(q->minPage() , q->maxPage()));
   552     const int minPage = qMax(1, qMin(q->minPage() , q->maxPage()));
   546     const int maxPage = qMax(1, q->maxPage() == INT_MAX ? 9999 : q->maxPage());
   553     const int maxPage = qMax(1, q->maxPage() == INT_MAX ? 9999 : q->maxPage());
   694             widget.printers->addItem((*i).name);
   701             widget.printers->addItem((*i).name);
   695 #if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY)
   702 #if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY)
   696     }
   703     }
   697 #endif
   704 #endif
   698 
   705 
   699 #ifndef QT_NO_FILESYSTEMMODEL
   706 #if !defined(QT_NO_FILESYSTEMMODEL) && !defined(QT_NO_COMPLETER)
   700     QFileSystemModel *fsm = new QFileSystemModel(widget.filename);
   707     QFileSystemModel *fsm = new QFileSystemModel(widget.filename);
   701     fsm->setRootPath(QDir::homePath());
   708     fsm->setRootPath(QDir::homePath());
   702 #if !defined(QT_NO_FSCOMPLETER) && !defined(QT_NO_FILEDIALOG)
   709     widget.filename->setCompleter(new QCompleter(fsm, widget.filename));
   703     widget.filename->setCompleter(new QFSCompleter(fsm, widget.filename));
       
   704 #endif
       
   705 #endif
   710 #endif
   706     _q_printerChanged(currentPrinterIndex);
   711     _q_printerChanged(currentPrinterIndex);
   707 
   712 
   708     QObject::connect(widget.printers, SIGNAL(currentIndexChanged(int)),
   713     QObject::connect(widget.printers, SIGNAL(currentIndexChanged(int)),
   709                      parent, SLOT(_q_printerChanged(int)));
   714                      parent, SLOT(_q_printerChanged(int)));