KTp/Tasks/ModelRoles: Difference between revisions
Appearance
No edit summary |
|||
(21 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{| | ===Old Roles=== | ||
{| class="wikitable" border="1" | |||
|- | |- | ||
! Original Role !! Type !! Comment | |||
|- | |- | ||
| Qt::DisplayRole || Contact's alias OR account name OR readable group name || | |||
|- | |- | ||
| AliasRole || Contact's alias | | AccountRole||Tp::AccountPtr || | ||
|- | |||
| AliasRole || Contact's alias || | |||
|- | |- | ||
| AudioCallCapabilityRole || bool || both you can remote can audio call | | AudioCallCapabilityRole || bool || both you can remote can audio call | ||
Line 18: | Line 21: | ||
| ContactRole || Tp::ContactPtr || | | ContactRole || Tp::ContactPtr || | ||
|- | |- | ||
| DesktopSharingCapabilityRole || bool || both you and remote can desktop share | | 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 | | FileTransferCapabilityRole || bool || both you and remote can file transfer | ||
|- | |- | ||
| GroupsRole ||no idea, probably deprecated || | | GroupsRole ||no idea, probably deprecated || KILL IT! (EDIT: Don't dave is an idiot, we need this) | ||
|- | |- | ||
| IconRole || ?? || | | IconRole || ?? || KILL IT! | ||
|- | |- | ||
| IdRole || string || contact ID or account ID or group ID as appropriate | | IdRole || string || contact ID or account ID or group ID as appropriate | ||
|- | |- | ||
| index || ???? || | | index || ???? || KILL IT! | ||
|- | |- | ||
| ItemRole || deprecated | | ItemRole || deprecated || KILL IT! | ||
|- | |- | ||
| MediaCallCapabilityRole || bool || ??? | | MediaCallCapabilityRole || bool || ??? | ||
|- | |- | ||
| NicknameRole || || | | NicknameRole || || KILL IT! | ||
|- | |- | ||
| OnlineUsersCountRole || number of online contacts in this group | | OnlineUsersCountRole || number of online contacts in this group | ||
Line 46: | Line 49: | ||
| RowType ||enum || either AccountsRowType, ContactsRowType, GroupRowType | | RowType ||enum || either AccountsRowType, ContactsRowType, GroupRowType | ||
|- | |- | ||
| SSHContactCapabilityRole ||bool ||both you + remote can SSH contact | | 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 | | TextChatCapabilityRole ||bool ||both you + remote can text chat | ||
Line 52: | Line 55: | ||
| TotalUsersCountRole ||int ||total users in this group | | TotalUsersCountRole ||int ||total users in this group | ||
|- | |- | ||
| TypeRole || | | TypeRole || ??? || KILL IT! | ||
|- | |- | ||
| VideoCallCapabilityRole ||bool || both you + remote can video call | | 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=== | |||
<pre> | |||
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 | |||
- don't put Qt::DisplayRole in our enum! that's silly | |||
</pre> |
Latest revision as of 01:16, 25 January 2013
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 - don't put Qt::DisplayRole in our enum! that's silly