diff options
author | Alvaro Soliverez <alvaro.soliverez@collabora.co.uk> | 2011-05-25 06:39:08 -0700 |
---|---|---|
committer | Alvaro Soliverez <alvaro.soliverez@collabora.co.uk> | 2011-05-25 06:39:08 -0700 |
commit | cb19530d8c1d7b17ca8104e7568d6867f0901888 (patch) | |
tree | dcc234bde4e096bb0cfa8bb3efa083e27139699b | |
parent | bb2c09fdc563f7ce3212d7c011a7a067467bb3ce (diff) |
Added ContactListStateRole to know when the contact list is loading or in usable state
-rw-r--r-- | TelepathyQt4Yell/Models/accounts-model-item.cpp | 17 | ||||
-rw-r--r-- | TelepathyQt4Yell/Models/accounts-model.cpp | 1 | ||||
-rw-r--r-- | TelepathyQt4Yell/Models/accounts-model.h | 1 |
3 files changed, 15 insertions, 4 deletions
diff --git a/TelepathyQt4Yell/Models/accounts-model-item.cpp b/TelepathyQt4Yell/Models/accounts-model-item.cpp index ce49f35..2c51764 100644 --- a/TelepathyQt4Yell/Models/accounts-model-item.cpp +++ b/TelepathyQt4Yell/Models/accounts-model-item.cpp @@ -43,6 +43,7 @@ struct TELEPATHY_QT4_YELL_MODELS_NO_EXPORT AccountsModelItem::Private void setStatusMessage(const QString &value); Tp::AccountPtr mAccount; + Tp::ContactManagerPtr mManager; }; void AccountsModelItem::Private::setStatus(const QString &value) @@ -186,6 +187,13 @@ QVariant AccountsModelItem::data(int role) const return mPriv->mAccount->connectionStatus(); case AccountsModel::ConnectionStatusReasonRole: return mPriv->mAccount->connectionStatusReason(); + case AccountsModel::ContactListStateRole: { + if (!mPriv->mManager.isNull()) { + return mPriv->mManager->state(); + } else { + return Tp::ContactListStateNone; + } + } default: return QVariant(); } @@ -306,22 +314,23 @@ void AccountsModelItem::onConnectionChanged(const Tp::ConnectionPtr &connection) return; } - Tp::ContactManagerPtr manager = connection->contactManager(); + mPriv->mManager = connection->contactManager(); - connect(manager.data(), + connect(mPriv->mManager.data(), SIGNAL(allKnownContactsChanged(Tp::Contacts,Tp::Contacts, Tp::Channel::GroupMemberChangeDetails)), SLOT(onContactsChanged(Tp::Contacts,Tp::Contacts))); - connect(manager.data(), + connect(mPriv->mManager.data(), SIGNAL(stateChanged(Tp::ContactListState)), SLOT(onContactManagerStateChanged(Tp::ContactListState))); - onContactManagerStateChanged(manager->state()); + onContactManagerStateChanged(mPriv->mManager->state()); } void AccountsModelItem::onContactManagerStateChanged(Tp::ContactListState state) { + onChanged(); if (state == Tp::ContactListStateSuccess) { clearContacts(); addKnownContacts(); diff --git a/TelepathyQt4Yell/Models/accounts-model.cpp b/TelepathyQt4Yell/Models/accounts-model.cpp index a855bf2..45c897a 100644 --- a/TelepathyQt4Yell/Models/accounts-model.cpp +++ b/TelepathyQt4Yell/Models/accounts-model.cpp @@ -99,6 +99,7 @@ AccountsModel::AccountsModel(const Tp::AccountManagerPtr &am, QObject *parent) roles[RequestedPresenceStatusMessageRole] = "requestedStatusMessage"; roles[ConnectionStatusRole] = "connectionStatus"; roles[ConnectionStatusReasonRole] = "connectionStatusReason"; + roles[ContactListStateRole] = "contactListState"; roles[AliasRole] = "aliasName"; roles[AvatarRole] = "avatar"; roles[PresenceStatusRole] = "presenceStatus"; diff --git a/TelepathyQt4Yell/Models/accounts-model.h b/TelepathyQt4Yell/Models/accounts-model.h index 39421c4..1020ee5 100644 --- a/TelepathyQt4Yell/Models/accounts-model.h +++ b/TelepathyQt4Yell/Models/accounts-model.h @@ -72,6 +72,7 @@ public: RequestedPresenceStatusMessageRole, ConnectionStatusRole, ConnectionStatusReasonRole, + ContactListStateRole, // contact roles AliasRole, |