summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Pichorim Boiko <gustavo.boiko@collabora.co.uk>2011-05-26 13:54:41 -0700
committerGustavo Pichorim Boiko <gustavo.boiko@collabora.co.uk>2011-05-26 13:54:49 -0700
commit6e1dbaf036f96b55fe6041e074372005a1cfe185 (patch)
tree6303b661f3ccbdb708b623fd851b1c4cf6b08e4f
parentbb2c09fdc563f7ce3212d7c011a7a067467bb3ce (diff)
parent49f3d059f8bbf3f196526545b05b4eb47afda6ec (diff)
Merge remote branch 'asoliver/contactlist'
Reviewed by: Gustavo Pichorim Boiko <gustavo.boiko@collabora.co.uk>
-rw-r--r--NEWS2
-rw-r--r--TelepathyQt4Yell/Models/accounts-model-item.cpp17
-rw-r--r--TelepathyQt4Yell/Models/accounts-model.cpp1
-rw-r--r--TelepathyQt4Yell/Models/accounts-model.h1
4 files changed, 16 insertions, 5 deletions
diff --git a/NEWS b/NEWS
index 70627fa..0ac56a8 100644
--- a/NEWS
+++ b/NEWS
@@ -4,7 +4,7 @@ telepathy-qt4-yell 0.1.5 (UNRELEASED)
The "..." release.
Enhancements:
- * ...
+ * Added role to AccountsModel to get the state of the contact list
Fixes:
* Fix crash when g_async_initable_new_finish returned error
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,