KTp/Tasks/ModelRoles

From KDE Community Wiki
< KTp‎ | Tasks

Old Roles

Original Role Type Comment
Qt::DisplayRole Contact's alias OR account name OR readable group name
AccountRole Tp::AccountPtr
AliasRole Contact's alias
AudioCallCapabilityRole bool both you can remote can audio call
AvatarRole TODO contact's avatar
BlockedRole bool isBlocked
ClientTypesRole QStringList client types from Tp::Contact
ContactRole Tp::ContactPtr
DesktopSharingCapabilityRole bool both you and remote can desktop share.. I Want to kill this, and expose QStringList streamTubeRoles
FileTransferCapabilityRole bool both you and remote can file transfer
GroupsRole no idea, probably deprecated KILL IT! (EDIT: Don't dave is an idiot, we need this)
IconRole ?? KILL IT!
IdRole string contact ID or account ID or group ID as appropriate
index ???? KILL IT!
ItemRole deprecated KILL IT!
MediaCallCapabilityRole bool ???
NicknameRole KILL IT!
OnlineUsersCountRole number of online contacts in this group
PresenceMessageRole string - status message
PresenceRole Tp::Presence Should use KTp::Presence
PresenceTypeRole enum
RowType enum either AccountsRowType, ContactsRowType, GroupRowType
SSHContactCapabilityRole bool both you + remote can SSH contact. I Want to kill this, and expose QStringList streamTubeRoles
TextChatCapabilityRole bool both you + remote can text chat
TotalUsersCountRole int total users in this group
TypeRole ??? KILL IT!
VideoCallCapabilityRole bool both you + remote can video call

NEW Role Requests

Roles for:

- unread message count
- hasTextChannel
- tubesRoles (QVariantMap of stream + dbus tubes) Rationale - hardcoding types into the model is bad

Proposed Enum


namespace MainModel {

enum Roles {

//core
Qt::DisplayRole // returns Contact Alias, Account displayName or Group Name
RowTypeRole,= Qt::UserRole //returns one of KTp::ContactRowType, KTp::PersonRowType, KTp::GroupRowType, KTp::AccountRowType
IdRole, //returns Contact ID, Account UID, or group ID (group name or "_ungrouped")

//telepathy roles
ContactRole = Qt::UserRole + 1000,  //returns Tp::ContactPtr
AccountRole, // Tp::AccountPtr
CustomTelepathyRole, //future extensibility without breaking ABI

//contact/person roles
ContactClientTypesRole = Qt::UserRole + 2000, //
ContactAvatarRole,
ContactGroupsRole,
ContactPresenceRole,
ContactPresenceMessageRole,
ContactPresenceTypeRole,
ContactPresenceIconRole,
ContactHasTextChannelRole,
ContactUnreadMessageCountRole,
//FIXME caps
CustomContactRole

//heading roles
HeaderTotalUsersRole = Qt::UserRole  + 3000,
HeaderOnlineUsersRole,
CustomHeaderRole

};

}

TODO list:
 - contact caps:
 - account icon in account group header... DecorationRole or HeaderIconRole?
 - docs on contact roles
 - learn how to document an enum in Doxygen :)
 - poke mck182 to see if metacontacts need any more roles