Now TOC is a simple widget, with the treewiget inside.

Added a search lineedit (and a clear button) to search into the document toc. Implements KPDF's wish #99349.

svn path=/branches/work/kde4/playground/graphics/okular/; revision=545972
remotes/origin/old/work/newpageview
Pino Toscano 20 years ago
parent 13dde4096f
commit 639039e791
  1. 9
      part.cpp
  2. 49
      ui/toc.cpp
  3. 8
      ui/toc.h

@ -140,14 +140,9 @@ Part::Part(QWidget *parentWidget,
int tbIndex;
// [left toolbox: Table of Contents] | []
//QFrame * tocFrame = new QFrame( m_toolBox );
//QVBoxLayout * tocFrameLayout = new QVBoxLayout( tocFrame );
m_toc = new TOC( m_toolBox/*tocFrame*/, m_document );
m_toc = new TOC( m_toolBox, m_document );
connect( m_toc, SIGNAL( hasTOC( bool ) ), this, SLOT( enableTOC( bool ) ) );
//KListViewSearchLine * tocSearchLine = new KListViewSearchLine( tocFrame, toc );
//tocFrameLayout->addWidget( tocSearchLine );
//tocFrameLayout->addWidget( toc );
tbIndex = m_toolBox->addItem( m_toc/*tocFrame*/, SmallIconSet("text_left"), i18n("Contents") );
tbIndex = m_toolBox->addItem( m_toc, SmallIconSet("text_left"), i18n("Contents") );
m_toolBox->setItemToolTip( tbIndex, i18n("Contents") );
enableTOC( false );

@ -9,8 +9,13 @@
// qt/kde includes
#include <qheaderview.h>
#include <qlayout.h>
#include <qstringlist.h>
#include <qtoolbutton.h>
#include <qtreewidget.h>
#include <kicon.h>
#include <klocale.h>
#include <ktreewidgetsearchline.h>
// local includes
#include "toc.h"
@ -52,21 +57,40 @@ class TOCItem : public QTreeWidgetItem
QDomElement m_element;
};
TOC::TOC(QWidget *parent, KPDFDocument *document) : QTreeWidget(parent), m_document(document)
TOC::TOC(QWidget *parent, KPDFDocument *document) : QWidget(parent), m_document(document)
{
QVBoxLayout *mainlay = new QVBoxLayout( this );
mainlay->setMargin( 0 );
QHBoxLayout *searchlay = new QHBoxLayout();
searchlay->setSpacing( 2 );
mainlay->addLayout( searchlay );
QToolButton *clearBtn = new QToolButton( this );
clearBtn->setIcon( KIcon( layoutDirection() == Qt::RightToLeft ? "clear_left" : "locationbar_erase" ) );
clearBtn->setToolTip( i18n( "Clear filter" ) );
clearBtn->setAutoRaise( true );
searchlay->addWidget( clearBtn );
m_searchLine = new KTreeWidgetSearchLine( this );
connect( clearBtn, SIGNAL( clicked() ), m_searchLine, SLOT( clear() ) );
searchlay->addWidget( m_searchLine );
m_treeView = new QTreeWidget( this );
mainlay->addWidget( m_treeView );
QStringList cols;
cols.append( i18n("Topic") );
if (KpdfSettings::tocPageColumn())
cols.append( i18n("Page") );
setHeaderLabels(cols);
setSortingEnabled(false);
setRootIsDecorated(true);
setAlternatingRowColors(true);
header()->setResizeMode(QHeaderView::Stretch);
header()->hide();
setSelectionBehavior(QAbstractItemView::SelectRows);
connect(this, SIGNAL(itemClicked(QTreeWidgetItem *, int)), SLOT(slotExecuted(QTreeWidgetItem *)));
connect(this, SIGNAL(itemActivated(QTreeWidgetItem *, int)), SLOT(slotExecuted(QTreeWidgetItem *)));
m_treeView->setHeaderLabels( cols );
m_treeView->setSortingEnabled( false );
m_treeView->setRootIsDecorated( true );
m_treeView->setAlternatingRowColors( true );
m_treeView->header()->setResizeMode( QHeaderView::Stretch );
m_treeView->header()->hide();
m_treeView->setSelectionBehavior( QAbstractItemView::SelectRows );
connect( m_treeView, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ), this, SLOT( slotExecuted( QTreeWidgetItem * ) ) );
connect( m_treeView, SIGNAL( itemActivated( QTreeWidgetItem *, int ) ), this, SLOT( slotExecuted( QTreeWidgetItem * ) ) );
m_searchLine->addTreeWidget( m_treeView );
}
TOC::~TOC()
@ -85,7 +109,8 @@ void TOC::notifySetup( const QVector< KPDFPage * > & /*pages*/, bool documentCha
return;
// clear contents
clear();
m_treeView->clear();
m_searchLine->clear();
// request synopsis description (is a dom tree)
const DocumentSynopsis * syn = m_document->documentSynopsis();
@ -114,7 +139,7 @@ void TOC::addChildren( const QDomNode & parentNode, QTreeWidgetItem * parentItem
// insert the entry as top level (listview parented) or 2nd+ level
if ( !parentItem )
currentItem = new TOCItem( this, currentItem, e );
currentItem = new TOCItem( m_treeView, currentItem, e );
else
currentItem = new TOCItem( parentItem, currentItem, e );

@ -11,13 +11,15 @@
#define _KPDF_TOC_H_
#include <qdom.h>
#include <qtreewidget.h>
#include <qwidget.h>
#include "core/document.h"
#include "core/observer.h"
class QTreeWidget;
class KTreeWidgetSearchLine;
class KPDFDocument;
class TOC : public QTreeWidget, public DocumentObserver
class TOC : public QWidget, public DocumentObserver
{
Q_OBJECT
public:
@ -38,6 +40,8 @@ Q_OBJECT
void addChildren( const QDomNode & parentNode, QTreeWidgetItem * parentItem = 0 );
DocumentViewport getViewport( const QDomElement &e ) const;
KPDFDocument *m_document;
QTreeWidget *m_treeView;
KTreeWidgetSearchLine *m_searchLine;
};
#endif

Loading…
Cancel
Save