Changeset 561 for trunk/src/gui/dialogs/qprintpreviewdialog.cpp
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/gui/dialogs/qprintpreviewdialog.cpp
r2 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information (qt-info@nokia.com) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation (qt-info@nokia.com) 5 6 ** 6 7 ** This file is part of the QtGui module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 24 ** In addition, as a special exception, Nokia gives you certain additional 25 ** rights. These rights are described in the Nokia Qt LGPL Exception 26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you have questions regarding the use of this file, please contact 37 ** Nokia at qt-info@nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 43 43 #include "qprintpreviewwidget.h" 44 44 #include <private/qprinter_p.h> 45 #include "private/qdialog_p.h" 45 46 46 47 #include <QtGui/qaction.h> … … 55 56 #include <QtGui/qvalidator.h> 56 57 #include <QtGui/qfiledialog.h> 58 #include <QtGui/qmainwindow.h> 59 #include <QtGui/qtoolbar.h> 60 #include <QtGui/qformlayout.h> 57 61 #include <QtCore/QCoreApplication> 58 62 … … 64 68 65 69 namespace { 70 class QPrintPreviewMainWindow : public QMainWindow 71 { 72 public: 73 QPrintPreviewMainWindow(QWidget *parent) : QMainWindow(parent) {} 74 QMenu *createPopupMenu() { return 0; } 75 }; 76 66 77 class ZoomFactorValidator : public QDoubleValidator 67 78 { … … 129 140 } // anonymous namespace 130 141 131 class QPrintPreviewDialogPrivate 142 class QPrintPreviewDialogPrivate : public QDialogPrivate 132 143 { 133 144 Q_DECLARE_PUBLIC(QPrintPreviewDialog) 134 145 public: 135 QPrintPreviewDialogPrivate( QPrintPreviewDialog *q)136 : q_ptr(q),printDialog(0), ownPrinter(false),146 QPrintPreviewDialogPrivate() 147 : printDialog(0), ownPrinter(false), 137 148 initialized(false) {} 138 149 … … 159 170 void updateZoomFactor(); 160 171 161 QPrintPreviewDialog *q_ptr;162 172 QPrintDialog *printDialog; 163 173 QPrintPreviewWidget *preview; … … 198 208 QAction *printAction; 199 209 QAction *pageSetupAction; 200 QAction *closeAction;201 210 202 211 QPointer<QObject> receiverToDisconnectOnClose; … … 216 225 preview = new QPrintPreviewWidget(printer, q); 217 226 } 218 QObject::connect(preview, SIGNAL(paintRequested(QPrinter *)), q, SIGNAL(paintRequested(QPrinter*)));227 QObject::connect(preview, SIGNAL(paintRequested(QPrinter*)), q, SIGNAL(paintRequested(QPrinter*))); 219 228 QObject::connect(preview, SIGNAL(previewChanged()), q, SLOT(_q_previewChanged())); 220 229 setupActions(); 221 230 222 // Navigation223 QToolButton* nextPageButton = new QToolButton;224 nextPageButton->setDefaultAction(nextPageAction);225 QToolButton* prevPageButton = new QToolButton;226 prevPageButton->setDefaultAction(prevPageAction);227 QToolButton* firstPageButton = new QToolButton;228 firstPageButton->setDefaultAction(firstPageAction);229 QToolButton* lastPageButton = new QToolButton;230 lastPageButton->setDefaultAction(lastPageAction);231 232 231 pageNumEdit = new LineEdit; 233 232 pageNumEdit->setAlignment(Qt::AlignRight); 234 pageNumEdit->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy:: MinimumExpanding));233 pageNumEdit->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); 235 234 pageNumLabel = new QLabel; 236 235 QObject::connect(pageNumEdit, SIGNAL(editingFinished()), q, SLOT(_q_pageNumEdited())); 237 238 QToolButton* fitWidthButton = new QToolButton;239 fitWidthButton->setDefaultAction(fitWidthAction);240 QToolButton* fitPageButton = new QToolButton;241 fitPageButton->setDefaultAction(fitPageAction);242 236 243 237 zoomFactor = new QComboBox; … … 256 250 q, SLOT(_q_zoomFactorChanged())); 257 251 258 QToolButton* zoomInButton = new QToolButton; 259 zoomInButton->setDefaultAction(zoomInAction); 252 QPrintPreviewMainWindow *mw = new QPrintPreviewMainWindow(q); 253 QToolBar *toolbar = new QToolBar(mw); 254 toolbar->addAction(fitWidthAction); 255 toolbar->addAction(fitPageAction); 256 toolbar->addSeparator(); 257 toolbar->addWidget(zoomFactor); 258 toolbar->addAction(zoomOutAction); 259 toolbar->addAction(zoomInAction); 260 toolbar->addSeparator(); 261 toolbar->addAction(portraitAction); 262 toolbar->addAction(landscapeAction); 263 toolbar->addSeparator(); 264 toolbar->addAction(firstPageAction); 265 toolbar->addAction(prevPageAction); 266 267 // this is to ensure the label text and the editor text are 268 // aligned in all styles - the extra QVBoxLayout is a workaround 269 // for bug in QFormLayout 270 QWidget *pageEdit = new QWidget(toolbar); 271 QVBoxLayout *vboxLayout = new QVBoxLayout; 272 vboxLayout->setContentsMargins(0, 0, 0, 0); 273 QFormLayout *formLayout = new QFormLayout; 274 formLayout->setWidget(0, QFormLayout::LabelRole, pageNumEdit); 275 formLayout->setWidget(0, QFormLayout::FieldRole, pageNumLabel); 276 vboxLayout->addLayout(formLayout); 277 vboxLayout->setAlignment(Qt::AlignVCenter); 278 pageEdit->setLayout(vboxLayout); 279 toolbar->addWidget(pageEdit); 280 281 toolbar->addAction(nextPageAction); 282 toolbar->addAction(lastPageAction); 283 toolbar->addSeparator(); 284 toolbar->addAction(singleModeAction); 285 toolbar->addAction(facingModeAction); 286 toolbar->addAction(overviewModeAction); 287 toolbar->addSeparator(); 288 toolbar->addAction(pageSetupAction); 289 toolbar->addAction(printAction); 290 291 // Cannot use the actions' triggered signal here, since it doesn't autorepeat 292 QToolButton *zoomInButton = static_cast<QToolButton *>(toolbar->widgetForAction(zoomInAction)); 293 QToolButton *zoomOutButton = static_cast<QToolButton *>(toolbar->widgetForAction(zoomOutAction)); 260 294 zoomInButton->setAutoRepeat(true); 261 295 zoomInButton->setAutoRepeatInterval(200); 262 296 zoomInButton->setAutoRepeatDelay(200); 263 264 QToolButton* zoomOutButton = new QToolButton;265 zoomOutButton->setDefaultAction(zoomOutAction);266 297 zoomOutButton->setAutoRepeat(true); 267 298 zoomOutButton->setAutoRepeatInterval(200); 268 299 zoomOutButton->setAutoRepeatDelay(200); 269 270 //Cannot use the actions' triggered signal here, since it doesnt autorepeat271 300 QObject::connect(zoomInButton, SIGNAL(clicked()), q, SLOT(_q_zoomIn())); 272 301 QObject::connect(zoomOutButton, SIGNAL(clicked()), q, SLOT(_q_zoomOut())); 273 302 274 QToolButton* portraitButton = new QToolButton; 275 portraitButton->setDefaultAction(portraitAction); 276 QToolButton* landscapeButton = new QToolButton; 277 landscapeButton->setDefaultAction(landscapeAction); 278 279 QToolButton* singleModeButton = new QToolButton; 280 singleModeButton->setDefaultAction(singleModeAction); 281 QToolButton* facingModeButton = new QToolButton; 282 facingModeButton->setDefaultAction(facingModeAction); 283 QToolButton* overviewModeButton = new QToolButton; 284 overviewModeButton->setDefaultAction(overviewModeAction); 285 286 QToolButton *printButton = new QToolButton; 287 printButton->setDefaultAction(printAction); 288 QToolButton *pageSetupButton = new QToolButton; 289 pageSetupButton->setDefaultAction(pageSetupAction); 290 QToolButton *closeButton = new QToolButton; 291 closeButton->setDefaultAction(closeAction); 292 293 QHBoxLayout* modeLayout = new QHBoxLayout; 294 modeLayout->setSpacing(0); 295 modeLayout->addWidget(singleModeButton); 296 modeLayout->addWidget(facingModeButton); 297 modeLayout->addWidget(overviewModeButton); 298 299 QHBoxLayout *barLayout = new QHBoxLayout; 300 barLayout->addWidget(fitWidthButton); 301 barLayout->addWidget(fitPageButton); 302 barLayout->addWidget(zoomFactor); 303 barLayout->addWidget(zoomOutButton); 304 barLayout->addWidget(zoomInButton); 305 barLayout->addWidget(portraitButton); 306 barLayout->addWidget(landscapeButton); 307 barLayout->addStretch(); 308 barLayout->addWidget(firstPageButton); 309 barLayout->addWidget(prevPageButton); 310 barLayout->addWidget(pageNumEdit); 311 barLayout->addWidget(pageNumLabel); 312 barLayout->addWidget(nextPageButton); 313 barLayout->addWidget(lastPageButton); 314 barLayout->addStretch(); 315 barLayout->addLayout(modeLayout); 316 barLayout->addStretch(); 317 barLayout->addWidget(pageSetupButton); 318 barLayout->addWidget(printButton); 319 barLayout->addWidget(closeButton); 320 321 QWidget* buttonBar = new QWidget; 322 buttonBar->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum)); 323 barLayout->setMargin(0); 324 buttonBar->setLayout(barLayout); 303 mw->addToolBar(toolbar); 304 mw->setCentralWidget(preview); 305 // QMainWindows are always created as top levels, force it to be a 306 // plain widget 307 mw->setParent(q, Qt::Widget); 325 308 326 309 QVBoxLayout *topLayout = new QVBoxLayout; 327 topLayout->addWidget( buttonBar);328 topLayout-> addWidget(preview);310 topLayout->addWidget(mw); 311 topLayout->setMargin(0); 329 312 q->setLayout(topLayout); 330 313 … … 339 322 #endif 340 323 ) 341 pageSetupButton->setEnabled(false); 324 pageSetupAction->setEnabled(false); 325 preview->setFocus(); 342 326 } 343 327 … … 419 403 printAction = printerGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Print")); 420 404 pageSetupAction = printerGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Page setup")); 421 closeAction = printerGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Close"));422 405 qt_setupActionIcon(printAction, QLatin1String("print")); 423 406 qt_setupActionIcon(pageSetupAction, QLatin1String("page-setup")); 424 407 QObject::connect(printAction, SIGNAL(triggered(bool)), q, SLOT(_q_print())); 425 408 QObject::connect(pageSetupAction, SIGNAL(triggered(bool)), q, SLOT(_q_pageSetup())); 426 QObject::connect(closeAction, SIGNAL(triggered(bool)), q, SLOT(reject()));427 409 428 410 // Initial state: … … 465 447 { 466 448 int curPage = preview->currentPage(); 467 int numPages = preview-> numPages();449 int numPages = preview->pageCount(); 468 450 nextPageAction->setEnabled(curPage < numPages); 469 451 prevPageAction->setEnabled(curPage > 1); … … 477 459 Q_Q(QPrintPreviewDialog); 478 460 479 int numPages = preview-> numPages();461 int numPages = preview->pageCount(); 480 462 int maxChars = QString::number(numPages).length(); 481 pageNumLabel->setText(QString (QLatin1String("/ %1")).arg(numPages));463 pageNumLabel->setText(QString::fromLatin1("/ %1").arg(numPages)); 482 464 int cyphersWidth = q->fontMetrics().width(QString().fill(QLatin1Char('8'), maxChars)); 483 465 int maxWidth = pageNumEdit->minimumSizeHint().width() + cyphersWidth; … … 534 516 preview->setCurrentPage(1); 535 517 else if (action == lastPageAction) 536 preview->setCurrentPage(preview-> numPages());518 preview->setCurrentPage(preview->pageCount()); 537 519 updateNavActions(); 538 520 } … … 577 559 } 578 560 QString fileName = QFileDialog::getSaveFileName(q, title, printer->outputFileName(), 579 QLatin1 String("*") + suffix);561 QLatin1Char('*') + suffix); 580 562 if (!fileName.isEmpty()) { 581 563 if (QFileInfo(fileName).suffix().isEmpty()) … … 630 612 if (ok) { 631 613 preview->setZoomFactor(factor/100.0); 632 zoomFactor->setEditText(QString (QLatin1String("%1%")).arg(factor));614 zoomFactor->setEditText(QString::fromLatin1("%1%").arg(factor)); 633 615 setFitting(false); 634 616 } … … 643 625 \brief The QPrintPreviewDialog class provides a dialog for 644 626 previewing and configuring page layouts for printer output. 627 628 \ingroup standard-dialogs 629 \ingroup printing 645 630 646 631 Using QPrintPreviewDialog in your existing application is … … 681 666 */ 682 667 QPrintPreviewDialog::QPrintPreviewDialog(QPrinter* printer, QWidget *parent, Qt::WindowFlags flags) 683 : QDialog( parent, flags), d_ptr(new QPrintPreviewDialogPrivate(this))668 : QDialog(*new QPrintPreviewDialogPrivate, parent, flags) 684 669 { 685 670 Q_D(QPrintPreviewDialog); … … 695 680 */ 696 681 QPrintPreviewDialog::QPrintPreviewDialog(QWidget *parent, Qt::WindowFlags f) 697 : QDialog( parent, f), d_ptr(new QPrintPreviewDialogPrivate(this))682 : QDialog(*new QPrintPreviewDialogPrivate, parent, f) 698 683 { 699 684 Q_D(QPrintPreviewDialog); … … 710 695 delete d->printer; 711 696 delete d->printDialog; 712 delete d_ptr;713 697 } 714 698
Note:
See TracChangeset
for help on using the changeset viewer.