diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2014-03-24 01:13:14 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2015-06-19 16:29:46 +0000 |
commit | 8133b80e63fd9cc4bdeba6f98d994ce5c90e64e5 (patch) | |
tree | 1406b25442226ed26cf33657a814fa2734c3ab42 /src | |
parent | eb5654788b8c1662a4210e6c76c98abd509cf64f (diff) |
QCUPSSupport: clear the job-hold-until option if jobHoldToString() is empty
This changes the behavior of the code such that the option, once set,
can also be unset again.
Change-Id: I739f77ae1f1336806aac548f6a797ed6b2770235
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/printsupport/kernel/qcups.cpp | 16 | ||||
-rw-r--r-- | src/printsupport/kernel/qcups_p.h | 1 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/printsupport/kernel/qcups.cpp b/src/printsupport/kernel/qcups.cpp index 8c67b416a9..2f0f1205ca 100644 --- a/src/printsupport/kernel/qcups.cpp +++ b/src/printsupport/kernel/qcups.cpp @@ -59,6 +59,16 @@ void QCUPSSupport::setCupsOption(QStringList &cupsOptions, const QString &option } } +void QCUPSSupport::clearCupsOption(QStringList &cupsOptions, const QString &option) +{ + // ### use const_iterator once QList::erase takes them + const QStringList::iterator it = std::find(cupsOptions.begin(), cupsOptions.end(), option); + if (it != cupsOptions.end()) { + Q_ASSERT(it + 1 < cupsOptions.end()); + cupsOptions.erase(it, it+1); + } +} + static inline QString jobHoldToString(const QCUPSSupport::JobHoldUntil jobHold, const QTime holdUntilTime) { switch (jobHold) { @@ -94,14 +104,16 @@ static inline QString jobHoldToString(const QCUPSSupport::JobHoldUntil jobHold, void QCUPSSupport::setJobHold(QPrinter *printer, const JobHoldUntil jobHold, const QTime &holdUntilTime) { + QStringList cupsOptions = cupsOptionsList(printer); const QString jobHoldUntilArgument = jobHoldToString(jobHold, holdUntilTime); if (!jobHoldUntilArgument.isEmpty()) { - QStringList cupsOptions = cupsOptionsList(printer); setCupsOption(cupsOptions, QStringLiteral("job-hold-until"), jobHoldUntilArgument); - setCupsOptions(printer, cupsOptions); + } else { + clearCupsOption(cupsOptions, QStringLiteral("job-hold-until")); } + setCupsOptions(printer, cupsOptions); } void QCUPSSupport::setJobBilling(QPrinter *printer, const QString &jobBilling) diff --git a/src/printsupport/kernel/qcups_p.h b/src/printsupport/kernel/qcups_p.h index afcb2c6f3b..82c2f5116a 100644 --- a/src/printsupport/kernel/qcups_p.h +++ b/src/printsupport/kernel/qcups_p.h @@ -117,6 +117,7 @@ public: static QStringList cupsOptionsList(QPrinter *printer); static void setCupsOptions(QPrinter *printer, const QStringList &cupsOptions); static void setCupsOption(QStringList &cupsOptions, const QString &option, const QString &value); + static void clearCupsOption(QStringList &cupsOptions, const QString &option); static void setJobHold(QPrinter *printer, const JobHoldUntil jobHold = NoHold, const QTime &holdUntilTime = QTime()); static void setJobBilling(QPrinter *printer, const QString &jobBilling = QString()); |