Remove obsolete APIs and comments from QAbstractPrintDialog

Merging QAbstractPrintDialog with QPrintDialog, as proposed in the
removed comment, seems to have little value, given that the platform
specific implementations rely on the current abstraction.

Adjust examples and tests; with the QAbstractPrintDialog test now
testing the QPrintDialog::options API, the corresponding test function
can be removed from the QPrinter test.

Change-Id: Ia8906627898332e8590ea9b27e3d71dfcc6e8d71
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
Volker Hilsheimer 2020-09-07 10:59:58 +02:00
parent 1b02cfd38d
commit 8186bd628f
8 changed files with 86 additions and 146 deletions

View File

@ -256,7 +256,7 @@ void MainWindow::printFile()
QPrintDialog dialog(&printer, this);
dialog.setWindowTitle(tr("Print Document"));
if (editor->textCursor().hasSelection())
dialog.addEnabledOption(QAbstractPrintDialog::PrintSelection);
dialog.setOption(QAbstractPrintDialog::PrintSelection);
if (dialog.exec() != QDialog::Accepted) {
return;
}

View File

@ -547,7 +547,7 @@ void TextEdit::filePrint()
QPrinter printer(QPrinter::HighResolution);
QPrintDialog *dlg = new QPrintDialog(&printer, this);
if (textEdit->textCursor().hasSelection())
dlg->addEnabledOption(QAbstractPrintDialog::PrintSelection);
dlg->setOption(QAbstractPrintDialog::PrintSelection);
dlg->setWindowTitle(tr("Print Document"));
if (dlg->exec() == QDialog::Accepted)
textEdit->print(&printer);

View File

@ -78,20 +78,12 @@ QT_BEGIN_NAMESPACE
Used to specify which parts of the print dialog should be visible.
\value None None of the options are enabled.
\value PrintToFile The print to file option is enabled.
\value PrintSelection The print selection option is enabled.
\value PrintPageRange The page range selection option is enabled.
\value PrintShowPageSize Show the page size + margins page only if this is enabled.
\value PrintCollateCopies The collate copies option is enabled
\value PrintCurrentPage The print current page option is enabled
This value is obsolete and does nothing since Qt 4.5:
\value DontUseSheet In previous versions of Qt, exec() the print dialog
would create a sheet by default the dialog was given a parent.
This is no longer supported in Qt 4.5. If you want to use sheets, use
QPrintDialog::open() instead.
*/
/*!
@ -187,50 +179,6 @@ QPrintDialog::PrintDialogOptions QPrintDialog::options() const
return d->options;
}
/*!
\obsolete
Use QPrintDialog::setOptions() instead.
*/
void QAbstractPrintDialog::setEnabledOptions(PrintDialogOptions options)
{
Q_D(QAbstractPrintDialog);
d->options = options;
}
/*!
\obsolete
Use QPrintDialog::setOption(\a option, true) instead.
*/
void QAbstractPrintDialog::addEnabledOption(PrintDialogOption option)
{
Q_D(QAbstractPrintDialog);
d->options |= option;
}
/*!
\obsolete
Use QPrintDialog::options() instead.
*/
QAbstractPrintDialog::PrintDialogOptions QAbstractPrintDialog::enabledOptions() const
{
Q_D(const QAbstractPrintDialog);
return d->options;
}
/*!
\obsolete
Use QPrintDialog::testOption(\a option) instead.
*/
bool QAbstractPrintDialog::isOptionEnabled(PrintDialogOption option) const
{
Q_D(const QAbstractPrintDialog);
return d->options & option;
}
/*!
Sets the print range option in to be \a range.
*/

View File

@ -51,7 +51,6 @@ QT_BEGIN_NAMESPACE
class QAbstractPrintDialogPrivate;
class QPrinter;
// ### QtPrintNG: merge this class with QPrintDialog
class Q_PRINTSUPPORT_EXPORT QAbstractPrintDialog : public QDialog
{
Q_DECLARE_PRIVATE(QAbstractPrintDialog)
@ -67,15 +66,11 @@ public:
};
enum PrintDialogOption {
None = 0x0000, // obsolete
PrintToFile = 0x0001,
PrintSelection = 0x0002,
PrintPageRange = 0x0004,
PrintShowPageSize = 0x0008,
PrintCollateCopies = 0x0010,
#if QT_DEPRECATED_SINCE(5, 14)
DontUseSheet Q_DECL_ENUMERATOR_DEPRECATED = 0x0020,
#endif
PrintCurrentPage = 0x0040
};
Q_ENUM(PrintDialogOption)
@ -86,12 +81,6 @@ public:
explicit QAbstractPrintDialog(QPrinter *printer, QWidget *parent = nullptr);
~QAbstractPrintDialog();
// obsolete
void addEnabledOption(PrintDialogOption option);
void setEnabledOptions(PrintDialogOptions options);
PrintDialogOptions enabledOptions() const;
bool isOptionEnabled(PrintDialogOption option) const;
void setOptionTabs(const QList<QWidget*> &tabs);
void setPrintRange(PrintRange range);

View File

@ -209,7 +209,7 @@ public:
QUnixPrintWidget * const parent;
QPrintPropertiesDialog *propertiesDialog;
Ui::QPrintWidget widget;
QAbstractPrintDialog * q;
QPrintDialog * q;
QPrinter *printer;
QPrintDevice m_currentPrintDevice;
@ -805,7 +805,7 @@ void QPrintDialogPrivate::setupPrinter()
p->setPrintRange(QPrinter::CurrentPage);
p->setFromTo(0,0);
} else if (options.printRange->isChecked()) {
if (q->isOptionEnabled(QPrintDialog::PrintPageRange)) {
if (q->testOption(QPrintDialog::PrintPageRange)) {
p->setPrintRange(QPrinter::PageRange);
p->setFromTo(options.from->value(), qMax(options.from->value(), options.to->value()));
} else {
@ -829,7 +829,7 @@ void QPrintDialogPrivate::setupPrinter()
if (p->printRange() == QPrinter::AllPages || p->printRange() == QPrinter::PageRange) {
//If the application is selecting pages and the first page number is even then need to adjust the odd-even accordingly
QCUPSSupport::PageSet pageSet = qvariant_cast<QCUPSSupport::PageSet>(options.pageSetCombo->itemData(options.pageSetCombo->currentIndex()));
if (q->isOptionEnabled(QPrintDialog::PrintPageRange)
if (q->testOption(QPrintDialog::PrintPageRange)
&& p->printRange() == QPrinter::PageRange
&& (q->fromPage() % 2 == 0)) {
@ -849,7 +849,7 @@ void QPrintDialogPrivate::setupPrinter()
// server-side page range, since we set the page range on the printer to 0-0/AllPages above,
// we need to take the values directly from the widget as q->fromPage() will return 0
if (!q->isOptionEnabled(QPrintDialog::PrintPageRange) && options.printRange->isChecked())
if (!q->testOption(QPrintDialog::PrintPageRange) && options.printRange->isChecked())
QCUPSSupport::setPageRange(p, options.from->value(), qMax(options.from->value(), options.to->value()));
}
#endif
@ -898,19 +898,19 @@ void QPrintDialogPrivate::_q_checkFields()
void QPrintDialogPrivate::updateWidgets()
{
Q_Q(QPrintDialog);
options.gbPrintRange->setVisible(q->isOptionEnabled(QPrintDialog::PrintPageRange) ||
q->isOptionEnabled(QPrintDialog::PrintSelection) ||
q->isOptionEnabled(QPrintDialog::PrintCurrentPage));
options.gbPrintRange->setVisible(q->testOption(QPrintDialog::PrintPageRange) ||
q->testOption(QPrintDialog::PrintSelection) ||
q->testOption(QPrintDialog::PrintCurrentPage));
options.printRange->setEnabled(q->isOptionEnabled(QPrintDialog::PrintPageRange));
options.printSelection->setVisible(q->isOptionEnabled(QPrintDialog::PrintSelection));
options.printCurrentPage->setVisible(q->isOptionEnabled(QPrintDialog::PrintCurrentPage));
options.collate->setVisible(q->isOptionEnabled(QPrintDialog::PrintCollateCopies));
options.printRange->setEnabled(q->testOption(QPrintDialog::PrintPageRange));
options.printSelection->setVisible(q->testOption(QPrintDialog::PrintSelection));
options.printCurrentPage->setVisible(q->testOption(QPrintDialog::PrintCurrentPage));
options.collate->setVisible(q->testOption(QPrintDialog::PrintCollateCopies));
#if QT_CONFIG(cups)
// Don't display Page Set if only Selection or Current Page are enabled
if (!q->isOptionEnabled(QPrintDialog::PrintPageRange)
&& (q->isOptionEnabled(QPrintDialog::PrintSelection) || q->isOptionEnabled(QPrintDialog::PrintCurrentPage))) {
if (!q->testOption(QPrintDialog::PrintPageRange)
&& (q->testOption(QPrintDialog::PrintSelection) || q->testOption(QPrintDialog::PrintCurrentPage))) {
options.pageSetCombo->setVisible(false);
options.pageSetLabel->setVisible(false);
} else {
@ -918,7 +918,7 @@ void QPrintDialogPrivate::updateWidgets()
options.pageSetLabel->setVisible(true);
}
if (!q->isOptionEnabled(QPrintDialog::PrintPageRange)) {
if (!q->testOption(QPrintDialog::PrintPageRange)) {
// If we can do CUPS server side pages selection,
// display the page range widgets
options.gbPrintRange->setVisible(true);
@ -940,7 +940,7 @@ void QPrintDialogPrivate::updateWidgets()
options.pageSetCombo->setEnabled(true);
break;
case QPrintDialog::CurrentPage:
if (q->isOptionEnabled(QPrintDialog::PrintCurrentPage)) {
if (q->testOption(QPrintDialog::PrintCurrentPage)) {
options.printCurrentPage->setChecked(true);
options.pageSetCombo->setEnabled(false);
}
@ -1066,7 +1066,7 @@ QUnixPrintWidgetPrivate::QUnixPrintWidgetPrivate(QUnixPrintWidget *p, QPrinter *
{
q = nullptr;
if (parent)
q = qobject_cast<QAbstractPrintDialog*> (parent->parent());
q = qobject_cast<QPrintDialog*> (parent->parent());
widget.setupUi(parent);
@ -1104,7 +1104,7 @@ QUnixPrintWidgetPrivate::QUnixPrintWidgetPrivate(QUnixPrintWidget *p, QPrinter *
void QUnixPrintWidgetPrivate::updateWidget()
{
const bool printToFile = q == nullptr || q->isOptionEnabled(QPrintDialog::PrintToFile);
const bool printToFile = q == nullptr || q->testOption(QPrintDialog::PrintToFile);
if (printToFile && !filePrintersAdded) {
if (widget.printers->count())
widget.printers->insertSeparator(widget.printers->count());
@ -1131,7 +1131,7 @@ void QUnixPrintWidgetPrivate::updateWidget()
widget.lOutput->setVisible(printToFile);
widget.fileBrowser->setVisible(printToFile);
widget.properties->setVisible(q->isOptionEnabled(QAbstractPrintDialog::PrintShowPageSize));
widget.properties->setVisible(q->testOption(QAbstractPrintDialog::PrintShowPageSize));
}
QUnixPrintWidgetPrivate::~QUnixPrintWidgetPrivate()
@ -1278,7 +1278,7 @@ void QUnixPrintWidgetPrivate::setupPrinterProperties()
QPrinter::OutputFormat outputFormat;
QString printerName;
if (q->isOptionEnabled(QPrintDialog::PrintToFile)
if (q->testOption(QPrintDialog::PrintToFile)
&& (widget.printers->currentIndex() == widget.printers->count() - 1)) {// PDF
outputFormat = QPrinter::PdfFormat;
} else {

View File

@ -98,21 +98,21 @@ static void qt_win_setup_PRINTDLGEX(PRINTDLGEX *pd, QWidget *parent,
pd->Flags = PD_RETURNDC;
pd->Flags |= PD_USEDEVMODECOPIESANDCOLLATE;
if (!pdlg->isOptionEnabled(QPrintDialog::PrintSelection))
if (!pdlg->testOption(QPrintDialog::PrintSelection))
pd->Flags |= PD_NOSELECTION;
if (pdlg->isOptionEnabled(QPrintDialog::PrintPageRange)) {
if (pdlg->testOption(QPrintDialog::PrintPageRange)) {
pd->nMinPage = pdlg->minPage();
pd->nMaxPage = pdlg->maxPage();
}
if(!pdlg->isOptionEnabled(QPrintDialog::PrintToFile))
if (!pdlg->testOption(QPrintDialog::PrintToFile))
pd->Flags |= PD_DISABLEPRINTTOFILE;
if (pdlg->isOptionEnabled(QPrintDialog::PrintSelection) && pdlg->printRange() == QPrintDialog::Selection)
if (pdlg->testOption(QPrintDialog::PrintSelection) && pdlg->printRange() == QPrintDialog::Selection)
pd->Flags |= PD_SELECTION;
else if (pdlg->isOptionEnabled(QPrintDialog::PrintPageRange) && pdlg->printRange() == QPrintDialog::PageRange)
else if (pdlg->testOption(QPrintDialog::PrintPageRange) && pdlg->printRange() == QPrintDialog::PageRange)
pd->Flags |= PD_PAGENUMS;
else if (pdlg->isOptionEnabled(QPrintDialog::PrintCurrentPage) && pdlg->printRange() == QPrintDialog::CurrentPage)
else if (pdlg->testOption(QPrintDialog::PrintCurrentPage) && pdlg->printRange() == QPrintDialog::CurrentPage)
pd->Flags |= PD_CURRENTPAGE;
else
pd->Flags |= PD_ALLPAGES;
@ -123,7 +123,7 @@ static void qt_win_setup_PRINTDLGEX(PRINTDLGEX *pd, QWidget *parent,
pd->Flags |= PD_NOPAGENUMS;
// Disable Current Page option if not required as default is Enabled
if (!pdlg->isOptionEnabled(QPrintDialog::PrintCurrentPage))
if (!pdlg->testOption(QPrintDialog::PrintCurrentPage))
pd->Flags |= PD_NOCURRENTPAGE;
// Default to showing the General tab first

View File

@ -33,7 +33,7 @@
#include <qdebug.h>
#include <QtPrintSupport/qtprintsupportglobal.h>
#if QT_CONFIG(printdialog)
#include <qabstractprintdialog.h>
#include <qprintdialog.h>
#include <qprinter.h>
#endif
@ -60,31 +60,63 @@ void tst_QAbstractPrintDialog::initTestCase()
#else
class MyAbstractPrintDialog : public QAbstractPrintDialog
class MyPrintDialog : public QPrintDialog
{
public:
MyAbstractPrintDialog(QPrinter *p) : QAbstractPrintDialog(p) {}
MyPrintDialog(QPrinter *p)
: QPrintDialog(p)
{
}
int exec() { return 0; }
void resetAllOptions()
{
setOption(QAbstractPrintDialog::PrintToFile, false);
setOption(QAbstractPrintDialog::PrintSelection, false);
setOption(QAbstractPrintDialog::PrintPageRange, false);
setOption(QAbstractPrintDialog::PrintShowPageSize, false);
setOption(QAbstractPrintDialog::PrintCollateCopies, false);
setOption(QAbstractPrintDialog::PrintCurrentPage, false);
}
};
// Testing get/set functions
void tst_QAbstractPrintDialog::getSetCheck()
{
QPrinter printer;
MyAbstractPrintDialog obj1(&printer);
MyPrintDialog obj1(&printer);
QCOMPARE(obj1.printer(), &printer);
// PrintDialogOptions QAbstractPrintDialog::enabledOptions()
// void QAbstractPrintDialog::setEnabledOptions(PrintDialogOptions)
obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::None));
QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::None), obj1.enabledOptions());
obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintToFile));
QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintToFile), obj1.enabledOptions());
obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintSelection));
QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintSelection), obj1.enabledOptions());
obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintPageRange));
QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintPageRange), obj1.enabledOptions());
obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintCollateCopies));
QCOMPARE(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintCollateCopies), obj1.enabledOptions());
// QPrintDialog::options APIs
QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile
|QAbstractPrintDialog::PrintPageRange
|QAbstractPrintDialog::PrintShowPageSize
|QAbstractPrintDialog::PrintCollateCopies);
obj1.setOptions(QAbstractPrintDialog::PrintSelection
|QAbstractPrintDialog::PrintCurrentPage);
QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintSelection
|QAbstractPrintDialog::PrintCurrentPage);
obj1.resetAllOptions();
QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintDialogOptions());
obj1.setOption(QAbstractPrintDialog::PrintToFile);
QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintToFile));
QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile);
obj1.setOption(QAbstractPrintDialog::PrintSelection);
QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintSelection));
QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile
|QAbstractPrintDialog::PrintSelection);
obj1.setOption(QAbstractPrintDialog::PrintPageRange);
QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintPageRange));
QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile
|QAbstractPrintDialog::PrintSelection
|QAbstractPrintDialog::PrintPageRange);
obj1.setOption(QAbstractPrintDialog::PrintCollateCopies);
QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintCollateCopies));
QCOMPARE(obj1.options(), QAbstractPrintDialog::PrintToFile
|QAbstractPrintDialog::PrintSelection
|QAbstractPrintDialog::PrintPageRange
|QAbstractPrintDialog::PrintCollateCopies);
// PrintRange QAbstractPrintDialog::printRange()
// void QAbstractPrintDialog::setPrintRange(PrintRange)
@ -99,22 +131,23 @@ void tst_QAbstractPrintDialog::getSetCheck()
void tst_QAbstractPrintDialog::setMinMax()
{
QPrinter printer;
MyAbstractPrintDialog obj1(&printer);
obj1.setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::None));
MyPrintDialog obj1(&printer);
obj1.resetAllOptions();
QCOMPARE(obj1.minPage(), 0);
QCOMPARE(obj1.maxPage(), INT_MAX);
QVERIFY(!obj1.isOptionEnabled(QAbstractPrintDialog::PrintPageRange));
QVERIFY(!obj1.testOption(QAbstractPrintDialog::PrintPageRange));
obj1.setMinMax(2,5);
QCOMPARE(obj1.minPage(), 2);
QCOMPARE(obj1.maxPage(), 5);
QVERIFY(obj1.enabledOptions() & QAbstractPrintDialog::PrintPageRange);
QVERIFY(obj1.isOptionEnabled(QAbstractPrintDialog::PrintPageRange));
QVERIFY(obj1.options() & QAbstractPrintDialog::PrintPageRange);
QVERIFY(obj1.testOption(QAbstractPrintDialog::PrintPageRange));
}
void tst_QAbstractPrintDialog::setFromTo()
{
QPrinter printer;
MyAbstractPrintDialog obj1(&printer);
MyPrintDialog obj1(&printer);
QCOMPARE(obj1.fromPage(), 0);
QCOMPARE(obj1.toPage(), 0);
obj1.setMinMax(0,0);

View File

@ -65,7 +65,6 @@ private slots:
#if QT_CONFIG(printer)
void testPageRectAndPaperRect();
void testPageRectAndPaperRect_data();
void testSetOptions();
void testMargins_data();
void testMargins();
void testPageSetupDialog();
@ -135,8 +134,6 @@ void tst_QPrinter::initTestCase()
#if QT_CONFIG(printer)
#define MYCOMPARE(a, b) QCOMPARE(QVariant((int)a), QVariant((int)b))
void tst_QPrinter::testPageSetupDialog()
{
// Make sure this doesn't crash at least
@ -259,33 +256,6 @@ void tst_QPrinter::testPageRectAndPaperRect()
QVERIFY(printer->pageLayout().orientation() != QPageLayout::Portrait || pageRect.width() < pageRect.height());
}
void tst_QPrinter::testSetOptions()
{
QPrinter prn;
QPrintDialog dlg(&prn);
// Verify default values
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), true);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), false);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), true);
dlg.setEnabledOptions(QAbstractPrintDialog::PrintPageRange);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), false);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), false);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), true);
dlg.setEnabledOptions((QAbstractPrintDialog::PrintDialogOptions(QAbstractPrintDialog::PrintSelection
| QAbstractPrintDialog::PrintPageRange)));
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), false);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), true);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), true);
dlg.setEnabledOptions(QAbstractPrintDialog::PrintSelection);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintToFile), false);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintSelection), true);
MYCOMPARE(dlg.isOptionEnabled(QAbstractPrintDialog::PrintPageRange), false);
}
void tst_QPrinter::testMargins_data()
{
QTest::addColumn<PrinterPtr>("printer");
@ -556,7 +526,7 @@ void tst_QPrinter::printDialogCompleter()
if (dialog.printer()->outputFormat() != QPrinter::NativeFormat)
QSKIP("Dialog cannot be used with non-native formats");
#endif
dialog.setEnabledOptions(QAbstractPrintDialog::PrintToFile);
dialog.setOption(QAbstractPrintDialog::PrintToFile);
dialog.show();
QVERIFY(QTest::qWaitForWindowActive(&dialog));
@ -625,11 +595,11 @@ void tst_QPrinter::testCurrentPage()
QPrintDialog dialog(&printer);
// Test default Current Page option to off
QCOMPARE(dialog.isOptionEnabled(QPrintDialog::PrintCurrentPage), false);
QVERIFY(!dialog.testOption(QPrintDialog::PrintCurrentPage));
// Test enable Current Page option
dialog.setOption(QPrintDialog::PrintCurrentPage);
QCOMPARE(dialog.isOptionEnabled(QPrintDialog::PrintCurrentPage), true);
QVERIFY(dialog.testOption(QPrintDialog::PrintCurrentPage));
}