From dd42518bb9a872ba1d1dd475f0ab295bfc40011e Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Mon, 17 Aug 2009 16:50:35 +0200 Subject: [PATCH] Resource[Tree]Item: made hidden-flag multi-model capable The hidden flag has been moved from ResourceTreeItem to ResourceItem and has been made multi-model capable, i.e. a ResourceModel pointer is being used for looking up the flag in a hash table. --- include/ResourceItem.h | 16 +++++++++++++++- include/ResourceTreeItem.h | 18 ++++-------------- src/core/ResourceTreeItem.cpp | 14 +++++++------- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/include/ResourceItem.h b/include/ResourceItem.h index 3a72dcaf7..f99785df1 100644 --- a/include/ResourceItem.h +++ b/include/ResourceItem.h @@ -27,12 +27,13 @@ #include #include +#include #include #include "ResourceProvider.h" class ResourceTreeItem; - +class ResourceModel; class ResourceItem { @@ -77,6 +78,17 @@ public: // copy constructor ResourceItem( const ResourceItem & _item ); + inline void setHidden( bool _h, const ResourceModel * _model ) + { + m_hidden[_model] = _h; + } + + inline bool isHidden( const ResourceModel * _model ) const + { + return m_hidden[_model]; + } + + const ResourceProvider * provider() const { return m_provider; @@ -230,6 +242,8 @@ private: QDateTime m_lastMod; QString m_tags; + QHash m_hidden; + ResourceTreeItem * m_treeItem; } ; diff --git a/include/ResourceTreeItem.h b/include/ResourceTreeItem.h index 6385d0067..21c4ded59 100644 --- a/include/ResourceTreeItem.h +++ b/include/ResourceTreeItem.h @@ -50,21 +50,12 @@ public: ~ResourceTreeItem(); - inline void setHidden( bool _h ) - { - m_hidden = _h; - } + int rowCount( const ResourceModel * _model = NULL ) const; - inline bool isHidden() const - { - return m_hidden; - } + ResourceTreeItem * getChild( int _row, + const ResourceModel * _model = NULL ); - int rowCount() const; - - ResourceTreeItem * getChild( int _row ); - - int row() const; + int row( const ResourceModel * _model = NULL ) const; inline void addChild( ResourceTreeItem * _it ) { @@ -127,7 +118,6 @@ private: ResourceTreeItem * m_parent; ResourceTreeItemList m_children; - bool m_hidden; bool m_temporaryMarker; ResourceItem * m_item; diff --git a/src/core/ResourceTreeItem.cpp b/src/core/ResourceTreeItem.cpp index 39c4aebb3..6b693e60d 100644 --- a/src/core/ResourceTreeItem.cpp +++ b/src/core/ResourceTreeItem.cpp @@ -31,7 +31,6 @@ ResourceTreeItem::ResourceTreeItem( ResourceTreeItem * _parent, ResourceItem * _item ) : m_parent( _parent ), - m_hidden( false ), m_temporaryMarker( false ), m_item( _item ) { @@ -67,12 +66,12 @@ ResourceTreeItem::~ResourceTreeItem() -int ResourceTreeItem::rowCount() const +int ResourceTreeItem::rowCount( const ResourceModel * _model ) const { int rc = 0; foreachConstResourceTreeItem( m_children ) { - if( !(*it)->isHidden() ) + if( !(*it)->item()->isHidden( _model ) ) { ++rc; } @@ -83,12 +82,13 @@ int ResourceTreeItem::rowCount() const -ResourceTreeItem * ResourceTreeItem::getChild( int _row ) +ResourceTreeItem * ResourceTreeItem::getChild( int _row, + const ResourceModel * _model ) { int rc = 0; foreachResourceTreeItem( m_children ) { - if( !(*it)->isHidden() ) + if( !(*it)->item()->isHidden( _model ) ) { if( rc == _row ) { @@ -103,7 +103,7 @@ ResourceTreeItem * ResourceTreeItem::getChild( int _row ) -int ResourceTreeItem::row() const +int ResourceTreeItem::row( const ResourceModel * _model ) const { if( !m_parent ) { @@ -113,7 +113,7 @@ int ResourceTreeItem::row() const int row = 0; foreachConstResourceTreeItem( m_parent->m_children ) { - if( !(*it)->isHidden() ) + if( !(*it)->item()->isHidden( _model ) ) { if( *it == this ) {