File indexing completed on 2024-12-08 13:27:07
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 ~PrintPortal() override; 0024 0025 public Q_SLOTS: 0026 uint Print(const QDBusObjectPath &handle, 0027 const QString &app_id, 0028 const QString &parent_window, 0029 const QString &title, 0030 const QDBusUnixFileDescriptor &fd, 0031 const QVariantMap &options, 0032 QVariantMap &results); 0033 0034 uint PreparePrint(const QDBusObjectPath &handle, 0035 const QString &app_id, 0036 const QString &parent_window, 0037 const QString &title, 0038 const QVariantMap &settings, 0039 const QVariantMap &page_setup, 0040 const QVariantMap &options, 0041 QVariantMap &results); 0042 0043 private: 0044 QMap<uint, QPrinter *> m_printers; 0045 0046 bool cupsAvailable(); 0047 QStringList printArguments(const QPrinter *printer, bool useCupsOptions, const QString &version, QPageLayout::Orientation documentOrientation); 0048 QStringList destination(const QPrinter *printer, const QString &version); 0049 QStringList copies(const QPrinter *printer, const QString &version); 0050 QStringList jobname(const QPrinter *printer, const QString &version); 0051 QStringList cupsOptions(const QPrinter *printer, QPageLayout::Orientation documentOrientation); 0052 QStringList pages(const QPrinter *printer, bool useCupsOptions, const QString &version); 0053 QStringList optionMedia(const QPrinter *printer); 0054 QString mediaPaperSource(const QPrinter *printer); 0055 QStringList optionOrientation(const QPrinter *printer, QPageLayout::Orientation documentOrientation); 0056 QStringList optionDoubleSidedPrinting(const QPrinter *printer); 0057 QStringList optionPageOrder(const QPrinter *printer); 0058 QStringList optionCollateCopies(const QPrinter *printer); 0059 QStringList optionPageMargins(const QPrinter *printer); 0060 QStringList optionCupsProperties(const QPrinter *printer); 0061 }; 0062 0063 #endif // XDG_DESKTOP_PORTAL_KDE_PRINT_H