20 #include "agentinstancemodel.h"
22 #include "agentinstance.h"
23 #include "agentmanager.h"
25 #include <QtCore/QStringList>
30 using namespace Akonadi;
35 class AgentInstanceModel::Private
51 void AgentInstanceModel::Private::instanceAdded(
const AgentInstance &instance )
53 mParent->beginInsertRows( QModelIndex(), mInstances.count(), mInstances.count() );
54 mInstances.append( instance );
55 mParent->endInsertRows();
58 void AgentInstanceModel::Private::instanceRemoved(
const AgentInstance &instance )
60 const int index = mInstances.indexOf( instance );
65 mParent->beginRemoveRows( QModelIndex(), index, index );
66 mInstances.removeAll( instance );
67 mParent->endRemoveRows();
70 void AgentInstanceModel::Private::instanceChanged(
const AgentInstance &instance )
72 const int numberOfInstance( mInstances.count() );
73 for (
int i = 0; i < numberOfInstance; ++i ) {
74 if ( mInstances[ i ] == instance ) {
75 mInstances[ i ] = instance;
77 const QModelIndex idx = mParent->index( i, 0 );
78 emit mParent->dataChanged( idx, idx );
87 : QAbstractItemModel( parent ), d( new Private( this ) )
91 QHash<int, QByteArray> roles = roleNames();
96 setRoleNames( roles );
117 int AgentInstanceModel::columnCount(
const QModelIndex& )
const
122 int AgentInstanceModel::rowCount(
const QModelIndex& )
const
124 return d->mInstances.count();
127 QVariant AgentInstanceModel::data(
const QModelIndex &index,
int role )
const
129 if ( !index.isValid() ) {
133 if ( index.row() < 0 || index.row() >= d->mInstances.count() ) {
137 const AgentInstance &instance = d->mInstances[ index.row() ];
140 case Qt::DisplayRole:
141 return instance.
name();
142 case Qt::DecorationRole:
147 var.setValue( instance );
152 case Qt::ToolTipRole:
153 return QString::fromLatin1(
"<qt><h4>%1</h4>%2</qt>" ).arg( instance.
name(), instance.
type().
description() );
165 var.setValue( instance.
type() );
180 QVariant AgentInstanceModel::headerData(
int section, Qt::Orientation orientation,
int role )
const
182 if ( orientation == Qt::Vertical ) {
186 if ( role != Qt::DisplayRole ) {
192 return i18nc(
"@title:column, name of a thing",
"Name" );
200 QModelIndex AgentInstanceModel::index(
int row,
int column,
const QModelIndex& )
const
202 if ( row < 0 || row >= d->mInstances.count() ) {
203 return QModelIndex();
207 return QModelIndex();
210 return createIndex( row, column, 0 );
213 QModelIndex AgentInstanceModel::parent(
const QModelIndex& )
const
215 return QModelIndex();
218 Qt::ItemFlags AgentInstanceModel::flags(
const QModelIndex & index )
const
220 if ( !index.isValid() || index.row() < 0 || index.row() >= d->mInstances.count() ) {
221 return QAbstractItemModel::flags( index );
224 return QAbstractItemModel::flags( index ) | Qt::ItemIsEditable;
227 bool AgentInstanceModel::setData(
const QModelIndex & index,
const QVariant & value,
int role )
229 if ( !index.isValid() ) {
233 if ( index.row() < 0 || index.row() >= d->mInstances.count() ) {
242 emit dataChanged( index, index );
251 #include "moc_agentinstancemodel.cpp"