summaryrefslogtreecommitdiffstats
path: root/src/printsupport/kernel
diff options
context:
space:
mode:
authorMartin Klapetek <mklapetek@kde.org>2013-09-12 15:19:00 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-17 14:24:48 +0200
commit75ffb131ed13183ef65a04e12d7506dedc0f1aaa (patch)
treec0605c021e416ce2a3fc25716aca33a5cfcaa7c1 /src/printsupport/kernel
parentf098148ebc04ac3297c72e2564853e80d43425b1 (diff)
Add CUPS Page Set options to print support
Adds combobox to select CUPS Page Set option (even/odd pages) into the Unix print dialog [ChangeLog][QtPrintSupport][QPrintDialog] Added support for setting CUPS Page Set (even/odd pages only) in the print dialog. Change-Id: I27dd846f58c164039fe2759064aafdf726a1287e Reviewed-by: John Layt <jlayt@kde.org>
Diffstat (limited to 'src/printsupport/kernel')
-rw-r--r--src/printsupport/kernel/qcups.cpp21
-rw-r--r--src/printsupport/kernel/qcups_p.h9
2 files changed, 30 insertions, 0 deletions
diff --git a/src/printsupport/kernel/qcups.cpp b/src/printsupport/kernel/qcups.cpp
index cf71e92e95..a10baaa7fb 100644
--- a/src/printsupport/kernel/qcups.cpp
+++ b/src/printsupport/kernel/qcups.cpp
@@ -490,6 +490,27 @@ void QCUPSSupport::setBannerPages(QPrinter *printer, const BannerPage startBanne
setCupsOptions(printer, cupsOptions);
}
+void QCUPSSupport::setPageSet(QPrinter *printer, const PageSet pageSet)
+{
+ QStringList cupsOptions = cupsOptionsList(printer);
+ QString pageSetString;
+
+ switch (pageSet) {
+ case OddPages:
+ pageSetString = QStringLiteral("odd");
+ break;
+ case EvenPages:
+ pageSetString = QStringLiteral("even");
+ break;
+ case AllPages:
+ pageSetString = QStringLiteral("all");
+ break;
+ }
+
+ setCupsOption(cupsOptions, QStringLiteral("page-set"), pageSetString);
+ setCupsOptions(printer, cupsOptions);
+}
+
bool QCUPSSupport::printerHasPPD(const char *printerName)
{
if (!isAvailable())
diff --git a/src/printsupport/kernel/qcups_p.h b/src/printsupport/kernel/qcups_p.h
index 8e82b35e12..412c50cfac 100644
--- a/src/printsupport/kernel/qcups_p.h
+++ b/src/printsupport/kernel/qcups_p.h
@@ -114,6 +114,13 @@ public:
TopSecret
};
+ // Enum for valid page set
+ enum PageSet {
+ AllPages = 0, //CUPS Default
+ OddPages,
+ EvenPages
+ };
+
static bool isAvailable();
static int cupsVersion() { return isAvailable() ? CUPS_VERSION_MAJOR*10000+CUPS_VERSION_MINOR*100+CUPS_VERSION_PATCH : 0; }
int availablePrintersCount() const;
@@ -143,6 +150,7 @@ public:
static void setJobBilling(QPrinter *printer, const QString &jobBilling = QString());
static void setJobPriority(QPrinter *printer, int priority = 50);
static void setBannerPages(QPrinter *printer, const BannerPage startBannerPage, const BannerPage endBannerPage);
+ static void setPageSet(QPrinter *printer, const PageSet pageSet);
static bool printerHasPPD(const char *printerName);
@@ -174,6 +182,7 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QCUPSSupport::JobHoldUntil)
Q_DECLARE_METATYPE(QCUPSSupport::BannerPage)
+Q_DECLARE_METATYPE(QCUPSSupport::PageSet)
#endif // QT_NO_CUPS