diff options
author | Andy Shaw <andy.shaw@qt.io> | 2018-07-16 14:00:53 +0200 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2018-07-20 07:49:40 +0000 |
commit | 9c99a13d9e72824b4d6cf71d56893f7d96bf8498 (patch) | |
tree | 8d19be572f9cfd3fb76a9b226b9d716176c5514d /src/plugins/printsupport/windows/qwindowsprintdevice.h | |
parent | 588fcde580c253bb12ca9142a57a18c79fa3c4a0 (diff) |
Windows: Cache the printer capability information the first time
As remote based printers can be slow to query, meaning that it will take
time to check all the capabilities, especially if the QPrinter is
recreated on need. Then the information should be cached and reused if
the printer is deemed to be the same.
Change-Id: If8f9626c0d44113c698b4f61bbd197157932ccbe
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/plugins/printsupport/windows/qwindowsprintdevice.h')
-rw-r--r-- | src/plugins/printsupport/windows/qwindowsprintdevice.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/plugins/printsupport/windows/qwindowsprintdevice.h b/src/plugins/printsupport/windows/qwindowsprintdevice.h index 6b51ee8785..9f6d31da5f 100644 --- a/src/plugins/printsupport/windows/qwindowsprintdevice.h +++ b/src/plugins/printsupport/windows/qwindowsprintdevice.h @@ -1,6 +1,7 @@ /**************************************************************************** ** ** Copyright (C) 2014 John Layt <jlayt@kde.org> +** Copyright (C) 2018 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the plugins of the Qt Toolkit. @@ -57,6 +58,43 @@ QT_BEGIN_NAMESPACE +class QWindowsPrinterInfo +{ +public: + bool operator==(const QWindowsPrinterInfo &other) const + { + // We only need to check if these are the same for matching up + return m_id == other.m_id && m_name == other.m_name && + m_location == other.m_location && + m_makeAndModel == other.m_makeAndModel && + m_isRemote == other.m_isRemote; + } + QString m_id; + QString m_name; + QString m_location; + QString m_makeAndModel; + QList<QPageSize> m_pageSizes; + QList<int> m_resolutions; + QVector<QPrint::InputSlot> m_inputSlots; + QVector<QPrint::OutputBin> m_outputBins; + QVector<QPrint::DuplexMode> m_duplexModes; + QVector<QPrint::ColorMode> m_colorModes; + QSize m_minimumPhysicalPageSize; + QSize m_maximumPhysicalPageSize; + bool m_isRemote = false; + bool m_havePageSizes = false; + bool m_haveResolutions = false; + bool m_haveCopies = false; + bool m_supportsMultipleCopies = false; + bool m_supportsCollateCopies = false; + bool m_haveMinMaxPageSizes = false; + bool m_supportsCustomPageSizes = false; + bool m_haveInputSlots = false; + bool m_haveOutputBins = false; + bool m_haveDuplexModes = false; + bool m_haveColorModes = false; +}; + class QWindowsPrintDevice : public QPlatformPrintDevice { public: @@ -85,6 +123,12 @@ public: static QStringList availablePrintDeviceIds(); static QString defaultPrintDeviceId(); + bool supportsCollateCopies() const override; + bool supportsMultipleCopies() const override; + bool supportsCustomPageSizes() const override; + QSize minimumPhysicalPageSize() const override; + QSize maximumPhysicalPageSize() const override; + protected: void loadPageSizes() const override; void loadResolutions() const override; @@ -92,9 +136,14 @@ protected: void loadOutputBins() const override; void loadDuplexModes() const override; void loadColorModes() const override; + void loadCopiesSupport() const; + void loadMinMaxPageSizes() const; private: HANDLE m_hPrinter; + mutable bool m_haveCopies; + mutable bool m_haveMinMaxPageSizes; + int m_infoIndex; }; QT_END_NAMESPACE |