diff options
Diffstat (limited to 'PrinterGUI/PrinterGUI_SRC/mainwindow.cpp')
-rw-r--r-- | PrinterGUI/PrinterGUI_SRC/mainwindow.cpp | 108 |
1 files changed, 85 insertions, 23 deletions
diff --git a/PrinterGUI/PrinterGUI_SRC/mainwindow.cpp b/PrinterGUI/PrinterGUI_SRC/mainwindow.cpp index 03e74e9..cc40d5e 100644 --- a/PrinterGUI/PrinterGUI_SRC/mainwindow.cpp +++ b/PrinterGUI/PrinterGUI_SRC/mainwindow.cpp @@ -4,10 +4,11 @@ -MainWindow::MainWindow(char *argv, QWidget *parent) : +MainWindow::MainWindow(char *argv[], QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), - file(argv) + user(argv[1]), + file(argv[2]) { // Initialize cups num_dests = cupsGetDests(&dests); @@ -53,6 +54,8 @@ void MainWindow::initializeUI() wi->setText(1, QString(cupsGetOption("printer-info", dest->num_options, dest->options))); wi->setText(2, QString(cupsGetOption("printer-location", dest->num_options, dest->options))); ui->printerList->addTopLevelItem(wi); + if (dest->is_default) + ui->printerList->setCurrentItem(wi); } // Resize columns to contents @@ -170,46 +173,105 @@ void MainWindow::on_buttonPrint_clicked() cmd = QString("gs -sDEVICE=psgray -dNOPAUSE -dBATCH -dQUIET -dSAFER -sOutputFile=\"%22\" \"%1\"").arg( file, file); - system(cmd.toAscii()); + if (system(cmd.toAscii())) + return; // TODO WARN ABOUT MISSED GS JOB + } - // Username, part of whoami source - register uid_t uid = geteuid(); - const char *username = getpwuid(uid)->pw_name; - cmd = QString("lp -U %1").arg(username); + + + +/* * Print via sysctem command * */ +// // Username, part of whoami source +// register uid_t uid = geteuid(); +// const char *username = getpwuid(uid)->pw_name; +// cmd = QString("lp -U %1").arg(username); +// // Duplex +// if (ui->comboBoxSides->isEnabled()) +// { +// switch (ui->comboBoxSides->currentIndex()){ +// case 0: +// cmd.append(" -o sides=one-sided"); +// break; +// case 1: +// cmd.append(" -o sides=two-sided-long-edge"); +// break; +// case 2: +// cmd.append(" -o sides=two-sided-long-edge"); +// break; +// } +// } +// // Kopien +// if (ui->lineEditCopies->isEnabled()) +// cmd.append(QString(" -n %1").arg(ui->lineEditCopies->text())); +// // Queue +// cmd.append(QString(" -d %1").arg(ui->printerList->currentItem()->text(0))); +// // File +// cmd.append(QString(" -- \"%1\"").arg(file)); +// // Print results to stdout +// QTextStream (stdout, QIODevice::WriteOnly) << cmd; +// // Execute the command +// system(cmd.toAscii()); + + + + + /* * Print via cups lib * */ + + // Username + cupsSetUser(user); + + // Destination / Queue + cups_dest_t *dest = cupsGetDest( + ui->printerList->currentItem()->text(0).toAscii(), + NULL, + num_dests, + dests); // Duplex if (ui->comboBoxSides->isEnabled()) { switch (ui->comboBoxSides->currentIndex()){ case 0: - cmd.append(" -o sides=one-sided"); + dest->num_options = cupsAddOption ("Duplex", + "None", + dest->num_options, + &(dest->options)); break; case 1: - cmd.append(" -o sides=two-sided-long-edge"); + dest->num_options = cupsAddOption ("Duplex", + "DuplexNoTumble", + dest->num_options, + &(dest->options)); break; case 2: - cmd.append(" -o sides=two-sided-long-edge"); + dest->num_options = cupsAddOption ("Duplex", + "DuplexTumble", + dest->num_options, + &(dest->options)); break; } } // Kopien if (ui->lineEditCopies->isEnabled()) - cmd.append(QString(" -n %1").arg(ui->lineEditCopies->text())); - - // Queue - cmd.append(QString(" -d %1").arg(ui->printerList->currentItem()->text(0))); + { + dest->num_options = cupsAddOption ("copies", + ui->lineEditCopies->text().toAscii(), + dest->num_options, + &(dest->options)); + } - // File - cmd.append(QString(" -- \"%1\"").arg(file)); + // Drucken + if( 0 == cupsPrintFile(dest->name, + file, + NULL, + dest->num_options, + dest->options)) + return; // TODO ERROR OUTPUT + else // Quit with code 0 + QCoreApplication::instance()->quit(); - // Print results to stdout - QTextStream (stdout, QIODevice::WriteOnly) << cmd; +} - // Execute the command - system(cmd.toAscii()); - // Quit with code 0 - QCoreApplication::instance()->quit(); -} |