22 #include "contactcompletionmodel_p.h"
24 #include <akonadi/changerecorder.h>
25 #include <akonadi/entitymimetypefiltermodel.h>
26 #include <akonadi/itemfetchscope.h>
27 #include <akonadi/session.h>
29 #include <kabc/addressee.h>
31 using namespace Akonadi;
33 QAbstractItemModel* ContactCompletionModel::mSelf = 0;
35 QAbstractItemModel* ContactCompletionModel::self()
40 ChangeRecorder *monitor =
new ChangeRecorder;
41 monitor->fetchCollection(
true );
42 monitor->itemFetchScope().fetchFullPayload();
43 monitor->setCollectionMonitored( Akonadi::Collection::root() );
44 monitor->setMimeTypeMonitored( KABC::Addressee::mimeType() );
46 ContactCompletionModel *model =
new ContactCompletionModel( monitor );
48 EntityMimeTypeFilterModel *filter =
new Akonadi::EntityMimeTypeFilterModel( model );
49 filter->setSourceModel( model );
50 filter->addMimeTypeExclusionFilter( Akonadi::Collection::mimeType() );
51 filter->setHeaderGroup( Akonadi::EntityTreeModel::ItemListHeaders );
58 ContactCompletionModel::ContactCompletionModel( ChangeRecorder *monitor, QObject *parent )
59 : EntityTreeModel( monitor, parent )
61 setCollectionFetchStrategy( InvisibleCollectionFetch );
64 ContactCompletionModel::~ContactCompletionModel()
68 QVariant ContactCompletionModel::entityData(
const Item &item,
int column,
int role )
const
70 if ( !item.hasPayload<KABC::Addressee>() ) {
72 if ( role == Qt::DisplayRole )
73 return item.remoteId();
78 if ( role == Qt::DisplayRole || role == Qt::EditRole ) {
79 const KABC::Addressee contact = item.payload<KABC::Addressee>();
83 if ( !contact.formattedName().isEmpty() )
84 return contact.formattedName();
86 return contact.assembledName();
88 case NameAndEmailColumn:
90 QString name = QString::fromLatin1(
"%1 %2" ).arg( contact.givenName() )
91 .arg( contact.familyName() ).simplified();
93 name = contact.organization().simplified();
97 const QString email = contact.preferredEmail().simplified();
98 if ( email.isEmpty() )
101 return QString::fromLatin1(
"%1 <%2>" ).arg( name ).arg( email );
105 return contact.preferredEmail();
110 return EntityTreeModel::entityData( item, column, role );
113 QVariant ContactCompletionModel::entityData(
const Collection &collection,
int column,
int role )
const
115 return EntityTreeModel::entityData( collection, column, role );
118 int ContactCompletionModel::columnCount(
const QModelIndex &parent )
const
120 if ( !parent.isValid() )
126 int ContactCompletionModel::entityColumnCount( HeaderGroup )
const
131 #include "contactcompletionmodel_p.moc"