summaryrefslogtreecommitdiffstats
path: root/src/plugins/printsupport/windows/qwindowsprintdevice.h
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2018-07-16 14:00:53 +0200
committerAndy Shaw <andy.shaw@qt.io>2018-07-20 07:49:40 +0000
commit9c99a13d9e72824b4d6cf71d56893f7d96bf8498 (patch)
tree8d19be572f9cfd3fb76a9b226b9d716176c5514d /src/plugins/printsupport/windows/qwindowsprintdevice.h
parent588fcde580c253bb12ca9142a57a18c79fa3c4a0 (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.h49
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