void ActionHandler::updateZoomActions(qreal zoomFactor, qreal minZoomFactor, qreal maxZoomFactor) { if (m_zoomInAction) m_zoomInAction->setEnabled(zoomFactor < maxZoomFactor); if (m_zoomOutAction) m_zoomOutAction->setEnabled(zoomFactor > minZoomFactor); if (m_zoomAction) { disconnect(m_zoomAction, SIGNAL(zoomFactorAdded(qreal)), m_zoomReceiver, m_zoomSlot); m_zoomAction->setZoomFactor(zoomFactor); connect(m_zoomAction, SIGNAL(zoomFactorAdded(qreal)), m_zoomReceiver, m_zoomSlot); } }
void ZoomAction::setZoomFactor(qreal zoomFactor) { // adjust zoom factor zoomFactor = qBound(s_minZoomFactor, zoomFactor, s_maxZoomFactor); // add current zoom factor to the list of zoom factors const QString zoomFactorString = formatZoomFactor(zoomFactor * 100); const int zoomFactorIndex = items().indexOf(zoomFactorString); if (zoomFactorIndex >= 0) setCurrentItem(zoomFactorIndex); else setCurrentZoomFactor(zoomFactor); Q_EMIT zoomFactorAdded(zoomFactor); }
PrintPreviewDialog::PrintPreviewDialog(QPrinter *printer, QWidget *parent) : QDialog(parent) { m_initialized = false; QVBoxLayout *mainLayout = new QVBoxLayout; m_printPreviewWidget = new QPrintPreviewWidget(printer, this); connect(m_printPreviewWidget, SIGNAL(paintRequested(QPrinter*)), this, SIGNAL(paintRequested(QPrinter*))); connect(m_printPreviewWidget, SIGNAL(previewChanged()), this, SLOT(updateZoomFactor())); ToolBar *toolBar = new ToolBar("printpreview_toolbar", this); Action *action = new Action(Icon("zoom-fit-width"), tr("Fit &width"), this, "printpreview_fit_width"); connect(action, SIGNAL(triggered()), m_printPreviewWidget, SLOT(fitToWidth())); toolBar->addAction(action); action = new Action(Icon("zoom-fit-best"), tr("Fit p&age"), this, "printpreview_fit_page"); connect(action, SIGNAL(triggered()), m_printPreviewWidget, SLOT(fitInView())); toolBar->addAction(action); m_zoomToAction = new ZoomAction(Icon("zoom-original"), tr("&Zoom"), this, "printpreview_zoom_to"); connect(m_zoomToAction, SIGNAL(zoomFactorAdded(qreal)), this, SLOT(setZoomFactor(qreal))); toolBar->addAction(m_zoomToAction); toolBar->addAction(StandardAction::zoomIn(this, SLOT(zoomIn()), this)); toolBar->addAction(StandardAction::zoomOut(this, SLOT(zoomOut()), this)); action = new Action(Icon("document-print"), tr("&Print"), this, "printpreview_print"); connect(action, SIGNAL(triggered()), this, SLOT(print())); toolBar->addAction(action); action = new Action(Icon("window-close"), tr("&Close"), this, "printpreview_close"); connect(action, SIGNAL(triggered()), this, SLOT(reject())); toolBar->addAction(action); mainLayout->addWidget(toolBar); mainLayout->addWidget(m_printPreviewWidget); setLayout(mainLayout); m_zoomToAction->setZoomFactor(1.0); }
void PrintPreviewDialog::updateZoomFactor() { disconnect(m_zoomToAction, SIGNAL(zoomFactorAdded(qreal)), this, SLOT(setZoomFactor(qreal))); m_zoomToAction->setZoomFactor(m_printPreviewWidget->zoomFactor()); connect(m_zoomToAction, SIGNAL(zoomFactorAdded(qreal)), this, SLOT(setZoomFactor(qreal))); }
QAction *ActionHandler::action(PdfView::PdfViewAction action, QObject *receiver, const char *slot) { switch (action) { case PdfView::ZoomIn: if (!m_zoomInAction) { m_zoomInAction = new QAction(tr("Zoom &In", "Action"), this); #ifndef QT_NO_SHORTCUT m_zoomInAction->setShortcut(QKeySequence::ZoomIn); #endif m_zoomInAction->setObjectName(QLatin1String("pdfview_zoom_in")); connect(m_zoomInAction, SIGNAL(triggered()), receiver, slot); } return m_zoomInAction; break; case PdfView::ZoomOut: if (!m_zoomOutAction) { m_zoomOutAction = new QAction(tr("Zoom &Out", "Action"), this); #ifndef QT_NO_SHORTCUT m_zoomOutAction->setShortcut(QKeySequence::ZoomOut); #endif m_zoomOutAction->setObjectName(QLatin1String("pdfview_zoom_out")); connect(m_zoomOutAction, SIGNAL(triggered()), receiver, slot); } return m_zoomOutAction; break; case PdfView::Zoom: if (!m_zoomAction) { m_zoomAction = new ZoomAction(tr("&Zoom", "Action"), this); connect(m_zoomAction, SIGNAL(zoomFactorAdded(qreal)), receiver, slot); m_zoomReceiver = receiver; m_zoomSlot = new char[strlen(slot) + 1]; strcpy(m_zoomSlot, slot); // m_zoomSlot = (char *)slot; // XXX this seems to work, if an unknown crash occurs, replacing this by the above might be a better idea } return m_zoomAction; break; case PdfView::GoToStartOfDocument: if (!m_goToStartAction) { m_goToStartAction = new QAction(tr("&Beginning of the Document", "Action"), this); m_goToStartAction->setIconText(tr("Start", "Action icon text: go to start of document")); #ifndef QT_NO_SHORTCUT m_goToStartAction->setShortcut(QKeySequence::MoveToStartOfDocument); #endif m_goToStartAction->setObjectName(QLatin1String("pdfview_go_start_document")); connect(m_goToStartAction, SIGNAL(triggered()), receiver, slot); } return m_goToStartAction; break; case PdfView::AmkhlvDn: if (!m_amkhlvDnAction) { m_amkhlvDnAction = new QAction(tr("Scroll Dn Fine", "Action"), this); m_amkhlvDnAction->setIconText(tr("ScrollDnFine", "Action icon text: fine scroll dn")); // #ifndef QT_NO_SHORTCUT // m_amkhlvDnAction->setShortcut(QKeySequence::MoveToEndOfDocument); // #endif m_amkhlvDnAction->setObjectName(QLatin1String("amkhlv_dn")); connect(m_amkhlvDnAction, SIGNAL(triggered()), receiver, slot); } return m_amkhlvDnAction; break; case PdfView::AmkhlvUp: if (!m_amkhlvUpAction) { m_amkhlvUpAction = new QAction(tr("Scroll Up Fine", "Action"), this); m_amkhlvUpAction->setIconText(tr("ScrollUpFine", "Action icon text: fine scroll up")); m_amkhlvUpAction->setObjectName(QLatin1String("amkhlv_up")); connect(m_amkhlvUpAction, SIGNAL(triggered()), receiver, slot); } return m_amkhlvUpAction; break; case PdfView::AmkhlvDnF: if (!m_amkhlvDnFAction) { m_amkhlvDnFAction = new QAction(tr("Scroll Dn Medium", "Action"), this); m_amkhlvDnFAction->setIconText(tr("ScrollDnMedium", "Action icon text: medium scroll dn")); m_amkhlvDnFAction->setObjectName(QLatin1String("amkhlv_dn_fast")); connect(m_amkhlvDnFAction, SIGNAL(triggered()), receiver, slot); } return m_amkhlvDnFAction; break; case PdfView::AmkhlvUpF: if (!m_amkhlvUpFAction) { m_amkhlvUpFAction = new QAction(tr("Scroll Up Medium", "Action"), this); m_amkhlvUpFAction->setIconText(tr("ScrollUpMedium", "Action icon text: medium scroll up")); m_amkhlvUpFAction->setObjectName(QLatin1String("amkhlv_up_fast")); connect(m_amkhlvUpFAction, SIGNAL(triggered()), receiver, slot); } return m_amkhlvUpFAction; break; case PdfView::AmkhlvRt: if (!m_amkhlvRtAction) { m_amkhlvRtAction = new QAction(tr("Scroll Rt Fine", "Action"), this); m_amkhlvRtAction->setIconText(tr("ScrolRtFine", "Action icon text: fine scroll rt")); m_amkhlvRtAction->setObjectName(QLatin1String("amkhlv_rt")); connect(m_amkhlvRtAction, SIGNAL(triggered()), receiver, slot); } return m_amkhlvRtAction; break; case PdfView::AmkhlvLt: if (!m_amkhlvLtAction) { m_amkhlvLtAction = new QAction(tr("Scroll Lt Fine", "Action"), this); m_amkhlvLtAction->setIconText(tr("ScrollLtFine", "Action icon text: fine scroll lt")); m_amkhlvLtAction->setObjectName(QLatin1String("amkhlv_lt")); connect(m_amkhlvLtAction, SIGNAL(triggered()), receiver, slot); } return m_amkhlvLtAction; break; case PdfView::AmkhlvRtF: if (!m_amkhlvRtFAction) { m_amkhlvRtFAction = new QAction(tr("Scroll Rt Medium", "Action"), this); m_amkhlvRtFAction->setIconText(tr("ScrollRtMedium", "Action icon text: medium scroll rt")); m_amkhlvRtFAction->setObjectName(QLatin1String("amkhlv_rt_fast")); connect(m_amkhlvRtFAction, SIGNAL(triggered()), receiver, slot); } return m_amkhlvRtFAction; break; case PdfView::AmkhlvLtF: if (!m_amkhlvLtFAction) { m_amkhlvLtFAction = new QAction(tr("Scroll Lt Medium", "Action"), this); m_amkhlvLtFAction->setIconText(tr("ScrollLtMedium", "Action icon text: medium scroll lt")); m_amkhlvLtFAction->setObjectName(QLatin1String("amkhlv_lt_fast")); connect(m_amkhlvLtFAction, SIGNAL(triggered()), receiver, slot); } return m_amkhlvLtFAction; break; case PdfView::GoToEndOfDocument: if (!m_goToEndAction) { m_goToEndAction = new QAction(tr("&End of the Document", "Action"), this); m_goToEndAction->setIconText(tr("End", "Action icon text: go to end of document")); #ifndef QT_NO_SHORTCUT m_goToEndAction->setShortcut(QKeySequence::MoveToEndOfDocument); #endif m_goToEndAction->setObjectName(QLatin1String("pdfview_go_end_document")); connect(m_goToEndAction, SIGNAL(triggered()), receiver, slot); } return m_goToEndAction; break; case PdfView::GoToPreviousPage: if (!m_goToPreviousPageAction) { m_goToPreviousPageAction = new QAction(tr("&Previous Page", "Action"), this); m_goToPreviousPageAction->setIconText(tr("Previous", "Action icon text: go to previous page")); m_goToPreviousPageAction->setObjectName(QLatin1String("pdfview_go_previous_page")); connect(m_goToPreviousPageAction, SIGNAL(triggered()), receiver, slot); } return m_goToPreviousPageAction; break; case PdfView::GoToNextPage: if (!m_goToNextPageAction) { m_goToNextPageAction = new QAction(tr("&Next Page", "Action"), this); m_goToNextPageAction->setIconText(tr("Next", "Action icon text: go to next page")); m_goToNextPageAction->setObjectName(QLatin1String("pdfview_go_next_page")); connect(m_goToNextPageAction, SIGNAL(triggered()), receiver, slot); } return m_goToNextPageAction; break; case PdfView::GoToPage: if (!m_goToPageAction) { m_goToPageAction = new SelectPageAction(this); // connect(m_goToPageAction, SIGNAL(pageSelected(int)), receiver, slot); m_goToPageReceiver = receiver; m_goToPageSlot = new char[strlen(slot) + 1]; strcpy(m_goToPageSlot, slot); // m_goToPageSlot = (char *)slot; // XXX this seems to work, if an unknown crash occurs, replacing this by the above might be a better idea } return m_goToPageAction; break; case PdfView::Print: if (!m_printAction) { m_printAction = new QAction(tr("&Print...", "Action"), this); #ifndef QT_NO_SHORTCUT m_printAction->setShortcut(QKeySequence::Print); #endif m_printAction->setObjectName(QLatin1String("pdfview_print")); connect(m_printAction, SIGNAL(triggered()), receiver, slot); } return m_printAction; break; case PdfView::MouseToolBrowse: if (!m_mouseToolsActionGroup) m_mouseToolsActionGroup = new QActionGroup(this); if (!m_mouseBrowseAction) { m_mouseBrowseAction = new QAction(tr("&Browse Tool", "Action: choose mouse tool"), this); m_mouseBrowseAction->setCheckable(true); m_mouseBrowseAction->setData(qVariantFromValue(PdfView::Browsing)); m_mouseBrowseAction->setObjectName(QLatin1String("pdfview_mouse_browse")); connect(m_mouseBrowseAction, SIGNAL(triggered()), receiver, slot); m_mouseToolsActionGroup->addAction(m_mouseBrowseAction); } return m_mouseBrowseAction; break; case PdfView::MouseToolMagnify: if (!m_mouseToolsActionGroup) m_mouseToolsActionGroup = new QActionGroup(this); if (!m_mouseMagnifyAction) { m_mouseMagnifyAction = new QAction(tr("&Magnify Tool", "Action: choose mouse tool"), this); m_mouseMagnifyAction->setCheckable(true); m_mouseMagnifyAction->setData(qVariantFromValue(PdfView::Magnifying)); m_mouseMagnifyAction->setObjectName(QLatin1String("pdfview_mouse_magnify")); connect(m_mouseMagnifyAction, SIGNAL(triggered()), receiver, slot); m_mouseToolsActionGroup->addAction(m_mouseMagnifyAction); } return m_mouseMagnifyAction; break; case PdfView::MouseToolSelection: if (!m_mouseToolsActionGroup) m_mouseToolsActionGroup = new QActionGroup(this); if (!m_mouseSelectionAction) { m_mouseSelectionAction = new QAction(tr("&Selection Tool", "Action: choose mouse tool"), this); m_mouseSelectionAction->setCheckable(true); m_mouseSelectionAction->setData(qVariantFromValue(PdfView::Selection)); m_mouseSelectionAction->setObjectName(QLatin1String("pdfview_mouse_selection")); connect(m_mouseSelectionAction, SIGNAL(triggered()), receiver, slot); m_mouseToolsActionGroup->addAction(m_mouseSelectionAction); } return m_mouseSelectionAction; break; case PdfView::MouseToolTextSelection: if (!m_mouseToolsActionGroup) m_mouseToolsActionGroup = new QActionGroup(this); if (!m_mouseTextSelectionAction) { m_mouseTextSelectionAction = new QAction(tr("&Text Selection Tool", "Action: choose mouse tool"), this); m_mouseTextSelectionAction->setCheckable(true); m_mouseTextSelectionAction->setData(qVariantFromValue(PdfView::TextSelection)); m_mouseTextSelectionAction->setObjectName(QLatin1String("pdfview_mouse_text_selection")); connect(m_mouseTextSelectionAction, SIGNAL(triggered()), receiver, slot); m_mouseToolsActionGroup->addAction(m_mouseTextSelectionAction); } return m_mouseTextSelectionAction; break; case PdfView::ShowForms: if (!m_showFormsAction) { m_showFormsAction = new QAction(tr("Forms", "Action"), this); m_showFormsAction->setObjectName(QLatin1String("pdfview_show_forms")); m_showFormsAction->setCheckable(true); connect(m_showFormsAction, SIGNAL(toggled(bool)), receiver, slot); } return m_showFormsAction; break; case PdfView::NoPdfViewAction: default: return 0; } return 0; }