From 709e0eed1de4b2edd9049b220fe67bb1b7fe6c73 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Sun, 9 Sep 2007 18:32:54 +0000 Subject: [PATCH] Print fancy information when no annotations are available svn path=/trunk/KDE/kdegraphics/okular/; revision=710354 --- ui/side_reviews.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++- ui/side_reviews.h | 4 ++-- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/ui/side_reviews.cpp b/ui/side_reviews.cpp index ee71dc6a5..c1f8764b1 100644 --- a/ui/side_reviews.cpp +++ b/ui/side_reviews.cpp @@ -13,7 +13,10 @@ #include #include #include +#include +#include #include +#include #include #include @@ -33,6 +36,51 @@ #include "annotationmodel.h" #include "ktreeviewsearchline.h" +class TreeView : public QTreeView +{ + public: + TreeView( Okular::Document *document, QWidget *parent = 0 ) + : QTreeView( parent ), m_document( document ) + { + } + + protected: + virtual void paintEvent( QPaintEvent *event ) + { + bool hasAnnotations = false; + for ( uint i = 0; i < m_document->pages(); ++i ) + if ( m_document->page( i )->hasAnnotations() ) { + hasAnnotations = true; + break; + } + if ( !hasAnnotations ) { + QPainter p( viewport() ); + p.setClipRect( event->rect() ); + + QTextDocument document; + document.setHtml( i18n( "

No annotations

" + "To create new annotations press F6 or select Tools -> Review" + " from the menu.
" ) ); + document.setTextWidth( width() - 50 ); + + const uint w = document.size().width() + 20; + const uint h = document.size().height() + 20; + + p.setBrush( palette().background() ); + p.drawRoundRect( 15, 15, w, h, (8*200)/w, (8*200)/h ); + p.translate( 20, 20 ); + document.drawContents( &p ); + + } else { + QTreeView::paintEvent( event ); + } + } + + private: + Okular::Document *m_document; +}; + + Reviews::Reviews( QWidget * parent, Okular::Document * document ) : QWidget( parent ), m_document( document ) { @@ -41,7 +89,7 @@ Reviews::Reviews( QWidget * parent, Okular::Document * document ) vLayout->setMargin( 0 ); vLayout->setSpacing( 6 ); - m_view = new QTreeView( this ); + m_view = new TreeView( m_document, this ); m_view->setAlternatingRowColors( true ); m_view->header()->hide(); diff --git a/ui/side_reviews.h b/ui/side_reviews.h index 849b00108..c31594347 100644 --- a/ui/side_reviews.h +++ b/ui/side_reviews.h @@ -16,7 +16,6 @@ #include "core/observer.h" class QModelIndex; -class QTreeView; namespace Okular { class Annotation; @@ -27,6 +26,7 @@ class Page; class AnnotationModel; class PageFilterProxyModel; class PageGroupProxyModel; +class TreeView; /** * @short ... @@ -58,7 +58,7 @@ class Reviews : public QWidget, public Okular::DocumentObserver private: // data fields (GUI) - QTreeView * m_view; + TreeView * m_view; // internal storage Okular::Document * m_document; AnnotationModel * m_model;