summaryrefslogtreecommitdiffstats
path: root/src/printsupport/kernel
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-03-23 13:36:29 +0100
committerKent Hansen <kent.hansen@nokia.com>2012-03-23 14:10:58 +0100
commit3b512ae142017f105f297467f74dc28d3cb9030a (patch)
tree9e131e23c01537f051851a1da9576c1e1ddf5ba2 /src/printsupport/kernel
parente20c4730192f312881591fb50e571af0a88fe421 (diff)
parentf956f9a83603a3df5651e3238c24e8df37558d6e (diff)
Merge master into api_changes
Diffstat (limited to 'src/printsupport/kernel')
-rw-r--r--src/printsupport/kernel/qprintengine.h6
-rw-r--r--src/printsupport/kernel/qprintengine_win.cpp69
-rw-r--r--src/printsupport/kernel/qprintengine_win_p.h5
-rw-r--r--src/printsupport/kernel/qprinter.cpp42
-rw-r--r--src/printsupport/kernel/qprinter.h11
5 files changed, 58 insertions, 75 deletions
diff --git a/src/printsupport/kernel/qprintengine.h b/src/printsupport/kernel/qprintengine.h
index eb7797b5e0..563af895c1 100644
--- a/src/printsupport/kernel/qprintengine.h
+++ b/src/printsupport/kernel/qprintengine.h
@@ -101,12 +101,6 @@ public:
virtual int metric(QPaintDevice::PaintDeviceMetric) const = 0;
virtual QPrinter::PrinterState printerState() const = 0;
-
-#ifdef Q_WS_WIN
- virtual HDC getPrinterDC() const { return 0; }
- virtual void releasePrinterDC(HDC) const { }
-#endif
-
};
#endif // QT_NO_PRINTER
diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp
index e209314fbc..37d2b27d15 100644
--- a/src/printsupport/kernel/qprintengine_win.cpp
+++ b/src/printsupport/kernel/qprintengine_win.cpp
@@ -966,28 +966,7 @@ void QWin32PrintEngine::drawPolygon(const QPointF *points, int pointCount, Polyg
void QWin32PrintEnginePrivate::queryDefault()
{
- /* Read the default printer name, driver and port with the intuitive function
- * Strings "windows" and "device" are specified in the MSDN under EnumPrinters()
- */
- QString noPrinters(QLatin1String("qt_no_printers"));
- wchar_t buffer[256];
- GetProfileString(L"windows", L"device",
- reinterpret_cast<const wchar_t *>(noPrinters.utf16()),
- buffer, 256);
- QString output = QString::fromWCharArray(buffer);
- if (output.isEmpty() || output == noPrinters) // no printers
- return;
-
- QStringList info = output.split(QLatin1Char(','));
- int infoSize = info.size();
- if (infoSize > 0) {
- if (name.isEmpty())
- name = info.at(0);
- if (program.isEmpty() && infoSize > 1)
- program = info.at(1);
- if (port.isEmpty() && infoSize > 2)
- port = info.at(2);
- }
+ QWin32PrintEngine::queryDefaultPrinter(name, program, port);
}
QWin32PrintEnginePrivate::~QWin32PrintEnginePrivate()
@@ -1581,6 +1560,52 @@ void QWin32PrintEngine::releaseDC(HDC) const
}
+QList<QPrinter::PaperSize> QWin32PrintEngine::supportedPaperSizes(const QPrinterInfo &printerInfo)
+{
+ QList<QPrinter::PaperSize> returnList;
+
+ if (printerInfo.isNull())
+ return returnList;
+
+ DWORD size = DeviceCapabilities(reinterpret_cast<const wchar_t *>(printerInfo.printerName().utf16()),
+ NULL, DC_PAPERS, NULL, NULL);
+ if ((int)size != -1) {
+ wchar_t *papers = new wchar_t[size];
+ size = DeviceCapabilities(reinterpret_cast<const wchar_t *>(printerInfo.printerName().utf16()),
+ NULL, DC_PAPERS, papers, NULL);
+ for (int c = 0; c < (int)size; ++c)
+ returnList.append(mapDevmodePaperSize(papers[c]));
+ delete [] papers;
+ }
+ return returnList;
+}
+
+void QWin32PrintEngine::queryDefaultPrinter(QString &name, QString &program, QString &port)
+{
+ /* Read the default printer name, driver and port with the intuitive function
+ * Strings "windows" and "device" are specified in the MSDN under EnumPrinters()
+ */
+ QString noPrinters(QLatin1String("qt_no_printers"));
+ wchar_t buffer[256];
+ GetProfileString(L"windows", L"device",
+ reinterpret_cast<const wchar_t *>(noPrinters.utf16()),
+ buffer, 256);
+ QString output = QString::fromWCharArray(buffer);
+ if (output.isEmpty() || output == noPrinters) // no printers
+ return;
+
+ QStringList info = output.split(QLatin1Char(','));
+ int infoSize = info.size();
+ if (infoSize > 0) {
+ if (name.isEmpty())
+ name = info.at(0);
+ if (program.isEmpty() && infoSize > 1)
+ program = info.at(1);
+ if (port.isEmpty() && infoSize > 2)
+ port = info.at(2);
+ }
+}
+
HGLOBAL *QWin32PrintEnginePrivate::createDevNames()
{
int size = sizeof(DEVNAMES)
diff --git a/src/printsupport/kernel/qprintengine_win_p.h b/src/printsupport/kernel/qprintengine_win_p.h
index baf8ccefce..8da6f32268 100644
--- a/src/printsupport/kernel/qprintengine_win_p.h
+++ b/src/printsupport/kernel/qprintengine_win_p.h
@@ -58,6 +58,7 @@
#include <QtGui/qpaintengine.h>
#include <QtPrintSupport/QPrintEngine>
#include <QtPrintSupport/QPrinter>
+#include <QtPrintSupport/QPrinterInfo>
#include <private/qpaintengine_alpha_p.h>
#include <QtCore/qt_windows.h>
@@ -102,8 +103,8 @@ public:
HDC getDC() const;
void releaseDC(HDC) const;
- HDC getPrinterDC() const { return getDC(); }
- void releasePrinterDC(HDC dc) const { releaseDC(dc); }
+ static QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &printerInfo);
+ static void queryDefaultPrinter(QString &name, QString &program, QString &port);
private:
friend class QPrintDialog;
diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp
index 404f45d509..d713639dcc 100644
--- a/src/printsupport/kernel/qprinter.cpp
+++ b/src/printsupport/kernel/qprinter.cpp
@@ -56,10 +56,6 @@
#include <QtPrintSupport/QPlatformPrinterSupport>
#include <private/qpagedpaintdevice_p.h>
-#if defined (Q_WS_WIN)
-#include <private/qprintengine_win_p.h>
-#endif
-
#if defined(Q_WS_X11)
#include <private/qt_x11_p.h>
#endif
@@ -1722,7 +1718,7 @@ QPrintEngine *QPrinter::printEngine() const
return d->printEngine;
}
-#if defined (Q_WS_WIN)
+#if defined (Q_OS_WIN)
/*!
Sets the page size to be used by the printer under Windows to \a
pageSize.
@@ -1753,7 +1749,7 @@ int QPrinter::winPageSize() const
Q_D(const QPrinter);
return d->printEngine->property(QPrintEngine::PPK_WindowsPageSize).toInt();
}
-#endif // Q_WS_WIN
+#endif // Q_OS_WIN
/*!
Returns a list of the resolutions (a list of dots-per-inch
@@ -1864,25 +1860,7 @@ QPrinter::PrinterState QPrinter::printerState() const
Use printerState() == QPrinter::Aborted instead.
*/
-#ifdef Q_WS_WIN
-/*!
- \internal
-*/
-HDC QPrinter::getDC() const
-{
- Q_D(const QPrinter);
- return d->printEngine->getPrinterDC();
-}
-
-/*!
- \internal
-*/
-void QPrinter::releaseDC(HDC hdc) const
-{
- Q_D(const QPrinter);
- d->printEngine->releasePrinterDC(hdc);
-}
-
+#ifdef Q_OS_WIN
/*!
Returns the supported paper sizes for this printer.
@@ -1907,7 +1885,7 @@ QList<QPrinter::PaperSource> QPrinter::supportedPaperSources() const
return int_list;
}
-#endif
+#endif // Q_OS_WIN
/*!
\fn QString QPrinter::printerSelectionOption() const
@@ -1941,7 +1919,7 @@ QList<QPrinter::PaperSource> QPrinter::supportedPaperSources() const
\sa printerSelectionOption()
*/
-#ifndef Q_WS_WIN
+#ifndef Q_OS_WIN
QString QPrinter::printerSelectionOption() const
{
Q_D(const QPrinter);
@@ -2207,16 +2185,6 @@ QPrinter::PrintRange QPrinter::printRange() const
Returns the current state of the printer being used by the print engine.
*/
-/*!
- \fn HDC QPrintEngine::getPrinterDC() const
- \internal
-*/
-
-/*!
- \fn void QPrintEngine::releasePrinterDC(HDC) const
- \internal
-*/
-
/*
Returns the dimensions for the given paper size, \a size, in millimeters.
*/
diff --git a/src/printsupport/kernel/qprinter.h b/src/printsupport/kernel/qprinter.h
index 17b125bbf8..23c7ccc40c 100644
--- a/src/printsupport/kernel/qprinter.h
+++ b/src/printsupport/kernel/qprinter.h
@@ -200,7 +200,7 @@ public:
QList<int> supportedResolutions() const;
-#ifdef Q_WS_WIN
+#ifdef Q_OS_WIN
QList<PaperSource> supportedPaperSources() const;
#endif
@@ -210,7 +210,7 @@ public:
void setDoubleSidedPrinting(bool enable);
bool doubleSidedPrinting() const;
-#ifdef Q_WS_WIN
+#ifdef Q_OS_WIN
void setWinPageSize(int winPageSize);
int winPageSize() const;
#endif
@@ -220,7 +220,7 @@ public:
QRectF paperRect(Unit) const;
QRectF pageRect(Unit) const;
-#if !defined(Q_WS_WIN) || defined(qdoc)
+#if !defined(Q_OS_WIN) || defined(qdoc)
QString printerSelectionOption() const;
void setPrinterSelectionOption(const QString &);
#endif
@@ -233,11 +233,6 @@ public:
QPaintEngine *paintEngine() const;
QPrintEngine *printEngine() const;
-#ifdef Q_WS_WIN
- HDC getDC() const;
- void releaseDC(HDC hdc) const;
-#endif
-
void setFromTo(int fromPage, int toPage);
int fromPage() const;
int toPage() const;