Summary: | Reviews sidetab does nothing | ||
---|---|---|---|
Product: | [Applications] okular | Reporter: | Martin Fabian Hohenberg <martin.hohenberg> |
Component: | general | Assignee: | Okular developers <okular-devel> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | nemeskey.david |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Martin Fabian Hohenberg
2006-11-20 18:18:33 UTC
SVN commit 606817 by pino: Smootly move the viewer area to the annotation when an annotation item in the review tab is double-clicked. BUG: 137631 M +41 -11 side_reviews.cpp M +3 -0 side_reviews.h --- trunk/playground/graphics/okular/ui/side_reviews.cpp #606816:606817 @@ -85,6 +85,7 @@ m_listView->header()->setResizeMode( QHeaderView::Stretch ); m_listView->header()->hide(); m_listView->setIndentation( 16 ); + connect( m_listView, SIGNAL( itemDoubleClicked( QTreeWidgetItem *, int ) ), this, SLOT( itemDoubleClicked( QTreeWidgetItem *, int ) ) ); } //BEGIN DocumentObserver Notifies -> requestListViewUpdate @@ -171,36 +172,65 @@ class AnnotationItem : public QTreeWidgetItem { public: - AnnotationItem( QTreeWidget * parent, Okular::Annotation * ann ) - : QTreeWidgetItem( parent ) + AnnotationItem( QTreeWidget * parent, Okular::Annotation * ann, int page ) + : QTreeWidgetItem( parent ), m_ann( ann ), m_page( page ) { - init( ann ); + init(); } - AnnotationItem( QTreeWidgetItem * parent, Okular::Annotation * ann ) - : QTreeWidgetItem( parent ) + AnnotationItem( QTreeWidgetItem * parent, Okular::Annotation * ann, int page ) + : QTreeWidgetItem( parent ), m_ann( ann ), m_page( page ) { - init( ann ); + init(); } - void init( Okular::Annotation * ann ) + void init() { - m_ann = ann; setText( 0, Okular::AnnotationUtils::captionForAnnotation( m_ann ) ); setIcon( 0, KIcon( "okular" ) ); setToolTip( 0, QString( "<qt><b>%1</b><hr>%2</qt>" ) .arg( i18n( "Author: %1", m_ann->author ), m_ann->contents ) ); } - Okular::Annotation * anotation() + Okular::Annotation * annotation() { return m_ann; } + int page() const + { + return m_page; + } + private: Okular::Annotation * m_ann; + int m_page; }; +void Reviews::itemDoubleClicked( QTreeWidgetItem * item, int /*column*/ ) +{ + AnnotationItem * annItem = dynamic_cast< AnnotationItem * >( item ); + if ( !annItem ) + return; + + int pageNumber = annItem->page(); + Okular::Annotation * ann = annItem->annotation(); + const Okular::Page * page = m_document->page( pageNumber ); + // calculating the right coordinates to center the view on the annotation + QRect rect = Okular::AnnotationUtils::annotationGeometry( ann, page->width(), page->height() ); + Okular::NormalizedRect nr( rect, (int)page->width(), (int)page->height() ); + // set the viewport parameters + Okular::DocumentViewport vp; + vp.pageNumber = pageNumber; + vp.rePos.enabled = true; + vp.rePos.pos = Okular::DocumentViewport::Center; + vp.rePos.normalizedX = ( nr.right + nr.left ) / 2.0; + vp.rePos.normalizedY = ( nr.bottom + nr.top ) / 2.0; + // setting the viewport + m_document->setViewport( vp, -1, true ); +} + + void Reviews::slotUpdateListView() { // reset listview to default @@ -294,8 +324,8 @@ // create Annotation subnode QTreeWidgetItem * singleItem = authorItem ? - new AnnotationItem( authorItem, annotation ) : - new AnnotationItem( m_listView, annotation ); + new AnnotationItem( authorItem, annotation, page->number() ) : + new AnnotationItem( m_listView, annotation, page->number() ); Q_UNUSED( singleItem ); } } --- trunk/playground/graphics/okular/ui/side_reviews.h #606816:606817 @@ -45,6 +45,9 @@ void slotCurrentPageOnly( bool ); void slotUpdateListView(); + private slots: + void itemDoubleClicked( QTreeWidgetItem *, int ); + private: // add all annotations of a page to the listView taking care of grouping void addContents( const Okular::Page * page ); *** Bug 238707 has been marked as a duplicate of this bug. *** |