CUPS: Use printer job-hold-until as default instead of the nohold
This also reads the job-hold-until from lpoptions if set there for the particular printer Change-Id: Ic60fef675ab9f4760cd99ee9ac417b0478459681 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
This commit is contained in:
parent
2831fa7665
commit
414a703036
@ -433,6 +433,8 @@ QVariant QPpdPrintDevice::property(QPrintDevice::PrintDevicePropertyKey key) con
|
||||
return printerOption(QStringLiteral("job-sheets"));
|
||||
else if (key == PDPK_CupsJobBilling)
|
||||
return printerOption(QStringLiteral("job-billing"));
|
||||
else if (key == PDPK_CupsJobHoldUntil)
|
||||
return printerOption(QStringLiteral("job-hold-until"));
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
@ -107,6 +107,37 @@ static inline QString jobHoldToString(const QCUPSSupport::JobHoldUntil jobHold,
|
||||
return QString();
|
||||
}
|
||||
|
||||
QCUPSSupport::JobHoldUntilWithTime QCUPSSupport::parseJobHoldUntil(const QString &jobHoldUntil)
|
||||
{
|
||||
if (jobHoldUntil == QLatin1String("indefinite")) {
|
||||
return { QCUPSSupport::Indefinite, QTime() };
|
||||
} else if (jobHoldUntil == QLatin1String("day-time")) {
|
||||
return { QCUPSSupport::DayTime, QTime() };
|
||||
} else if (jobHoldUntil == QLatin1String("night")) {
|
||||
return { QCUPSSupport::Night, QTime() };
|
||||
} else if (jobHoldUntil == QLatin1String("second-shift")) {
|
||||
return { QCUPSSupport::SecondShift, QTime() };
|
||||
} else if (jobHoldUntil == QLatin1String("third-shift")) {
|
||||
return { QCUPSSupport::ThirdShift, QTime() };
|
||||
} else if (jobHoldUntil == QLatin1String("weekend")) {
|
||||
return { QCUPSSupport::Weekend, QTime() };
|
||||
}
|
||||
|
||||
|
||||
QTime parsedTime = QTime::fromString(jobHoldUntil, QStringLiteral("h:m:s"));
|
||||
if (!parsedTime.isValid())
|
||||
parsedTime = QTime::fromString(jobHoldUntil, QStringLiteral("h:m"));
|
||||
if (parsedTime.isValid()) {
|
||||
// CUPS time is in UTC, user expects local time, so get the equivalent
|
||||
QDateTime dateTimeUtc = QDateTime::currentDateTimeUtc();
|
||||
dateTimeUtc.setTime(parsedTime);
|
||||
return { QCUPSSupport::SpecificTime, dateTimeUtc.toLocalTime().time() };
|
||||
}
|
||||
|
||||
return { QCUPSSupport::NoHold, QTime() };
|
||||
}
|
||||
|
||||
|
||||
void QCUPSSupport::setJobHold(QPrinter *printer, const JobHoldUntil jobHold, const QTime &holdUntilTime)
|
||||
{
|
||||
QStringList cupsOptions = cupsOptionsList(printer);
|
||||
|
@ -67,11 +67,12 @@ QT_BEGIN_NAMESPACE
|
||||
// removed from the dialogs.
|
||||
#define PPK_CupsOptions QPrintEngine::PrintEnginePropertyKey(0xfe00)
|
||||
|
||||
#define PDPK_PpdFile QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase)
|
||||
#define PDPK_PpdOption QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase + 1)
|
||||
#define PDPK_CupsJobPriority QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase + 2)
|
||||
#define PDPK_CupsJobSheets QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase + 3)
|
||||
#define PDPK_CupsJobBilling QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase + 4)
|
||||
#define PDPK_PpdFile QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase)
|
||||
#define PDPK_PpdOption QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase + 1)
|
||||
#define PDPK_CupsJobPriority QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase + 2)
|
||||
#define PDPK_CupsJobSheets QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase + 3)
|
||||
#define PDPK_CupsJobBilling QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase + 4)
|
||||
#define PDPK_CupsJobHoldUntil QPrintDevice::PrintDevicePropertyKey(QPrintDevice::PDPK_CustomBase + 5)
|
||||
|
||||
class Q_PRINTSUPPORT_EXPORT QCUPSSupport
|
||||
{
|
||||
@ -148,6 +149,13 @@ public:
|
||||
BannerPage endBannerPage = QCUPSSupport::NoBanner;
|
||||
};
|
||||
static JobSheets parseJobSheets(const QString &jobSheets);
|
||||
|
||||
struct JobHoldUntilWithTime
|
||||
{
|
||||
JobHoldUntil jobHold;
|
||||
QTime time;
|
||||
};
|
||||
static JobHoldUntilWithTime parseJobHoldUntil(const QString &jobHoldUntil);
|
||||
};
|
||||
Q_DECLARE_TYPEINFO(QCUPSSupport::JobHoldUntil, Q_PRIMITIVE_TYPE);
|
||||
Q_DECLARE_TYPEINFO(QCUPSSupport::BannerPage, Q_PRIMITIVE_TYPE);
|
||||
|
@ -73,7 +73,6 @@ QCupsJobWidget::QCupsJobWidget(QPrinter *printer, QPrintDevice *printDevice, QWi
|
||||
{
|
||||
m_ui.setupUi(this);
|
||||
//set all the default values
|
||||
//TODO restore last used values
|
||||
initJobHold();
|
||||
initJobBilling();
|
||||
initJobPriority();
|
||||
@ -105,7 +104,14 @@ void QCupsJobWidget::initJobHold()
|
||||
|
||||
connect(m_ui.jobHoldComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(toggleJobHoldTime()));
|
||||
|
||||
setJobHold(QCUPSSupport::NoHold, QTime());
|
||||
QCUPSSupport::JobHoldUntilWithTime jobHoldWithTime;
|
||||
|
||||
if (m_printDevice) {
|
||||
const QString jobHoldUntilString = m_printDevice->property(PDPK_CupsJobHoldUntil).toString();
|
||||
jobHoldWithTime = QCUPSSupport::parseJobHoldUntil(jobHoldUntilString);
|
||||
}
|
||||
|
||||
setJobHold(jobHoldWithTime.jobHold, jobHoldWithTime.time);
|
||||
toggleJobHoldTime();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user