File indexing completed on 2024-04-28 05:36:52

0001 /*
0002  * SPDX-FileCopyrightText: 2016 Red Hat Inc
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  *
0006  * SPDX-FileCopyrightText: 2016 Jan Grulich <jgrulich@redhat.com>
0007  */
0008 
0009 #ifndef XDG_DESKTOP_PORTAL_KDE_PRINT_H
0010 #define XDG_DESKTOP_PORTAL_KDE_PRINT_H
0011 
0012 #include <QDBusAbstractAdaptor>
0013 #include <QDBusObjectPath>
0014 #include <QDBusUnixFileDescriptor>
0015 #include <QPrinter>
0016 
0017 class PrintPortal : public QDBusAbstractAdaptor
0018 {
0019     Q_OBJECT
0020     Q_CLASSINFO("D-Bus Interface", "org.freedesktop.impl.portal.Print")
0021 public:
0022     explicit PrintPortal(QObject *parent);
0023 
0024 public Q_SLOTS:
0025     uint Print(const QDBusObjectPath &handle,
0026                const QString &app_id,
0027                const QString &parent_window,
0028                const QString &title,
0029                const QDBusUnixFileDescriptor &fd,
0030                const QVariantMap &options,
0031                QVariantMap &results);
0032 
0033     uint PreparePrint(const QDBusObjectPath &handle,
0034                       const QString &app_id,
0035                       const QString &parent_window,
0036                       const QString &title,
0037                       const QVariantMap &settings,
0038                       const QVariantMap &page_setup,
0039                       const QVariantMap &options,
0040                       QVariantMap &results);
0041 
0042 private:
0043     QMap<uint, QPrinter *> m_printers;
0044 
0045     bool cupsAvailable();
0046     QStringList printArguments(const QPrinter *printer, bool useCupsOptions, const QString &version, QPageLayout::Orientation documentOrientation);
0047     QStringList destination(const QPrinter *printer, const QString &version);
0048     QStringList copies(const QPrinter *printer, const QString &version);
0049     QStringList jobname(const QPrinter *printer, const QString &version);
0050     QStringList cupsOptions(const QPrinter *printer, QPageLayout::Orientation documentOrientation);
0051     QStringList pages(const QPrinter *printer, bool useCupsOptions, const QString &version);
0052     QStringList optionMedia(const QPrinter *printer);
0053     QString mediaPaperSource(const QPrinter *printer);
0054     QStringList optionOrientation(const QPrinter *printer, QPageLayout::Orientation documentOrientation);
0055     QStringList optionDoubleSidedPrinting(const QPrinter *printer);
0056     QStringList optionPageOrder(const QPrinter *printer);
0057     QStringList optionCollateCopies(const QPrinter *printer);
0058     QStringList optionPageMargins(const QPrinter *printer);
0059     QStringList optionCupsProperties(const QPrinter *printer);
0060 };
0061 
0062 #endif // XDG_DESKTOP_PORTAL_KDE_PRINT_H