diff --git a/part.cpp b/part.cpp index 7f5eb3554..323963e69 100644 --- a/part.cpp +++ b/part.cpp @@ -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 ); diff --git a/ui/toc.cpp b/ui/toc.cpp index 2dbccd4eb..507a6e265 100644 --- a/ui/toc.cpp +++ b/ui/toc.cpp @@ -9,8 +9,13 @@ // qt/kde includes #include +#include #include +#include +#include +#include #include +#include // 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 ); diff --git a/ui/toc.h b/ui/toc.h index e829938fb..72ccdad59 100644 --- a/ui/toc.h +++ b/ui/toc.h @@ -11,13 +11,15 @@ #define _KPDF_TOC_H_ #include -#include +#include #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