void SearchLineEdit::handleNextResult() { if( this->text().isEmpty() ) return; emit gotoNextResult(); }
void SearchBar::on_nextResultButton_clicked() { emit gotoNextResult(); }
PDFViewer::PDFViewer(const QString & pdf_doc, QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) { QtPDF::PDFDocumentWidget *docWidget = new QtPDF::PDFDocumentWidget(this); connect(this, SIGNAL(switchInterfaceLocale(QLocale)), docWidget, SLOT(switchInterfaceLocale(QLocale))); #ifdef USE_MUPDF docWidget->setDefaultBackend(QString::fromLatin1("mupdf")); #elif USE_POPPLERQT docWidget->setDefaultBackend(QString::fromLatin1("poppler-qt")); #else #error At least one backend is required #endif if (!pdf_doc.isEmpty() && docWidget) docWidget->load(pdf_doc); docWidget->goFirst(); _counter = new PageCounter(this->statusBar()); _zoomWdgt = new ZoomTracker(this); _search = new SearchLineEdit(this); _toolBar = new QToolBar(this); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/document-open.png")), tr("Open..."), this, SLOT(open())); _toolBar->addSeparator(); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/zoomin.png")), tr("Zoom In"), docWidget, SLOT(zoomIn())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/zoomout.png")), tr("Zoom Out"), docWidget, SLOT(zoomOut())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/zoom-fitwidth.png")), tr("Fit to Width"), docWidget, SLOT(zoomFitWidth())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/zoom-fitwindow.png")), tr("Fit to Window"), docWidget, SLOT(zoomFitWindow())); _toolBar->addSeparator(); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/pagemode-single.png")), tr("Single Page Mode"), docWidget, SLOT(setSinglePageMode())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/pagemode-continuous.png")), tr("One Column Continuous Page Mode"), docWidget, SLOT(setOneColContPageMode())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/pagemode-twocols.png")), tr("Two Columns Continuous Page Mode"), docWidget, SLOT(setTwoColContPageMode())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/pagemode-present.png")), tr("Presentation Mode"), docWidget, SLOT(setPresentationMode())); // TODO: fullscreen mode for presentations _toolBar->addSeparator(); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/zoom.png")), tr("Magnify"), docWidget, SLOT(setMouseModeMagnifyingGlass())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/hand.png")), tr("Pan"), docWidget, SLOT(setMouseModeMove())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/zoom-select.png")), tr("Marquee Zoom"), docWidget, SLOT(setMouseModeMarqueeZoom())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/measure.png")), tr("Measure"), docWidget, SLOT(setMouseModeMeasure())); _toolBar->addAction(QIcon(QString::fromUtf8(":/QtPDF/icons/select-text.png")), tr("Select"), docWidget, SLOT(setMouseModeSelect())); _counter->setLastPage(docWidget->lastPage()); connect(docWidget, SIGNAL(changedPage(int)), _counter, SLOT(setCurrentPage(int))); connect(docWidget, SIGNAL(changedZoom(qreal)), _zoomWdgt, SLOT(setZoom(qreal))); connect(docWidget, SIGNAL(requestOpenUrl(const QUrl)), this, SLOT(openUrl(const QUrl))); connect(docWidget, SIGNAL(requestOpenPdf(QString, QtPDF::PDFDestination, bool)), this, SLOT(openPdf(QString, QtPDF::PDFDestination, bool))); connect(docWidget, SIGNAL(contextClick(const int, const QPointF)), this, SLOT(syncFromPdf(const int, const QPointF))); connect(docWidget, SIGNAL(searchProgressChanged(int, int)), this, SLOT(searchProgressChanged(int, int))); connect(docWidget, SIGNAL(changedDocument(const QWeakPointer<QtPDF::Backend::Document>)), this, SLOT(documentChanged(const QWeakPointer<QtPDF::Backend::Document>))); _toolBar->addSeparator(); #ifdef DEBUG // FIXME: Remove this _toolBar->addAction(QString::fromUtf8("en"), this, SLOT(setEnglishLocale())); _toolBar->addAction(QString::fromUtf8("de"), this, SLOT(setGermanLocale())); _toolBar->addSeparator(); #endif _toolBar->addWidget(_search); connect(_search, SIGNAL(searchRequested(QString)), docWidget, SLOT(search(QString))); connect(_search, SIGNAL(gotoNextResult()), docWidget, SLOT(nextSearchResult())); connect(_search, SIGNAL(gotoPreviousResult()), docWidget, SLOT(previousSearchResult())); connect(_search, SIGNAL(searchCleared()), docWidget, SLOT(clearSearchResults())); statusBar()->addPermanentWidget(_counter); statusBar()->addWidget(_zoomWdgt); addToolBar(_toolBar); setCentralWidget(docWidget); QDockWidget * toc = docWidget->dockWidget(QtPDF::PDFDocumentView::Dock_TableOfContents, this); addDockWidget(Qt::LeftDockWidgetArea, toc); tabifyDockWidget(toc, docWidget->dockWidget(QtPDF::PDFDocumentView::Dock_MetaData, this)); tabifyDockWidget(toc, docWidget->dockWidget(QtPDF::PDFDocumentView::Dock_Fonts, this)); tabifyDockWidget(toc, docWidget->dockWidget(QtPDF::PDFDocumentView::Dock_Permissions, this)); tabifyDockWidget(toc, docWidget->dockWidget(QtPDF::PDFDocumentView::Dock_Annotations, this)); toc->raise(); QShortcut * goPrevViewRect = new QShortcut(QKeySequence(tr("Alt+Left")), this); connect(goPrevViewRect, SIGNAL(activated()), docWidget, SLOT(goPrevViewRect())); }