diff options
Diffstat (limited to 'src/printsupport/kernel/qcups.cpp')
-rw-r--r-- | src/printsupport/kernel/qcups.cpp | 152 |
1 files changed, 54 insertions, 98 deletions
diff --git a/src/printsupport/kernel/qcups.cpp b/src/printsupport/kernel/qcups.cpp index c6e3ddb54d..3a92f9b6db 100644 --- a/src/printsupport/kernel/qcups.cpp +++ b/src/printsupport/kernel/qcups.cpp @@ -67,61 +67,49 @@ void QCUPSSupport::setCupsOption(QStringList &cupsOptions, const QString &option } } -void QCUPSSupport::setJobHold(QPrinter *printer, const JobHoldUntil jobHold, const QTime &holdUntilTime) +static inline QString jobHoldToString(const QCUPSSupport::JobHoldUntil jobHold, const QTime holdUntilTime) { - QStringList cupsOptions = cupsOptionsList(printer); - switch (jobHold) { - case NoHold: //default - break; - case Indefinite: - setCupsOption(cupsOptions, - QStringLiteral("job-hold-until"), - QStringLiteral("indefinite")); - break; - case DayTime: - setCupsOption(cupsOptions, - QStringLiteral("job-hold-until"), - QStringLiteral("day-time")); - break; - case Night: - setCupsOption(cupsOptions, - QStringLiteral("job-hold-until"), - QStringLiteral("night")); - break; - case SecondShift: - setCupsOption(cupsOptions, - QStringLiteral("job-hold-until"), - QStringLiteral("second-shift")); - break; - case ThirdShift: - setCupsOption(cupsOptions, - QStringLiteral("job-hold-until"), - QStringLiteral("third-shift")); - break; - case Weekend: - setCupsOption(cupsOptions, - QStringLiteral("job-hold-until"), - QStringLiteral("weekend")); - break; - case SpecificTime: - if (holdUntilTime.isNull()) { - setJobHold(printer, NoHold); - return; + case QCUPSSupport::Indefinite: + return QStringLiteral("indefinite"); + case QCUPSSupport::DayTime: + return QStringLiteral("day-time"); + case QCUPSSupport::Night: + return QStringLiteral("night"); + case QCUPSSupport::SecondShift: + return QStringLiteral("second-shift"); + case QCUPSSupport::ThirdShift: + return QStringLiteral("third-shift"); + case QCUPSSupport::Weekend: + return QStringLiteral("weekend"); + case QCUPSSupport::SpecificTime: + if (!holdUntilTime.isNull()) { + // CUPS expects the time in UTC, user has entered in local time, so get the UTS equivalent + QDateTime localDateTime = QDateTime::currentDateTime(); + // Check if time is for tomorrow in case of DST change overnight + if (holdUntilTime < localDateTime.time()) + localDateTime = localDateTime.addDays(1); + localDateTime.setTime(holdUntilTime); + return localDateTime.toUTC().time().toString(QStringLiteral("HH:mm")); } - // CUPS expects the time in UTC, user has entered in local time, so get the UTS equivalent - QDateTime localDateTime = QDateTime::currentDateTime(); - // Check if time is for tomorrow in case of DST change overnight - if (holdUntilTime < localDateTime.time()) - localDateTime = localDateTime.addDays(1); - localDateTime.setTime(holdUntilTime); + // else fall through: + case QCUPSSupport::NoHold: + return QString(); + } + Q_UNREACHABLE(); + return QString(); +} + +void QCUPSSupport::setJobHold(QPrinter *printer, const JobHoldUntil jobHold, const QTime &holdUntilTime) +{ + const QString jobHoldUntilArgument = jobHoldToString(jobHold, holdUntilTime); + if (!jobHoldUntilArgument.isEmpty()) { + QStringList cupsOptions = cupsOptionsList(printer); setCupsOption(cupsOptions, QStringLiteral("job-hold-until"), - localDateTime.toUTC().time().toString(QStringLiteral("HH:mm"))); - break; + jobHoldUntilArgument); + setCupsOptions(printer, cupsOptions); } - - setCupsOptions(printer, cupsOptions); } void QCUPSSupport::setJobBilling(QPrinter *printer, const QString &jobBilling) @@ -138,58 +126,26 @@ void QCUPSSupport::setJobPriority(QPrinter *printer, int priority) setCupsOptions(printer, cupsOptions); } -void QCUPSSupport::setBannerPages(QPrinter *printer, const BannerPage startBannerPage, const BannerPage endBannerPage) +static inline QString bannerPageToString(const QCUPSSupport::BannerPage bannerPage) { - QStringList cupsOptions = cupsOptionsList(printer); - QString startBanner, endBanner; - - switch (startBannerPage) { - case NoBanner: - startBanner = QStringLiteral("none"); - break; - case Standard: - startBanner = QStringLiteral("standard"); - break; - case Unclassified: - startBanner = QStringLiteral("unclassified"); - break; - case Confidential: - startBanner = QStringLiteral("confidential"); - break; - case Classified: - startBanner = QStringLiteral("classified"); - break; - case Secret: - startBanner = QStringLiteral("secret"); - break; - case TopSecret: - startBanner = QStringLiteral("topsecret"); - break; + switch (bannerPage) { + case QCUPSSupport::NoBanner: return QStringLiteral("none"); + case QCUPSSupport::Standard: return QStringLiteral("standard"); + case QCUPSSupport::Unclassified: return QStringLiteral("unclassified"); + case QCUPSSupport::Confidential: return QStringLiteral("confidential"); + case QCUPSSupport::Classified: return QStringLiteral("classified"); + case QCUPSSupport::Secret: return QStringLiteral("secret"); + case QCUPSSupport::TopSecret: return QStringLiteral("topsecret"); } + Q_UNREACHABLE(); + return QString(); +}; - switch (endBannerPage) { - case NoBanner: - endBanner = QStringLiteral("none"); - break; - case Standard: - endBanner = QStringLiteral("standard"); - break; - case Unclassified: - endBanner = QStringLiteral("unclassified"); - break; - case Confidential: - endBanner = QStringLiteral("confidential"); - break; - case Classified: - endBanner = QStringLiteral("classified"); - break; - case Secret: - endBanner = QStringLiteral("secret"); - break; - case TopSecret: - endBanner = QStringLiteral("topsecret"); - break; - } +void QCUPSSupport::setBannerPages(QPrinter *printer, const BannerPage startBannerPage, const BannerPage endBannerPage) +{ + QStringList cupsOptions = cupsOptionsList(printer); + const QString startBanner = bannerPageToString(startBannerPage); + const QString endBanner = bannerPageToString(endBannerPage); setCupsOption(cupsOptions, QStringLiteral("job-sheets"), startBanner + QLatin1Char(',') + endBanner); setCupsOptions(printer, cupsOptions); |