SVN commit 989771 by jaham: handle adding and removing of resources M +32 -0 KoResourceModel.cpp M +7 -0 KoResourceModel.h --- trunk/koffice/libs/widgets/resources/KoResourceModel.cpp #989770:989771 @@ -27,6 +27,10 @@ { Q_ASSERT( m_resourceAdapter ); m_resourceAdapter->connectToResourceServer(); + connect(m_resourceAdapter, SIGNAL(resourceAdded(KoResource*)), + this, SLOT(resourceAdded(KoResource*))); + connect(m_resourceAdapter, SIGNAL(removingResource(KoResource*)), + this, SLOT(resourceRemoved(KoResource*))); } int KoResourceModel::rowCount( const QModelIndex &/*parent*/ ) const @@ -104,3 +108,31 @@ { return m_resourceAdapter; } + +void KoResourceModel::resourceAdded(KoResource *resource) +{ + int newIndex = m_resourceAdapter->resources().indexOf(resource); + if (newIndex < 0) + return; + + int row = newIndex / m_columnCount; + int col = newIndex % m_columnCount; + if (col == 0 || m_columnCount == 1 ) { + beginInsertRows(QModelIndex(), row, row); + endInsertRows(); + } else { + QModelIndex modelIndex = index(row, col, QModelIndex()); + emit dataChanged(modelIndex, modelIndex); + } +} + +void KoResourceModel::resourceRemoved(KoResource *resource) +{ + int oldIndex = m_resourceAdapter->resources().indexOf(resource); + if (oldIndex < 0) + return; + + reset(); +} + +#include "KoResourceModel.moc" --- trunk/koffice/libs/widgets/resources/KoResourceModel.h #989770:989771 @@ -23,10 +23,12 @@ #include class KoAbstractResourceServerAdapter; +class KoResource; /// The resource model managing the resource data class KoResourceModel : public QAbstractTableModel { + Q_OBJECT public: KoResourceModel( KoAbstractResourceServerAdapter * resourceAdapter, QObject * parent = 0 ); virtual ~KoResourceModel() {} @@ -43,6 +45,11 @@ void setColumnCount( int columnCount ); /// @returns the resource server adapter the model is connnected to KoAbstractResourceServerAdapter * resourceServerAdapter(); + +private slots: + void resourceAdded(KoResource *resource); + void resourceRemoved(KoResource *resource); + private: KoAbstractResourceServerAdapter * m_resourceAdapter; int m_columnCount;