diff --git a/include/ResourceTreeView.h b/include/ResourceTreeView.h index fe1622377..66de54f2c 100644 --- a/include/ResourceTreeView.h +++ b/include/ResourceTreeView.h @@ -34,7 +34,10 @@ class ResourceTreeView : public QTreeView { Q_OBJECT public: - ResourceTreeView( ResourceTreeModel * _tm, QWidget * _parent ); + ResourceTreeView( QWidget * _parent, ResourceTreeModel * _tm = NULL ); + virtual ~ResourceTreeView(); + + virtual void setModel( QAbstractItemModel * _model ); public slots: @@ -51,7 +54,7 @@ protected: private: - ResourceTreeModel * m_tm; + ResourceTreeModel * m_treeModel; QString m_lastFilter; diff --git a/src/gui/ResourceBrowser.cpp b/src/gui/ResourceBrowser.cpp index 97430680f..e98d6804d 100644 --- a/src/gui/ResourceBrowser.cpp +++ b/src/gui/ResourceBrowser.cpp @@ -98,7 +98,7 @@ ResourceBrowser::ResourceBrowser( QWidget * _parent ) : filterLayout->addWidget( m_filterStatusLabel ); // create an according tree-view for our tree-model - m_treeView = new ResourceTreeView( &m_treeModel, contentParent() ); + m_treeView = new ResourceTreeView( contentParent(), &m_treeModel ); // set up context menu handling m_treeView->setContextMenuPolicy( Qt::CustomContextMenu ); diff --git a/src/gui/ResourceTreeView.cpp b/src/gui/ResourceTreeView.cpp index 91dbe9577..4844754c7 100644 --- a/src/gui/ResourceTreeView.cpp +++ b/src/gui/ResourceTreeView.cpp @@ -26,17 +26,39 @@ #include "ResourceTreeModel.h" -ResourceTreeView::ResourceTreeView( ResourceTreeModel * _tm, - QWidget * _parent ) : +ResourceTreeView::ResourceTreeView( QWidget * _parent, + ResourceTreeModel * _tm ) : QTreeView( _parent ), - m_tm( _tm ) + m_treeModel( NULL ) { setHeaderHidden( true ); setDragEnabled( true ); - setModel( m_tm ); - connect( m_tm, SIGNAL( itemsChanged() ), - this, SLOT( updateFilter() ) ); + setModel( _tm ); +} + + + + +ResourceTreeView::~ResourceTreeView() +{ +} + + + + +void ResourceTreeView::setModel( QAbstractItemModel * _model ) +{ + if( _model ) + { + m_treeModel = dynamic_cast( _model ); + if( m_treeModel ) + { + QTreeView::setModel( m_treeModel ); + connect( m_treeModel, SIGNAL( itemsChanged() ), + this, SLOT( updateFilter() ) ); + } + } } @@ -48,11 +70,11 @@ void ResourceTreeView::setFilter( const QString & _s ) if( _s.isEmpty() ) { collapseAll(); - m_tm->setKeywordFilter( _s ); + m_treeModel->setKeywordFilter( _s ); } else { - m_tm->setKeywordFilter( _s ); + m_treeModel->setKeywordFilter( _s ); expandToDepth( _s.size() ); } setUpdatesEnabled( true );