2
* Copyright (C) 2017 Canonical, Ltd.
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU Lesser General Public License as published by
6
* the Free Software Foundation; version 3.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU Lesser General Public License for more details.
13
* You should have received a copy of the GNU Lesser General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
#ifndef USC_PRINTERS_CUPS_BACKEND_H
18
#define USC_PRINTERS_CUPS_BACKEND_H
20
#include "backend/backend.h"
21
#include "cups/ippclient.h"
22
#include "cupsdnotifier.h" // Note: this file was generated.
24
#include <cups/cups.h>
26
#include <QPrinterInfo>
28
class PRINTERS_DECL_EXPORT PrinterCupsBackend : public PrinterBackend
32
explicit PrinterCupsBackend(IppClient *client, QPrinterInfo info,
33
OrgCupsCupsdNotifierInterface* notifier,
34
QObject *parent = Q_NULLPTR);
35
virtual ~PrinterCupsBackend() override;
37
virtual bool holdsDefinition() const override;
39
virtual QString printerAdd(const QString &name,
41
const QString &ppdFile,
43
const QString &location) override;
44
virtual QString printerAddWithPpd(const QString &name,
46
const QString &ppdFileName,
48
const QString &location) override;
49
virtual QString printerDelete(const QString &name) override;
50
virtual QString printerSetDefault(const QString &name) override;
51
virtual QString printerSetEnabled(const QString &name,
52
const bool enabled) override;
53
virtual QString printerSetAcceptJobs(
56
const QString &reason = QString::null) override;
57
virtual QString printerSetInfo(const QString &name,
58
const QString &info) override;
59
virtual QString printerSetLocation(const QString &name,
60
const QString &location) override;
61
virtual QString printerSetShared(const QString &name,
62
const bool shared) override;
63
virtual QString printerSetJobSheets(const QString &name,
65
const QString &end) override;
66
virtual QString printerSetErrorPolicy(const QString &name,
67
const PrinterEnum::ErrorPolicy &policy) override;
69
virtual QString printerSetOpPolicy(const QString &name,
70
const PrinterEnum::OperationPolicy &policy) override;
71
virtual QString printerSetUsersAllowed(const QString &name,
72
const QStringList &users) override;
73
virtual QString printerSetUsersDenied(const QString &name,
74
const QStringList &users) override;
75
virtual QString printerAddOptionDefault(const QString &name,
76
const QString &option,
77
const QStringList &values) override;
78
virtual QString printerDeleteOptionDefault(const QString &name,
79
const QString &value) override;
80
virtual QString printerAddOption(const QString &name,
81
const QString &option,
82
const QStringList &values) override;
84
virtual QVariant printerGetOption(const QString &name,
85
const QString &option) const override;
86
virtual QMap<QString, QVariant> printerGetOptions(
87
const QString &name, const QStringList &options
89
// FIXME: maybe have a PrinterDest iface that has a CupsDest impl?
90
virtual cups_dest_t* makeDest(const QString &name,
91
const PrinterJob *options) override;
93
virtual void cancelJob(const QString &name, const int jobId) override;
94
virtual int printFileToDest(const QString &filepath,
96
const cups_dest_t *dest) override;
97
virtual QList<QSharedPointer<PrinterJob>> printerGetJobs() override;
99
virtual QString printerName() const override;
100
virtual QString description() const override;
101
virtual QString location() const override;
102
virtual QString makeAndModel() const override;
104
virtual PrinterEnum::State state() const override;
105
virtual QList<QPageSize> supportedPageSizes() const override;
106
virtual QPageSize defaultPageSize() const override;
107
virtual bool supportsCustomPageSizes() const override;
109
virtual QPageSize minimumPhysicalPageSize() const override;
110
virtual QPageSize maximumPhysicalPageSize() const override;
111
virtual QList<int> supportedResolutions() const override;
112
virtual PrinterEnum::DuplexMode defaultDuplexMode() const override;
113
virtual QList<PrinterEnum::DuplexMode> supportedDuplexModes() const override;
115
virtual QList<QSharedPointer<Printer>> availablePrinters() override;
116
virtual QStringList availablePrinterNames() override;
117
virtual QSharedPointer<Printer> getPrinter(const QString &printerName) override;
118
virtual QString defaultPrinterName() override;
119
virtual void requestPrinterDrivers() override;
120
virtual void requestPrinter(const QString &printerName) override;
121
virtual QMap<QString, QVariant> printerGetJobAttributes(
122
const QString &name, const int jobId) override;
125
virtual void refresh() override;
126
void createSubscription();
129
void cancelWorkers();
130
void printerDriversLoaded(const QList<PrinterDriver> &drivers);
131
void printerDriversFailedToLoad(const QString &errorMessage);
132
void requestPrinterDriverCancel();
135
void cancelSubscription();
136
void cancelPrinterDriverRequest();
137
QList<cups_job_t *> getCupsJobs(const QString &name = QStringLiteral());
139
QString getPrinterName(const QString &name) const;
140
QString getPrinterInstance(const QString &name) const;
141
cups_dest_t* getDest(const QString &name) const;
142
ppd_file_t* getPpd(const QString &name) const;
143
const QStringList m_knownQualityOptions;
146
OrgCupsCupsdNotifierInterface *m_notifier;
147
int m_cupsSubscriptionId;
148
mutable QMap<QString, cups_dest_t*> m_dests; // Printer name, dest.
149
mutable QMap<QString, ppd_file_t*> m_ppds; // Printer name, ppd.
152
#endif // USC_PRINTERS_CUPS_BACKEND_H