summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/printsupport/windows/qwindowsprintdevice.cpp1
-rw-r--r--src/printsupport/kernel/qprintengine_win.cpp48
-rw-r--r--tests/manual/dialogs/printdialogpanel.cpp11
-rw-r--r--tests/manual/dialogs/printdialogpanel.ui18
4 files changed, 57 insertions, 21 deletions
diff --git a/src/plugins/printsupport/windows/qwindowsprintdevice.cpp b/src/plugins/printsupport/windows/qwindowsprintdevice.cpp
index 1b55937ec7..2c75ab7016 100644
--- a/src/plugins/printsupport/windows/qwindowsprintdevice.cpp
+++ b/src/plugins/printsupport/windows/qwindowsprintdevice.cpp
@@ -78,6 +78,7 @@ static QPrint::InputSlot paperBinToInputSlot(int windowsId, const QString &name)
}
slot.key = inputSlotMap[i].key;
slot.id = inputSlotMap[i].id;
+ slot.windowsId = windowsId;
return slot;
}
diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp
index 52b67d162b..427af13edf 100644
--- a/src/printsupport/kernel/qprintengine_win.cpp
+++ b/src/printsupport/kernel/qprintengine_win.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtGui module of the Qt Toolkit.
@@ -972,6 +972,24 @@ void QWin32PrintEnginePrivate::doReinit()
}
}
+static int indexOfId(const QList<QPrint::InputSlot> &inputSlots, QPrint::InputSlotId id)
+{
+ for (int i = 0; i < inputSlots.size(); ++i) {
+ if (inputSlots.at(i).id == id)
+ return i;
+ }
+ return -1;
+}
+
+static int indexOfWindowsId(const QList<QPrint::InputSlot> &inputSlots, int windowsId)
+{
+ for (int i = 0; i < inputSlots.size(); ++i) {
+ if (inputSlots.at(i).windowsId == windowsId)
+ return i;
+ }
+ return -1;
+}
+
void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &value)
{
Q_D(QWin32PrintEngine);
@@ -1114,14 +1132,12 @@ void QWin32PrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &
case PPK_PaperSource: {
if (!d->devMode)
break;
- QPrint::InputSlotId inputSlotId = QPrint::InputSlotId(value.toInt());
- foreach (const QPrint::InputSlot &inputSlot, d->m_printDevice.supportedInputSlots()) {
- if (inputSlot.id == inputSlotId) {
- d->devMode->dmDefaultSource = inputSlot.windowsId;
- d->doReinit();
- break;
- }
- }
+ const QList<QPrint::InputSlot> inputSlots = d->m_printDevice.supportedInputSlots();
+ const int paperSource = value.toInt();
+ const int index = paperSource >= DMBIN_USER ?
+ indexOfWindowsId(inputSlots, paperSource) : indexOfId(inputSlots, QPrint::InputSlotId(paperSource));
+ d->devMode->dmDefaultSource = index >= 0 ? inputSlots.at(index).windowsId : DMBIN_AUTO;
+ d->doReinit();
break;
}
@@ -1337,12 +1353,12 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const
if (!d->devMode) {
value = d->m_printDevice.defaultInputSlot().id;
} else {
- value = QPrint::Auto;
- foreach (const QPrint::InputSlot inputSlot, d->m_printDevice.supportedInputSlots()) {
- if (inputSlot.windowsId == d->devMode->dmDefaultSource) {
- value = inputSlot.id;
- break;
- }
+ if (d->devMode->dmDefaultSource >= DMBIN_USER) {
+ value = int(d->devMode->dmDefaultSource);
+ } else {
+ const QList<QPrint::InputSlot> inputSlots = d->m_printDevice.supportedInputSlots();
+ const int index = indexOfWindowsId(inputSlots, d->devMode->dmDefaultSource);
+ value = index >= 0 ? inputSlots.at(index).id : QPrint::Auto;
}
}
break;
@@ -1371,7 +1387,7 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const
case PPK_PaperSources: {
QList<QVariant> out;
foreach (const QPrint::InputSlot inputSlot, d->m_printDevice.supportedInputSlots())
- out << inputSlot.id;
+ out << QVariant(inputSlot.id == QPrint::CustomInputSlot ? inputSlot.windowsId : int(inputSlot.id));
value = out;
break;
}
diff --git a/tests/manual/dialogs/printdialogpanel.cpp b/tests/manual/dialogs/printdialogpanel.cpp
index 1a18f94406..e316486fcf 100644
--- a/tests/manual/dialogs/printdialogpanel.cpp
+++ b/tests/manual/dialogs/printdialogpanel.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the test suite of the Qt Toolkit.
@@ -474,6 +474,15 @@ void PrintDialogPanel::retrieveSettings(const QPrinter *printer)
setComboBoxValue(m_panel.m_colorModeCombo, printer->colorMode());
m_panel.m_resolution->setValue(printer->resolution());
+#ifdef Q_OS_WIN
+ QString availPaperSources;
+ foreach (QPrinter::PaperSource ps, printer->supportedPaperSources())
+ availPaperSources += QString::number(int(ps)) + QLatin1Char(' ');
+ m_panel.availPaperSourceLabel->setText(availPaperSources);
+#else
+ m_panel.availPaperSourceLabel->setText(QLatin1String("N/A"));
+#endif
+
#if QT_VERSION >= 0x050300
m_pageLayout = printer->pageLayout();
#else
diff --git a/tests/manual/dialogs/printdialogpanel.ui b/tests/manual/dialogs/printdialogpanel.ui
index 2f0fe606a3..f4bab6fd9a 100644
--- a/tests/manual/dialogs/printdialogpanel.ui
+++ b/tests/manual/dialogs/printdialogpanel.ui
@@ -527,24 +527,24 @@
<item row="7" column="1">
<widget class="QComboBox" name="m_paperSourceCombo"/>
</item>
- <item row="8" column="0">
+ <item row="9" column="0">
<widget class="QLabel" name="label_23">
<property name="text">
<string>Color Mode:</string>
</property>
</widget>
</item>
- <item row="8" column="1">
+ <item row="9" column="1">
<widget class="QComboBox" name="m_colorModeCombo"/>
</item>
- <item row="9" column="0">
+ <item row="10" column="0">
<widget class="QLabel" name="label_28">
<property name="text">
<string>Resolution:</string>
</property>
</widget>
</item>
- <item row="9" column="1">
+ <item row="10" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QSpinBox" name="m_resolution">
@@ -584,6 +584,16 @@
<item row="4" column="1">
<widget class="QComboBox" name="m_pageOrderCombo"/>
</item>
+ <item row="8" column="0">
+ <widget class="QLabel" name="availPaperSourceDescLabel">
+ <property name="text">
+ <string>Available Paper Sources:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="1">
+ <widget class="QLabel" name="availPaperSourceLabel"/>
+ </item>
</layout>
</widget>
</item>