From a163f2b5431ab8b274e7ac2e4b7dbf2299675905 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 8 Oct 2015 19:33:33 +0200 Subject: Add fullscreen bg to printergui; preserve job name --- src/maingui/printergui.cpp | 68 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 13 deletions(-) (limited to 'src/maingui/printergui.cpp') diff --git a/src/maingui/printergui.cpp b/src/maingui/printergui.cpp index 8d2e81e..21e03f4 100644 --- a/src/maingui/printergui.cpp +++ b/src/maingui/printergui.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -13,9 +14,11 @@ static QStringList knownPageSizeOptions = QStringList() << "PageSize"; // ____________________________________________________________________________ PrinterGui::PrinterGui(char *argv[], QWidget *parent) : - QMainWindow(parent), + QDialog(parent), ui(new Ui::PrinterGui), - bgTimeout(-1) + statusBar(NULL), + bgTimeout(-1), + jobId(0) { // When called it is guaranteed that argv has (at least) 3 elements @@ -59,12 +62,19 @@ PrinterGui::~PrinterGui() void PrinterGui::initializeUI() { ui->setupUi(this); + this->setWindowModality(Qt::ApplicationModal); + // Put always on top + this->setWindowFlags(Qt::Dialog | Qt::WindowStaysOnTopHint); ui->horizontalLayoutButtons->setAlignment(Qt::AlignRight); ui->comboBoxColor->setEnabled(false); ui->comboBoxSides->setEnabled(false); ui->label_color->setEnabled(false); ui->label_duplex->setEnabled(false); + // Create a status bar (qt designer doesn't support this for dialogs) + statusBar = new QStatusBar(this); + ui->statusBarLayout->addWidget(statusBar); + /* Initialize Treeview */ ui->printerList->setColumnCount(3); @@ -98,8 +108,6 @@ void PrinterGui::initializeUI() /* Main Window properties */ - // Disable close button - this->setWindowFlags((this->windowFlags() & ~Qt::WindowCloseButtonHint) | Qt::WindowStaysOnTopHint); // center dialog on screen center QRect desktopRect = QApplication::desktop()->screenGeometry(this); this->move( desktopRect.width()/2-this->width()/2, @@ -190,17 +198,43 @@ void PrinterGui::on_printerList_currentItemChanged(QTreeWidgetItem *current, QTr // Check availability if (res & CUPS_PRINTER_REJECTING) { ui->buttonPrint->setEnabled(false); - statusBar()->showMessage("Dieser Drucker nimmt zur Zeit keine Aufträge an"); + statusBar->showMessage("Dieser Drucker nimmt zur Zeit keine Aufträge an"); } else { ui->buttonPrint->setEnabled(true); - statusBar()->clearMessage(); + statusBar->clearMessage(); } } +void PrinterGui::closeEvent(QCloseEvent * e) +{ + if (e->isAccepted()) { + if (jobId != 0) { + cupsCancelJob(ui->printerList->currentItem()->text(0).toUtf8().constData(), jobId); + jobId = 0; + } + QCoreApplication::instance()->exit(0); + } + QDialog::closeEvent(e); +} + +void PrinterGui::keyPressEvent(QKeyEvent * e) +{ + if(e->key() != Qt::Key_Escape) { + QDialog::keyPressEvent(e); + return; + } + this->close(); +} + +void PrinterGui::hideEvent(QHideEvent * e) +{ + this->close(); +} + // ____________________________________________________________________________ void PrinterGui::on_buttonCancel_clicked() { - QCoreApplication::instance()->exit(0); + this->close(); } // ____________________________________________________________________________ @@ -250,20 +284,28 @@ void PrinterGui::on_buttonPrint_clicked() } cupsSetUser(this->user); - char jobtitle[100]; - snprintf(jobtitle, 100, "gui-%d-%s", (int)getpid(), this->user); + char jobtitle[200]; + const char *docName; + docName = getenv("J"); + if (docName == NULL) { + docName = getenv("N"); + } + if (docName == NULL) { + docName = "Untitled"; + } + snprintf(jobtitle, sizeof(jobtitle), "gui-%d-%s (%s)", (int)getpid(), this->user, docName); // Drucken - if( 0 == cupsPrintFile(dest->name, + jobId = cupsPrintFile(dest->name, file, jobtitle, dest->num_options, - dest->options)) { + dest->options); + if (jobId == 0) { QMessageBox::critical(this, "CUPS Fehler", cupsLastErrorString()); } else { this->bgTimeout = 0; - statusBar()->showMessage("Druckauftrag wird verarbeitet..."); - ui->buttonCancel->setEnabled(false); + statusBar->showMessage("Druckauftrag wird verarbeitet..."); ui->buttonPrint->setEnabled(false); ui->cboPaperSize->setEnabled(false); ui->comboBoxColor->setEnabled(false); -- cgit v1.2.3-55-g7522