20 #include "agentinstancemodel.h"
22 #include "agentinstance.h"
23 #include "agentmanager.h"
25 #include <QtCore/QStringList>
26 #include <QtGui/QIcon>
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 );
64 mParent->beginRemoveRows( QModelIndex(), index, index );
65 mInstances.removeAll( instance );
66 mParent->endRemoveRows();
69 void AgentInstanceModel::Private::instanceChanged(
const AgentInstance &instance )
71 const int numberOfInstance( mInstances.count() );
72 for (
int i = 0; i < numberOfInstance; ++i ) {
73 if ( mInstances[ i ] == instance ) {
74 mInstances[ i ] = instance;
76 const QModelIndex idx = mParent->index( i, 0 );
77 emit mParent->dataChanged( idx, idx );
86 : QAbstractItemModel( parent ), d( new Private( this ) )
90 QHash<int, QByteArray> roles = roleNames();
95 setRoleNames( roles );
116 int AgentInstanceModel::columnCount(
const QModelIndex& )
const
121 int AgentInstanceModel::rowCount(
const QModelIndex& )
const
123 return d->mInstances.count();
126 QVariant AgentInstanceModel::data(
const QModelIndex &index,
int role )
const
128 if ( !index.isValid() )
131 if ( index.row() < 0 || index.row() >= d->mInstances.count() )
134 const AgentInstance &instance = d->mInstances[ index.row() ];
137 case Qt::DisplayRole:
138 return instance.
name();
139 case Qt::DecorationRole:
144 var.setValue( instance );
149 case Qt::ToolTipRole:
150 return QString::fromLatin1(
"<qt><h4>%1</h4>%2</qt>" ).arg( instance.
name(), instance.
type().
description() );
162 var.setValue( instance.
type() );
177 QVariant AgentInstanceModel::headerData(
int section, Qt::Orientation orientation,
int role )
const
179 if ( orientation == Qt::Vertical )
182 if ( role != Qt::DisplayRole )
187 return i18nc(
"@title:column, name of a thing",
"Name" );
195 QModelIndex AgentInstanceModel::index(
int row,
int column,
const QModelIndex& )
const
197 if ( row < 0 || row >= d->mInstances.count() )
198 return QModelIndex();
201 return QModelIndex();
203 return createIndex( row, column, 0 );
206 QModelIndex AgentInstanceModel::parent(
const QModelIndex& )
const
208 return QModelIndex();
211 Qt::ItemFlags AgentInstanceModel::flags(
const QModelIndex & index )
const
213 if ( !index.isValid() || index.row() < 0 || index.row() >= d->mInstances.count() )
214 return QAbstractItemModel::flags( index );
216 return QAbstractItemModel::flags( index ) | Qt::ItemIsEditable;
219 bool AgentInstanceModel::setData(
const QModelIndex & index,
const QVariant & value,
int role )
221 if ( !index.isValid() )
224 if ( index.row() < 0 || index.row() >= d->mInstances.count() )
232 emit dataChanged( index, index );
241 #include "agentinstancemodel.moc"