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