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()
47 ContactCompletionModel *model =
new ContactCompletionModel( monitor );
50 filter->setSourceModel( model );
60 ContactCompletionModel::ContactCompletionModel(
ChangeRecorder *monitor, QObject *parent )
63 setCollectionFetchStrategy( InvisibleCollectionFetch );
66 ContactCompletionModel::~ContactCompletionModel()
70 QVariant ContactCompletionModel::entityData(
const Item &item,
int column,
int role )
const
74 if ( role == Qt::DisplayRole ) {
81 if ( role == Qt::DisplayRole || role == Qt::EditRole ) {
82 const KABC::Addressee contact = item.
payload<KABC::Addressee>();
86 if ( !contact.formattedName().isEmpty() ) {
87 return contact.formattedName();
89 return contact.assembledName();
92 case NameAndEmailColumn:
94 QString name = QString::fromLatin1(
"%1 %2" ).arg( contact.givenName() )
95 .arg( contact.familyName() ).simplified();
96 if ( name.isEmpty() ) {
97 name = contact.organization().simplified();
99 if ( name.isEmpty() ) {
103 const QString email = contact.preferredEmail().simplified();
104 if ( email.isEmpty() ) {
108 return QString::fromLatin1(
"%1 <%2>" ).arg( name ).arg( email );
112 return contact.preferredEmail();
120 QVariant ContactCompletionModel::entityData(
const Collection &collection,
int column,
int role )
const
125 int ContactCompletionModel::columnCount(
const QModelIndex &parent )
const
127 if ( !parent.isValid() ) {
134 int ContactCompletionModel::entityColumnCount( HeaderGroup )
const
139 #include "moc_contactcompletionmodel_p.cpp"