summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2009-03-23 18:27:35 (GMT)
committerSimon McVittie <smcv@debian.org>2009-03-23 18:27:35 (GMT)
commita69f8c4c562735409334c3ebb0fd5b9d44bb0707 (patch)
tree295b82056819c20cf3e0deaeedc79304cff127a3
parent9177701ae95b45a4db062f03822e0c47207138ef (diff)
parent0f3c3b5214e6174d9752218f1ea88e89d2be359f (diff)
downloadpackage-telepathy-qt4-a69f8c4c562735409334c3ebb0fd5b9d44bb0707.tar.gz
package-telepathy-qt4-a69f8c4c562735409334c3ebb0fd5b9d44bb0707.tar.xz
Merge commit 'upstream/0.1.2' into debian
-rw-r--r--ChangeLog1530
-rw-r--r--Makefile.in4
-rw-r--r--NEWS51
-rw-r--r--README5
-rw-r--r--TelepathyQt4/Client/Feature13
-rw-r--r--TelepathyQt4/Client/PendingReadyChannel13
-rw-r--r--TelepathyQt4/Client/ReadyObject13
-rw-r--r--TelepathyQt4/Client/account-manager.cpp84
-rw-r--r--TelepathyQt4/Client/account-manager.h37
-rw-r--r--TelepathyQt4/Client/account.cpp93
-rw-r--r--TelepathyQt4/Client/account.h33
-rw-r--r--TelepathyQt4/Client/channel.cpp239
-rw-r--r--TelepathyQt4/Client/channel.h45
-rw-r--r--TelepathyQt4/Client/connection-internal.h9
-rw-r--r--TelepathyQt4/Client/connection-manager.cpp68
-rw-r--r--TelepathyQt4/Client/connection-manager.h24
-rw-r--r--TelepathyQt4/Client/connection.cpp144
-rw-r--r--TelepathyQt4/Client/connection.h40
-rw-r--r--TelepathyQt4/Client/contact-manager.cpp65
-rw-r--r--TelepathyQt4/Client/contact-manager.h22
-rw-r--r--TelepathyQt4/Client/contact.cpp20
-rw-r--r--TelepathyQt4/Client/contact.h7
-rw-r--r--TelepathyQt4/Client/feature.cpp65
-rw-r--r--TelepathyQt4/Client/feature.h72
-rw-r--r--TelepathyQt4/Client/file-transfer.h2
-rw-r--r--TelepathyQt4/Client/message.cpp10
-rw-r--r--TelepathyQt4/Client/message.h6
-rw-r--r--TelepathyQt4/Client/pending-account.cpp46
-rw-r--r--TelepathyQt4/Client/pending-account.h6
-rw-r--r--TelepathyQt4/Client/pending-channel.cpp46
-rw-r--r--TelepathyQt4/Client/pending-channel.h9
-rw-r--r--TelepathyQt4/Client/pending-connection.cpp73
-rw-r--r--TelepathyQt4/Client/pending-connection.h8
-rw-r--r--TelepathyQt4/Client/pending-contacts.cpp20
-rw-r--r--TelepathyQt4/Client/pending-contacts.h9
-rw-r--r--TelepathyQt4/Client/pending-ready-channel.cpp110
-rw-r--r--TelepathyQt4/Client/pending-ready.cpp9
-rw-r--r--TelepathyQt4/Client/pending-ready.h5
-rw-r--r--TelepathyQt4/Client/readiness-helper.cpp275
-rw-r--r--TelepathyQt4/Client/readiness-helper.h48
-rw-r--r--TelepathyQt4/Client/ready-object.cpp145
-rw-r--r--TelepathyQt4/Client/ready-object.h (renamed from TelepathyQt4/Client/pending-ready-channel.h)36
-rw-r--r--TelepathyQt4/Client/room-list.h2
-rw-r--r--TelepathyQt4/Client/streamed-media-channel.cpp778
-rw-r--r--TelepathyQt4/Client/streamed-media-channel.h141
-rw-r--r--TelepathyQt4/Client/text-channel.cpp530
-rw-r--r--TelepathyQt4/Client/text-channel.h33
-rw-r--r--TelepathyQt4/Makefile.am29
-rw-r--r--TelepathyQt4/Makefile.in66
-rw-r--r--TelepathyQt4/Prototype/Makefile.am16
-rw-r--r--TelepathyQt4/Prototype/Makefile.in23
-rwxr-xr-xconfigure194
-rw-r--r--configure.ac22
-rw-r--r--doc/html/__gen_2cli-channel-handler_8h-source.html18
-rw-r--r--doc/html/__gen_2cli-stream-engine_8h-source.html18
-rw-r--r--doc/html/__gen_2constants_8h-source.html4
-rw-r--r--doc/html/__gen_2types_8h-source.html4
-rw-r--r--doc/html/_account_8h-source.html4
-rw-r--r--doc/html/_account_manager_8h-source.html4
-rw-r--r--doc/html/_avatar_manager_8h-source.html4
-rw-r--r--doc/html/_capabilities_manager_8h-source.html4
-rw-r--r--doc/html/_chat_channel_8h-source.html4
-rw-r--r--doc/html/_connection_8h-source.html4
-rw-r--r--doc/html/_connection_facade_8h-source.html4
-rw-r--r--doc/html/_contact_8h-source.html4
-rw-r--r--doc/html/_contact_manager_8h-source.html4
-rw-r--r--doc/html/_d_bus_interface_8h-source.html4
-rw-r--r--doc/html/_presence_manager_8h-source.html4
-rw-r--r--doc/html/_prototype_2__gen_2constants_8h-source.html4
-rw-r--r--doc/html/_prototype_2__gen_2types_8h-source.html4
-rw-r--r--doc/html/_prototype_2constants_8h-source.html4
-rw-r--r--doc/html/_prototype_2types_8h-source.html4
-rw-r--r--doc/html/_streamed_media_channel_8h-source.html4
-rw-r--r--doc/html/abstract-interface_8h-source.html4
-rw-r--r--doc/html/account-manager_8h-source.html187
-rw-r--r--doc/html/account_8h-source.html331
-rw-r--r--doc/html/annotated.html12
-rw-r--r--doc/html/channel_8h-source.html517
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_abstract_interface-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_abstract_interface.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account-members.html27
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account.html273
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account__coll__graph.map37
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account__coll__graph.pngbin34158 -> 51619 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account__inherit__graph.map1
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account__inherit__graph.pngbin3490 -> 4429 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_interface_avatar_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_interface_avatar_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager-members.html31
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager.html253
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager__coll__graph.map17
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager__coll__graph.pngbin13801 -> 24591 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager__inherit__graph.map1
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager__inherit__graph.pngbin3852 -> 4801 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_account_manager_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel-members.html29
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel.html310
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_1_1_group_member_change_details-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_1_1_group_member_change_details.html6
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel__coll__graph.map41
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel__coll__graph.pngbin58743 -> 65457 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel__inherit__graph.map9
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel__inherit__graph.pngbin6452 -> 6936 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_call_state_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_call_state_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_chat_state_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_chat_state_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_d_t_m_f_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_d_t_m_f_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_group_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_group_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_hold_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_hold_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_media_signalling_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_media_signalling_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_messages_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_messages_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_password_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_interface_password_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_contact_list_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_contact_list_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_file_transfer_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_file_transfer_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_room_list_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_room_list_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_streamed_media_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_streamed_media_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_text_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_text_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_tubes_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_channel_type_tubes_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection-members.html37
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection.html324
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_1_1_pending_connect-members.html10
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_1_1_pending_connect.html18
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_1_1_pending_connect__coll__graph.map4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_1_1_pending_connect__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_1_1_pending_connect__coll__graph.pngbin3260 -> 5546 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_1_1_pending_connect__inherit__graph.map1
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_1_1_pending_connect__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_1_1_pending_connect__inherit__graph.pngbin2009 -> 2486 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection__coll__graph.map25
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection__coll__graph.pngbin23763 -> 36174 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection__inherit__graph.map1
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection__inherit__graph.pngbin3597 -> 4507 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface.html22
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_aliasing_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_aliasing_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_avatars_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_avatars_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_capabilities_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_capabilities_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_contacts_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_contacts_interface.html22
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_presence_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_presence_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_requests_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_requests_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_simple_presence_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_interface_simple_presence_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager-members.html21
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager.html197
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager_1_1_private_1_1_pending_names-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager_1_1_private_1_1_pending_names.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager__coll__graph.map19
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager__coll__graph.pngbin13295 -> 24739 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager__inherit__graph.map1
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager__inherit__graph.pngbin3882 -> 4826 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_connection_manager_interface.html24
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact.html6
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact__coll__graph.map31
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact__coll__graph.pngbin30168 -> 40702 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact_manager-members.html18
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact_manager.html99
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact_manager__coll__graph.map25
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact_manager__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_contact_manager__coll__graph.pngbin25895 -> 36579 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_1_1_d_bus_daemon_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_1_1_d_bus_daemon_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_1_1_introspectable_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_1_1_introspectable_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_1_1_peer_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_1_1_peer_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_1_1_properties_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_1_1_properties_interface.html22
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_proxy-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_d_bus_proxy.html16
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_feature-members.html40
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_feature.html191
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_features-members.html37
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_features.html109
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_file_transfer-members.html29
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_file_transfer.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_file_transfer__coll__graph.map43
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_file_transfer__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_file_transfer__coll__graph.pngbin59640 -> 70306 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_file_transfer__inherit__graph.map3
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_file_transfer__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_file_transfer__inherit__graph.pngbin3675 -> 4926 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_session_handler_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_session_handler_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream-members.html59
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream.html456
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream__coll__graph.map23
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream__coll__graph.md51
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream__coll__graph.pngbin0 -> 93705 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream__inherit__graph.map1
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream__inherit__graph.md51
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream__inherit__graph.pngbin0 -> 1569 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream_handler_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_media_stream_handler_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_message-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_message.html10
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_optional_interface_cache-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_optional_interface_cache.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_optional_interface_factory-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_optional_interface_factory.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_account-members.html7
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_account.html38
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_account__coll__graph.map21
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_account__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_account__coll__graph.pngbin18236 -> 30292 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_channel-members.html11
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_channel.html72
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_connection-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_connection.html66
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_connection__coll__graph.map23
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_connection__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_connection__coll__graph.pngbin18401 -> 30388 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contact_attributes-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contact_attributes.html6
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contact_attributes__coll__graph.map35
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contact_attributes__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contact_attributes__coll__graph.pngbin33537 -> 45910 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contacts-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contacts.html18
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contacts__coll__graph.map31
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contacts__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_contacts__coll__graph.pngbin31535 -> 43796 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_failure-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_failure.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_handles-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_handles.html6
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_handles__coll__graph.map33
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_handles__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_handles__coll__graph.pngbin31382 -> 44173 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_media_streams-members.html (renamed from doc/html/class_telepathy_1_1_client_1_1_pending_ready_channel-members.html)16
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_media_streams.html139
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_media_streams__coll__graph.map (renamed from doc/html/class_telepathy_1_1_client_1_1_pending_ready_channel__coll__graph.map)44
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_media_streams__coll__graph.md51
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_media_streams__coll__graph.pngbin0 -> 76903 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_media_streams__inherit__graph.map (renamed from doc/html/class_telepathy_1_1_client_1_1_pending_ready_channel__inherit__graph.map)0
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_media_streams__inherit__graph.md51
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_media_streams__inherit__graph.pngbin0 -> 1861 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_operation-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_operation.html16
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_operation__inherit__graph.map30
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_operation__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_operation__inherit__graph.pngbin20666 -> 19383 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready-members.html7
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready.html57
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready__coll__graph.map3
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready__coll__graph.pngbin3781 -> 4462 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready__inherit__graph.map3
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready__inherit__graph.pngbin1644 -> 2875 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready_channel.html183
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready_channel__coll__graph.md51
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready_channel__coll__graph.pngbin56996 -> 0 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready_channel__inherit__graph.md51
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_ready_channel__inherit__graph.pngbin1817 -> 0 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_send_message-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_send_message.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_string_list-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_string_list.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_success-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_success.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_void_method_call-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_pending_void_method_call.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_properties_interface_interface-members.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_properties_interface_interface.html20
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_protocol_info-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_protocol_info.html16
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_protocol_parameter-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_protocol_parameter.html14
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_readiness_helper-members.html22
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_readiness_helper.html227
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_readiness_helper__coll__graph.map3
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_readiness_helper__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_readiness_helper__coll__graph.pngbin4750 -> 7386 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_ready_object-members.html43
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_ready_object.html286
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_ready_object__coll__graph.map4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_ready_object__coll__graph.md51
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_ready_object__coll__graph.pngbin0 -> 10382 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_ready_object__inherit__graph.map10
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_ready_object__inherit__graph.md51
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_ready_object__inherit__graph.pngbin0 -> 7429 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_received_message-members.html6
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_received_message.html16
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_referenced_handles-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_referenced_handles.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_room_list-members.html29
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_room_list.html8
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_room_list__coll__graph.map43
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_room_list__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_room_list__coll__graph.pngbin59613 -> 70295 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_room_list__inherit__graph.map3
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_room_list__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_room_list__inherit__graph.pngbin3665 -> 4916 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_stateful_d_bus_proxy-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_stateful_d_bus_proxy.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_stateless_d_bus_proxy-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_stateless_d_bus_proxy.html4
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_streamed_media_channel-members.html45
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_streamed_media_channel.html448
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_streamed_media_channel__coll__graph.map43
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_streamed_media_channel__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_streamed_media_channel__coll__graph.pngbin60219 -> 73194 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_streamed_media_channel__inherit__graph.map3
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_streamed_media_channel__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_streamed_media_channel__inherit__graph.pngbin3935 -> 5138 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_text_channel-members.html40
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_text_channel.html222
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_text_channel__coll__graph.map43
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_text_channel__coll__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_text_channel__coll__graph.pngbin59571 -> 74362 bytes
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_text_channel__inherit__graph.map3
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_text_channel__inherit__graph.md52
-rw-r--r--doc/html/class_telepathy_1_1_client_1_1_text_channel__inherit__graph.pngbin3644 -> 4897 bytes
-rw-r--r--doc/html/class_telepathy_1_1_key_file-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_key_file.html4
-rw-r--r--doc/html/class_telepathy_1_1_manager_file-members.html4
-rw-r--r--doc/html/class_telepathy_1_1_manager_file.html10
-rw-r--r--doc/html/class_tp_prototype_1_1_account-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_account.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_account_manager-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_account_manager.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_avatar_manager-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_avatar_manager.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_capabilities_manager-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_capabilities_manager.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_chat_channel-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_chat_channel.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_client_1_1_channel_handler_interface-members.html8
-rw-r--r--doc/html/class_tp_prototype_1_1_client_1_1_channel_handler_interface.html20
-rw-r--r--doc/html/class_tp_prototype_1_1_client_1_1_stream_engine_interface-members.html8
-rw-r--r--doc/html/class_tp_prototype_1_1_client_1_1_stream_engine_interface.html20
-rw-r--r--doc/html/class_tp_prototype_1_1_connection-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_connection.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_connection_facade-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_connection_facade.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_contact-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_contact.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_contact_manager-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_contact_manager.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_d_bus_interface-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_d_bus_interface.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_presence_manager-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_presence_manager.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_streamed_media_channel-members.html4
-rw-r--r--doc/html/class_tp_prototype_1_1_streamed_media_channel.html4
-rw-r--r--doc/html/classes.html32
-rw-r--r--doc/html/cli-account-manager_8h-source.html14
-rw-r--r--doc/html/cli-account_8h-source.html28
-rw-r--r--doc/html/cli-channel-handler_8h-source.html4
-rw-r--r--doc/html/cli-channel_8h-source.html210
-rw-r--r--doc/html/cli-connection-manager_8h-source.html14
-rw-r--r--doc/html/cli-connection_8h-source.html112
-rw-r--r--doc/html/cli-dbus_8h-source.html60
-rw-r--r--doc/html/cli-media-session-handler_8h-source.html14
-rw-r--r--doc/html/cli-media-stream-handler_8h-source.html14
-rw-r--r--doc/html/cli-properties_8h-source.html18
-rw-r--r--doc/html/cli-stream-engine_8h-source.html4
-rw-r--r--doc/html/connection-internal_8h-source.html23
-rw-r--r--doc/html/connection-manager-internal_8h-source.html4
-rw-r--r--doc/html/connection-manager_8h-source.html274
-rw-r--r--doc/html/connection_8h-source.html374
-rw-r--r--doc/html/constants_8h-source.html4
-rw-r--r--doc/html/contact-manager_8h-source.html294
-rw-r--r--doc/html/contact_8h-source.html29
-rw-r--r--doc/html/dbus-proxy_8h-source.html4
-rw-r--r--doc/html/dbus_8h-source.html4
-rw-r--r--doc/html/debug-internal_8h-source.html4
-rw-r--r--doc/html/debug_8h-source.html4
-rw-r--r--doc/html/deprecated.html4
-rw-r--r--doc/html/feature_8h-source.html101
-rw-r--r--doc/html/file-transfer_8h-source.html14
-rw-r--r--doc/html/files.html7
-rw-r--r--doc/html/functions.html13
-rw-r--r--doc/html/functions_0x61.html79
-rw-r--r--doc/html/functions_0x62.html16
-rw-r--r--doc/html/functions_0x63.html168
-rw-r--r--doc/html/functions_0x64.html15
-rw-r--r--doc/html/functions_0x65.html4
-rw-r--r--doc/html/functions_0x66.html42
-rw-r--r--doc/html/functions_0x67.html22
-rw-r--r--doc/html/functions_0x68.html14
-rw-r--r--doc/html/functions_0x69.html97
-rw-r--r--doc/html/functions_0x6b.html4
-rw-r--r--doc/html/functions_0x6c.html8
-rw-r--r--doc/html/functions_0x6d.html27
-rw-r--r--doc/html/functions_0x6e.html4
-rw-r--r--doc/html/functions_0x6f.html61
-rw-r--r--doc/html/functions_0x70.html85
-rw-r--r--doc/html/functions_0x71.html4
-rw-r--r--doc/html/functions_0x72.html86
-rw-r--r--doc/html/functions_0x73.html147
-rw-r--r--doc/html/functions_0x74.html28
-rw-r--r--doc/html/functions_0x75.html10
-rw-r--r--doc/html/functions_0x76.html6
-rw-r--r--doc/html/functions_0x79.html4
-rw-r--r--doc/html/functions_0x7e.html18
-rw-r--r--doc/html/functions_enum.html12
-rw-r--r--doc/html/functions_eval.html63
-rw-r--r--doc/html/functions_func.html56
-rw-r--r--doc/html/functions_func_0x62.html16
-rw-r--r--doc/html/functions_func_0x63.html99
-rw-r--r--doc/html/functions_func_0x64.html8
-rw-r--r--doc/html/functions_func_0x65.html4
-rw-r--r--doc/html/functions_func_0x66.html14
-rw-r--r--doc/html/functions_func_0x67.html20
-rw-r--r--doc/html/functions_func_0x68.html10
-rw-r--r--doc/html/functions_func_0x69.html69
-rw-r--r--doc/html/functions_func_0x6b.html4
-rw-r--r--doc/html/functions_func_0x6c.html12
-rw-r--r--doc/html/functions_func_0x6d.html17
-rw-r--r--doc/html/functions_func_0x6e.html4
-rw-r--r--doc/html/functions_func_0x6f.html50
-rw-r--r--doc/html/functions_func_0x70.html34
-rw-r--r--doc/html/functions_func_0x71.html4
-rw-r--r--doc/html/functions_func_0x72.html72
-rw-r--r--doc/html/functions_func_0x73.html127
-rw-r--r--doc/html/functions_func_0x74.html7
-rw-r--r--doc/html/functions_func_0x75.html10
-rw-r--r--doc/html/functions_func_0x76.html6
-rw-r--r--doc/html/functions_func_0x79.html4
-rw-r--r--doc/html/functions_func_0x7e.html18
-rw-r--r--doc/html/functions_prop.html4
-rw-r--r--doc/html/functions_rela.html41
-rw-r--r--doc/html/functions_type.html6
-rw-r--r--doc/html/functions_vars.html32
-rw-r--r--doc/html/graph_legend.html4
-rw-r--r--doc/html/group__clientaccount.html4
-rw-r--r--doc/html/group__clientchannel.html6
-rw-r--r--doc/html/group__clientcm.html4
-rw-r--r--doc/html/group__clientconn.html4
-rw-r--r--doc/html/group__clientdbus.html4
-rw-r--r--doc/html/group__clientmsesh.html4
-rw-r--r--doc/html/group__clientmstrh.html4
-rw-r--r--doc/html/group__clientprops.html4
-rw-r--r--doc/html/group__clientsideproxies.html4
-rw-r--r--doc/html/group__debug.html4
-rw-r--r--doc/html/group__enumtypeconsts.html4
-rw-r--r--doc/html/group__errorstrconsts.html10
-rw-r--r--doc/html/group__flagtypeconsts.html4
-rw-r--r--doc/html/group__ifacestrconsts.html22
-rw-r--r--doc/html/group__list.html4
-rw-r--r--doc/html/group__mapping.html4
-rw-r--r--doc/html/group__qt__accountmgm.html4
-rw-r--r--doc/html/group__qt__connection.html4
-rw-r--r--doc/html/group__qt__contact.html4
-rw-r--r--doc/html/group__qt__convenience.html4
-rw-r--r--doc/html/group__qt__style__api.html4
-rw-r--r--doc/html/group__struct.html4
-rw-r--r--doc/html/group__typesconstants.html4
-rw-r--r--doc/html/group__utilityconsts.html4
-rw-r--r--doc/html/hierarchy.html21
-rw-r--r--doc/html/index.html2
-rw-r--r--doc/html/inherit__graph__15.map3
-rw-r--r--doc/html/inherit__graph__15.md52
-rw-r--r--doc/html/inherit__graph__15.pngbin1377 -> 623 bytes
-rw-r--r--doc/html/inherit__graph__16.map20
-rw-r--r--doc/html/inherit__graph__16.md52
-rw-r--r--doc/html/inherit__graph__16.pngbin16499 -> 638 bytes
-rw-r--r--doc/html/inherit__graph__17.map18
-rw-r--r--doc/html/inherit__graph__17.md52
-rw-r--r--doc/html/inherit__graph__17.pngbin18610 -> 1377 bytes
-rw-r--r--doc/html/inherit__graph__18.map17
-rw-r--r--doc/html/inherit__graph__18.md52
-rw-r--r--doc/html/inherit__graph__18.pngbin686 -> 18108 bytes
-rw-r--r--doc/html/inherit__graph__19.map2
-rw-r--r--doc/html/inherit__graph__19.md52
-rw-r--r--doc/html/inherit__graph__19.pngbin787 -> 686 bytes
-rw-r--r--doc/html/inherit__graph__20.map2
-rw-r--r--doc/html/inherit__graph__20.md52
-rw-r--r--doc/html/inherit__graph__20.pngbin796 -> 787 bytes
-rw-r--r--doc/html/inherit__graph__21.map2
-rw-r--r--doc/html/inherit__graph__21.md52
-rw-r--r--doc/html/inherit__graph__21.pngbin1258 -> 796 bytes
-rw-r--r--doc/html/inherit__graph__22.map2
-rw-r--r--doc/html/inherit__graph__22.md52
-rw-r--r--doc/html/inherit__graph__22.pngbin827 -> 1258 bytes
-rw-r--r--doc/html/inherit__graph__23.map22
-rw-r--r--doc/html/inherit__graph__23.md52
-rw-r--r--doc/html/inherit__graph__23.pngbin809 -> 19360 bytes
-rw-r--r--doc/html/inherit__graph__24.map2
-rw-r--r--doc/html/inherit__graph__24.md52
-rw-r--r--doc/html/inherit__graph__24.pngbin699 -> 827 bytes
-rw-r--r--doc/html/inherit__graph__25.map2
-rw-r--r--doc/html/inherit__graph__25.md52
-rw-r--r--doc/html/inherit__graph__25.pngbin707 -> 809 bytes
-rw-r--r--doc/html/inherit__graph__26.map2
-rw-r--r--doc/html/inherit__graph__26.md52
-rw-r--r--doc/html/inherit__graph__26.pngbin726 -> 699 bytes
-rw-r--r--doc/html/inherit__graph__27.map2
-rw-r--r--doc/html/inherit__graph__27.md52
-rw-r--r--doc/html/inherit__graph__27.pngbin740 -> 707 bytes
-rw-r--r--doc/html/inherit__graph__28.map2
-rw-r--r--doc/html/inherit__graph__28.md52
-rw-r--r--doc/html/inherit__graph__28.pngbin734 -> 726 bytes
-rw-r--r--doc/html/inherit__graph__29.map2
-rw-r--r--doc/html/inherit__graph__29.md52
-rw-r--r--doc/html/inherit__graph__29.pngbin543 -> 740 bytes
-rw-r--r--doc/html/inherit__graph__30.map2
-rw-r--r--doc/html/inherit__graph__30.md52
-rw-r--r--doc/html/inherit__graph__30.pngbin851 -> 734 bytes
-rw-r--r--doc/html/inherit__graph__31.map2
-rw-r--r--doc/html/inherit__graph__31.md52
-rw-r--r--doc/html/inherit__graph__31.pngbin696 -> 543 bytes
-rw-r--r--doc/html/inherit__graph__32.map2
-rw-r--r--doc/html/inherit__graph__32.md52
-rw-r--r--doc/html/inherit__graph__32.pngbin613 -> 851 bytes
-rw-r--r--doc/html/inherit__graph__33.map2
-rw-r--r--doc/html/inherit__graph__33.md52
-rw-r--r--doc/html/inherit__graph__33.pngbin818 -> 696 bytes
-rw-r--r--doc/html/inherit__graph__34.map2
-rw-r--r--doc/html/inherit__graph__34.md52
-rw-r--r--doc/html/inherit__graph__34.pngbin918 -> 613 bytes
-rw-r--r--doc/html/inherit__graph__35.map2
-rw-r--r--doc/html/inherit__graph__35.md52
-rw-r--r--doc/html/inherit__graph__35.pngbin852 -> 818 bytes
-rw-r--r--doc/html/inherit__graph__36.map2
-rw-r--r--doc/html/inherit__graph__36.md52
-rw-r--r--doc/html/inherit__graph__36.pngbin918 -> 918 bytes
-rw-r--r--doc/html/inherit__graph__37.map2
-rw-r--r--doc/html/inherit__graph__37.md52
-rw-r--r--doc/html/inherit__graph__37.pngbin691 -> 852 bytes
-rw-r--r--doc/html/inherit__graph__38.map2
-rw-r--r--doc/html/inherit__graph__38.md52
-rw-r--r--doc/html/inherit__graph__38.pngbin657 -> 918 bytes
-rw-r--r--doc/html/inherit__graph__39.map2
-rw-r--r--doc/html/inherit__graph__39.md52
-rw-r--r--doc/html/inherit__graph__39.pngbin878 -> 691 bytes
-rw-r--r--doc/html/inherit__graph__40.map2
-rw-r--r--doc/html/inherit__graph__40.md52
-rw-r--r--doc/html/inherit__graph__40.pngbin712 -> 657 bytes
-rw-r--r--doc/html/inherit__graph__41.map2
-rw-r--r--doc/html/inherit__graph__41.md52
-rw-r--r--doc/html/inherit__graph__41.pngbin685 -> 878 bytes
-rw-r--r--doc/html/inherit__graph__42.map2
-rw-r--r--doc/html/inherit__graph__42.md52
-rw-r--r--doc/html/inherit__graph__42.pngbin607 -> 712 bytes
-rw-r--r--doc/html/inherit__graph__43.map2
-rw-r--r--doc/html/inherit__graph__43.md52
-rw-r--r--doc/html/inherit__graph__43.pngbin783 -> 685 bytes
-rw-r--r--doc/html/inherit__graph__44.map2
-rw-r--r--doc/html/inherit__graph__44.md52
-rw-r--r--doc/html/inherit__graph__44.pngbin779 -> 607 bytes
-rw-r--r--doc/html/inherit__graph__45.map2
-rw-r--r--doc/html/inherit__graph__45.md52
-rw-r--r--doc/html/inherit__graph__45.pngbin642 -> 783 bytes
-rw-r--r--doc/html/inherit__graph__46.map2
-rw-r--r--doc/html/inherit__graph__46.md52
-rw-r--r--doc/html/inherit__graph__46.pngbin644 -> 779 bytes
-rw-r--r--doc/html/inherit__graph__47.map2
-rw-r--r--doc/html/inherit__graph__47.md52
-rw-r--r--doc/html/inherit__graph__47.pngbin889 -> 642 bytes
-rw-r--r--doc/html/inherit__graph__48.map2
-rw-r--r--doc/html/inherit__graph__48.md52
-rw-r--r--doc/html/inherit__graph__48.pngbin850 -> 644 bytes
-rw-r--r--doc/html/inherit__graph__49.map2
-rw-r--r--doc/html/inherit__graph__49.md52
-rw-r--r--doc/html/inherit__graph__49.pngbin847 -> 889 bytes
-rw-r--r--doc/html/inherit__graph__50.map2
-rw-r--r--doc/html/inherit__graph__50.md52
-rw-r--r--doc/html/inherit__graph__50.pngbin560 -> 850 bytes
-rw-r--r--doc/html/inherit__graph__51.map2
-rw-r--r--doc/html/inherit__graph__51.md52
-rw-r--r--doc/html/inherit__graph__51.pngbin798 -> 847 bytes
-rw-r--r--doc/html/inherit__graph__52.map2
-rw-r--r--doc/html/inherit__graph__52.md52
-rw-r--r--doc/html/inherit__graph__52.pngbin660 -> 560 bytes
-rw-r--r--doc/html/inherit__graph__53.map2
-rw-r--r--doc/html/inherit__graph__53.md52
-rw-r--r--doc/html/inherit__graph__53.pngbin705 -> 798 bytes
-rw-r--r--doc/html/inherit__graph__54.map2
-rw-r--r--doc/html/inherit__graph__54.md52
-rw-r--r--doc/html/inherit__graph__54.pngbin784 -> 660 bytes
-rw-r--r--doc/html/inherit__graph__55.map2
-rw-r--r--doc/html/inherit__graph__55.md52
-rw-r--r--doc/html/inherit__graph__55.pngbin940 -> 705 bytes
-rw-r--r--doc/html/inherit__graph__56.map2
-rw-r--r--doc/html/inherit__graph__56.md52
-rw-r--r--doc/html/inherit__graph__56.pngbin776 -> 784 bytes
-rw-r--r--doc/html/inherit__graph__57.map2
-rw-r--r--doc/html/inherit__graph__57.md52
-rw-r--r--doc/html/inherit__graph__57.pngbin787 -> 940 bytes
-rw-r--r--doc/html/inherit__graph__58.map2
-rw-r--r--doc/html/inherit__graph__58.md52
-rw-r--r--doc/html/inherit__graph__58.pngbin754 -> 776 bytes
-rw-r--r--doc/html/inherit__graph__59.map2
-rw-r--r--doc/html/inherit__graph__59.md52
-rw-r--r--doc/html/inherit__graph__59.pngbin765 -> 787 bytes
-rw-r--r--doc/html/inherit__graph__60.map2
-rw-r--r--doc/html/inherit__graph__60.md52
-rw-r--r--doc/html/inherit__graph__60.pngbin585 -> 754 bytes
-rw-r--r--doc/html/inherit__graph__61.map2
-rw-r--r--doc/html/inherit__graph__61.md52
-rw-r--r--doc/html/inherit__graph__61.pngbin665 -> 765 bytes
-rw-r--r--doc/html/inherit__graph__62.map2
-rw-r--r--doc/html/inherit__graph__62.md52
-rw-r--r--doc/html/inherit__graph__62.pngbin748 -> 585 bytes
-rw-r--r--doc/html/inherit__graph__63.map2
-rw-r--r--doc/html/inherit__graph__63.md52
-rw-r--r--doc/html/inherit__graph__63.pngbin729 -> 665 bytes
-rw-r--r--doc/html/inherit__graph__64.map2
-rw-r--r--doc/html/inherit__graph__64.md52
-rw-r--r--doc/html/inherit__graph__64.pngbin812 -> 748 bytes
-rw-r--r--doc/html/inherit__graph__65.map2
-rw-r--r--doc/html/inherit__graph__65.md52
-rw-r--r--doc/html/inherit__graph__65.pngbin540 -> 729 bytes
-rw-r--r--doc/html/inherit__graph__66.map2
-rw-r--r--doc/html/inherit__graph__66.md52
-rw-r--r--doc/html/inherit__graph__66.pngbin525 -> 812 bytes
-rw-r--r--doc/html/inherit__graph__67.map2
-rw-r--r--doc/html/inherit__graph__67.md52
-rw-r--r--doc/html/inherit__graph__67.pngbin577 -> 540 bytes
-rw-r--r--doc/html/inherit__graph__68.map2
-rw-r--r--doc/html/inherit__graph__68.md52
-rw-r--r--doc/html/inherit__graph__68.pngbin723 -> 525 bytes
-rw-r--r--doc/html/inherit__graph__69.map2
-rw-r--r--doc/html/inherit__graph__69.md52
-rw-r--r--doc/html/inherit__graph__69.pngbin711 -> 577 bytes
-rw-r--r--doc/html/inherit__graph__70.map2
-rw-r--r--doc/html/inherit__graph__70.md52
-rw-r--r--doc/html/inherit__graph__70.pngbin1037 -> 723 bytes
-rw-r--r--doc/html/inherit__graph__71.map2
-rw-r--r--doc/html/inherit__graph__71.md52
-rw-r--r--doc/html/inherit__graph__71.pngbin1239 -> 711 bytes
-rw-r--r--doc/html/inherit__graph__72.map2
-rw-r--r--doc/html/inherit__graph__72.md52
-rw-r--r--doc/html/inherit__graph__72.pngbin812 -> 1037 bytes
-rw-r--r--doc/html/inherit__graph__73.map2
-rw-r--r--doc/html/inherit__graph__73.md52
-rw-r--r--doc/html/inherit__graph__73.pngbin611 -> 1239 bytes
-rw-r--r--doc/html/inherit__graph__74.map2
-rw-r--r--doc/html/inherit__graph__74.md52
-rw-r--r--doc/html/inherit__graph__74.pngbin615 -> 812 bytes
-rw-r--r--doc/html/inherit__graph__75.map2
-rw-r--r--doc/html/inherit__graph__75.md52
-rw-r--r--doc/html/inherit__graph__75.pngbin732 -> 611 bytes
-rw-r--r--doc/html/inherit__graph__76.map2
-rw-r--r--doc/html/inherit__graph__76.md52
-rw-r--r--doc/html/inherit__graph__76.pngbin580 -> 615 bytes
-rw-r--r--doc/html/inherit__graph__77.map2
-rw-r--r--doc/html/inherit__graph__77.md52
-rw-r--r--doc/html/inherit__graph__77.pngbin723 -> 732 bytes
-rw-r--r--doc/html/inherit__graph__78.map2
-rw-r--r--doc/html/inherit__graph__78.md52
-rw-r--r--doc/html/inherit__graph__78.pngbin703 -> 580 bytes
-rw-r--r--doc/html/inherit__graph__79.map2
-rw-r--r--doc/html/inherit__graph__79.md52
-rw-r--r--doc/html/inherit__graph__79.pngbin741 -> 723 bytes
-rw-r--r--doc/html/inherit__graph__80.map2
-rw-r--r--doc/html/inherit__graph__80.md52
-rw-r--r--doc/html/inherit__graph__80.pngbin798 -> 703 bytes
-rw-r--r--doc/html/inherit__graph__81.map1
-rw-r--r--doc/html/inherit__graph__81.md51
-rw-r--r--doc/html/inherit__graph__81.pngbin0 -> 741 bytes
-rw-r--r--doc/html/inherit__graph__82.map1
-rw-r--r--doc/html/inherit__graph__82.md51
-rw-r--r--doc/html/inherit__graph__82.pngbin0 -> 798 bytes
-rw-r--r--doc/html/inherits.html148
-rw-r--r--doc/html/key-file_8h-source.html4
-rw-r--r--doc/html/main.html6
-rw-r--r--doc/html/manager-file_8h-source.html4
-rw-r--r--doc/html/media-session-handler_8h-source.html4
-rw-r--r--doc/html/media-stream-handler_8h-source.html4
-rw-r--r--doc/html/message_8h-source.html12
-rw-r--r--doc/html/modules.html4
-rw-r--r--doc/html/namespace_telepathy.html8
-rw-r--r--doc/html/namespace_telepathy_1_1_client.html284
-rw-r--r--doc/html/namespace_telepathy_1_1_client_1_1_d_bus.html4
-rw-r--r--doc/html/namespace_tp_prototype.html4
-rw-r--r--doc/html/namespace_tp_prototype_1_1_client.html4
-rw-r--r--doc/html/namespacemembers.html8
-rw-r--r--doc/html/namespacemembers_0x63.html14
-rw-r--r--doc/html/namespacemembers_0x64.html4
-rw-r--r--doc/html/namespacemembers_0x65.html4
-rw-r--r--doc/html/namespacemembers_0x66.html6
-rw-r--r--doc/html/namespacemembers_0x68.html4
-rw-r--r--doc/html/namespacemembers_0x6c.html4
-rw-r--r--doc/html/namespacemembers_0x6d.html8
-rw-r--r--doc/html/namespacemembers_0x6e.html4
-rw-r--r--doc/html/namespacemembers_0x6f.html10
-rw-r--r--doc/html/namespacemembers_0x70.html4
-rw-r--r--doc/html/namespacemembers_0x71.html6
-rw-r--r--doc/html/namespacemembers_0x72.html6
-rw-r--r--doc/html/namespacemembers_0x73.html6
-rw-r--r--doc/html/namespacemembers_0x74.html6
-rw-r--r--doc/html/namespacemembers_0x77.html4
-rw-r--r--doc/html/namespacemembers_enum.html4
-rw-r--r--doc/html/namespacemembers_eval.html4
-rw-r--r--doc/html/namespacemembers_func.html12
-rw-r--r--doc/html/namespacemembers_type.html33
-rw-r--r--doc/html/namespacemembers_vars.html4
-rw-r--r--doc/html/namespaces.html4
-rw-r--r--doc/html/optional-interface-factory_8h-source.html4
-rw-r--r--doc/html/pages.html4
-rw-r--r--doc/html/pending-account_8h-source.html88
-rw-r--r--doc/html/pending-channel_8h-source.html117
-rw-r--r--doc/html/pending-connection_8h-source.html88
-rw-r--r--doc/html/pending-contact-attributes_8h-source.html4
-rw-r--r--doc/html/pending-contacts_8h-source.html129
-rw-r--r--doc/html/pending-handles_8h-source.html4
-rw-r--r--doc/html/pending-operation_8h-source.html4
-rw-r--r--doc/html/pending-ready-channel_8h-source.html92
-rw-r--r--doc/html/pending-ready_8h-source.html41
-rw-r--r--doc/html/pending-string-list_8h-source.html4
-rw-r--r--doc/html/properties_8h-source.html4
-rw-r--r--doc/html/readiness-helper_8h-source.html184
-rw-r--r--doc/html/ready-object_8h-source.html98
-rw-r--r--doc/html/referenced-handles_8h-source.html4
-rw-r--r--doc/html/room-list_8h-source.html14
-rw-r--r--doc/html/simple-pending-operations_8h-source.html4
-rw-r--r--doc/html/streamed-media-channel_8h-source.html197
-rw-r--r--doc/html/struct_telepathy_1_1_alias_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_alias_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_alias_pair-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_alias_pair.html4
-rw-r--r--doc/html/struct_telepathy_1_1_avatar-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_avatar.html4
-rw-r--r--doc/html/struct_telepathy_1_1_avatar_token_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_avatar_token_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_capability_change-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_capability_change.html4
-rw-r--r--doc/html/struct_telepathy_1_1_capability_pair-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_capability_pair.html4
-rw-r--r--doc/html/struct_telepathy_1_1_channel_call_state_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_channel_call_state_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_channel_class-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_channel_class.html4
-rw-r--r--doc/html/struct_telepathy_1_1_channel_details-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_channel_details.html4
-rw-r--r--doc/html/struct_telepathy_1_1_channel_info-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_channel_info.html4
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_connection_manager_1_1_private-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_connection_manager_1_1_private.html32
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_connection_manager_1_1_private__coll__graph.map19
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_connection_manager_1_1_private__coll__graph.md52
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_connection_manager_1_1_private__coll__graph.pngbin13842 -> 21006 bytes
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_readiness_helper_1_1_introspectable-members.html6
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_readiness_helper_1_1_introspectable.html25
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_readiness_helper_1_1_introspectable__coll__graph.map1
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_readiness_helper_1_1_introspectable__coll__graph.md51
-rw-r--r--doc/html/struct_telepathy_1_1_client_1_1_readiness_helper_1_1_introspectable__coll__graph.pngbin0 -> 2431 bytes
-rw-r--r--doc/html/struct_telepathy_1_1_contact_attributes_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_contact_attributes_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_contact_capability-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_contact_capability.html4
-rw-r--r--doc/html/struct_telepathy_1_1_contact_presences-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_contact_presences.html4
-rw-r--r--doc/html/struct_telepathy_1_1_d_bus_tube_member-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_d_bus_tube_member.html4
-rw-r--r--doc/html/struct_telepathy_1_1_handle_identifier_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_handle_identifier_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_handle_owner_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_handle_owner_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_last_activity_and_statuses-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_last_activity_and_statuses.html4
-rw-r--r--doc/html/struct_telepathy_1_1_local_pending_info-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_local_pending_info.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_session_handler_info-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_session_handler_info.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_stream_handler_candidate-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_stream_handler_candidate.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_stream_handler_codec-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_stream_handler_codec.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_stream_handler_transport-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_stream_handler_transport.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_stream_info-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_media_stream_info.html4
-rw-r--r--doc/html/struct_telepathy_1_1_message_part-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_message_part.html4
-rw-r--r--doc/html/struct_telepathy_1_1_message_part_content_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_message_part_content_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_multiple_status_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_multiple_status_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_object_path_list-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_object_path_list.html4
-rw-r--r--doc/html/struct_telepathy_1_1_param_spec-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_param_spec.html4
-rw-r--r--doc/html/struct_telepathy_1_1_pending_text_message-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_pending_text_message.html4
-rw-r--r--doc/html/struct_telepathy_1_1_property_flags_change-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_property_flags_change.html4
-rw-r--r--doc/html/struct_telepathy_1_1_property_spec-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_property_spec.html4
-rw-r--r--doc/html/struct_telepathy_1_1_property_value-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_property_value.html4
-rw-r--r--doc/html/struct_telepathy_1_1_qualified_property_value_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_qualified_property_value_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_requestable_channel_class-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_requestable_channel_class.html4
-rw-r--r--doc/html/struct_telepathy_1_1_rich_presence_access_control-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_rich_presence_access_control.html4
-rw-r--r--doc/html/struct_telepathy_1_1_room_info-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_room_info.html4
-rw-r--r--doc/html/struct_telepathy_1_1_simple_contact_presences-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_simple_contact_presences.html4
-rw-r--r--doc/html/struct_telepathy_1_1_simple_presence-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_simple_presence.html4
-rw-r--r--doc/html/struct_telepathy_1_1_simple_status_spec-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_simple_status_spec.html4
-rw-r--r--doc/html/struct_telepathy_1_1_simple_status_spec_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_simple_status_spec_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_single_contact_attributes_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_single_contact_attributes_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_socket_address_i_pv4-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_socket_address_i_pv4.html4
-rw-r--r--doc/html/struct_telepathy_1_1_socket_address_i_pv6-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_socket_address_i_pv6.html4
-rw-r--r--doc/html/struct_telepathy_1_1_socket_netmask_i_pv4-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_socket_netmask_i_pv4.html4
-rw-r--r--doc/html/struct_telepathy_1_1_socket_netmask_i_pv6-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_socket_netmask_i_pv6.html4
-rw-r--r--doc/html/struct_telepathy_1_1_status_spec-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_status_spec.html4
-rw-r--r--doc/html/struct_telepathy_1_1_status_spec_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_status_spec_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_string_string_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_string_string_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_string_variant_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_string_variant_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_supported_socket_map-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_supported_socket_map.html4
-rw-r--r--doc/html/struct_telepathy_1_1_tube_info-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_tube_info.html4
-rw-r--r--doc/html/struct_telepathy_1_1_u_int_list-members.html4
-rw-r--r--doc/html/struct_telepathy_1_1_u_int_list.html4
-rw-r--r--doc/html/struct_tp_prototype_1_1_avatar_manager_1_1_avatar-members.html4
-rw-r--r--doc/html/struct_tp_prototype_1_1_avatar_manager_1_1_avatar.html4
-rw-r--r--doc/html/struct_tp_prototype_1_1_avatar_manager_1_1_avatar_requirements-members.html4
-rw-r--r--doc/html/struct_tp_prototype_1_1_avatar_manager_1_1_avatar_requirements.html4
-rw-r--r--doc/html/text-channel_8h-source.html157
-rw-r--r--doc/html/todo.html4
-rw-r--r--doc/html/tree.html44
-rw-r--r--doc/html/types_8h-source.html4
-rw-r--r--examples/Makefile.am4
-rw-r--r--examples/Makefile.in9
-rw-r--r--examples/accounts/Makefile.am10
-rw-r--r--examples/accounts/Makefile.in15
-rw-r--r--examples/call/Makefile.am55
-rw-r--r--examples/call/Makefile.in606
-rw-r--r--examples/call/call-handler.cpp173
-rw-r--r--examples/call/call-handler.h61
-rw-r--r--examples/call/call-roster-widget.cpp91
-rw-r--r--examples/call/call-roster-widget.h63
-rw-r--r--examples/call/call-widget.cpp476
-rw-r--r--examples/call/call-widget.h106
-rw-r--r--examples/call/call-window.cpp170
-rw-r--r--examples/call/call-window.h69
-rw-r--r--examples/call/farsight-channel.cpp349
-rw-r--r--examples/call/farsight-channel.h73
-rw-r--r--examples/call/main.cpp37
-rw-r--r--examples/call/video-widget.cpp167
-rw-r--r--examples/call/video-widget.h58
-rw-r--r--examples/extensions/Makefile.am7
-rw-r--r--examples/extensions/Makefile.in11
-rw-r--r--examples/roster/Makefile.am35
-rw-r--r--examples/roster/Makefile.in106
-rw-r--r--examples/roster/roster-item.cpp2
-rw-r--r--examples/roster/roster-item.h7
-rw-r--r--examples/roster/roster-widget.cpp372
-rw-r--r--examples/roster/roster-widget.h92
-rw-r--r--examples/roster/roster-window.cpp315
-rw-r--r--examples/roster/roster-window.h38
-rw-r--r--m4/Makefile.in4
-rw-r--r--spec/Makefile.in4
-rw-r--r--tests/Makefile.am13
-rw-r--r--tests/Makefile.in18
-rw-r--r--tests/dbus/Makefile.am20
-rw-r--r--tests/dbus/Makefile.in37
-rw-r--r--tests/dbus/account-basics.cpp29
-rw-r--r--tests/dbus/chan-basics.cpp13
-rw-r--r--tests/dbus/chan-group.cpp21
-rw-r--r--tests/dbus/conn-basics.cpp2
-rw-r--r--tests/dbus/conn-requests.cpp4
-rw-r--r--tests/dbus/conn-roster.cpp14
-rw-r--r--tests/dbus/contacts.cpp13
-rw-r--r--tests/dbus/streamed-media-chan.cpp814
-rw-r--r--tests/dbus/text-chan.cpp33
-rw-r--r--tests/lib/Makefile.am18
-rw-r--r--tests/lib/Makefile.in30
-rw-r--r--tests/lib/callable/Makefile.am48
-rw-r--r--tests/lib/callable/Makefile.in584
-rw-r--r--tests/lib/callable/conn.c423
-rw-r--r--tests/lib/callable/conn.h78
-rw-r--r--tests/lib/callable/connection-manager.c130
-rw-r--r--tests/lib/callable/connection-manager.h73
-rw-r--r--tests/lib/callable/manager-file.py23
-rw-r--r--tests/lib/callable/media-channel.c1208
-rw-r--r--tests/lib/callable/media-channel.h74
-rw-r--r--tests/lib/callable/media-manager.c492
-rw-r--r--tests/lib/callable/media-manager.h71
-rw-r--r--tests/lib/callable/media-stream.c619
-rw-r--r--tests/lib/callable/media-stream.h88
-rw-r--r--tests/lib/contactlist/Makefile.in4
-rw-r--r--tests/lib/csh/Makefile.in4
-rw-r--r--tests/lib/echo/Makefile.in4
-rw-r--r--tests/lib/echo2/Makefile.in4
-rw-r--r--tests/pinocchio/Makefile.am13
-rw-r--r--tests/pinocchio/Makefile.in18
-rw-r--r--tests/pinocchio/cm-basics.cpp2
-rw-r--r--tests/pinocchio/conn-basics.cpp3
-rw-r--r--tests/pinocchio/handles.cpp1
-rw-r--r--tests/prototype/Makefile.am14
-rw-r--r--tests/prototype/Makefile.in19
-rw-r--r--tools/Makefile.in4
-rw-r--r--tools/qt4-client-gen.py16
941 files changed, 20392 insertions, 7938 deletions
diff --git a/ChangeLog b/ChangeLog
index 35c5a98..36bbee8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1385 @@
+commit 7d42e13c275c6151bf15a4bce375e1ccde08c5db
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-23 17:09:36 +0000
+
+ Prepare release 0.1.2
+
+ NEWS | 4 +++-
+ configure.ac | 4 ++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+commit e4c77a1c7b87399e7b89e37de663f61d8118a113
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-23 17:09:21 +0000
+
+ Consistently call bus names "busName" instead of "serviceName"
+
+ D-Bus upstream generally discourage the use of the term "service name" -
+ officially, things like ":1.42" are /unique bus names/, things like
+ "org.freedesktop.Telepathy.AccountManager" are /well-known bus names/,
+ and /bus names/ are either of those. This is the terminology used in
+ telepathy-spec and in DBusProxy, too.
+
+ NEWS | 2 +-
+ TelepathyQt4/Client/account.cpp | 4 +-
+ TelepathyQt4/Client/connection.cpp | 32 +++++++++++----------
+ TelepathyQt4/Client/connection.h | 4 +-
+ TelepathyQt4/Client/pending-connection.cpp | 41 ++++++++++++++-------------
+ TelepathyQt4/Client/pending-connection.h | 2 +-
+ tools/qt4-client-gen.py | 16 +++++-----
+ 7 files changed, 52 insertions(+), 49 deletions(-)
+
+commit 590c9879ed7adc68c49819d967f16c018a22c6e0
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-23 16:19:30 +0000
+
+ Clean up and simplify header search paths
+
+ Ensuring that $(top_srcdir) and $(top_builddir) are first on the -I path
+ is always a good idea - it means we always use this library's headers,
+ and not those of an installed copy of telepathy-qt4 that might be on the
+ -I path (due to sharing a directory with the installed telepathy-glib).
+
+ AM_CPPFLAGS is passed to every compilation, so we can use it for both C
+ and C++. It's also exactly what we want when running moc.
+
+ It also seems a good idea to make it explicit that we're linking QtCore.
+
+ TelepathyQt4/Makefile.am | 19 ++++++++++---------
+ TelepathyQt4/Prototype/Makefile.am | 16 ++++++++--------
+ examples/accounts/Makefile.am | 10 +++++++---
+ examples/call/Makefile.am | 13 ++++++++-----
+ examples/extensions/Makefile.am | 7 +++++--
+ examples/roster/Makefile.am | 11 ++++++++---
+ tests/Makefile.am | 13 +++++--------
+ tests/dbus/Makefile.am | 15 ++++++---------
+ tests/lib/Makefile.am | 15 ++++++---------
+ tests/pinocchio/Makefile.am | 13 +++++--------
+ tests/prototype/Makefile.am | 14 +++++---------
+ 11 files changed, 73 insertions(+), 73 deletions(-)
+
+commit 2c953406b14c0b4d950f6d45eeb50055e0121088
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-23 15:53:47 +0000
+
+ Fix inclusion order in call example, and be more explicit
+
+ $(TP_QT4_CFLAGS) has to come first, despite the usual rule that
+ higher-level libraries come later, so that if telepathy-glib,
+ telepathy-farsight and telepathy-qt4 are all installed in
+ /usr/include/telepathy-1.0 (this is currently true), the copy of
+ telepathy-qt4 currently being built is used rather than the system copy.
+
+ Including telepathy-glib's CFLAGS is probably unnecessary, but we should
+ do it anyway - explicit is better than implicit. Likewise for the
+ libraries.
+
+ examples/call/Makefile.am | 7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 7306cabd883424732ecf69a033d257131122a8c8
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-23 15:33:03 +0000
+
+ call example: fix copyright notices
+
+ Copyright (call) 2009 looks like overzealous use of sed...
+
+ examples/call/call-handler.cpp | 3 ++-
+ examples/call/call-handler.h | 3 ++-
+ examples/call/call-roster-widget.cpp | 3 ++-
+ examples/call/call-roster-widget.h | 3 ++-
+ examples/call/call-widget.cpp | 3 ++-
+ examples/call/call-widget.h | 3 ++-
+ examples/call/call-window.cpp | 3 ++-
+ examples/call/call-window.h | 3 ++-
+ examples/call/farsight-channel.cpp | 4 ++--
+ examples/call/farsight-channel.h | 4 ++--
+ examples/call/video-widget.cpp | 3 ++-
+ examples/call/video-widget.h | 3 ++-
+ 12 files changed, 24 insertions(+), 14 deletions(-)
+
+commit 8d48515d57d8b02ccb0e63ba459003fb701e3dbb
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-23 15:26:14 +0000
+
+ .gitignore: Ignore with-session-bus droppings
+
+ .gitignore | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 159c770d7d405cee70fc652fd7b3c8de6f2ef45a
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-23 15:25:23 +0000
+
+ NEWS, README: update for 0.1.2
+
+ NEWS | 36 ++++++++++++++++++++++++++++++++++++
+ README | 5 +++++
+ 2 files changed, 41 insertions(+), 0 deletions(-)
+
+commit fe0a18c64705547f2c299b2a069282d85439f214
+Merge: 7b0c980 f92dac4
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-23 10:23:51 -0300
+
+ Merge branch 'streamed-media'
+
+ Reviewed-by: Simon McVittie (smcv) <simon.mcvittie@collabora.co.uk>
+
+commit f92dac4a0723c5a5a1b31265d9b8a26832536661
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-23 10:19:01 -0300
+
+ streamed-media-chan test: Added more checks after channel is invalidated.
+
+ tests/dbus/streamed-media-chan.cpp | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+commit 7cacccd8ffe5781dbd58f8b9d44ff9fb2c380279
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-20 16:11:18 -0300
+
+ streamed-media-chan test: Added "busy", "no answer", "terminate" test simulations.
+
+ tests/dbus/streamed-media-chan.cpp | 238 ++++++++++++++++++++++++++++++++++--
+ 1 files changed, 225 insertions(+), 13 deletions(-)
+
+commit 010bf711e6ffc606f834f5e5b5cb29d7db5e1ea9
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-20 11:00:00 -0300
+
+ configure.ac: Merge gst/tp-farsight checks.
+
+ configure.ac | 16 ++--------------
+ examples/call/Makefile.am | 2 --
+ 2 files changed, 2 insertions(+), 16 deletions(-)
+
+commit 3f8536433c2f4ad37db0494db7b22bf210f75720
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-20 10:57:01 -0300
+
+ streamed-media-chan test: Fixed (there is no guarantee the stream direction will be bidirectional at this point).
+
+ tests/dbus/streamed-media-chan.cpp | 1 -
+ 1 files changed, 0 insertions(+), 1 deletions(-)
+
+commit 30358c9a9d781ccba5952ff55c138add024e1c08
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-20 10:56:27 -0300
+
+ streamed-media-chan test: Link to libtp-glib-tests directly.
+
+ tests/dbus/Makefile.am | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8b3e861cf3d4fdb77057926df940bb1f4cf5ac59
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-20 10:54:34 -0300
+
+ StreamedMediaChannel: Do not try to retrieve the stream contact if the handle is 0.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+commit eb52ef8bec4e4ab98e6d179b236c7f45bc49d7e2
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-20 10:51:45 -0300
+
+ StreamedMediaChannel: Update stream state/direction when stream is retrieved even if it already exists.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 24 +++++++++++++++++++++++-
+ 1 files changed, 23 insertions(+), 1 deletions(-)
+
+commit 295e582d13979efcabfc8b196f15232d56fc95fd
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-20 10:39:15 -0300
+
+ StreamedMediaChannel: Do not assert if the CM is bug.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 16 ++++++++++++----
+ 1 files changed, 12 insertions(+), 4 deletions(-)
+
+commit 65b15c2f6336ed998d5a07734f27046450c606b5
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-20 10:35:30 -0300
+
+ ReadyObject/ReadinessHelper: Removed DBusProxy from constructors and receive just a QObject.
+
+ If the QObject is a DBusProxy, properly handle proxy invalidation.
+
+ TelepathyQt4/Client/readiness-helper.cpp | 19 ++++++++---------
+ TelepathyQt4/Client/readiness-helper.h | 3 +-
+ TelepathyQt4/Client/ready-object.cpp | 25 ++++-------------------
+ TelepathyQt4/Client/ready-object.h | 5 +---
+ TelepathyQt4/Client/streamed-media-channel.cpp | 2 +-
+ 5 files changed, 17 insertions(+), 37 deletions(-)
+
+commit 3e47a2c41887205de36cbf4012f8fd4a7bb2f576
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 22:39:36 -0300
+
+ Added automated tests for StreamedMediaChannel.
+
+ TelepathyQt4/Client/connection.cpp | 1 -
+ tests/dbus/Makefile.am | 5 +
+ tests/dbus/streamed-media-chan.cpp | 595 ++++++++++++++++++++++++++++++++++++
+ 3 files changed, 600 insertions(+), 1 deletions(-)
+
+commit 0696a14c53dae804d16f998a40d88a155604944f
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 21:12:42 -0300
+
+ StreamedMediaChannel: Removed removeStreams(UIntList) method and added removeStream(MediaStreamPtr) method.
+
+ Removed removeStreams(UIntList) as there is no need to have a method receiving
+ the stream ids, as the user will always have the stream pointer in case the
+ stream exists.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 21 +++++++++++----------
+ TelepathyQt4/Client/streamed-media-channel.h | 4 ++--
+ 2 files changed, 13 insertions(+), 12 deletions(-)
+
+commit d2f2f6b996b9542c8ff26d5a88e1d002e38053c0
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 21:08:23 -0300
+
+ StreamedMediaChannel: Removed MediaStream::remove method in favor of StreamedMedia::removeStreams methods.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 11 -----------
+ TelepathyQt4/Client/streamed-media-channel.h | 1 -
+ 2 files changed, 0 insertions(+), 12 deletions(-)
+
+commit 7ab5d93b00999e3425cf1dab55b5a8a213c40528
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 21:00:29 -0300
+
+ StreamedMediaChannel: Renamed MediaStream::requestStreamDirection to requestDirection.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 8 ++++----
+ TelepathyQt4/Client/streamed-media-channel.h | 4 ++--
+ examples/call/call-widget.cpp | 4 ++--
+ 3 files changed, 8 insertions(+), 8 deletions(-)
+
+commit f9fd9ddbab10614596b19b9bf7710f442f8d0f80
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 20:55:07 -0300
+
+ StreamedMediaChannel: Added streamsForType method.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 19 +++++++++++++++++++
+ TelepathyQt4/Client/streamed-media-channel.h | 1 +
+ 2 files changed, 20 insertions(+), 0 deletions(-)
+
+commit 13057f987651ef1dabd75b6452af4fdf3f5f4fa5
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 20:29:03 -0300
+
+ StreamedMediaChannel: Fixes/improvements.
+
+ Do not added MediaStream objects to StreamedMediaChannel until they are ready
+ (have a contact object).
+ Make MediaStream a ReadyObject and use this to retrieve the contact (reducing
+ code complexity).
+ Changed MediaStream to be a QSharedData in order to use it with
+ QExplitlySharedDataPointer.
+ Moved MediaStream signals to StreamedMediaChannel and use the
+ QExplitlySharedDataPointer<MediaStream> in the signals instead of MediaStream *.
+ Some other fixes.
+ Changed call example accordingly.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 369 ++++++++++++++----------
+ TelepathyQt4/Client/streamed-media-channel.h | 41 ++--
+ examples/call/call-widget.cpp | 178 +++++++-----
+ examples/call/call-widget.h | 16 +-
+ examples/call/call-window.cpp | 5 +-
+ 5 files changed, 346 insertions(+), 263 deletions(-)
+
+commit 84f6c8d0708f8604fba0688b1d7cdc04d55ed47b
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 20:26:36 -0300
+
+ ReadinessHelper/ReadyObject: Support non DBusProxy objects.
+
+ Added support for non DBusProxy objects to use ReadyObject/ReadinessHelper.
+ This is useful in classes that do not inherit DBusProxy but want to use
+ ReadinessHelper machinery.
+
+ TelepathyQt4/Client/readiness-helper.cpp | 33 ++++++++++++++++++-----------
+ TelepathyQt4/Client/readiness-helper.h | 3 +-
+ TelepathyQt4/Client/ready-object.cpp | 27 ++++++++++++++++++------
+ TelepathyQt4/Client/ready-object.h | 7 +++++-
+ 4 files changed, 48 insertions(+), 22 deletions(-)
+
+commit e7efdaa85fcf8f8e5a3503b61a0c8c8ad480e115
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 12:59:10 -0300
+
+ callable cm: Fixed Makefile.am.
+
+ tests/lib/callable/Makefile.am | 19 ++++++++++++++-----
+ 1 files changed, 14 insertions(+), 5 deletions(-)
+
+commit d1394ccf1045f954a7fd72def0fbde0bb6b82fbf
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 12:58:47 -0300
+
+ callable cm: Added missing manager-file.py.
+
+ tests/lib/callable/manager-file.py | 23 +++++++++++++++++++++++
+ 1 files changed, 23 insertions(+), 0 deletions(-)
+
+commit 6baf0dea65d5ae84f5362e558b58184a7cea440e
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 12:46:11 -0300
+
+ configure.ac: Added 'callable' example CM.
+
+ configure.ac | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit efdb0cf0024723aa32efd33aa85527a253108b32
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 12:44:04 -0300
+
+ Merge 'callable' example CM from telepathy-glib 0.7.27.
+
+ tests/lib/callable/conn.c | 21 +++
+ tests/lib/callable/media-channel.c | 290 +++++++++++++++++++++++++++++-------
+ tests/lib/callable/media-manager.c | 58 +++++++-
+ tests/lib/callable/media-stream.c | 113 ++++++++++++++
+ tests/lib/callable/media-stream.h | 5 +
+ 5 files changed, 432 insertions(+), 55 deletions(-)
+
+commit 7364913ca9bf7159c85b859ea5a11d008439af8d
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-17 22:27:13 +0000
+
+ Add 'callable' example CM from telepathy-glib 0.7.27
+
+ configure.ac | 2 +-
+ tests/lib/Makefile.am | 3 +-
+ tests/lib/callable/Makefile.am | 39 ++
+ tests/lib/callable/conn.c | 402 ++++++++++++
+ tests/lib/callable/conn.h | 78 +++
+ tests/lib/callable/connection-manager.c | 130 ++++
+ tests/lib/callable/connection-manager.h | 73 +++
+ tests/lib/callable/media-channel.c | 1024 +++++++++++++++++++++++++++++++
+ tests/lib/callable/media-channel.h | 74 +++
+ tests/lib/callable/media-manager.c | 438 +++++++++++++
+ tests/lib/callable/media-manager.h | 71 +++
+ tests/lib/callable/media-stream.c | 506 +++++++++++++++
+ tests/lib/callable/media-stream.h | 83 +++
+ 13 files changed, 2921 insertions(+), 2 deletions(-)
+
+commit afcc9b8fe60c00a089b92345d7dd485ed7d149fc
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 12:38:22 -0300
+
+ call example: Use ContactPtr typedef.
+
+ examples/call/call-handler.cpp | 6 +++---
+ examples/call/call-handler.h | 5 ++---
+ examples/call/call-roster-widget.cpp | 4 ++--
+ examples/call/call-roster-widget.h | 4 +++-
+ examples/call/call-widget.cpp | 2 +-
+ examples/call/call-widget.h | 8 ++++----
+ examples/call/call-window.h | 1 -
+ 7 files changed, 15 insertions(+), 15 deletions(-)
+
+commit bb35db6e862c580d775675c805a63dc022d7ed6f
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-19 12:37:55 -0300
+
+ StreamedMediaChannel: Use ContactPtr typedef.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 18 +++++++++---------
+ TelepathyQt4/Client/streamed-media-channel.h | 10 +++++-----
+ 2 files changed, 14 insertions(+), 14 deletions(-)
+
+commit 11f665457582a844886a08a000d78a4ea5e1838a
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 06:13:14 -0300
+
+ call example: Added VideoWidget.
+
+ examples/call/Makefile.am | 9 +-
+ examples/call/call-handler.cpp | 113 +++++++++-
+ examples/call/call-handler.h | 8 +-
+ examples/call/call-widget.cpp | 449 ++++++++++++++++++++++++++----------
+ examples/call/call-widget.h | 52 +++-
+ examples/call/call-window.cpp | 6 +-
+ examples/call/farsight-channel.cpp | 70 +++++-
+ examples/call/farsight-channel.h | 9 +-
+ examples/call/main.cpp | 4 +
+ examples/call/video-widget.cpp | 166 +++++++++++++
+ examples/call/video-widget.h | 57 +++++
+ 11 files changed, 792 insertions(+), 151 deletions(-)
+
+commit 478558c4dafd260891e2f3678fa6a24c1e8719c1
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 05:58:50 -0300
+
+ configure.ac: Added gstreamer checks, needed by the call example.
+
+ configure.ac | 13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+commit 6601740c314f53b8c0458f4431e080577a510d9d
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 05:57:53 -0300
+
+ StreamedMediaChannel: Changed default stream direction/state when none is informed.
+
+ Note: Let's use sensible defaults for now, this needs to be fixed.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit dc0f7bfff5b9d8803ea15a7d790111829739b3f6
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 05:57:25 -0300
+
+ StreamedMediaChannel: Added debug.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 12 ++++++++++++
+ 1 files changed, 12 insertions(+), 0 deletions(-)
+
+commit a2f02745bd265514aba230ffde084a294f7cec30
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 05:56:24 -0300
+
+ StreamedMediaChannel: Make sure all streams are added to the channel even if StreamAdded is not emitted.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 17 ++++++++++++++++-
+ TelepathyQt4/Client/streamed-media-channel.h | 2 ++
+ 2 files changed, 18 insertions(+), 1 deletions(-)
+
+commit b6ff843eebf998bb67497a963b1f99bd6ceb9423
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 05:55:23 -0300
+
+ StreamedMediaChannel: Proper initialize Private class (channel member).
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d45d63644c7d45cabff5bfb73dc3eb282aaf6b11
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 05:51:54 -0300
+
+ PendingChannel: Added objectPath().
+
+ Added objectPath method on PendingChannel so custom channels can be constructed.
+
+ TelepathyQt4/Client/pending-channel.cpp | 20 ++++++++++++++++++++
+ TelepathyQt4/Client/pending-channel.h | 2 ++
+ 2 files changed, 22 insertions(+), 0 deletions(-)
+
+commit 697d964fefaf3582c29870aeaac669b3ca0faa93
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-16 20:14:22 -0300
+
+ call example: Fixed farsight-channel coding style.
+
+ examples/call/farsight-channel.cpp | 50 ++++++++++++++++++------------------
+ 1 files changed, 25 insertions(+), 25 deletions(-)
+
+commit 431fb408d163b719ce392ccd5cc5965b4efbfc37
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-16 20:10:32 -0300
+
+ call example: Renamed farsight-glue to farsight-channel.
+
+ examples/call/Makefile.am | 6 +-
+ examples/call/call-widget.h | 2 +-
+ examples/call/farsight-channel.cpp | 293 ++++++++++++++++++++++++++++++++++++
+ examples/call/farsight-channel.h | 66 ++++++++
+ examples/call/farsight-glue.cpp | 293 ------------------------------------
+ examples/call/farsight-glue.h | 66 --------
+ 6 files changed, 363 insertions(+), 363 deletions(-)
+
+commit 7902a2ab1e3bfc9a79e7fd15d5cd307332feedc0
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-13 18:15:41 -0300
+
+ Added call example to gitignore.
+
+ .gitignore | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+commit 434f418585ca5d157a34d75b8e9ab820c6ec713a
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-13 18:14:34 -0300
+
+ call example: Added to repository.
+
+ This is a simple example to make voice calls, video not supported.
+
+ P.s.: Maybe we should move FarsightChannel to the public API.
+
+ examples/call/Makefile.am | 18 +++-
+ examples/call/call-handler.cpp | 69 ++++++++++
+ examples/call/call-handler.h | 55 ++++++++
+ examples/call/call-roster-widget.cpp | 90 +++++++++++++
+ examples/call/call-roster-widget.h | 60 +++++++++
+ examples/call/call-widget.cpp | 234 +++++++++++++++++++++++++++++++++
+ examples/call/call-widget.h | 81 ++++++++++++
+ examples/call/call-window.cpp | 170 ++++++++++++++++++++++++
+ examples/call/call-window.h | 69 ++++++++++
+ examples/call/farsight-glue.cpp | 238 ++++++++++++++++++++++++++++++++--
+ examples/call/farsight-glue.h | 45 ++++++-
+ examples/call/main.cpp | 32 +++++-
+ 12 files changed, 1139 insertions(+), 22 deletions(-)
+
+commit 925f9429f50917c8e360a30f3d4942be379c6824
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-13 18:14:03 -0300
+
+ roster example: Make a shared library that can be used by other examples.
+
+ examples/roster/Makefile.am | 26 ++++++--
+ examples/roster/main.cpp | 4 +-
+ examples/roster/roster-widget.cpp | 120 ++++++++++++++++-------------------
+ examples/roster/roster-widget.h | 28 +++++---
+ examples/roster/roster-window.cpp | 127 +++++++++++++++++++++++++++++++++++++
+ examples/roster/roster-window.h | 65 +++++++++++++++++++
+ 6 files changed, 286 insertions(+), 84 deletions(-)
+
+commit 3b1bf02be2ba5bd24618334649abd9cb89456d4e
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-13 18:13:15 -0300
+
+ PendingChannel: Changed handle/handleType to targetHandle/targetHandleType.
+
+ Changed handle/handleType to targetHandle/targetHandleType to be consistent with
+ Channel API.
+
+ TelepathyQt4/Client/connection.cpp | 2 +-
+ TelepathyQt4/Client/pending-channel.cpp | 6 +++---
+ TelepathyQt4/Client/pending-channel.h | 4 ++--
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 653d8a883d4e34defbc222d9ad36535458296bda
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-13 18:12:14 -0300
+
+ StreamedMediaChannel: Added requestStream method.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 8 ++++++++
+ TelepathyQt4/Client/streamed-media-channel.h | 3 +++
+ 2 files changed, 11 insertions(+), 0 deletions(-)
+
+commit 7b6102be979e93a2481c367952a3712f53205322
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-13 18:11:36 -0300
+
+ StreamedMediaChannel: Fixed RequestStreams/ListStreams return value handling.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 10 ++++------
+ 1 files changed, 4 insertions(+), 6 deletions(-)
+
+commit a9d1904001aacffd0dec6ee91dc7ee4ac1678647
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-13 18:08:10 -0300
+
+ Connection: Return a PendingReady object on requestConnect.
+
+ TelepathyQt4/Client/connection-internal.h | 7 ++-----
+ TelepathyQt4/Client/connection.cpp | 7 +++----
+ TelepathyQt4/Client/connection.h | 2 +-
+ TelepathyQt4/Client/pending-ready.h | 2 +-
+ tests/pinocchio/handles.cpp | 1 +
+ 5 files changed, 8 insertions(+), 11 deletions(-)
+
+commit b4e6a79d715c74c14cc634f91d034f29784ca504
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-12 15:09:19 -0300
+
+ roster example: renamed RosterWindow to RosterWidget.
+
+ examples/roster/Makefile.am | 6 +-
+ examples/roster/main.cpp | 4 +-
+ examples/roster/roster-widget.cpp | 384 ++++++++++++++++++++++++++++++++++++
+ examples/roster/roster-widget.h | 86 ++++++++
+ examples/roster/roster-window.cpp | 388 -------------------------------------
+ examples/roster/roster-window.h | 86 --------
+ 6 files changed, 475 insertions(+), 479 deletions(-)
+
+commit 353f020d0d67ccce352e8771c862817ebb1940d1
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-09 14:29:51 +0000
+
+ Add the beginnings of a call example using telepathy-farsight
+
+ configure.ac | 16 ++++++++-
+ examples/Makefile.am | 4 ++
+ examples/call/Makefile.am | 32 ++++++++++++++++
+ examples/call/farsight-glue.cpp | 75 +++++++++++++++++++++++++++++++++++++++
+ examples/call/farsight-glue.h | 37 +++++++++++++++++++
+ examples/call/main.cpp | 5 +++
+ 6 files changed, 168 insertions(+), 1 deletions(-)
+
+commit 84bf984cbb056fc316166f55af8d401af0a9e60e
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 12:56:03 -0300
+
+ StreamedMediaChannel: Added requestStreamDirection(bool send, bool receive) overload function.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 21 +++++++++++++++++++++
+ TelepathyQt4/Client/streamed-media-channel.h | 2 ++
+ 2 files changed, 23 insertions(+), 0 deletions(-)
+
+commit 412bbaa28e1677cd0fc84134553aeebdc65bb2ae
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 12:48:54 -0300
+
+ StreamedMediaChannel: No need to check for Bidirectional on MediaStream::sending/receiving.
+
+ Rationale:
+ <smcv> MediaStream::sending(), MediaStream::receiving() can safely assume that
+ MediaStreamDirection is a bitfield
+ <smcv> (it's an enum because of historical mistakes)
+ <smcv> Bidirectional is just (Send|Receive)
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 6 ++----
+ 1 files changed, 2 insertions(+), 4 deletions(-)
+
+commit dc4c80ff92dd072fcb3e0facd89b5bd70ab1eacf
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 12:47:13 -0300
+
+ StreamedMediaChannel: Only signal new streams/FeatureStreams ready when the stream contacts are retrieved.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 164 +++++++++++++++++++-----
+ TelepathyQt4/Client/streamed-media-channel.h | 10 +-
+ 2 files changed, 141 insertions(+), 33 deletions(-)
+
+commit 78b1c63cd6f30b8958b2b3a95269e82a4aebb44f
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 11:09:44 -0300
+
+ StreamedMediaChannel: Fixed requestStreams to return a PendingMediaStreams object.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 105 ++++++++++++++++++++++--
+ TelepathyQt4/Client/streamed-media-channel.h | 39 ++++++++-
+ 2 files changed, 132 insertions(+), 12 deletions(-)
+
+commit 07fb8c2ee967768faf8ab35b4525d4c57f163601
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 10:32:27 -0300
+
+ StreamedMediaChannel: Added a MediaStream * param to all MediaStreams signals.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 9 +++++----
+ TelepathyQt4/Client/streamed-media-channel.h | 11 +++++++----
+ 2 files changed, 12 insertions(+), 8 deletions(-)
+
+commit 4c2051c62b08c3681ecf61e019cec15667c8e1b8
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 03:21:36 -0300
+
+ StreamedMediaChannel: Added some docs.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 91 +++++++++++++++++++++++-
+ 1 files changed, 90 insertions(+), 1 deletions(-)
+
+commit 7e892f2a5046020d744dbe2226562b5c9b7a5d3a
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 03:09:05 -0300
+
+ StreamedMediaChannel: Fixed stream removal handling.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1bffdf74bb4d947a8142a57385aa646d45e602ea
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 03:04:05 -0300
+
+ StreamedMediaChannel: Cache MediaStream::contact object.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 6d4d5c80d0a7e4aed4ecda5489744e3047323e93
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 03:01:04 -0300
+
+ StreamedMediaChannel: Added removeStreams/requestStreams.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 31 ++++++++++++++++++++++-
+ TelepathyQt4/Client/streamed-media-channel.h | 4 +--
+ 2 files changed, 30 insertions(+), 5 deletions(-)
+
+commit 23f7751a3526a3df78741fae7989c2d840db5f6b
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 02:48:18 -0300
+
+ StreamedMediaChannel: Use full namespace on streamAdded signal.
+
+ TelepathyQt4/Client/streamed-media-channel.h | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 1bb5a9615975d01807151ad14a2828cabf486599
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 02:45:29 -0300
+
+ StreamedMediaChannel: Added MediaStream::remove/requestStreamDirection methods.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 13 +++++++++++++
+ TelepathyQt4/Client/streamed-media-channel.h | 2 --
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+commit 48af538ed0bec0aa2ab5eb2a08daa0494b0e9f48
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 02:44:26 -0300
+
+ StreamedMediaChannel: Continue implementation (added FeatureStreams support).
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 297 +++++++++++++++++++++++-
+ TelepathyQt4/Client/streamed-media-channel.h | 54 +++--
+ 2 files changed, 325 insertions(+), 26 deletions(-)
+
+commit 2fd8c3cfdb1bc9cca2221ae7575e06c12038f3db
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 02:43:40 -0300
+
+ ContactManager: Export lookupContactByHandle.
+
+ TelepathyQt4/Client/contact-manager.h | 5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 888ffb4dcd6fbf1790b7d05348233e0652591df1
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-05 14:44:31 +0000
+
+ StreamedMediaChannel: add awaitingLocalAnswer, awaitingRemoteAnswer and acceptCall
+
+ It's not completely clear from the abstract Group API how to do these
+ actions, so these simple wrappers are meant to guide API users to do the
+ right thing.
+
+ TelepathyQt4/Client/streamed-media-channel.cpp | 15 +++++++++++++++
+ TelepathyQt4/Client/streamed-media-channel.h | 5 +++++
+ 2 files changed, 20 insertions(+), 0 deletions(-)
+
+commit 0627b88d83f8f738c41f2fd7ac8d5f0861ccef18
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-05 14:43:22 +0000
+
+ Channel: add protected methods to look for the self-handle in local pending, and add it
+
+ While using Contact objects is nice from a high-level-API point of view,
+ it's not so convenient if all we want to do is to accept an invitation or
+ VoIP call.
+
+ The high-level semantics of moving yourself from local-pending to members
+ depend on the channel type, so subclasses should introduce wrappers for
+ these methods with a friendlier name, where appropriate.
+
+ TelepathyQt4/Client/channel.cpp | 53 +++++++++++++++++++++++++++++++++++++++
+ TelepathyQt4/Client/channel.h | 6 ++++
+ 2 files changed, 59 insertions(+), 0 deletions(-)
+
+commit 970c8830511a1821b4a68751418538dd104231dd
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-05 14:12:19 +0000
+
+ StreamedMediaChannel: sketch out a higher-level API
+
+ TelepathyQt4/Client/streamed-media-channel.h | 72 ++++++++++++++++++++++++++
+ 1 files changed, 72 insertions(+), 0 deletions(-)
+
+commit 7b0c980697aaa585d4418a397a3269ac2cc8fe05
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 15:59:19 -0300
+
+ Fixed merge conflict.
+
+ TelepathyQt4/Client/pending-account.cpp | 5 -----
+ TelepathyQt4/Client/pending-connection.cpp | 6 ------
+ 2 files changed, 0 insertions(+), 11 deletions(-)
+
+commit 077ac93c7f36a4484926d07e183d974406040f67
+Merge: 6fd4f8a db03e92
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 15:19:52 -0300
+
+ Merge branch 'shared'
+
+ Conflicts:
+ TelepathyQt4/Client/pending-account.cpp
+ TelepathyQt4/Client/pending-account.h
+ TelepathyQt4/Client/pending-connection.cpp
+ TelepathyQt4/Client/pending-connection.h
+
+ Reviewed-by: Simon McVittie (smcv) <simon.mcvittie@collabora.co.uk>
+
+commit db03e923b1be42cfa055d6a49f12435c90f8839d
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 15:13:30 -0300
+
+ Update NEWS regarding QExplicitlySharedDataPointer usage.
+
+ NEWS | 10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+commit feae9a9ee2e1adab2d4aee13994757b78a65a794
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 15:07:30 -0300
+
+ ReadyObject: Do not inherit QSharedData.
+
+ Make ReadyObject do not inherit QSharedData and do it in the classes itself.
+
+ TelepathyQt4/Client/account-manager.h | 5 ++++-
+ TelepathyQt4/Client/account.h | 5 ++++-
+ TelepathyQt4/Client/channel.h | 7 ++++---
+ TelepathyQt4/Client/connection-manager.h | 5 ++++-
+ TelepathyQt4/Client/connection.h | 5 ++++-
+ TelepathyQt4/Client/ready-object.h | 4 +---
+ 6 files changed, 21 insertions(+), 10 deletions(-)
+
+commit 39b26e8d36dc38653c673287a9ea7fcddd155b70
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:42:09 -0300
+
+ tests: Use ContactPtr typedef.
+
+ tests/dbus/chan-basics.cpp | 4 ++--
+ tests/dbus/chan-group.cpp | 14 +++++++-------
+ tests/dbus/conn-roster.cpp | 12 ++++++------
+ tests/dbus/contacts.cpp | 11 +++++------
+ 4 files changed, 20 insertions(+), 21 deletions(-)
+
+commit 0923950675557229d462499b2cd80f77c8081878
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:41:54 -0300
+
+ roster example: Use ContactPtr typedef.
+
+ examples/roster/roster-item.cpp | 2 +-
+ examples/roster/roster-item.h | 7 +++----
+ examples/roster/roster-window.cpp | 12 ++++++------
+ examples/roster/roster-window.h | 2 +-
+ 4 files changed, 11 insertions(+), 12 deletions(-)
+
+commit ac55b969a050b78b29571da7b8dcc59754c830ac
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:37:08 -0300
+
+ TextChannel: Use ContactPtr typedef.
+
+ TelepathyQt4/Client/text-channel.cpp | 6 +++---
+ TelepathyQt4/Client/text-channel.h | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit f8f1939ed2d5b61600a2e053a17ccbc871e0942f
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:35:50 -0300
+
+ Connection: Use ContactPtr typedef.
+
+ TelepathyQt4/Client/connection.cpp | 7 +++----
+ TelepathyQt4/Client/connection.h | 4 ++--
+ 2 files changed, 5 insertions(+), 6 deletions(-)
+
+commit add9e008caaa60b6de5c93f8477fb108e4f750b7
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:34:05 -0300
+
+ Message: Use ContactPtr typedef.
+
+ TelepathyQt4/Client/message.cpp | 10 +++++-----
+ TelepathyQt4/Client/message.h | 6 +++---
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+commit 1297ea5021cb16bca95715f0d5819ee2e5ce9a88
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:32:43 -0300
+
+ PendingContacts: Use ContactPtr typedef.
+
+ TelepathyQt4/Client/pending-contacts.cpp | 20 ++++++++++----------
+ TelepathyQt4/Client/pending-contacts.h | 9 ++++-----
+ 2 files changed, 14 insertions(+), 15 deletions(-)
+
+commit 43180c70d170c0702541fdf9af1bdb5e6a4833d8
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:30:46 -0300
+
+ ContactManager: Use ContactPtr typedef.
+
+ TelepathyQt4/Client/contact-manager.cpp | 53 ++++++++++++++++---------------
+ TelepathyQt4/Client/contact-manager.h | 17 +++++-----
+ 2 files changed, 35 insertions(+), 35 deletions(-)
+
+commit 0af172ae82bfaf5dc604ac8d8e7de956cf057c65
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:28:01 -0300
+
+ Channel: Use ContactPtr typedef.
+
+ TelepathyQt4/Client/channel.cpp | 48 +++++++++++++++++++-------------------
+ TelepathyQt4/Client/channel.h | 17 ++++++-------
+ 2 files changed, 32 insertions(+), 33 deletions(-)
+
+commit fb7bde10dbc4c05c93ea97e915c12952df9037aa
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:27:08 -0300
+
+ Contact: Added ContactPtr typedef.
+
+ TelepathyQt4/Client/contact.cpp | 20 ++++++++++----------
+ TelepathyQt4/Client/contact.h | 7 ++++---
+ 2 files changed, 14 insertions(+), 13 deletions(-)
+
+commit f89957151e613d232c95e10d4acb846192e4c6c4
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:21:04 -0300
+
+ TextChannel: Added TextChannel typedef.
+
+ TelepathyQt4/Client/text-channel.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit c7f52e12693829d932a9042e2020a8e1f393e250
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:20:30 -0300
+
+ StreamedMediaChannel: Added StreamedMediaChannel typedef.
+
+ TelepathyQt4/Client/streamed-media-channel.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 49d9690394f639255eb14ff94c3d9ac5a326de9c
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:20:13 -0300
+
+ RoomList: Added RoomListPtr typedef.
+
+ TelepathyQt4/Client/room-list.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit bba487c0400a6812efda3e73497d5bf2c0e516fb
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:20:00 -0300
+
+ FileTransfer: Added FileTransferPtr typedef.
+
+ TelepathyQt4/Client/file-transfer.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit a499f9ba44d275e78b7462f58164e66f845f2b26
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:19:45 -0300
+
+ ConnectionManager: Added ConnectionManagerPtr typedef.
+
+ TelepathyQt4/Client/connection-manager.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit b677c2d85aa28c2a3dcfe530a5cfff6a3725a447
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:19:32 -0300
+
+ AccountManager: Added AccountManagerPtr typedef.
+
+ TelepathyQt4/Client/account-manager.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 9f7025e33c7ff89cd1661bfc2243d73781201770
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:14:38 -0300
+
+ PendingConnection: Return ConnectionPtr on connection() method.
+
+ TelepathyQt4/Client/pending-connection.cpp | 10 +++++-----
+ TelepathyQt4/Client/pending-connection.h | 3 +--
+ examples/roster/roster-window.h | 5 ++---
+ tests/pinocchio/cm-basics.cpp | 2 +-
+ 4 files changed, 9 insertions(+), 11 deletions(-)
+
+commit ef04e36cc0f19e460bb0950376b56c9858a5a05d
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 14:10:20 -0300
+
+ PendingChannel: Return ChannelPtr on channel() method.
+
+ TelepathyQt4/Client/connection.cpp | 6 +++---
+ TelepathyQt4/Client/contact-manager.cpp | 12 ++++++------
+ TelepathyQt4/Client/contact-manager.h | 2 +-
+ TelepathyQt4/Client/pending-channel.cpp | 20 ++++++++++----------
+ TelepathyQt4/Client/pending-channel.h | 3 +--
+ tests/dbus/chan-basics.cpp | 6 +++---
+ tests/dbus/chan-group.cpp | 6 +++---
+ tests/dbus/conn-requests.cpp | 4 ++--
+ 8 files changed, 29 insertions(+), 30 deletions(-)
+
+commit ca9ce1de1dafae864170446fa4283570c5732edc
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 13:50:06 -0300
+
+ Channel: Added ChannelPtr typedef.
+
+ TelepathyQt4/Client/channel.h | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+commit 9bdf22a83857bf8971631963e14336e58561a4dc
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 13:47:50 -0300
+
+ PendingAccount: Return AccountPtr on account() method.
+
+ TelepathyQt4/Client/pending-account.cpp | 11 +++++------
+ TelepathyQt4/Client/pending-account.h | 3 +--
+ tests/dbus/account-basics.cpp | 2 +-
+ 3 files changed, 7 insertions(+), 9 deletions(-)
+
+commit 1a695ee510e63e6e1122e01d535491c8fbd3eff6
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 13:42:20 -0300
+
+ Account: Use QExplicitlySharedDataPointer for connections.
+
+ TelepathyQt4/Client/account.cpp | 11 +++++------
+ TelepathyQt4/Client/account.h | 4 ++--
+ TelepathyQt4/Client/connection.h | 2 ++
+ 3 files changed, 9 insertions(+), 8 deletions(-)
+
+commit ccee3bf99c20a9e5826429c36da0f07976de61ed
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 13:34:11 -0300
+
+ AccountManager: Use QExplicitlySharedDataPointer for accounts.
+
+ TelepathyQt4/Client/account-manager.cpp | 19 +++++++++----------
+ TelepathyQt4/Client/account-manager.h | 13 ++++++-------
+ TelepathyQt4/Client/account.h | 3 +++
+ tests/dbus/account-basics.cpp | 2 +-
+ 4 files changed, 19 insertions(+), 18 deletions(-)
+
+commit bbfc0586ae0d2dc439732c9750eda0a6c83c793b
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 13:01:28 -0300
+
+ ReadyObject: Inherit QSharedData.
+
+ Inherit QSharedData so our objects can be used with
+ QExplicitlySharedDataPointer.
+
+ TelepathyQt4/Client/ready-object.h | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+commit 9d25c1be0259615585655648a92e69a395a38efd
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 12:50:22 -0300
+
+ Connection: Use ReadyObject class.
+
+ TelepathyQt4/Client/connection.cpp | 68 +++--------------------------------
+ TelepathyQt4/Client/connection.h | 13 ++-----
+ 2 files changed, 9 insertions(+), 72 deletions(-)
+
+commit 679078dae3a4fb99a41e1fc45430df2241e6bc17
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 12:50:06 -0300
+
+ ConnectionManager: Use ReadyObject class.
+
+ TelepathyQt4/Client/connection-manager.cpp | 67 ++-------------------------
+ TelepathyQt4/Client/connection-manager.h | 13 +----
+ 2 files changed, 8 insertions(+), 72 deletions(-)
+
+commit 0ef3a960dec59d7493e9e9460b5e7dfb51004e65
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 12:49:52 -0300
+
+ Channel: Use ReadyObject class.
+
+ TelepathyQt4/Client/channel.cpp | 65 ++-------------------------------------
+ TelepathyQt4/Client/channel.h | 13 ++------
+ 2 files changed, 6 insertions(+), 72 deletions(-)
+
+commit e1dce2f1a92cffe2b1d20d45dbb22448e724056f
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 12:49:42 -0300
+
+ Account: Use ReadyObject class.
+
+ TelepathyQt4/Client/account.cpp | 64 ++-------------------------------------
+ TelepathyQt4/Client/account.h | 13 ++------
+ 2 files changed, 6 insertions(+), 71 deletions(-)
+
+commit e8fff8e5a5d7daf8f5c100cc1c5ff224b8c07bdf
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 12:49:26 -0300
+
+ AccountManager: Use ReadyObject class.
+
+ TelepathyQt4/Client/account-manager.cpp | 69 ++----------------------------
+ TelepathyQt4/Client/account-manager.h | 13 +----
+ 2 files changed, 8 insertions(+), 74 deletions(-)
+
+commit ca37911e76d90bacd8ce7c873205a98b40225694
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-18 12:48:45 -0300
+
+ ReadyObject: Added to repository.
+
+ ReadyObject is a base class for all classes that wants to implement
+ isReady/becomeReady features.
+
+ TelepathyQt4/Client/ReadyObject | 13 +++
+ TelepathyQt4/Client/readiness-helper.h | 4 +-
+ TelepathyQt4/Client/ready-object.cpp | 147 ++++++++++++++++++++++++++++++++
+ TelepathyQt4/Client/ready-object.h | 67 +++++++++++++++
+ TelepathyQt4/Makefile.am | 3 +
+ 5 files changed, 232 insertions(+), 2 deletions(-)
+
+commit c9acf126bd0c2d9f585f06c82aaaca5c284ec806
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 14:00:30 -0300
+
+ PendingConnection: Added serviceName/objectPath().
+
+ Added serviceName/objectPath methods on PendingConnection so custom connections can be
+ constructed.
+
+ TelepathyQt4/Client/pending-connection.cpp | 64 ++++++++++++++++++++++++----
+ TelepathyQt4/Client/pending-connection.h | 5 ++
+ 2 files changed, 60 insertions(+), 9 deletions(-)
+
+commit 9765078314b261f030168f20aa379b1f2197c128
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 13:59:48 -0300
+
+ PendingAccount: Added objectPath().
+
+ Added objectPath method on PendingAccount so custom accounts can be constructed.
+
+ TelepathyQt4/Client/pending-account.cpp | 37 +++++++++++++++++++++++++------
+ TelepathyQt4/Client/pending-account.h | 3 ++
+ 2 files changed, 33 insertions(+), 7 deletions(-)
+
+commit ae000ed5ba02ca5b7cebbc71b8d8e0e4954df10b
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 03:21:28 -0300
+
+ TextChannel: Fixed docs.
+
+ TelepathyQt4/Client/text-channel.cpp | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 6139e8c470ca73eeeae9d84083683acadf959913
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 02:42:58 -0300
+
+ TextChannel: delete watchers.
+
+ TelepathyQt4/Client/text-channel.cpp | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit 6fd4f8a97a2446e178f5d4be96e703677fbed92f
+Merge: cfa8af7 6b05719
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 19:25:50 -0300
+
+ Merge branch 'trivia'
+
+ Reviewed-by: Simon McVittie (smcv) <simon.mcvittie@collabora.co.uk>
+
+commit 6b057199a2312d126f1f251674a9bb0516f33d69
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 14:00:30 -0300
+
+ PendingConnection: Added serviceName/objectPath().
+
+ Added serviceName/objectPath methods on PendingConnection so custom connections can be
+ constructed.
+
+ TelepathyQt4/Client/pending-connection.cpp | 64 ++++++++++++++++++++++++----
+ TelepathyQt4/Client/pending-connection.h | 5 ++
+ 2 files changed, 60 insertions(+), 9 deletions(-)
+
+commit 028b600f87f9b28e7c63665b373544111244ce11
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-17 13:59:48 -0300
+
+ PendingAccount: Added objectPath().
+
+ Added objectPath method on PendingAccount so custom accounts can be constructed.
+
+ TelepathyQt4/Client/pending-account.cpp | 37 +++++++++++++++++++++++++------
+ TelepathyQt4/Client/pending-account.h | 3 ++
+ 2 files changed, 33 insertions(+), 7 deletions(-)
+
+commit f2a51397ae52e637605d2492c4e7131bb670b9ef
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 03:21:28 -0300
+
+ TextChannel: Fixed docs.
+
+ TelepathyQt4/Client/text-channel.cpp | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 8734a18617ac0829a1ffb4a6545c5898f3d35421
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-11 02:42:58 -0300
+
+ TextChannel: delete watchers.
+
+ TelepathyQt4/Client/text-channel.cpp | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+commit cfa8af7c604451f39ef83fd793f15e703ccbb418
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-06 16:54:47 -0300
+
+ Feature: Make it easy to handle Features.
+
+ Now it's possible to pass a single feature, without creating a Features var,
+ to isReady/becomeReady methods.
+
+ TelepathyQt4/Client/feature.h | 8 +++++++-
+ tests/dbus/account-basics.cpp | 25 ++++++++++---------------
+ 2 files changed, 17 insertions(+), 16 deletions(-)
+
+commit 4125235bacc782bb7a9c3d15baf14fdbd0fec478
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-06 16:28:12 -0300
+
+ ReadinessHelper: Propagate error message when a feature fails introspection.
+
+ TelepathyQt4/Client/account.cpp | 7 +-
+ TelepathyQt4/Client/connection-manager.cpp | 4 +-
+ TelepathyQt4/Client/connection.cpp | 10 +--
+ TelepathyQt4/Client/readiness-helper.cpp | 102 ++++++++++++++++++++++-----
+ TelepathyQt4/Client/readiness-helper.h | 14 +++-
+ TelepathyQt4/Client/text-channel.cpp | 6 +-
+ 6 files changed, 107 insertions(+), 36 deletions(-)
+
+commit 3fcc3010e63d739cbb7fffc15b683d1092aa73b4
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-06 15:07:06 -0300
+
+ Moved Feature to it's own header.
+
+ TelepathyQt4/Client/Feature | 13 ++++++
+ TelepathyQt4/Client/feature.cpp | 65 +++++++++++++++++++++++++++++++
+ TelepathyQt4/Client/feature.h | 66 ++++++++++++++++++++++++++++++++
+ TelepathyQt4/Client/readiness-helper.h | 17 +--------
+ TelepathyQt4/Makefile.am | 3 +
+ 5 files changed, 148 insertions(+), 16 deletions(-)
+
+commit 41ffc24e4ba5c27bedc71ceb5dfb7891625b5990
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-06 14:11:16 -0300
+
+ ReadinessHelper: Added critical feature concept.
+
+ Added critical feature concept and make FeatureCore critical in all classes.
+ isReady/becomeReady will fail if a critical feature cannot
+ not be satisfied.
+
+ TelepathyQt4/Client/account-manager.cpp | 6 ++--
+ TelepathyQt4/Client/account.cpp | 6 ++--
+ TelepathyQt4/Client/channel.cpp | 6 ++--
+ TelepathyQt4/Client/connection-manager.cpp | 6 ++--
+ TelepathyQt4/Client/connection.cpp | 6 ++--
+ TelepathyQt4/Client/readiness-helper.cpp | 51 ++++++++++++++++++++++------
+ TelepathyQt4/Client/readiness-helper.h | 27 ++++++++++++---
+ TelepathyQt4/Client/text-channel.cpp | 10 +++---
+ 8 files changed, 82 insertions(+), 36 deletions(-)
+
+commit 3d81aef292dc5ad6ada10e403eaf6b62a055f3ac
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-05 19:06:55 -0300
+
+ Channel/TextChannel: Use Readiness helper class.
+
+ Use Readiness helper class on Channel/TextChannel and removed PendingReadyChannel.
+
+ TelepathyQt4/Client/PendingReadyChannel | 13 -
+ TelepathyQt4/Client/channel.cpp | 137 ++++----
+ TelepathyQt4/Client/channel.h | 18 +-
+ TelepathyQt4/Client/connection.cpp | 1 -
+ TelepathyQt4/Client/pending-ready-channel.cpp | 110 ------
+ TelepathyQt4/Client/pending-ready-channel.h | 63 ---
+ TelepathyQt4/Client/text-channel.cpp | 522 ++++++++++--------------
+ TelepathyQt4/Client/text-channel.h | 29 +-
+ TelepathyQt4/Makefile.am | 4 -
+ tests/dbus/chan-basics.cpp | 1 -
+ tests/dbus/chan-group.cpp | 1 -
+ tests/dbus/text-chan.cpp | 33 +-
+ 12 files changed, 327 insertions(+), 605 deletions(-)
+
+commit 961e934056db997422d1a068d5d8868ae336cd5c
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-05 19:05:34 -0300
+
+ ReadinessHelper: Update supportedStatuses/Features on addIntrospectables.
+
+ TelepathyQt4/Client/readiness-helper.cpp | 9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+commit 2bb119c162b6347de661eea89d0a15204d22f0b5
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-05 16:28:01 -0300
+
+ Tests: Fixed build.
+
+ tests/dbus/account-basics.cpp | 10 +++++-----
+ tests/dbus/chan-basics.cpp | 2 +-
+ tests/dbus/conn-basics.cpp | 2 +-
+ tests/dbus/conn-roster.cpp | 2 +-
+ tests/dbus/contacts.cpp | 2 +-
+ tests/pinocchio/conn-basics.cpp | 3 ++-
+ 6 files changed, 11 insertions(+), 10 deletions(-)
+
+commit 4e372e6b1c2764d4b8800de468d6dbc04903ecce
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-05 16:27:38 -0300
+
+ roster example: fixed build.
+
+ examples/roster/roster-window.cpp | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+commit 38bbd39881fec50536cbbec705598dab47a9b26c
+Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
+Date: 2009-03-05 16:26:06 -0300
+
+ ReadinessHelper: Add subclass support.
+
+ P.s: Tests/examples broken (will be fixed in a later patch).
+
+ TelepathyQt4/Client/account-manager.cpp | 32 +++++--
+ TelepathyQt4/Client/account-manager.h | 22 ++---
+ TelepathyQt4/Client/account.cpp | 41 ++++++---
+ TelepathyQt4/Client/account.h | 26 +++---
+ TelepathyQt4/Client/connection-internal.h | 4 +-
+ TelepathyQt4/Client/connection-manager.cpp | 31 +++++--
+ TelepathyQt4/Client/connection-manager.h | 20 ++---
+ TelepathyQt4/Client/connection.cpp | 48 +++++++----
+ TelepathyQt4/Client/connection.h | 30 +++----
+ TelepathyQt4/Client/pending-ready.cpp | 9 +-
+ TelepathyQt4/Client/pending-ready.h | 5 +-
+ TelepathyQt4/Client/readiness-helper.cpp | 129 ++++++++++++++--------------
+ TelepathyQt4/Client/readiness-helper.h | 24 +++--
+ 13 files changed, 235 insertions(+), 186 deletions(-)
+
+commit e20a92d8b000c2cd91777da0160e62077980b181
+Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: 2009-03-05 19:06:15 +0000
+
+ Post-release version bump
+
+ NEWS | 5 +++++
+ configure.ac | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletions(-)
+
commit 6ac59411f93c7d84cef64dd60c955038ae4d4e1d
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-03-05 18:43:56 +0000
@@ -114,7 +1496,7 @@ Date: 2009-03-05 14:33:59 -0300
1 files changed, 0 insertions(+), 1 deletions(-)
commit 453c3975e00e2826665f4a0d02bcd418c0e912bc
-Merge: 2ebbbe7... 0b3ee41...
+Merge: 2ebbbe7 0b3ee41
Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
Date: 2009-03-05 12:50:53 -0300
@@ -123,7 +1505,7 @@ Date: 2009-03-05 12:50:53 -0300
Reviewed-by: Simon McVittie (smcv) <simon.mcvittie@collabora.co.uk>
commit 2ebbbe7df7772565230b49eef6d7a036814cdad6
-Merge: 037e36d... 4cda678...
+Merge: 037e36d 4cda678
Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
Date: 2009-03-05 12:07:35 -0300
@@ -644,7 +2026,7 @@ Date: 2009-03-03 15:21:49 +0000
2 files changed, 172 insertions(+), 0 deletions(-)
commit 037e36da3122bde70a16f783abcb011ae9b164a8
-Merge: 02e1654... 0601a69...
+Merge: 02e1654 0601a69
Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
Date: 2009-03-03 11:36:11 -0300
@@ -752,7 +2134,7 @@ Date: 2009-03-02 22:07:34 -0300
1 files changed, 2 insertions(+), 1 deletions(-)
commit 02e165450be83d662257e142dac8ff9319b13964
-Merge: 68eec1b... 349807c...
+Merge: 68eec1b 349807c
Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
Date: 2009-03-03 11:11:19 -0300
@@ -836,7 +2218,7 @@ Date: 2009-02-26 17:12:14 +0000
1 files changed, 9 insertions(+), 3 deletions(-)
commit 7445bf5c63a928899cf670b1c6cc4d997abf2109
-Merge: cd17393... 0e8ccfe...
+Merge: cd17393 0e8ccfe
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-02-24 13:32:54 +0000
@@ -1117,7 +2499,7 @@ Date: 2009-02-23 18:53:39 +0000
1 files changed, 0 insertions(+), 39 deletions(-)
commit fb4fa3d8513ae1790ebb6d470dba81aa959ce5ba
-Merge: aab494b... aaf0c4a...
+Merge: aab494b aaf0c4a
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-02-23 18:50:41 +0000
@@ -1126,7 +2508,7 @@ Date: 2009-02-23 18:50:41 +0000
Reviewed-by: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
commit aab494bdeee93694c0ba50e891203cbc6ef4f2e6
-Merge: 4b8618e... c8663ba...
+Merge: 4b8618e c8663ba
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-02-23 18:49:52 +0000
@@ -1138,7 +2520,7 @@ Date: 2009-02-23 18:49:52 +0000
Reviewed-by: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
commit 4b8618e99d2b52119122c606f4504bcbf0a28a11
-Merge: 463d42a... 5263719...
+Merge: 463d42a 5263719
Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
Date: 2009-02-23 15:38:34 -0300
@@ -1194,7 +2576,7 @@ Date: 2009-02-23 15:15:51 -0300
4 files changed, 8 insertions(+), 8 deletions(-)
commit 536e924c65bf538f64f40624f3251ab6bb712598
-Merge: 463d42a... c8663ba...
+Merge: 463d42a c8663ba
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-02-23 18:14:15 +0000
@@ -1744,7 +3126,7 @@ Date: 2009-02-18 15:04:19 +0000
1 files changed, 6 insertions(+), 0 deletions(-)
commit 189039169052c58f6d0e10d9138ea94cd71602cc
-Merge: be313ca... ed37f4a...
+Merge: be313ca ed37f4a
Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
Date: 2009-02-18 10:16:05 -0300
@@ -1769,7 +3151,7 @@ Date: 2009-02-17 15:45:09 +0000
1 files changed, 223 insertions(+), 0 deletions(-)
commit 263d167a9aef613ace7b9118482a998a604bb084
-Merge: 825836a... e2b79f1...
+Merge: 825836a e2b79f1
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-02-17 16:59:55 +0000
@@ -1815,21 +3197,21 @@ Date: 2009-02-17 10:33:46 -0300
1 files changed, 15 insertions(+), 2 deletions(-)
commit 825836a94575222a4b0735e8330f668bf4a180b2
-Merge: e82bcaf... 1d8da8a...
+Merge: e82bcaf 1d8da8a
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-15 13:51:03 +0200
Merge branch 'trivia-readiness' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4
commit e82bcaf55effa79f95e60abade3377b3cb751134
-Merge: 53be3a0... 74a628f...
+Merge: 53be3a0 74a628f
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-15 13:33:21 +0200
Merge branch 'channel' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4
commit 53be3a037ff5e3c6a730d0d16c7c587424202889
-Merge: 1206a1d... 2e5bc7a...
+Merge: 1206a1d 2e5bc7a
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-15 13:10:57 +0200
@@ -2202,14 +3584,14 @@ Date: 2009-02-12 19:06:03 +0200
1 files changed, 2 insertions(+), 0 deletions(-)
commit 174abcbdd01ec0358cb4135ee6124c503b0d72ee
-Merge: 18db555... a3f5872...
+Merge: 18db555 a3f5872
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-12 19:24:01 +0200
Merge branch 'trivia' of git://git.collabora.co.uk/git/user/andrunko/telepathy-qt4
commit 18db5552c1cf8b17e35de8b5b109115011fbd8ba
-Merge: a7d7cd9... d6fa0d0...
+Merge: a7d7cd9 d6fa0d0
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-12 19:22:28 +0200
@@ -2365,7 +3747,7 @@ Date: 2009-02-11 16:12:02 +0200
1 files changed, 1 insertions(+), 0 deletions(-)
commit cbcc24e3d4298bdb562c7645206125a03baec49c
-Merge: b949696... 134d238...
+Merge: b949696 134d238
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-11 15:51:40 +0200
@@ -2381,7 +3763,7 @@ Date: 2009-02-11 10:49:08 -0300
1 files changed, 32 insertions(+), 2 deletions(-)
commit b949696b9303f4ebd12e31ad5f148cd6536a7c7f
-Merge: ff73cd5... 4e01639...
+Merge: ff73cd5 4e01639
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-11 15:48:02 +0200
@@ -2437,7 +3819,7 @@ Date: 2009-02-11 14:44:40 +0200
3 files changed, 42 insertions(+), 77 deletions(-)
commit da5721c52213f23a4d310af6abe93e5fe31db442
-Merge: e6114ea... 45a702b...
+Merge: e6114ea 45a702b
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-11 09:58:54 +0200
@@ -2582,7 +3964,7 @@ Date: 2009-02-10 17:13:59 -0300
1 files changed, 8 insertions(+), 8 deletions(-)
commit e6114ea7120ed130ec225d1bc111fcedcb361523
-Merge: 849f671... 39ca862...
+Merge: 849f671 39ca862
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-10 22:00:49 +0200
@@ -2593,7 +3975,7 @@ Date: 2009-02-10 22:00:49 +0200
TelepathyQt4/Client/channel.cpp
commit 849f671da4b2efc38564be9cad60618ab55cbb91
-Merge: ced2ba4... 8888f1d...
+Merge: ced2ba4 8888f1d
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-02-10 12:50:37 +0000
@@ -2602,7 +3984,7 @@ Date: 2009-02-10 12:50:37 +0000
Reviewed-by: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
commit ced2ba45d25b2b87ddec5456d4c67e52b56bab9a
-Merge: 36ee092... ff0d897...
+Merge: 36ee092 ff0d897
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-02-10 12:47:43 +0000
@@ -2741,7 +4123,7 @@ Date: 2009-02-09 18:17:50 +0000
13 files changed, 619 insertions(+), 2 deletions(-)
commit 36ee092d3a8fe1d1dbaf364e00f1892cd0781604
-Merge: d86579e... 851b9a1...
+Merge: d86579e 851b9a1
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-02-10 11:22:05 +0000
@@ -3114,7 +4496,7 @@ Date: 2009-01-28 18:26:05 -0300
2 files changed, 83 insertions(+), 0 deletions(-)
commit d86579e34367641c4b2ca23096791950bf9fa72c
-Merge: 6766de2... cb90e42...
+Merge: 6766de2 cb90e42
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-02-05 16:19:11 +0200
@@ -3331,7 +4713,7 @@ Date: 2009-02-04 12:23:28 +0200
5 files changed, 106 insertions(+), 5 deletions(-)
commit 323eeab176c5f069baa8295f1e6702ab5fcb6d3b
-Merge: 6b877d5... aafc92a...
+Merge: 6b877d5 aafc92a
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-02-03 17:21:44 +0000
@@ -3467,7 +4849,7 @@ Date: 2009-02-01 19:41:51 +0200
3 files changed, 5 insertions(+), 5 deletions(-)
commit 6b877d59825edb0a68643fe9ff3d3f7057904db7
-Merge: 193c66a... 14673c2...
+Merge: 193c66a 14673c2
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-01-31 10:26:43 +0200
@@ -3570,7 +4952,7 @@ Date: 2009-01-29 22:29:47 +0000
1 files changed, 1 insertions(+), 0 deletions(-)
commit 00b99520d26358d53a77371161aa5a706723bda3
-Merge: f320683... 9a8ce93...
+Merge: f320683 9a8ce93
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-01-29 23:55:50 +0200
@@ -3728,7 +5110,7 @@ Date: 2009-01-29 21:14:06 +0200
1 files changed, 2 insertions(+), 12 deletions(-)
commit 5f9e1a66a87b6fd7b27b706b293ad6459cba929e
-Merge: dc5b6e8... a94ff32...
+Merge: dc5b6e8 a94ff32
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-01-29 21:05:57 +0200
@@ -3902,7 +5284,7 @@ Date: 2009-01-28 15:58:46 +0200
2 files changed, 81 insertions(+), 83 deletions(-)
commit 4c903d4bcb6a6db59e64a9aa29f875b0178fdfff
-Merge: 588ba73... 7a0d353...
+Merge: 588ba73 7a0d353
Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
Date: 2009-01-28 10:43:13 -0300
@@ -5158,7 +6540,7 @@ Date: 2009-01-21 16:03:21 +0000
3 files changed, 33 insertions(+), 49 deletions(-)
commit ba147032355ec7d8f465e466c4e6149dd16738f1
-Merge: a92ff3b... 620af04...
+Merge: a92ff3b 620af04
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-01-21 12:41:56 +0000
@@ -5207,7 +6589,7 @@ Date: 2009-01-19 15:03:34 +0000
1 files changed, 10 insertions(+), 16 deletions(-)
commit 938231d66621c4917b536e5f72dac9a37334c8f8
-Merge: f0c4e59... f905510...
+Merge: f0c4e59 f905510
Author: Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk>
Date: 2009-01-19 11:34:04 -0300
@@ -5628,7 +7010,7 @@ Date: 2009-01-15 12:48:41 +0000
3 files changed, 25 insertions(+), 4 deletions(-)
commit c041bf7aaa1fa2b12372b4e7efd753d899abfe15
-Merge: 584980e... 0871801...
+Merge: 584980e 0871801
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-01-15 08:46:20 +0200
@@ -5893,7 +7275,7 @@ Date: 2008-12-03 14:46:36 +0000
1 files changed, 51 insertions(+), 42 deletions(-)
commit 0871801796ae8266769b9b6ddbe10da6a81ef8c8
-Merge: 66aebc4... 5cafc49...
+Merge: 66aebc4 5cafc49
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-01-14 18:31:07 +0000
@@ -5935,7 +7317,7 @@ Date: 2009-01-12 17:35:31 +0200
6 files changed, 32 insertions(+), 3 deletions(-)
commit 14f233fa5c7ecad6cf95d9f80cf97079ac828dd0
-Merge: 4d4a5c8... b9758f0...
+Merge: 4d4a5c8 b9758f0
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2009-01-12 10:55:16 +0200
@@ -6452,7 +7834,7 @@ Date: 2009-01-08 15:04:54 +0000
4 files changed, 41 insertions(+), 37 deletions(-)
commit 302c0267fa2bfcb1eba6d8948c1d3ec640b911bf
-Merge: ecfd4b6... de7fc5a...
+Merge: ecfd4b6 de7fc5a
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-01-08 19:40:04 +0000
@@ -6523,7 +7905,7 @@ Date: 2009-01-07 18:32:46 -0300
1 files changed, 20 insertions(+), 22 deletions(-)
commit de7fc5a31283b3bfaf0b8e220cedbf6c259d0820
-Merge: a894fc8... e7cf7bb...
+Merge: a894fc8 e7cf7bb
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-01-07 14:29:39 +0000
@@ -6969,7 +8351,7 @@ Date: 2009-01-05 15:00:19 -0300
1 files changed, 3 insertions(+), 0 deletions(-)
commit 65b2db5befbe1078c3a1627dfa984d405352c708
-Merge: a9c899c... 2fb1a5c...
+Merge: a9c899c 2fb1a5c
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-01-05 19:00:16 +0000
@@ -7109,14 +8491,14 @@ Date: 2009-01-05 17:30:33 +0000
4 files changed, 4 insertions(+), 9 deletions(-)
commit d615b6a6aaa1abecd8409c395edcda4773698d02
-Merge: d498dbb... addd506...
+Merge: d498dbb addd506
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-01-05 16:57:47 +0000
Merge commit 'andrunko/misc'
commit d498dbb03dd10dcbdc18bef8eef32a75b6282c4c
-Merge: 90c0f92... d5b52d9...
+Merge: 90c0f92 d5b52d9
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-01-05 16:57:39 +0000
@@ -7157,7 +8539,7 @@ Date: 2009-01-05 11:36:04 -0300
1 files changed, 3 insertions(+), 0 deletions(-)
commit 92c322da25426b6a3d02becb322ba4c19857b1ac
-Merge: 6db3a8a... 67a3076...
+Merge: 6db3a8a 67a3076
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2009-01-05 16:54:27 +0000
@@ -7866,7 +9248,7 @@ Date: 2008-12-12 15:42:07 +0100
3 files changed, 75 insertions(+), 24 deletions(-)
commit bae4f19d1ba87cbc5438b0e2d8d474d573950723
-Merge: 59f75d8... 22bde40...
+Merge: 59f75d8 22bde40
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-12-12 15:46:46 +0200
@@ -7961,14 +9343,14 @@ Date: 2008-12-11 16:25:29 +0000
2 files changed, 113 insertions(+), 147 deletions(-)
commit 22bde400894ba83dd707b10fe810bcc45b3abb2c
-Merge: d24517c... 01944ea...
+Merge: d24517c 01944ea
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-11 13:11:59 +0000
Merge branch 'stefan-mediachan'
commit d24517ca4187c91dfb278cb260e95819b5de8c47
-Merge: c776cc6... 5d7c51e...
+Merge: c776cc6 5d7c51e
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-11 13:11:57 +0000
@@ -8119,7 +9501,7 @@ Date: 2008-12-05 15:13:04 +0000
3 files changed, 130 insertions(+), 0 deletions(-)
commit a78fd908efe5a0d43d0b304847a51a6d9adc468e
-Merge: ae2babf... ecce047...
+Merge: ae2babf ecce047
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-10 17:32:17 +0000
@@ -8431,21 +9813,21 @@ Date: 2008-12-09 17:30:45 +0200
5 files changed, 257 insertions(+), 154 deletions(-)
commit b382f3b35b52bc3f61f5924ba9561ab1f489eb19
-Merge: c8d6dfe... edd0a6b...
+Merge: c8d6dfe edd0a6b
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-09 15:53:42 +0000
Merge branch 'misc'
commit c8d6dfeef140996ff87de7c647114f67c65dc538
-Merge: 9506e04... dbf5e86...
+Merge: 9506e04 dbf5e86
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-09 15:49:19 +0000
Merge branch 'pending'
commit 9506e04ca1d8454721476e37a3143f6d0fab4920
-Merge: f72607d... 22a35fa...
+Merge: f72607d 22a35fa
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-09 15:43:46 +0000
@@ -8471,14 +9853,14 @@ Date: 2008-12-09 15:24:58 +0000
2 files changed, 13 insertions(+), 8 deletions(-)
commit f72607dc6453b2b25583b698139f8af1e35bf1e3
-Merge: 78f663c... e541b05...
+Merge: 78f663c e541b05
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-09 14:31:45 +0000
Merge branch 'trivia'
commit 78f663c02f60f7e1391d856169a09e01a2e11a91
-Merge: f23b0fd... fb938ed...
+Merge: f23b0fd fb938ed
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-12-09 16:01:52 +0200
@@ -8573,7 +9955,7 @@ Date: 2008-12-03 17:58:57 +0000
4 files changed, 32 insertions(+), 44 deletions(-)
commit fb938ed8849b0573e55aeed4dc842f2cfbeba7ea
-Merge: d1523af... 20aaac2...
+Merge: d1523af 20aaac2
Author: George Goldberg <george.goldberg@collabora.co.uk>
Date: 2008-12-03 17:48:03 +0000
@@ -8589,7 +9971,7 @@ Date: 2008-12-03 15:55:39 +0000
1 files changed, 6 insertions(+), 6 deletions(-)
commit d1523af721dbcceff1dc4b6dbbdcc2bc3ec00e73
-Merge: 3351f23... 64f1c2b...
+Merge: 3351f23 64f1c2b
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-03 15:46:54 +0000
@@ -8637,14 +10019,14 @@ Date: 2008-12-03 14:48:37 +0000
1 files changed, 1 insertions(+), 1 deletions(-)
commit 3351f2310ef00abd7f64a772bcab74b896e03972
-Merge: d9c0ef1... fafe45e...
+Merge: d9c0ef1 fafe45e
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-03 13:23:26 +0000
Merge branch 'buildsys'
commit d9c0ef1ab8a4968d04c3584c76126354d4959ff9
-Merge: 1d2d4b1... da6000c...
+Merge: 1d2d4b1 da6000c
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-03 13:18:04 +0000
@@ -8757,7 +10139,7 @@ Date: 2008-12-02 14:03:41 +0000
2 files changed, 3 insertions(+), 1 deletions(-)
commit 2710b38ac84cc8aa0496f2885e2eeb3b0f268455
-Merge: 5c57942... b15adbb...
+Merge: 5c57942 b15adbb
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-12-02 13:29:02 +0000
@@ -9338,7 +10720,7 @@ Date: 2008-11-26 12:42:00 +0000
1 files changed, 13 insertions(+), 12 deletions(-)
commit 53256321d3881b13e904521e56b919e1910a2a0f
-Merge: 30e5c81... ffc10a2...
+Merge: 30e5c81 ffc10a2
Author: Simon McVittie <simon.mcvittie@collabora.co.uk>
Date: 2008-11-26 12:28:23 +0000
@@ -9481,7 +10863,7 @@ Date: 2008-11-07 14:10:39 +0000
1 files changed, 2 insertions(+), 2 deletions(-)
commit b26f1458ab98495da9b69fa4b320fbf2c4cca7ac
-Merge: 8ed9aa0... 587126c...
+Merge: 8ed9aa0 587126c
Author: George Goldberg <george.goldberg@collabora.co.uk>
Date: 2008-11-07 14:03:12 +0000
@@ -9529,14 +10911,14 @@ Date: 2008-11-07 13:35:03 +0000
1 files changed, 3 insertions(+), 1 deletions(-)
commit 587126c2683a1551daa031bbbc12c2888a51a1fb
-Merge: 64b717b... c3e4460...
+Merge: 64b717b c3e4460
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-11-05 20:19:06 +0200
Merge branch 'chan-conn-elder-care'
commit 64b717be942695562fdea0906f76529171015fb8
-Merge: 9eaac7b... e1d8a7d...
+Merge: 9eaac7b e1d8a7d
Author: George Goldberg <george.goldberg@collabora.co.uk>
Date: 2008-11-05 16:18:56 +0000
@@ -9641,7 +11023,7 @@ Date: 2008-11-03 16:39:16 +0200
2 files changed, 2 insertions(+), 2 deletions(-)
commit 9eaac7b8d6d7c77ee7e80e27950ec49d7ffecceb
-Merge: d07d99d... 02fe103...
+Merge: d07d99d 02fe103
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-11-03 10:27:28 +0200
@@ -9783,7 +11165,7 @@ Date: 2008-10-29 16:10:20 +0000
2 files changed, 30 insertions(+), 10 deletions(-)
commit 835485e5871da0410afd1d354ad09c8bbaead60c
-Merge: b68caa3... 65fa72c...
+Merge: b68caa3 65fa72c
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-10-20 19:13:26 +0300
@@ -9893,14 +11275,14 @@ Date: 2008-09-30 00:01:11 +0300
22 files changed, 77 insertions(+), 22 deletions(-)
commit 97ef5b0008646c30c9a097baecb38a74d70f8f05
-Merge: cfa6edb... ab5082e...
+Merge: cfa6edb ab5082e
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-09-29 23:04:04 +0300
Merge branch 'extensibility'
commit 314e3d5005f679326e177c478fe3c2d53630b274
-Merge: 6c0f1dc... cfa6edb...
+Merge: 6c0f1dc cfa6edb
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-09-24 13:45:26 +0300
@@ -10010,14 +11392,14 @@ Date: 2008-09-22 01:35:32 +0300
2 files changed, 76 insertions(+), 30 deletions(-)
commit cd520d34a6fa30a28a19e671bfffcae88e205ff2
-Merge: d8c8ca5... 25dd788...
+Merge: d8c8ca5 25dd788
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-09-22 01:28:55 +0300
Merge branch 'master' into autointrospect-connection
commit 6c0f1dc7edc91c1f9561752fbe11f0b4ce2ab2e7
-Merge: 1f10b00... 25dd788...
+Merge: 1f10b00 25dd788
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-09-20 22:54:32 +0300
@@ -10037,7 +11419,7 @@ Date: 2008-09-20 22:29:22 +0300
1 files changed, 10 insertions(+), 4 deletions(-)
commit d8c8ca5f68382cc070e9079c1420a49cb1221bd7
-Merge: 8d0cc4e... 3f34d31...
+Merge: 8d0cc4e 3f34d31
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-09-20 20:55:36 +0300
@@ -10531,7 +11913,7 @@ Date: 2008-08-25 23:54:01 +0300
1 files changed, 0 insertions(+), 3 deletions(-)
commit 578190e359265bc8209d1339c69e15118182ec26
-Merge: 25233b5... 2602e88...
+Merge: 25233b5 2602e88
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-08-25 23:07:40 +0300
@@ -10647,7 +12029,7 @@ Date: 2008-08-19 01:47:30 +0300
2 files changed, 14 insertions(+), 15 deletions(-)
commit feab944a128e149f4311266d19e2f53c7885eaa4
-Merge: d85c4d5... 139aac2...
+Merge: d85c4d5 139aac2
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-08-13 22:06:33 +0300
@@ -10785,7 +12167,7 @@ Date: 2008-07-28 23:41:19 +0300
1 files changed, 1 insertions(+), 1 deletions(-)
commit 54dd0424291cc2e3a2e239a01dcebbb16340a2a3
-Merge: 01577f4... 87aa4ef...
+Merge: 01577f4 87aa4ef
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-07-27 17:15:39 +0300
@@ -10801,7 +12183,7 @@ Date: 2008-07-27 17:15:18 +0300
1 files changed, 1 insertions(+), 1 deletions(-)
commit 01577f45affccc07985856faf72fdb1672493686
-Merge: b334ed2... 46c5a09...
+Merge: b334ed2 46c5a09
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-07-27 16:59:54 +0300
@@ -11114,7 +12496,7 @@ Date: 2008-07-25 01:17:24 +0300
1 files changed, 11 insertions(+), 7 deletions(-)
commit 65292ecae0741cd9c7ecff81835ade9c22ecd1d3
-Merge: df8250a... bb77db9...
+Merge: df8250a bb77db9
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-07-24 15:01:39 +0300
@@ -11207,7 +12589,7 @@ Date: 2008-07-17 22:00:53 +0300
1 files changed, 0 insertions(+), 1 deletions(-)
commit 7c7025a8e64ace67884e25794945afd656c33b4f
-Merge: fb23aaf... e562d7c...
+Merge: fb23aaf e562d7c
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-07-17 20:51:05 +0300
@@ -11223,7 +12605,7 @@ Date: 2008-07-17 20:33:30 +0300
1 files changed, 1 insertions(+), 12 deletions(-)
commit fb23aafc59eadb0c45f5659fc2c36d83bb9d62c0
-Merge: 7afffed... 77e8739...
+Merge: 7afffed 77e8739
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-07-16 20:47:35 +0300
@@ -11257,7 +12639,7 @@ Date: 2008-07-16 20:41:05 +0300
1 files changed, 2 insertions(+), 2 deletions(-)
commit 719f0230b789d268b350a62ebdc82c22301ad0b3
-Merge: 4d9dd77... 1bf56cd...
+Merge: 4d9dd77 1bf56cd
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-07-16 19:28:03 +0300
@@ -11345,7 +12727,7 @@ Date: 2008-07-16 16:15:42 +0300
3 files changed, 3 insertions(+), 3 deletions(-)
commit 57c066f27dde99b70589daa0629210b89e29a57b
-Merge: ed01d9b... 733f88f...
+Merge: ed01d9b 733f88f
Author: Olli Salli <olli.salli@collabora.co.uk>
Date: 2008-07-16 16:00:26 +0300
diff --git a/Makefile.in b/Makefile.in
index 7ba7b1d..dbe2080 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -184,6 +184,8 @@ ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_CODING_STYLE_CHECKS = @ENABLE_CODING_STYLE_CHECKS@
+ENABLE_TP_FARSIGHT_EXAMPLES_FALSE = @ENABLE_TP_FARSIGHT_EXAMPLES_FALSE@
+ENABLE_TP_FARSIGHT_EXAMPLES_TRUE = @ENABLE_TP_FARSIGHT_EXAMPLES_TRUE@
ENABLE_TP_GLIB_TESTS_FALSE = @ENABLE_TP_GLIB_TESTS_FALSE@
ENABLE_TP_GLIB_TESTS_TRUE = @ENABLE_TP_GLIB_TESTS_TRUE@
ERROR_CFLAGS = @ERROR_CFLAGS@
@@ -250,6 +252,8 @@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TEST_PYTHON = @TEST_PYTHON@
+TP_FARSIGHT_CFLAGS = @TP_FARSIGHT_CFLAGS@
+TP_FARSIGHT_LIBS = @TP_FARSIGHT_LIBS@
TP_GLIB_CFLAGS = @TP_GLIB_CFLAGS@
TP_GLIB_LIBS = @TP_GLIB_LIBS@
TP_QT4_CFLAGS = @TP_QT4_CFLAGS@
diff --git a/NEWS b/NEWS
index db42aad..0c412d1 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,54 @@
+telepathy-qt4 0.1.2 (2009-03-23)
+================================
+
+The "robotic automatic hoover" release.
+
+Dependencies:
+
+* Full regression tests now require telepathy-glib >= 0.7.27 (telepathy-glib
+ is still optional)
+
+* telepathy-farsight >= 0.0.4 is a new optional dependency
+
+API changes:
+
+* AccountManager, Account, ConnectionManager, Connection, Channel
+ now inherit QSharedData and are used together with
+ QExplicitlySharedDataPointer.
+ This is needed so we can create shared pointers based on the object itself,
+ instead of doing hacks to find the shared pointer related to a given object.
+ See http://lists.freedesktop.org/archives/telepathy/2009-March/003168.html for
+ more details.
+
+* Channel Features are now Feature objects, not integers
+
+* The Feature class is now in its own header, <TelepathyQt4/Client/Feature>
+
+Enhancements:
+
+* The skeletal StreamedMediaChannel class from 0.1.0 has been expanded to
+ cover all the functionality of the Telepathy StreamedMedia interface
+
+* PendingConnection, PendingAccount etc. have busName and objectPath
+ methods where necessary, so that objects of custom classes can be
+ constructed
+
+* Features can now be considered critical, meaning that failure to set them up
+ leads to failure of becomeReady() - this should only be used for features
+ that should never fail unless the service is buggy, like Connection and
+ Channel core functionality
+
+* examples/call/ is an example of how to use StreamedMediaChannel, which can
+ make and receive XMPP Jingle calls using telepathy-gabble
+ (this feature requires telepathy-farsight and GStreamer)
+
+Fixes:
+
+* When introspection of a Feature fails, the D-Bus error is propagated as the
+ failure reason of becomeReady()
+
+* Fix a memory leak in TextChannel
+
telepathy-qt4 0.1.1 (2009-03-05)
================================
diff --git a/README b/README
index 26b1a13..0e8e659 100644
--- a/README
+++ b/README
@@ -33,6 +33,11 @@ For the full set of regression tests to run, you'll also need:
telepathy-glib <http://telepathy.freedesktop.org/releases/telepathy-glib/>
telepathy-pinocchio <http://telepathy.freedesktop.org/releases/telepathy-pinocchio/>
+and to build the example VoIP call UI (examples/call), you'll need:
+ telepathy-glib <http://telepathy.freedesktop.org/releases/telepathy-glib/>
+ telepathy-farsight <http://telepathy.freedesktop.org/releases/telepathy-farsight/>
+ GStreamer <http://gstreamer.freedesktop.org/>
+
See configure.ac for full details, including versions required.
Of the packages listed above, only QtCore and QtDBus are required at runtime.
diff --git a/TelepathyQt4/Client/Feature b/TelepathyQt4/Client/Feature
new file mode 100644
index 0000000..145336c
--- /dev/null
+++ b/TelepathyQt4/Client/Feature
@@ -0,0 +1,13 @@
+#ifndef _TelepathyQt4_Client_Feature_HEADER_GUARD_
+#define _TelepathyQt4_Client_Feature_HEADER_GUARD_
+
+#ifndef IN_TELEPATHY_QT4_HEADER
+#define IN_TELEPATHY_QT4_HEADER
+#endif
+
+#include <TelepathyQt4/Client/feature.h>
+
+#undef IN_TELEPATHY_QT4_HEADER
+
+#endif
+// vim:set ft=cpp:
diff --git a/TelepathyQt4/Client/PendingReadyChannel b/TelepathyQt4/Client/PendingReadyChannel
deleted file mode 100644
index 3a5529e..0000000
--- a/TelepathyQt4/Client/PendingReadyChannel
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef _TelepathyQt4_Client_PendingReadyChannel_HEADER_GUARD_
-#define _TelepathyQt4_Client_PendingReadyChannel_HEADER_GUARD_
-
-#ifndef IN_TELEPATHY_QT4_HEADER
-#define IN_TELEPATHY_QT4_HEADER
-#endif
-
-#include <TelepathyQt4/Client/pending-ready-channel.h>
-
-#undef IN_TELEPATHY_QT4_HEADER
-
-#endif
-// vim:set ft=cpp:
diff --git a/TelepathyQt4/Client/ReadyObject b/TelepathyQt4/Client/ReadyObject
new file mode 100644
index 0000000..37e4419
--- /dev/null
+++ b/TelepathyQt4/Client/ReadyObject
@@ -0,0 +1,13 @@
+#ifndef _TelepathyQt4_Client_ReadyObject_HEADER_GUARD_
+#define _TelepathyQt4_Client_ReadyObject_HEADER_GUARD_
+
+#ifndef IN_TELEPATHY_QT4_HEADER
+#define IN_TELEPATHY_QT4_HEADER
+#endif
+
+#include <TelepathyQt4/Client/ready-object.h>
+
+#undef IN_TELEPATHY_QT4_HEADER
+
+#endif
+// vim:set ft=cpp:
diff --git a/TelepathyQt4/Client/account-manager.cpp b/TelepathyQt4/Client/account-manager.cpp
index 01ff26e..899e5ee 100644
--- a/TelepathyQt4/Client/account-manager.cpp
+++ b/TelepathyQt4/Client/account-manager.cpp
@@ -27,10 +27,8 @@
#include "TelepathyQt4/debug-internal.h"
-#include <TelepathyQt4/Client/Account>
#include <TelepathyQt4/Client/PendingAccount>
#include <TelepathyQt4/Client/PendingReady>
-#include <TelepathyQt4/Client/ReadinessHelper>
#include <TelepathyQt4/Constants>
#include <QQueue>
@@ -84,29 +82,30 @@ struct AccountManager::Private
QStringList interfaces;
QSet<QString> validAccountPaths;
QSet<QString> invalidAccountPaths;
- QMap<QString, QSharedPointer<Account> > accounts;
+ QMap<QString, AccountPtr> accounts;
};
AccountManager::Private::Private(AccountManager *parent)
: parent(parent),
baseInterface(new AccountManagerInterface(parent->dbusConnection(),
- parent->busName(), parent->objectPath(), parent))
+ parent->busName(), parent->objectPath(), parent)),
+ readinessHelper(parent->readinessHelper())
{
debug() << "Creating new AccountManager:" << parent->busName();
- QMap<uint, ReadinessHelper::Introspectable> introspectables;
+ ReadinessHelper::Introspectables introspectables;
// As AccountManager does not have predefined statuses let's simulate one (0)
ReadinessHelper::Introspectable introspectableCore(
QSet<uint>() << 0, // makesSenseForStatuses
- QSet<uint>(), // dependsOnFeatures
+ Features(), // dependsOnFeatures
QStringList(), // dependsOnInterfaces
(ReadinessHelper::IntrospectFunc) &Private::introspectMain,
this);
introspectables[FeatureCore] = introspectableCore;
- readinessHelper = new ReadinessHelper(parent, 0 /* status */,
- introspectables, parent);
+ readinessHelper->addIntrospectables(introspectables);
+ readinessHelper->becomeReady(Features() << FeatureCore);
init();
}
@@ -150,6 +149,8 @@ void AccountManager::Private::setAccountPaths(QSet<QString> &set,
* Object representing a Telepathy account manager.
*/
+const Feature AccountManager::FeatureCore = Feature(AccountManager::staticMetaObject.className(), 0, true);
+
/**
* Construct a new AccountManager object.
*
@@ -160,6 +161,7 @@ AccountManager::AccountManager(QObject* parent)
QLatin1String(TELEPATHY_ACCOUNT_MANAGER_BUS_NAME),
QLatin1String(TELEPATHY_ACCOUNT_MANAGER_OBJECT_PATH), parent),
OptionalInterfaceFactory<AccountManager>(this),
+ ReadyObject(this, FeatureCore),
mPriv(new Private(this))
{
}
@@ -176,6 +178,7 @@ AccountManager::AccountManager(const QDBusConnection& bus,
QLatin1String(TELEPATHY_ACCOUNT_MANAGER_BUS_NAME),
QLatin1String(TELEPATHY_ACCOUNT_MANAGER_OBJECT_PATH), parent),
OptionalInterfaceFactory<AccountManager>(this),
+ ReadyObject(this, FeatureCore),
mPriv(new Private(this))
{
}
@@ -246,7 +249,7 @@ QStringList AccountManager::allAccountPaths() const
* \return A list of Account objects
* \sa invalidAccounts(), allAccounts(), accountsForPaths()
*/
-QList<QSharedPointer<Account> > AccountManager::validAccounts()
+QList<AccountPtr> AccountManager::validAccounts()
{
return accountsForPaths(validAccountPaths());
}
@@ -263,7 +266,7 @@ QList<QSharedPointer<Account> > AccountManager::validAccounts()
* \return A list of Account objects
* \sa validAccounts(), allAccounts(), accountsForPaths()
*/
-QList<QSharedPointer<Account> > AccountManager::invalidAccounts()
+QList<AccountPtr> AccountManager::invalidAccounts()
{
return accountsForPaths(invalidAccountPaths());
}
@@ -280,7 +283,7 @@ QList<QSharedPointer<Account> > AccountManager::invalidAccounts()
* \return A list of Account objects
* \sa validAccounts(), invalidAccounts(), accountsForPaths()
*/
-QList<QSharedPointer<Account> > AccountManager::allAccounts()
+QList<AccountPtr> AccountManager::allAccounts()
{
return accountsForPaths(allAccountPaths());
}
@@ -298,7 +301,7 @@ QList<QSharedPointer<Account> > AccountManager::allAccounts()
* \return A list of Account objects
* \sa validAccounts(), invalidAccounts(), accountsForPaths()
*/
-QSharedPointer<Account> AccountManager::accountForPath(const QString &path)
+AccountPtr AccountManager::accountForPath(const QString &path)
{
if (mPriv->accounts.contains(path)) {
return mPriv->accounts[path];
@@ -306,10 +309,10 @@ QSharedPointer<Account> AccountManager::accountForPath(const QString &path)
if (!mPriv->validAccountPaths.contains(path) &&
!mPriv->invalidAccountPaths.contains(path)) {
- return QSharedPointer<Account>();
+ return AccountPtr();
}
- QSharedPointer<Account> account = QSharedPointer<Account>(
+ AccountPtr account = AccountPtr(
new Account(this, path));
mPriv->accounts[path] = account;
return account;
@@ -328,9 +331,9 @@ QSharedPointer<Account> AccountManager::accountForPath(const QString &path)
* \return A list of Account objects
* \sa validAccounts(), invalidAccounts(), allAccounts()
*/
-QList<QSharedPointer<Account> > AccountManager::accountsForPaths(const QStringList &paths)
+QList<AccountPtr> AccountManager::accountsForPaths(const QStringList &paths)
{
- QList<QSharedPointer<Account> > result;
+ QList<AccountPtr> result;
foreach (const QString &path, paths) {
result << accountForPath(path);
}
@@ -359,55 +362,6 @@ PendingAccount *AccountManager::createAccount(const QString &connectionManager,
}
/**
- * Return whether this object has finished its initial setup.
- *
- * This is mostly useful as a sanity check, in code that shouldn't be run
- * until the object is ready. To wait for the object to be ready, call
- * becomeReady() and connect to the finished signal on the result.
- *
- * \param features The features which should be tested
- * \return \c true if the object has finished its initial setup for basic
- * functionality plus the given features
- */
-bool AccountManager::isReady(const QSet<uint> &features) const
-{
- return mPriv->readinessHelper->isReady(features);
-}
-
-/**
- * Return a pending operation which will succeed when this object finishes
- * its initial setup, or will fail if a fatal error occurs during this
- * initial setup.
- *
- * If an empty set is used FeatureCore will be considered as the requested
- * feature.
- *
- * \param requestedFeatures The features which should be enabled
- * \return A PendingReady object which will emit finished
- * when this object has finished or failed initial setup for basic
- * functionality plus the given features
- */
-PendingReady *AccountManager::becomeReady(const QSet<uint> &requestedFeatures)
-{
- return mPriv->readinessHelper->becomeReady(requestedFeatures);
-}
-
-QSet<uint> AccountManager::requestedFeatures() const
-{
- return mPriv->readinessHelper->requestedFeatures();
-}
-
-QSet<uint> AccountManager::actualFeatures() const
-{
- return mPriv->readinessHelper->actualFeatures();
-}
-
-QSet<uint> AccountManager::missingFeatures() const
-{
- return mPriv->readinessHelper->missingFeatures();
-}
-
-/**
* Get the AccountManagerInterface for this AccountManager. This
* method is protected since the convenience methods provided by this
* class should generally be used instead of calling D-Bus methods
diff --git a/TelepathyQt4/Client/account-manager.h b/TelepathyQt4/Client/account-manager.h
index 2717d03..57ee90e 100644
--- a/TelepathyQt4/Client/account-manager.h
+++ b/TelepathyQt4/Client/account-manager.h
@@ -28,13 +28,17 @@
#include <TelepathyQt4/_gen/cli-account-manager.h>
+#include <TelepathyQt4/Client/Account>
#include <TelepathyQt4/Client/DBus>
#include <TelepathyQt4/Client/DBusProxy>
#include <TelepathyQt4/Client/OptionalInterfaceFactory>
+#include <TelepathyQt4/Client/ReadinessHelper>
+#include <TelepathyQt4/Client/ReadyObject>
#include <QDBusObjectPath>
+#include <QExplicitlySharedDataPointer>
#include <QSet>
-#include <QSharedPointer>
+#include <QSharedData>
#include <QString>
#include <QVariantMap>
@@ -43,23 +47,20 @@ namespace Telepathy
namespace Client
{
-class Account;
class AccountManager;
class PendingAccount;
class PendingReady;
class AccountManager : public StatelessDBusProxy,
- private OptionalInterfaceFactory<AccountManager>
+ private OptionalInterfaceFactory<AccountManager>,
+ public ReadyObject,
+ public QSharedData
{
Q_OBJECT
Q_DISABLE_COPY(AccountManager)
public:
- enum Feature {
- FeatureCore = 0,
- _Padding = 0xFFFFFFFF
- };
- Q_DECLARE_FLAGS(Features, Feature)
+ static const Feature FeatureCore;
AccountManager(QObject *parent = 0);
AccountManager(const QDBusConnection &bus, QObject *parent = 0);
@@ -77,12 +78,12 @@ public:
QStringList invalidAccountPaths() const;
QStringList allAccountPaths() const;
- QList<QSharedPointer<Account> > validAccounts();
- QList<QSharedPointer<Account> > invalidAccounts();
- QList<QSharedPointer<Account> > allAccounts();
+ QList<AccountPtr> validAccounts();
+ QList<AccountPtr> invalidAccounts();
+ QList<AccountPtr> allAccounts();
- QSharedPointer<Account> accountForPath(const QString &path);
- QList<QSharedPointer<Account> > accountsForPaths(const QStringList &paths);
+ AccountPtr accountForPath(const QString &path);
+ QList<AccountPtr> accountsForPaths(const QStringList &paths);
PendingAccount *createAccount(const QString &connectionManager,
const QString &protocol, const QString &displayName,
@@ -90,14 +91,6 @@ public:
// TODO: enabledAccounts(), accountsByProtocol(), ... ?
- bool isReady(const QSet<uint> &features = QSet<uint>()) const;
-
- PendingReady *becomeReady(const QSet<uint> &requestedFeatures = QSet<uint>());
-
- QSet<uint> requestedFeatures() const;
- QSet<uint> actualFeatures() const;
- QSet<uint> missingFeatures() const;
-
Q_SIGNALS:
void accountCreated(const QString &path);
void accountRemoved(const QString &path);
@@ -118,7 +111,7 @@ private:
Private *mPriv;
};
-Q_DECLARE_OPERATORS_FOR_FLAGS(AccountManager::Features)
+typedef QExplicitlySharedDataPointer<AccountManager> AccountManagerPtr;
} // Telepathy::Client
} // Telepathy
diff --git a/TelepathyQt4/Client/account.cpp b/TelepathyQt4/Client/account.cpp
index 496f3e2..e287ad2 100644
--- a/TelepathyQt4/Client/account.cpp
+++ b/TelepathyQt4/Client/account.cpp
@@ -28,12 +28,10 @@
#include "TelepathyQt4/debug-internal.h"
#include <TelepathyQt4/Client/AccountManager>
-#include <TelepathyQt4/Client/Connection>
#include <TelepathyQt4/Client/ConnectionManager>
#include <TelepathyQt4/Client/PendingFailure>
#include <TelepathyQt4/Client/PendingReady>
#include <TelepathyQt4/Client/PendingVoidMethodCall>
-#include <TelepathyQt4/Client/ReadinessHelper>
#include <TelepathyQt4/Constants>
#include <TelepathyQt4/Debug>
@@ -101,7 +99,7 @@ struct Account::Private
Telepathy::SimplePresence automaticPresence;
Telepathy::SimplePresence currentPresence;
Telepathy::SimplePresence requestedPresence;
- QSharedPointer<Connection> connection;
+ ConnectionPtr connection;
};
Account::Private::Private(Account *parent, AccountManager *am)
@@ -109,6 +107,7 @@ Account::Private::Private(Account *parent, AccountManager *am)
am(am),
baseInterface(new AccountInterface(parent->dbusConnection(),
parent->busName(), parent->objectPath(), parent)),
+ readinessHelper(parent->readinessHelper()),
valid(false),
enabled(false),
connectsAutomatically(false),
@@ -146,12 +145,12 @@ Account::Private::Private(Account *parent, AccountManager *am)
}
}
- QMap<uint, ReadinessHelper::Introspectable> introspectables;
+ ReadinessHelper::Introspectables introspectables;
// As Account does not have predefined statuses let's simulate one (0)
ReadinessHelper::Introspectable introspectableCore(
QSet<uint>() << 0, // makesSenseForStatuses
- QSet<uint>(), // dependsOnFeatures
+ Features(), // dependsOnFeatures
QStringList(), // dependsOnInterfaces
(ReadinessHelper::IntrospectFunc) &Private::introspectMain,
this);
@@ -159,7 +158,7 @@ Account::Private::Private(Account *parent, AccountManager *am)
ReadinessHelper::Introspectable introspectableAvatar(
QSet<uint>() << 0, // makesSenseForStatuses
- QSet<uint>() << FeatureCore, // dependsOnFeatures (core)
+ Features() << FeatureCore, // dependsOnFeatures (core)
QStringList() << TELEPATHY_INTERFACE_ACCOUNT_INTERFACE_AVATAR, // dependsOnInterfaces
(ReadinessHelper::IntrospectFunc) &Private::introspectAvatar,
this);
@@ -167,14 +166,14 @@ Account::Private::Private(Account *parent, AccountManager *am)
ReadinessHelper::Introspectable introspectableProtocolInfo(
QSet<uint>() << 0, // makesSenseForStatuses
- QSet<uint>() << FeatureCore, // dependsOnFeatures (core)
+ Features() << FeatureCore, // dependsOnFeatures (core)
QStringList(), // dependsOnInterfaces
(ReadinessHelper::IntrospectFunc) &Private::introspectProtocolInfo,
this);
introspectables[FeatureProtocolInfo] = introspectableProtocolInfo;
- readinessHelper = new ReadinessHelper(parent, 0 /* status */,
- introspectables, parent);
+ readinessHelper->addIntrospectables(introspectables);
+ readinessHelper->becomeReady(Features() << FeatureCore);
init();
}
@@ -195,6 +194,10 @@ Account::Private::~Private()
* and will cease to be useful.
*/
+const Feature Account::FeatureCore = Feature(Account::staticMetaObject.className(), 0, true);
+const Feature Account::FeatureAvatar = Feature(Account::staticMetaObject.className(), 1);
+const Feature Account::FeatureProtocolInfo = Feature(Account::staticMetaObject.className(), 2);
+
/**
* Construct a new Account object.
*
@@ -207,6 +210,7 @@ Account::Account(AccountManager *am, const QString &objectPath,
: StatelessDBusProxy(am->dbusConnection(),
am->busName(), objectPath, parent),
OptionalInterfaceFactory<Account>(this),
+ ReadyObject(this, FeatureCore),
mPriv(new Private(this, am))
{
}
@@ -374,7 +378,7 @@ PendingOperation *Account::setNickname(const QString &value)
*/
const Telepathy::Avatar &Account::avatar() const
{
- if (!isReady(QSet<uint>() << FeatureAvatar)) {
+ if (!isReady(Features() << FeatureAvatar)) {
warning() << "Trying to retrieve avatar from account, but "
"avatar is not supported or was not requested. "
"Use becomeReady(FeatureAvatar)";
@@ -439,7 +443,7 @@ PendingOperation *Account::updateParameters(const QVariantMap &set,
*/
ProtocolInfo *Account::protocolInfo() const
{
- if (!isReady(QSet<uint>() << FeatureProtocolInfo)) {
+ if (!isReady(Features() << FeatureProtocolInfo)) {
warning() << "Trying to retrieve protocol info from account, but "
"protocol info is not supported or was not requested. "
"Use becomeReady(FeatureProtocolInfo)";
@@ -515,16 +519,16 @@ bool Account::haveConnection() const
*
* \return Connection object, or 0 if an error occurred.
*/
-QSharedPointer<Connection> Account::connection() const
+ConnectionPtr Account::connection() const
{
if (mPriv->connectionObjectPath.isEmpty()) {
- return QSharedPointer<Connection>();
+ return ConnectionPtr();
}
QString objectPath = mPriv->connectionObjectPath;
- QString serviceName = objectPath.mid(1).replace('/', '.');
+ QString busName = objectPath.mid(1).replace('/', '.');
if (!mPriv->connection) {
- mPriv->connection = QSharedPointer<Connection>(
- new Connection(dbusConnection(), serviceName, objectPath));
+ mPriv->connection = ConnectionPtr(
+ new Connection(dbusConnection(), busName, objectPath));
}
return mPriv->connection;
}
@@ -640,54 +644,6 @@ PendingOperation *Account::remove()
return new PendingVoidMethodCall(this, baseInterface()->Remove());
}
-/**
- * Return whether this object has finished its initial setup.
- *
- * This is mostly useful as a sanity check, in code that shouldn't be run
- * until the object is ready. To wait for the object to be ready, call
- * becomeReady() and connect to the finished signal on the result.
- *
- * \param features The features which should be tested
- * \return \c true if the object has finished its initial setup for basic
- * functionality plus the given features
- */
-bool Account::isReady(const QSet<uint> &features) const
-{
- return mPriv->readinessHelper->isReady(features);
-}
-
-/**
- * Return a pending ready account which will succeed when this object finishes
- * its initial setup, or will fail if a fatal error occurs during this
- * initial setup.
- *
- * If an empty set is used FeatureCore will be considered as the requested
- * feature.
- *
- * \param requestedFeatures The features which should be enabled.
- * \return A PendingReady object which will emit finished
- * when this object has finished or failed its initial setup.
- */
-PendingReady *Account::becomeReady(const QSet<uint> &requestedFeatures)
-{
- return mPriv->readinessHelper->becomeReady(requestedFeatures);
-}
-
-QSet<uint> Account::requestedFeatures() const
-{
- return mPriv->readinessHelper->requestedFeatures();
-}
-
-QSet<uint> Account::actualFeatures() const
-{
- return mPriv->readinessHelper->actualFeatures();
-}
-
-QSet<uint> Account::missingFeatures() const
-{
- return mPriv->readinessHelper->missingFeatures();
-}
-
QStringList Account::interfaces() const
{
return mPriv->interfaces;
@@ -920,7 +876,7 @@ void Account::Private::updateProperties(const QVariantMap &props)
}
if (connectionObjectPath != path) {
- connection.clear();
+ connection.reset();
connectionObjectPath = path;
emit parent->haveConnectionChanged(!path.isEmpty());
}
@@ -978,7 +934,7 @@ void Account::gotMainProperties(QDBusPendingCallWatcher *watcher)
debug() << "Account basic functionality is ready";
mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true);
} else {
- mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false);
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error());
warning().nospace() <<
"GetAll(Account) failed: " <<
@@ -1006,7 +962,7 @@ void Account::gotAvatar(QDBusPendingCallWatcher *watcher)
// check if the feature is already there, and for some reason retrieveAvatar
// failed when called the second time
if (!mPriv->readinessHelper->missingFeatures().contains(FeatureAvatar)) {
- mPriv->readinessHelper->setIntrospectCompleted(FeatureAvatar, false);
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureAvatar, false, reply.error());
}
warning().nospace() <<
@@ -1041,7 +997,8 @@ void Account::onConnectionManagerReady(PendingOperation *operation)
mPriv->readinessHelper->setIntrospectCompleted(FeatureProtocolInfo, true);
}
else {
- mPriv->readinessHelper->setIntrospectCompleted(FeatureProtocolInfo, false);
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureProtocolInfo, false,
+ operation->errorName(), operation->errorMessage());
}
}
diff --git a/TelepathyQt4/Client/account.h b/TelepathyQt4/Client/account.h
index 53c60ac..57b0370 100644
--- a/TelepathyQt4/Client/account.h
+++ b/TelepathyQt4/Client/account.h
@@ -28,13 +28,17 @@
#include <TelepathyQt4/_gen/cli-account.h>
+#include <TelepathyQt4/Client/Connection>
#include <TelepathyQt4/Client/DBus>
#include <TelepathyQt4/Client/DBusProxy>
#include <TelepathyQt4/Client/OptionalInterfaceFactory>
+#include <TelepathyQt4/Client/ReadinessHelper>
+#include <TelepathyQt4/Client/ReadyObject>
#include <TelepathyQt4/Constants>
+#include <QExplicitlySharedDataPointer>
#include <QSet>
-#include <QSharedPointer>
+#include <QSharedData>
#include <QString>
#include <QStringList>
#include <QVariantMap>
@@ -53,19 +57,18 @@ class PendingReady;
class ProtocolInfo;
class Account : public StatelessDBusProxy,
- private OptionalInterfaceFactory<Account>
+ private OptionalInterfaceFactory<Account>,
+ public ReadyObject,
+ public QSharedData
+
{
Q_OBJECT
Q_DISABLE_COPY(Account)
public:
- enum Feature {
- FeatureCore = 0,
- FeatureAvatar = 1,
- FeatureProtocolInfo = 2,
- _Padding = 0xFFFFFFFF
- };
- Q_DECLARE_FLAGS(Features, Feature)
+ static const Feature FeatureCore;
+ static const Feature FeatureAvatar;
+ static const Feature FeatureProtocolInfo;
Account(AccountManager *am, const QString &objectPath,
QObject *parent = 0);
@@ -109,7 +112,7 @@ public:
Telepathy::ConnectionStatus connectionStatus() const;
Telepathy::ConnectionStatusReason connectionStatusReason() const;
bool haveConnection() const;
- QSharedPointer<Connection> connection() const;
+ ConnectionPtr connection() const;
Telepathy::SimplePresence automaticPresence() const;
PendingOperation *setAutomaticPresence(
@@ -130,14 +133,6 @@ public:
PendingOperation *remove();
- bool isReady(const QSet<uint> &features = QSet<uint>()) const;
-
- PendingReady *becomeReady(const QSet<uint> &requestedFeatures = QSet<uint>());
-
- QSet<uint> requestedFeatures() const;
- QSet<uint> actualFeatures() const;
- QSet<uint> missingFeatures() const;
-
QStringList interfaces() const;
template <class Interface>
@@ -199,7 +194,7 @@ private:
Private *mPriv;
};
-Q_DECLARE_OPERATORS_FOR_FLAGS(Account::Features)
+typedef QExplicitlySharedDataPointer<Account> AccountPtr;
} // Telepathy::Client
} // Telepathy
diff --git a/TelepathyQt4/Client/channel.cpp b/TelepathyQt4/Client/channel.cpp
index 0a8ee5a..9ee2af6 100644
--- a/TelepathyQt4/Client/channel.cpp
+++ b/TelepathyQt4/Client/channel.cpp
@@ -31,7 +31,7 @@
#include <TelepathyQt4/Client/PendingContacts>
#include <TelepathyQt4/Client/PendingFailure>
#include <TelepathyQt4/Client/PendingOperation>
-#include <TelepathyQt4/Client/PendingReadyChannel>
+#include <TelepathyQt4/Client/PendingReady>
#include <TelepathyQt4/Client/PendingSuccess>
#include <TelepathyQt4/Client/ReferencedHandles>
#include <TelepathyQt4/Constants>
@@ -69,7 +69,7 @@ struct Channel::Private
Private(Channel *parent, Connection *connection);
~Private();
- void introspectMain();
+ static void introspectMain(Private *self);
void introspectMainFallbackChannelType();
void introspectMainFallbackHandle();
void introspectMainFallbackInterfaces();
@@ -89,8 +89,8 @@ struct Channel::Private
void buildContacts();
void processMembersChanged();
- void updateContacts(const QList<QSharedPointer<Contact> > &contacts =
- QList<QSharedPointer<Contact> >());
+ void updateContacts(const QList<ContactPtr> &contacts =
+ QList<ContactPtr>());
bool fakeGroupInterfaceIfNeeded();
void setReady();
@@ -109,15 +109,12 @@ struct Channel::Private
ChannelInterfaceGroupInterface *group;
DBus::PropertiesInterface *properties;
- bool ready;
- PendingReadyChannel *pendingReady;
+ ReadinessHelper *readinessHelper;
// Introspection
QStringList interfaces;
QQueue<void (Private::*)()> introspectQueue;
- Channel::Features features;
-
// Introspected properties
// Main interface
@@ -126,7 +123,7 @@ struct Channel::Private
uint targetHandle;
bool requested;
uint initiatorHandle;
- QSharedPointer<Contact> initiatorContact;
+ ContactPtr initiatorContact;
// Group flags
uint groupFlags;
@@ -154,9 +151,9 @@ struct Channel::Private
UIntList groupInitialRP;
// Current members
- QHash<uint, QSharedPointer<Contact> > groupContacts;
- QHash<uint, QSharedPointer<Contact> > groupLocalPendingContacts;
- QHash<uint, QSharedPointer<Contact> > groupRemotePendingContacts;
+ QHash<uint, ContactPtr> groupContacts;
+ QHash<uint, ContactPtr> groupLocalPendingContacts;
+ QHash<uint, ContactPtr> groupRemotePendingContacts;
// Stored change info
QHash<uint, GroupMemberChangeDetails> groupLocalPendingContactsChangeInfo;
@@ -170,7 +167,7 @@ struct Channel::Private
bool pendingRetrieveGroupSelfContact;
bool groupIsSelfHandleTracked;
uint groupSelfHandle;
- QSharedPointer<Contact> groupSelfContact;
+ ContactPtr groupSelfContact;
};
struct Channel::Private::GroupMembersChangedInfo
@@ -207,9 +204,7 @@ Channel::Private::Private(Channel *parent, Connection *connection)
connection(connection),
group(0),
properties(0),
- ready(false),
- pendingReady(0),
- features(0),
+ readinessHelper(parent->readinessHelper()),
targetHandleType(0),
targetHandle(0),
requested(false),
@@ -224,7 +219,7 @@ Channel::Private::Private(Channel *parent, Connection *connection)
groupIsSelfHandleTracked(false),
groupSelfHandle(0)
{
- debug() << "Creating new Channel";
+ debug() << "Creating new Channel:" << parent->busName();
if (connection->isValid()) {
debug() << " Connecting to Channel::Closed() signal";
@@ -248,6 +243,20 @@ Channel::Private::Private(Channel *parent, Connection *connection)
parent->invalidate(TELEPATHY_ERROR_INVALID_ARGUMENT,
"Connection given as the owner of this channel was invalid");
}
+
+ ReadinessHelper::Introspectables introspectables;
+
+ // As Channel does not have predefined statuses let's simulate one (0)
+ ReadinessHelper::Introspectable introspectableCore(
+ QSet<uint>() << 0, // makesSenseForStatuses
+ Features(), // dependsOnFeatures
+ QStringList(), // dependsOnInterfaces
+ (ReadinessHelper::IntrospectFunc) &Private::introspectMain,
+ this);
+ introspectables[FeatureCore] = introspectableCore;
+
+ readinessHelper->addIntrospectables(introspectables);
+ readinessHelper->becomeReady(Features() << FeatureCore);
}
Channel::Private::~Private()
@@ -258,20 +267,21 @@ Channel::Private::~Private()
}
}
-void Channel::Private::introspectMain()
+void Channel::Private::introspectMain(Channel::Private *self)
{
- if (!properties) {
- properties = parent->propertiesInterface();
- Q_ASSERT(properties != 0);
+ if (!self->properties) {
+ self->properties = self->parent->propertiesInterface();
+ Q_ASSERT(self->properties != 0);
}
debug() << "Calling Properties::GetAll(Channel)";
QDBusPendingCallWatcher *watcher =
new QDBusPendingCallWatcher(
- properties->GetAll(TELEPATHY_INTERFACE_CHANNEL), parent);
- parent->connect(watcher,
- SIGNAL(finished(QDBusPendingCallWatcher*)),
- SLOT(gotMainProperties(QDBusPendingCallWatcher*)));
+ self->properties->GetAll(TELEPATHY_INTERFACE_CHANNEL),
+ self->parent);
+ self->parent->connect(watcher,
+ SIGNAL(finished(QDBusPendingCallWatcher*)),
+ SLOT(gotMainProperties(QDBusPendingCallWatcher*)));
}
void Channel::Private::introspectMainFallbackChannelType()
@@ -492,7 +502,7 @@ void Channel::Private::nowHaveInterfaces()
void Channel::Private::nowHaveInitialMembers()
{
// Must be called with no contacts anywhere in the first place
- Q_ASSERT(!ready);
+ Q_ASSERT(!parent->isReady());
Q_ASSERT(!buildingContacts);
Q_ASSERT(pendingGroupMembers.isEmpty());
@@ -626,7 +636,7 @@ void Channel::Private::buildContacts()
if (toBuild.isEmpty()) {
if (!groupSelfHandle && groupSelfContact) {
groupSelfContact.clear();
- if (ready) {
+ if (parent->isReady()) {
emit parent->groupSelfContactChanged();
}
}
@@ -655,7 +665,7 @@ void Channel::Private::processMembersChanged()
return;
}
- if (!ready) {
+ if (!parent->isReady()) {
if (introspectQueue.isEmpty()) {
debug() << "Both the MCD and the introspect queue empty for the first time. Ready!";
@@ -723,18 +733,18 @@ void Channel::Private::processMembersChanged()
buildContacts();
}
-void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &contacts)
+void Channel::Private::updateContacts(const QList<ContactPtr> &contacts)
{
Contacts groupContactsAdded;
Contacts groupLocalPendingContactsAdded;
Contacts groupRemotePendingContactsAdded;
- QSharedPointer<Contact> actorContact;
+ ContactPtr actorContact;
bool selfContactUpdated = false;
debug() << "Entering Chan::Priv::updateContacts() with" << contacts.size() << "contacts";
// FIXME: simplify. Some duplication of logic present.
- foreach (QSharedPointer<Contact> contact, contacts) {
+ foreach (ContactPtr contact, contacts) {
uint handle = contact->handle()[0];
if (pendingGroupMembers.contains(handle)) {
groupContactsAdded.insert(contact);
@@ -777,7 +787,7 @@ void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &con
// FIXME: This shouldn't be needed. Clearer would be to first scan for the actor being present
// in the contacts supplied.
- foreach (QSharedPointer<Contact> contact, contacts) {
+ foreach (ContactPtr contact, contacts) {
uint handle = contact->handle()[0];
if (groupLocalPendingContactsChangeInfo.contains(handle)) {
groupLocalPendingContactsChangeInfo[handle] =
@@ -786,7 +796,7 @@ void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &con
}
Contacts groupContactsRemoved;
- QSharedPointer<Contact> contactToRemove;
+ ContactPtr contactToRemove;
foreach (uint handle, groupMembersToRemove) {
if (groupContacts.contains(handle)) {
contactToRemove = groupContacts[handle];
@@ -827,7 +837,7 @@ void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &con
GroupMemberChangeDetails details(
actorContact,
currentGroupMembersChangedInfo->details);
- if (ready) {
+ if (parent->isReady()) {
// Channel is ready, we can signal membership changes to the outside world without
// confusing anyone's fragile logic.
emit parent->groupMembersChanged(
@@ -841,7 +851,7 @@ void Channel::Private::updateContacts(const QList<QSharedPointer<Contact> > &con
delete currentGroupMembersChangedInfo;
currentGroupMembersChangedInfo = 0;
- if (selfContactUpdated && ready) {
+ if (selfContactUpdated && parent->isReady()) {
emit parent->groupSelfContactChanged();
}
@@ -876,15 +886,7 @@ bool Channel::Private::fakeGroupInterfaceIfNeeded()
void Channel::Private::setReady()
{
- Q_ASSERT(!ready);
-
- ready = true;
-
- if (pendingReady) {
- pendingReady->setFinished();
- // it will delete itself later
- pendingReady = 0;
- }
+ Q_ASSERT(!parent->isReady());
debug() << "Channel fully ready";
debug() << " Channel type" << channelType;
@@ -909,6 +911,8 @@ void Channel::Private::setReady()
debug() << " Group: Self handle" << groupSelfHandle <<
"tracked:" << (groupIsSelfHandleTracked ? "yes" : "no");
}
+
+ readinessHelper->setIntrospectCompleted(FeatureCore, true);
}
/**
@@ -945,6 +949,8 @@ void Channel::Private::setReady()
* will transition to closed too.
*/
+const Feature Channel::FeatureCore = Feature(Channel::staticMetaObject.className(), 0, true);
+
/**
* Construct a new Channel object.
*
@@ -963,16 +969,12 @@ Channel::Channel(Connection *connection,
: StatefulDBusProxy(connection->dbusConnection(), connection->busName(),
objectPath, parent),
OptionalInterfaceFactory<Channel>(this),
+ ReadyObject(this, FeatureCore),
mPriv(new Private(this, connection))
{
// FIXME: remember the immutableProperties, and use them to reduce the
// number of D-Bus calls we need to make (but we should make at least
// one, to check that the channel does in fact exist)
- // no need to start introspection if channel is invalid
- if (isValid()) {
- mPriv->introspectQueue.enqueue(&Private::introspectMain);
- QTimer::singleShot(0, this, SLOT(continueIntrospection()));
- }
}
/**
@@ -1087,9 +1089,9 @@ bool Channel::isRequested() const
* Note that the value is undefined until the channel is ready.
*
* \return A Contact object representing the contact who initiated the channel,
- * or QSharedPointer that points to null(0) if it can't be retrieved.
+ * or ContactPtr that points to null(0) if it can't be retrieved.
*/
-QSharedPointer<Contact> Channel::initiatorContact() const
+ContactPtr Channel::initiatorContact() const
{
if (!isReady()) {
warning() << "Channel::initiatorContact() used channel not ready";
@@ -1099,65 +1101,6 @@ QSharedPointer<Contact> Channel::initiatorContact() const
}
/**
- * Return whether this object has finished its initial setup.
- *
- * This is mostly useful as a sanity check, in code that shouldn't be run
- * until the object is ready. To wait for the object to be ready, call
- * becomeReady() and connect to the finished signal on the result.
- *
- * \param features The features which should be tested
- * \return \c true if the object has finished its initial setup for basic
- * functionality plus the given features
- */
-bool Channel::isReady(Features features) const
-{
- return mPriv->ready
- && ((mPriv->features & features) == features);
-}
-
-/**
- * Return a pending operation which will succeed when this object finishes
- * its initial setup, or will fail if a fatal error occurs during this
- * initial setup.
- *
- * \param requestedFeatures The features which should be enabled
- * \return A PendingReadyChannel object which will emit finished
- * when this object has finished or failed initial setup for basic
- * functionality plus the given features
- */
-PendingReadyChannel *Channel::becomeReady(Features requestedFeatures)
-{
- if (!isValid()) {
- PendingReadyChannel *operation =
- new PendingReadyChannel(requestedFeatures, this);
- operation->setFinishedWithError(TELEPATHY_ERROR_NOT_AVAILABLE,
- "Channel is invalid");
- return operation;
- }
-
- if (isReady(requestedFeatures)) {
- PendingReadyChannel *operation =
- new PendingReadyChannel(requestedFeatures, this);
- operation->setFinished();
- return operation;
- }
-
- if (requestedFeatures != 0) {
- PendingReadyChannel *operation =
- new PendingReadyChannel(requestedFeatures, this);
- operation->setFinishedWithError(TELEPATHY_ERROR_INVALID_ARGUMENT,
- "Invalid features argument");
- return operation;
- }
-
- if (!mPriv->pendingReady) {
- mPriv->pendingReady =
- new PendingReadyChannel(requestedFeatures, this);
- }
- return mPriv->pendingReady;
-}
-
-/**
* Start an asynchronous request that the channel be closed.
* The returned PendingOperation object will signal the success or failure
* of this request; under normal circumstances, it can be expected to
@@ -1254,7 +1197,7 @@ bool Channel::groupCanAddContacts() const
* when the call has finished.
* \sa groupCanAddContacts()
*/
-PendingOperation *Channel::groupAddContacts(const QList<QSharedPointer<Contact> > &contacts,
+PendingOperation *Channel::groupAddContacts(const QList<ContactPtr> &contacts,
const QString &message)
{
if (!isReady()) {
@@ -1267,7 +1210,7 @@ PendingOperation *Channel::groupAddContacts(const QList<QSharedPointer<Contact>
"contacts cannot be an empty list");
}
- foreach (const QSharedPointer<Contact> &contact, contacts) {
+ foreach (const ContactPtr &contact, contacts) {
if (!contact) {
warning() << "Channel::groupAddContacts() used but contacts param contains "
"invalid contact";
@@ -1283,7 +1226,7 @@ PendingOperation *Channel::groupAddContacts(const QList<QSharedPointer<Contact>
}
UIntList handles;
- foreach (const QSharedPointer<Contact> &contact, contacts) {
+ foreach (const ContactPtr &contact, contacts) {
handles << contact->handle()[0];
}
return new PendingVoidMethodCall(this,
@@ -1334,7 +1277,7 @@ bool Channel::groupCanRemoveContacts() const
* when the call has finished.
* \sa groupCanRemoveContacts()
*/
-PendingOperation *Channel::groupRemoveContacts(const QList<QSharedPointer<Contact> > &contacts,
+PendingOperation *Channel::groupRemoveContacts(const QList<ContactPtr> &contacts,
const QString &message, uint reason)
{
if (!isReady()) {
@@ -1349,7 +1292,7 @@ PendingOperation *Channel::groupRemoveContacts(const QList<QSharedPointer<Contac
"contacts param cannot be an empty list");
}
- foreach (const QSharedPointer<Contact> &contact, contacts) {
+ foreach (const ContactPtr &contact, contacts) {
if (!contact) {
warning() << "Channel::groupRemoveContacts() used but contacts param contains "
"invalid contact:";
@@ -1365,7 +1308,7 @@ PendingOperation *Channel::groupRemoveContacts(const QList<QSharedPointer<Contac
}
UIntList handles;
- foreach (const QSharedPointer<Contact> &contact, contacts) {
+ foreach (const ContactPtr &contact, contacts) {
handles << contact->handle()[0];
}
return new PendingVoidMethodCall(this,
@@ -1432,7 +1375,7 @@ Contacts Channel::groupRemotePendingContacts() const
* \return The change info in a GroupMemberChangeDetails object.
*/
Channel::GroupMemberChangeDetails Channel::groupLocalPendingContactChangeInfo(
- const QSharedPointer<Contact> &contact) const
+ const ContactPtr &contact) const
{
if (!isReady()) {
warning() << "Channel::groupLocalPending() used channel not ready";
@@ -1571,7 +1514,7 @@ bool Channel::groupIsSelfContactTracked() const
*
* \return A contact handle representing the user, if possible.
*/
-QSharedPointer<Contact> Channel::groupSelfContact() const
+ContactPtr Channel::groupSelfContact() const
{
if (!isReady()) {
warning() << "Channel::groupSelfContact() used channel not ready";
@@ -1581,6 +1524,59 @@ QSharedPointer<Contact> Channel::groupSelfContact() const
}
/**
+ * Return whether the local user is in the "local pending" state. This
+ * indicates that the local user needs to take action to accept an invitation,
+ * an incoming call, etc.
+ *
+ * \return Whether the local user is in this channel's local-pending set.
+ */
+bool Channel::groupSelfHandleIsLocalPending() const
+{
+ if (!isReady()) {
+ warning() << "Channel::groupSelfHandleIsLocalPending() used when "
+ "channel not ready";
+ return false;
+ }
+
+ uint selfHandle = mPriv->groupSelfHandle;
+
+ if (selfHandle == 0) {
+ selfHandle = mPriv->connection->selfHandle();
+ }
+
+ return mPriv->groupLocalPendingContacts.contains(selfHandle);
+}
+
+/**
+ * Attempt to add the local user to this channel. In some channel types,
+ * such as Text and StreamedMedia, this is used to accept an invitation or an
+ * incoming call.
+ *
+ * \return A pending operation which will emit finished on success or failure
+ */
+PendingOperation *Channel::groupAddSelfHandle()
+{
+ if (!isReady()) {
+ warning() << "Channel::groupAddSelfHandle() used when channel not "
+ "ready";
+ return new PendingFailure(this,
+ TELEPATHY_ERROR_INVALID_ARGUMENT,
+ "Telepathy-Qt4: Channel object not ready");
+ }
+
+ UIntList handles;
+
+ if (mPriv->groupSelfHandle == 0) {
+ handles << mPriv->connection->selfHandle();
+ } else {
+ handles << mPriv->groupSelfHandle;
+ }
+
+ return new PendingVoidMethodCall(this,
+ mPriv->group->AddMembers(handles, ""));
+}
+
+/**
* \fn void Channel::groupFlagsChanged(uint flags, uint added, uint removed)
*
* Emitted when the value returned by groupFlags() changes.
@@ -2025,7 +2021,7 @@ void Channel::gotContacts(PendingOperation *op)
mPriv->buildingContacts = false;
- QList<QSharedPointer<Contact> > contacts;
+ QList<ContactPtr> contacts;
if (pending->isValid()) {
contacts = pending->contacts();
@@ -2216,7 +2212,8 @@ void Channel::onSelfHandleChanged(uint newSelfHandle)
void Channel::continueIntrospection()
{
if (mPriv->introspectQueue.isEmpty()) {
- if (!mPriv->ready) {
+ // this should always be true, but let's make sure
+ if (!isReady()) {
if (mPriv->groupMembersChangedQueue.isEmpty() && !mPriv->buildingContacts) {
debug() << "Both the IS and the MCD queue empty for the first time. Ready.";
mPriv->setReady();
@@ -2249,7 +2246,7 @@ void Channel::continueIntrospection()
/**
* \fn Channel::GroupMemberChangeDetails::GroupMemberChangeDetails(
- * const QSharedPointer<Contact> &actor, const QVariantMap &details)
+ * const ContactPtr &actor, const QVariantMap &details)
*
* \internal
*/
diff --git a/TelepathyQt4/Client/channel.h b/TelepathyQt4/Client/channel.h
index c7ef61f..8b74253 100644
--- a/TelepathyQt4/Client/channel.h
+++ b/TelepathyQt4/Client/channel.h
@@ -33,13 +33,14 @@
#include <TelepathyQt4/Client/DBus>
#include <TelepathyQt4/Client/DBusProxy>
#include <TelepathyQt4/Client/OptionalInterfaceFactory>
+#include <TelepathyQt4/Client/ReadinessHelper>
+#include <TelepathyQt4/Client/ReadyObject>
+#include <QExplicitlySharedDataPointer>
#include <QSet>
-#include <QSharedPointer>
+#include <QSharedData>
#include <QVariantMap>
-class QDBusPendingCallWatcher;
-
namespace Telepathy
{
namespace Client
@@ -47,19 +48,18 @@ namespace Client
class Connection;
class PendingOperation;
-class PendingReadyChannel;
+class PendingReady;
class Channel : public StatefulDBusProxy,
- private OptionalInterfaceFactory<Channel>
+ private OptionalInterfaceFactory<Channel>,
+ public ReadyObject,
+ public QSharedData
{
Q_OBJECT
Q_DISABLE_COPY(Channel)
public:
- enum Feature {
- _Paddding = 0xFFFFFFFF
- };
- Q_DECLARE_FLAGS(Features, Feature)
+ static const Feature FeatureCore;
Channel(Connection *connection,
const QString &objectPath,
@@ -76,21 +76,18 @@ public:
uint targetHandle() const;
bool isRequested() const;
- QSharedPointer<Contact> initiatorContact() const;
-
- bool isReady(Features features = 0) const;
- PendingReadyChannel *becomeReady(Features features = 0);
+ ContactPtr initiatorContact() const;
PendingOperation *requestClose();
uint groupFlags() const;
bool groupCanAddContacts() const;
- PendingOperation *groupAddContacts(const QList<QSharedPointer<Contact> > &contacts,
+ PendingOperation *groupAddContacts(const QList<ContactPtr> &contacts,
const QString &message = QString());
bool groupCanRescindContacts() const;
bool groupCanRemoveContacts() const;
- PendingOperation *groupRemoveContacts(const QList<QSharedPointer<Contact> > &contacts,
+ PendingOperation *groupRemoveContacts(const QList<ContactPtr> &contacts,
const QString &message = QString(),
uint reason = Telepathy::ChannelGroupChangeReasonNone);
@@ -107,7 +104,7 @@ public:
bool isValid() const { return mIsValid; }
bool hasActor() const { return !mActor.isNull(); }
- QSharedPointer<Contact> actor() const { return mActor; }
+ ContactPtr actor() const { return mActor; }
bool hasReason() const { return mDetails.contains("change-reason"); }
uint reason() const { return qdbus_cast<uint>(mDetails.value("change-reason")); }
@@ -126,22 +123,22 @@ public:
private:
friend class Channel;
- GroupMemberChangeDetails(const QSharedPointer<Contact> &actor, const QVariantMap &details)
+ GroupMemberChangeDetails(const ContactPtr &actor, const QVariantMap &details)
: mActor(actor), mDetails(details), mIsValid(true) {}
- QSharedPointer<Contact> mActor;
+ ContactPtr mActor;
QVariantMap mDetails;
bool mIsValid;
};
- GroupMemberChangeDetails groupLocalPendingContactChangeInfo(const QSharedPointer<Contact> &contact) const;
+ GroupMemberChangeDetails groupLocalPendingContactChangeInfo(const ContactPtr &contact) const;
GroupMemberChangeDetails groupSelfContactRemoveInfo() const;
bool groupAreHandleOwnersAvailable() const;
HandleOwnerMap groupHandleOwners() const;
bool groupIsSelfContactTracked() const;
- QSharedPointer<Contact> groupSelfContact() const;
+ ContactPtr groupSelfContact() const;
Q_SIGNALS:
void groupFlagsChanged(uint flags, uint added, uint removed);
@@ -162,6 +159,12 @@ Q_SIGNALS:
void groupSelfContactChanged();
+protected:
+ bool groupSelfHandleIsLocalPending() const;
+
+protected Q_SLOTS:
+ PendingOperation *groupAddSelfHandle();
+
public:
template <class Interface>
inline Interface *optionalInterface(
@@ -305,6 +308,8 @@ private:
Private *mPriv;
};
+typedef QExplicitlySharedDataPointer<Channel> ChannelPtr;
+
} // Telepathy::Client
} // Telepathy
diff --git a/TelepathyQt4/Client/connection-internal.h b/TelepathyQt4/Client/connection-internal.h
index dead1f0..89535fa 100644
--- a/TelepathyQt4/Client/connection-internal.h
+++ b/TelepathyQt4/Client/connection-internal.h
@@ -24,7 +24,7 @@
#include <TelepathyQt4/Client/Connection>
-#include <TelepathyQt4/Client/PendingOperation>
+#include <TelepathyQt4/Client/PendingReady>
#include <QSet>
@@ -33,19 +33,16 @@ namespace Telepathy
namespace Client
{
-class Connection::PendingConnect : public PendingOperation
+class Connection::PendingConnect : public PendingReady
{
Q_OBJECT
public:
- PendingConnect(Connection *parent, const QSet<uint> &requestedFeatures);
+ PendingConnect(Connection *parent, const Features &requestedFeatures);
private Q_SLOTS:
void onConnectReply(QDBusPendingCallWatcher *);
void onBecomeReadyReply(Telepathy::Client::PendingOperation *);
-
-private:
- QSet<uint> requestedFeatures;
};
} // Telepathy::Client
diff --git a/TelepathyQt4/Client/connection-manager.cpp b/TelepathyQt4/Client/connection-manager.cpp
index bc57f3d..6c4e4e6 100644
--- a/TelepathyQt4/Client/connection-manager.cpp
+++ b/TelepathyQt4/Client/connection-manager.cpp
@@ -32,7 +32,6 @@
#include <TelepathyQt4/Client/DBus>
#include <TelepathyQt4/Client/PendingConnection>
#include <TelepathyQt4/Client/PendingReady>
-#include <TelepathyQt4/Client/ReadinessHelper>
#include <TelepathyQt4/Constants>
#include <TelepathyQt4/ManagerFile>
#include <TelepathyQt4/Types>
@@ -286,23 +285,24 @@ ConnectionManager::Private::Private(ConnectionManager *parent, const QString &na
: parent(parent),
name(name),
baseInterface(new ConnectionManagerInterface(parent->dbusConnection(),
- parent->busName(), parent->objectPath(), parent))
+ parent->busName(), parent->objectPath(), parent)),
+ readinessHelper(parent->readinessHelper())
{
debug() << "Creating new ConnectionManager:" << parent->busName();
- QMap<uint, ReadinessHelper::Introspectable> introspectables;
+ ReadinessHelper::Introspectables introspectables;
// As ConnectionManager does not have predefined statuses let's simulate one (0)
ReadinessHelper::Introspectable introspectableCore(
QSet<uint>() << 0, // makesSenseForStatuses
- QSet<uint>(), // dependsOnFeatures
+ Features(), // dependsOnFeatures
QStringList(), // dependsOnInterfaces
(ReadinessHelper::IntrospectFunc) &Private::introspectMain,
this);
introspectables[FeatureCore] = introspectableCore;
- readinessHelper = new ReadinessHelper(parent, 0 /* status */,
- introspectables, parent);
+ readinessHelper->addIntrospectables(introspectables);
+ readinessHelper->becomeReady(Features() << FeatureCore);
}
ConnectionManager::Private::~Private()
@@ -348,6 +348,8 @@ ProtocolInfo *ConnectionManager::Private::protocol(const QString &protocolName)
* applications.
*/
+const Feature ConnectionManager::FeatureCore = Feature(ConnectionManager::staticMetaObject.className(), 0, true);
+
/**
* Construct a new ConnectionManager object.
*
@@ -359,6 +361,7 @@ ConnectionManager::ConnectionManager(const QString &name, QObject *parent)
Private::makeBusName(name), Private::makeObjectPath(name),
parent),
OptionalInterfaceFactory<ConnectionManager>(this),
+ ReadyObject(this, FeatureCore),
mPriv(new Private(this, name))
{
}
@@ -375,6 +378,7 @@ ConnectionManager::ConnectionManager(const QDBusConnection &bus,
: StatelessDBusProxy(bus, Private::makeBusName(name),
Private::makeObjectPath(name), parent),
OptionalInterfaceFactory<ConnectionManager>(this),
+ ReadyObject(this, FeatureCore),
mPriv(new Private(this, name))
{
}
@@ -459,54 +463,6 @@ PendingConnection *ConnectionManager::requestConnection(const QString &protocol,
*/
/**
- * Return whether this object has finished its initial setup.
- *
- * This is mostly useful as a sanity check, in code that shouldn't be run
- * until the object is ready. To wait for the object to be ready, call
- * becomeReady() and connect to the finished signal on the result.
- *
- * \param features The features which should be tested
- * \return \c true if the object has finished initial setup.
- */
-bool ConnectionManager::isReady(const QSet<uint> &features) const
-{
- return mPriv->readinessHelper->isReady(features);
-}
-
-/**
- * Return a pending operation which will succeed when this object finishes
- * its initial setup, or will fail if a fatal error occurs during this
- * initial setup.
- *
- * If an empty set is used FeatureCore will be considered as the requested
- * feature.
- *
- * \param requestedFeatures The features which should be enabled
- * \return A PendingReady object which will emit finished
- * when this object has finished or failed initial setup for basic
- * functionality plus the given features
- */
-PendingReady *ConnectionManager::becomeReady(const QSet<uint> &requestedFeatures)
-{
- return mPriv->readinessHelper->becomeReady(requestedFeatures);
-}
-
-QSet<uint> ConnectionManager::requestedFeatures() const
-{
- return mPriv->readinessHelper->requestedFeatures();
-}
-
-QSet<uint> ConnectionManager::actualFeatures() const
-{
- return mPriv->readinessHelper->actualFeatures();
-}
-
-QSet<uint> ConnectionManager::missingFeatures() const
-{
- return mPriv->readinessHelper->missingFeatures();
-}
-
-/**
* Return a pending operation from which a list of all installed connection
* manager short names (such as "gabble" or "haze") can be retrieved if it
* succeeds.
@@ -654,7 +610,7 @@ void ConnectionManager::gotProtocols(QDBusPendingCallWatcher *watcher)
mPriv->introspectParameters();
} else {
- mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false);
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error());
warning().nospace() <<
"ConnectionManager.ListProtocols failed: " <<
@@ -693,7 +649,7 @@ void ConnectionManager::gotParameters(QDBusPendingCallWatcher *watcher)
mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true);
} else {
// we could not retrieve the params for any protocol, fail core.
- mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false);
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error());
}
#if 0
diff --git a/TelepathyQt4/Client/connection-manager.h b/TelepathyQt4/Client/connection-manager.h
index 4a0da56..a6b272a 100644
--- a/TelepathyQt4/Client/connection-manager.h
+++ b/TelepathyQt4/Client/connection-manager.h
@@ -31,9 +31,13 @@
#include <TelepathyQt4/Client/DBus>
#include <TelepathyQt4/Client/DBusProxy>
#include <TelepathyQt4/Client/OptionalInterfaceFactory>
+#include <TelepathyQt4/Client/ReadinessHelper>
+#include <TelepathyQt4/Client/ReadyObject>
#include <TelepathyQt4/Constants>
+#include <QExplicitlySharedDataPointer>
#include <QSet>
+#include <QSharedData>
namespace Telepathy
{
@@ -115,16 +119,14 @@ private:
class ConnectionManager : public StatelessDBusProxy,
- private OptionalInterfaceFactory<ConnectionManager>
+ private OptionalInterfaceFactory<ConnectionManager>,
+ public ReadyObject,
+ public QSharedData
{
Q_OBJECT
public:
- enum Feature {
- FeatureCore = 0,
- _Padding = 0xFFFFFFFF
- };
- Q_DECLARE_FLAGS(Features, Feature)
+ static const Feature FeatureCore;
ConnectionManager(const QString &name, QObject *parent = 0);
ConnectionManager(const QDBusConnection &bus,
@@ -147,14 +149,6 @@ public:
return OptionalInterfaceFactory<ConnectionManager>::interface<DBus::PropertiesInterface>();
}
- bool isReady(const QSet<uint> &features = QSet<uint>()) const;
-
- PendingReady *becomeReady(const QSet<uint> &requestedFeatures = QSet<uint>());
-
- QSet<uint> requestedFeatures() const;
- QSet<uint> actualFeatures() const;
- QSet<uint> missingFeatures() const;
-
static PendingStringList *listNames(const QDBusConnection &bus = QDBusConnection::sessionBus());
protected:
@@ -174,6 +168,8 @@ private:
Private *mPriv;
};
+typedef QExplicitlySharedDataPointer<ConnectionManager> ConnectionManagerPtr;
+
}
}
diff --git a/TelepathyQt4/Client/connection.cpp b/TelepathyQt4/Client/connection.cpp
index 4879a0f..b25d89f 100644
--- a/TelepathyQt4/Client/connection.cpp
+++ b/TelepathyQt4/Client/connection.cpp
@@ -36,9 +36,7 @@
#include <TelepathyQt4/Client/PendingFailure>
#include <TelepathyQt4/Client/PendingHandles>
#include <TelepathyQt4/Client/PendingReady>
-#include <TelepathyQt4/Client/PendingReadyChannel>
#include <TelepathyQt4/Client/PendingVoidMethodCall>
-#include <TelepathyQt4/Client/ReadinessHelper>
#include <TelepathyQt4/Client/ReferencedHandles>
#include <QMap>
@@ -47,7 +45,6 @@
#include <QMutexLocker>
#include <QPair>
#include <QQueue>
-#include <QSharedPointer>
#include <QString>
#include <QTimer>
#include <QtGlobal>
@@ -115,7 +112,7 @@ struct Connection::Private
uint statusReason;
SimpleStatusSpecMap simplePresenceStatuses;
- QSharedPointer<Contact> selfContact;
+ ContactPtr selfContact;
QStringList contactAttributeInterfaces;
uint selfHandle;
QMap<uint, ContactManager::ContactListChannel> contactListsChannels;
@@ -162,6 +159,7 @@ Connection::Private::Private(Connection *parent)
parent->busName(), parent->objectPath(), parent)),
properties(0),
simplePresence(0),
+ readinessHelper(parent->readinessHelper()),
pendingStatus(Connection::StatusUnknown),
pendingStatusReason(ConnectionStatusReasonNoneSpecified),
status(Connection::StatusUnknown),
@@ -171,19 +169,19 @@ Connection::Private::Private(Connection *parent)
handleContext(0),
contactManager(new ContactManager(parent))
{
- QMap<uint, ReadinessHelper::Introspectable> introspectables;
+ ReadinessHelper::Introspectables introspectables;
ReadinessHelper::Introspectable introspectableCore(
QSet<uint>() << Connection::StatusDisconnected << Connection::StatusConnected, // makesSenseForStatuses
- QSet<uint>(), // dependsOnFeatures
- QStringList(), // dependsOnInterfaces
+ Features(), // dependsOnFeatures (none)
+ QStringList(), // dependsOnInterfaces (none)
(ReadinessHelper::IntrospectFunc) &Private::introspectMain,
this);
introspectables[FeatureCore] = introspectableCore;
ReadinessHelper::Introspectable introspectableSelfContact(
QSet<uint>() << Connection::StatusConnected, // makesSenseForStatuses
- QSet<uint>() << FeatureCore, // dependsOnFeatures (core)
+ Features() << FeatureCore, // dependsOnFeatures (core)
QStringList() << TELEPATHY_INTERFACE_CONNECTION_INTERFACE_CONTACTS, // dependsOnInterfaces
(ReadinessHelper::IntrospectFunc) &Private::introspectSelfContact,
this);
@@ -191,7 +189,7 @@ Connection::Private::Private(Connection *parent)
ReadinessHelper::Introspectable introspectableSimplePresence(
QSet<uint>() << Connection::StatusConnected, // makesSenseForStatuses
- QSet<uint>() << FeatureCore, // dependsOnFeatures (core)
+ Features() << FeatureCore, // dependsOnFeatures (core)
QStringList() << TELEPATHY_INTERFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, // dependsOnInterfaces
(ReadinessHelper::IntrospectFunc) &Private::introspectSimplePresence,
this);
@@ -199,17 +197,18 @@ Connection::Private::Private(Connection *parent)
ReadinessHelper::Introspectable introspectableRoster(
QSet<uint>() << Connection::StatusConnected, // makesSenseForStatuses
- QSet<uint>() << 0, // dependsOnFeatures (core)
+ Features() << FeatureCore, // dependsOnFeatures (core)
QStringList() << TELEPATHY_INTERFACE_CONNECTION_INTERFACE_CONTACTS, // dependsOnInterfaces
(ReadinessHelper::IntrospectFunc) &Private::introspectRoster,
this);
introspectables[FeatureRoster] = introspectableRoster;
- readinessHelper = new ReadinessHelper(parent, status,
- introspectables, parent);
+ readinessHelper->addIntrospectables(introspectables);
+ readinessHelper->setCurrentStatus(status);
parent->connect(readinessHelper,
SIGNAL(statusReady(uint)),
SLOT(onStatusReady(uint)));
+ readinessHelper->becomeReady(Features() << FeatureCore);
init();
}
@@ -272,16 +271,16 @@ void Connection::Private::init()
QMutexLocker locker(&handleContextsLock);
QString busConnectionName = baseInterface->connection().name();
- QString serviceName = baseInterface->service();
+ QString busName = baseInterface->service();
- if (handleContexts.contains(qMakePair(busConnectionName, serviceName))) {
+ if (handleContexts.contains(qMakePair(busConnectionName, busName))) {
debug() << "Reusing existing HandleContext";
- handleContext = handleContexts[qMakePair(busConnectionName, serviceName)];
+ handleContext = handleContexts[qMakePair(busConnectionName, busName)];
}
else {
debug() << "Creating new HandleContext";
handleContext = new HandleContext;
- handleContexts[qMakePair(busConnectionName, serviceName)] = handleContext;
+ handleContexts[qMakePair(busConnectionName, busName)] = handleContext;
}
// All handle contexts locked, so safe
@@ -386,9 +385,8 @@ void Connection::Private::introspectRoster(Connection::Private *self)
}
}
-Connection::PendingConnect::PendingConnect(Connection *parent, const QSet<uint> &requestedFeatures)
- : PendingOperation(parent),
- requestedFeatures(requestedFeatures)
+Connection::PendingConnect::PendingConnect(Connection *parent, const Features &requestedFeatures)
+ : PendingReady(requestedFeatures, parent)
{
QDBusPendingCall call = parent->baseInterface()->Connect();
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, parent);
@@ -404,7 +402,7 @@ void Connection::PendingConnect::onConnectReply(QDBusPendingCallWatcher *watcher
setFinishedWithError(watcher->error());
}
else {
- connect(qobject_cast<Connection*>(parent())->becomeReady(requestedFeatures),
+ connect(qobject_cast<Connection*>(parent())->becomeReady(requestedFeatures()),
SIGNAL(finished(Telepathy::Client::PendingOperation*)),
SLOT(onBecomeReadyReply(Telepathy::Client::PendingOperation*)));
}
@@ -450,19 +448,26 @@ QMutex Connection::Private::handleContextsLock;
* in the different states.
*/
+const Feature Connection::FeatureCore = Feature(Connection::staticMetaObject.className(), 0, true);
+const Feature Connection::FeatureSelfContact = Feature(Connection::staticMetaObject.className(), 1);
+const Feature Connection::FeatureSimplePresence = Feature(Connection::staticMetaObject.className(), 2);
+const Feature Connection::FeatureRoster = Feature(Connection::staticMetaObject.className(), 3);
+
/**
* Construct a new Connection object.
*
- * \param serviceName Connection service name.
- * \param objectPath Connection object path.
- * \param parent Object parent.
+ * \param busName The connection's well-known or unique bus name
+ * (sometimes called a "service name")
+ * \param objectPath The connection's object path
+ * \param parent Object parent
*/
-Connection::Connection(const QString &serviceName,
+Connection::Connection(const QString &busName,
const QString &objectPath,
QObject *parent)
: StatefulDBusProxy(QDBusConnection::sessionBus(),
- serviceName, objectPath, parent),
+ busName, objectPath, parent),
OptionalInterfaceFactory<Connection>(this),
+ ReadyObject(this, FeatureCore),
mPriv(new Private(this))
{
}
@@ -470,17 +475,19 @@ Connection::Connection(const QString &serviceName,
/**
* Construct a new Connection object.
*
- * \param bus QDBusConnection to use.
- * \param serviceName Connection service name.
- * \param objectPath Connection object path.
- * \param parent Object parent.
+ * \param bus QDBusConnection to use
+ * \param busName The connection's well-known or unique bus name
+ * (sometimes called a "service name")
+ * \param objectPath The connection's object path
+ * \param parent Object parent
*/
Connection::Connection(const QDBusConnection &bus,
- const QString &serviceName,
+ const QString &busName,
const QString &objectPath,
QObject *parent)
- : StatefulDBusProxy(bus, serviceName, objectPath, parent),
+ : StatefulDBusProxy(bus, busName, objectPath, parent),
OptionalInterfaceFactory<Connection>(this),
+ ReadyObject(this, FeatureCore),
mPriv(new Private(this))
{
}
@@ -565,7 +572,7 @@ uint Connection::selfHandle() const
*/
SimpleStatusSpecMap Connection::allowedPresenceStatuses() const
{
- if (!isReady(QSet<uint>() << FeatureSimplePresence)) {
+ if (!isReady(Features() << FeatureSimplePresence)) {
warning() << "Trying to retrieve simple presence from connection, but "
"simple presence is not supported or was not requested. "
"Use becomeReady(FeatureSimplePresence)";
@@ -602,7 +609,7 @@ PendingOperation *Connection::setSelfPresence(const QString &status,
simplePresenceInterface()->SetPresence(status, statusMessage));
}
-QSharedPointer<Contact> Connection::selfContact() const
+ContactPtr Connection::selfContact() const
{
if (!isReady()) {
warning() << "Connection::selfContact() used before the connection is ready!";
@@ -799,9 +806,6 @@ void Connection::gotStatus(QDBusPendingCallWatcher *watcher)
reply.error().name() << ":" << reply.error().message();
invalidate(reply.error());
-
- // introspect core failed
- mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false);
return;
}
@@ -866,7 +870,7 @@ void Connection::gotSelfContact(PendingOperation *op)
if (pending->isValid()) {
Q_ASSERT(pending->contacts().size() == 1);
- QSharedPointer<Contact> contact = pending->contacts()[0];
+ ContactPtr contact = pending->contacts()[0];
if (mPriv->selfContact != contact) {
mPriv->selfContact = contact;
@@ -885,7 +889,8 @@ void Connection::gotSelfContact(PendingOperation *op)
// check if the feature is already there, and for some reason introspectSelfContact
// failed when called the second time
if (!mPriv->readinessHelper->missingFeatures().contains(FeatureSelfContact)) {
- mPriv->readinessHelper->setIntrospectCompleted(FeatureSelfContact, false);
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureSelfContact, false,
+ op->errorName(), op->errorMessage());
}
}
}
@@ -902,7 +907,7 @@ void Connection::gotSimpleStatuses(QDBusPendingCallWatcher *watcher)
else {
warning().nospace() << "Getting simple presence statuses failed with " <<
reply.error().name() << ":" << reply.error().message();
- mPriv->readinessHelper->setIntrospectCompleted(FeatureSimplePresence, false);
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureSimplePresence, false, reply.error());
}
watcher->deleteLater();
@@ -924,7 +929,7 @@ void Connection::gotSelfHandle(QDBusPendingCallWatcher *watcher)
} else {
warning().nospace() << "Getting self handle failed with " <<
reply.error().name() << ":" << reply.error().message();
- mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false);
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false, reply.error());
}
watcher->deleteLater();
@@ -977,14 +982,14 @@ void Connection::gotContactListChannel(PendingOperation *op)
}
PendingChannel *pending = qobject_cast<PendingChannel*>(op);
- QSharedPointer<Channel> channel = pending->channel();
- uint handle = pending->handle();
- Q_ASSERT(!channel.isNull());
+ ChannelPtr channel = pending->channel();
+ uint handle = pending->targetHandle();
+ Q_ASSERT(channel);
Q_ASSERT(handle);
for (int i = 0; i < ContactManager::ContactListChannel::LastType; ++i) {
if (mPriv->contactListsChannels[i].handle.size() > 0 &&
mPriv->contactListsChannels[i].handle[0] == handle) {
- Q_ASSERT(mPriv->contactListsChannels[i].channel.isNull());
+ Q_ASSERT(!mPriv->contactListsChannels[i].channel);
mPriv->contactListsChannels[i].channel = channel;
connect(channel->becomeReady(),
SIGNAL(finished(Telepathy::Client::PendingOperation *)),
@@ -1240,55 +1245,6 @@ PendingHandles *Connection::referenceHandles(uint handleType, const UIntList &ha
}
/**
- * Return whether this object has finished its initial setup.
- *
- * This is mostly useful as a sanity check, in code that shouldn't be run
- * until the object is ready. To wait for the object to be ready, call
- * becomeReady() and connect to the finished signal on the result.
- *
- * \param features The features which should be tested
- * \return \c true if the object has finished its initial setup for basic
- * functionality plus the given features
- */
-bool Connection::isReady(const QSet<uint> &features) const
-{
- return mPriv->readinessHelper->isReady(features);
-}
-
-/**
- * Return a pending operation which will succeed when this object finishes
- * its initial setup, or will fail if a fatal error occurs during this
- * initial setup.
- *
- * If an empty set is used FeatureCore will be considered as the requested
- * feature.
- *
- * \param requestedFeatures The features which should be enabled
- * \return A PendingReady object which will emit finished
- * when this object has finished or failed initial setup for basic
- * functionality plus the given features
- */
-PendingReady *Connection::becomeReady(const QSet<uint> &requestedFeatures)
-{
- return mPriv->readinessHelper->becomeReady(requestedFeatures);
-}
-
-QSet<uint> Connection::requestedFeatures() const
-{
- return mPriv->readinessHelper->requestedFeatures();
-}
-
-QSet<uint> Connection::actualFeatures() const
-{
- return mPriv->readinessHelper->actualFeatures();
-}
-
-QSet<uint> Connection::missingFeatures() const
-{
- return mPriv->readinessHelper->missingFeatures();
-}
-
-/**
* Start an asynchronous request that the connection be connected.
*
* The returned PendingOperation will finish successfully when the connection
@@ -1301,7 +1257,7 @@ QSet<uint> Connection::missingFeatures() const
* for basic functionality, plus the given features, has succeeded or
* failed
*/
-PendingOperation *Connection::requestConnect(const QSet<uint> &requestedFeatures)
+PendingReady *Connection::requestConnect(const Features &requestedFeatures)
{
return new PendingConnect(this, requestedFeatures);
}
diff --git a/TelepathyQt4/Client/connection.h b/TelepathyQt4/Client/connection.h
index 48dd5dd..3cd6928 100644
--- a/TelepathyQt4/Client/connection.h
+++ b/TelepathyQt4/Client/connection.h
@@ -28,15 +28,19 @@
#include <TelepathyQt4/_gen/cli-connection.h>
+#include <TelepathyQt4/Client/Contact>
#include <TelepathyQt4/Client/DBus>
#include <TelepathyQt4/Client/DBusProxy>
#include <TelepathyQt4/Client/OptionalInterfaceFactory>
+#include <TelepathyQt4/Client/ReadinessHelper>
+#include <TelepathyQt4/Client/ReadyObject>
#include <TelepathyQt4/Constants>
#include <TelepathyQt4/Types>
+#include <QExplicitlySharedDataPointer>
#include <QSet>
-#include <QSharedPointer>
+#include <QSharedData>
#include <QString>
#include <QStringList>
@@ -55,21 +59,19 @@ class PendingOperation;
class PendingReady;
class Connection : public StatefulDBusProxy,
- private OptionalInterfaceFactory<Connection>
+ private OptionalInterfaceFactory<Connection>,
+ public ReadyObject,
+ public QSharedData
{
Q_OBJECT
Q_DISABLE_COPY(Connection)
Q_ENUMS(Status)
public:
- enum Feature {
- FeatureCore = 0,
- FeatureSelfContact = 1,
- FeatureSimplePresence = 2,
- FeatureRoster = 4,
- _Padding = 0xFFFFFFFF
- };
- Q_DECLARE_FLAGS(Features, Feature)
+ static const Feature FeatureCore;
+ static const Feature FeatureSelfContact;
+ static const Feature FeatureSimplePresence;
+ static const Feature FeatureRoster;
enum Status {
StatusDisconnected = Telepathy::ConnectionStatusDisconnected,
@@ -78,12 +80,12 @@ public:
StatusUnknown = 0xFFFFFFFF
};
- Connection(const QString &serviceName,
+ Connection(const QString &busName,
const QString &objectPath,
QObject *parent = 0);
Connection(const QDBusConnection &bus,
- const QString &serviceName,
+ const QString &busName,
const QString &objectPath,
QObject *parent = 0);
@@ -99,7 +101,7 @@ public:
SimpleStatusSpecMap allowedPresenceStatuses() const;
PendingOperation *setSelfPresence(const QString &status, const QString &statusMessage);
- QSharedPointer<Contact> selfContact() const;
+ ContactPtr selfContact() const;
template <class Interface>
inline Interface *optionalInterface(
@@ -160,7 +162,7 @@ public:
PendingChannel *ensureChannel(const QVariantMap &request);
- PendingOperation *requestConnect(const QSet<uint> &requestedFeatures = QSet<uint>());
+ PendingReady *requestConnect(const Features &requestedFeatures = Features());
PendingOperation *requestDisconnect();
@@ -173,14 +175,6 @@ public:
QStringList contactAttributeInterfaces() const;
ContactManager *contactManager() const;
- bool isReady(const QSet<uint> &features = QSet<uint>()) const;
-
- PendingReady *becomeReady(const QSet<uint> &requestedFeatures = QSet<uint>());
-
- QSet<uint> requestedFeatures() const;
- QSet<uint> actualFeatures() const;
- QSet<uint> missingFeatures() const;
-
Q_SIGNALS:
void statusChanged(uint newStatus, uint newStatusReason);
void selfHandleChanged(uint newHandle);
@@ -223,7 +217,7 @@ private:
Private *mPriv;
};
-Q_DECLARE_OPERATORS_FOR_FLAGS(Connection::Features)
+typedef QExplicitlySharedDataPointer<Connection> ConnectionPtr;
} // Telepathy::Client
} // Telepathy
diff --git a/TelepathyQt4/Client/contact-manager.cpp b/TelepathyQt4/Client/contact-manager.cpp
index 1e1c52d..859da76 100644
--- a/TelepathyQt4/Client/contact-manager.cpp
+++ b/TelepathyQt4/Client/contact-manager.cpp
@@ -76,10 +76,10 @@ struct ContactManager::Private
QSet<Contact::Feature> supportedFeatures;
QMap<uint, ContactListChannel> contactListsChannels;
- QSharedPointer<Channel> subscribeChannel;
- QSharedPointer<Channel> publishChannel;
- QSharedPointer<Channel> storedChannel;
- QSharedPointer<Channel> denyChannel;
+ ChannelPtr subscribeChannel;
+ ChannelPtr publishChannel;
+ ChannelPtr storedChannel;
+ ChannelPtr denyChannel;
Contacts allKnownContacts() const;
void updateContactsPresenceState();
@@ -232,7 +232,7 @@ bool ContactManager::subscriptionRequestHasMessage() const
* to subscribe to the contacts' presence
*/
PendingOperation *ContactManager::requestPresenceSubscription(
- const QList<QSharedPointer<Contact> > &contacts, const QString &message)
+ const QList<ContactPtr> &contacts, const QString &message)
{
if (!mPriv->subscribeChannel) {
return new PendingFailure(this, TELEPATHY_ERROR_NOT_IMPLEMENTED,
@@ -319,7 +319,7 @@ bool ContactManager::subscriptionRescindingHasMessage() const
* to remove any subscription to the contacts' presence
*/
PendingOperation *ContactManager::removePresenceSubscription(
- const QList<QSharedPointer<Contact> > &contacts, const QString &message)
+ const QList<ContactPtr> &contacts, const QString &message)
{
if (!mPriv->subscribeChannel) {
return new PendingFailure(this, TELEPATHY_ERROR_NOT_IMPLEMENTED,
@@ -376,7 +376,7 @@ bool ContactManager::publicationAuthorizationHasMessage() const
* to authorize publication of the user's presence to the contacts
*/
PendingOperation *ContactManager::authorizePresencePublication(
- const QList<QSharedPointer<Contact> > &contacts, const QString &message)
+ const QList<ContactPtr> &contacts, const QString &message)
{
if (!mPriv->publishChannel) {
return new PendingFailure(this, TELEPATHY_ERROR_NOT_IMPLEMENTED,
@@ -458,7 +458,7 @@ bool ContactManager::publicationRemovalHasMessage() const
* to remove any publication of the user's presence to the contacts
*/
PendingOperation *ContactManager::removePresencePublication(
- const QList<QSharedPointer<Contact> > &contacts, const QString &message)
+ const QList<ContactPtr> &contacts, const QString &message)
{
if (!mPriv->publishChannel) {
return new PendingFailure(this, TELEPATHY_ERROR_NOT_IMPLEMENTED,
@@ -491,7 +491,7 @@ bool ContactManager::canBlockContacts() const
* to take the requested action
*/
PendingOperation *ContactManager::blockContacts(
- const QList<QSharedPointer<Contact> > &contacts, bool value)
+ const QList<ContactPtr> &contacts, bool value)
{
if (!mPriv->denyChannel) {
return new PendingFailure(this, TELEPATHY_ERROR_NOT_IMPLEMENTED,
@@ -512,12 +512,12 @@ PendingContacts *ContactManager::contactsForHandles(const UIntList &handles,
debug() << "Building contacts for" << handles.size() << "handles" << "with" << features.size()
<< "features";
- QMap<uint, QSharedPointer<Contact> > satisfyingContacts;
+ QMap<uint, ContactPtr> satisfyingContacts;
QSet<uint> otherContacts;
QSet<Contact::Feature> missingFeatures;
foreach (uint handle, handles) {
- QSharedPointer<Contact> contact = lookupContactByHandle(handle);
+ ContactPtr contact = lookupContactByHandle(handle);
if (contact) {
if ((features - contact->requestedFeatures()).isEmpty()) {
// Contact exists and has all the requested features
@@ -591,7 +591,7 @@ PendingContacts *ContactManager::contactsForIdentifiers(const QStringList &ident
return contacts;
}
-PendingContacts *ContactManager::upgradeContacts(const QList<QSharedPointer<Contact> > &contacts,
+PendingContacts *ContactManager::upgradeContacts(const QList<ContactPtr> &contacts,
const QSet<Contact::Feature> &features)
{
debug() << "Upgrading" << contacts.size() << "contacts to have at least"
@@ -605,7 +605,7 @@ void ContactManager::onAliasesChanged(const Telepathy::AliasPairList &aliases)
debug() << "Got AliasesChanged for" << aliases.size() << "contacts";
foreach (AliasPair pair, aliases) {
- QSharedPointer<Contact> contact = lookupContactByHandle(pair.handle);
+ ContactPtr contact = lookupContactByHandle(pair.handle);
if (contact) {
contact->receiveAlias(pair.alias);
@@ -617,7 +617,7 @@ void ContactManager::onAvatarUpdated(uint handle, const QString &token)
{
debug() << "Got AvatarUpdate for contact with handle" << handle;
- QSharedPointer<Contact> contact = lookupContactByHandle(handle);
+ ContactPtr contact = lookupContactByHandle(handle);
if (contact) {
contact->receiveAvatarToken(token);
}
@@ -628,7 +628,7 @@ void ContactManager::onPresencesChanged(const Telepathy::SimpleContactPresences
debug() << "Got PresencesChanged for" << presences.size() << "contacts";
foreach (uint handle, presences.keys()) {
- QSharedPointer<Contact> contact = lookupContactByHandle(handle);
+ ContactPtr contact = lookupContactByHandle(handle);
if (contact) {
contact->receiveSimplePresence(presences[handle]);
@@ -649,17 +649,17 @@ void ContactManager::onSubscribeChannelMembersChanged(
warning() << "Found local pending contacts on subscribe list";
}
- foreach (QSharedPointer<Contact> contact, groupMembersAdded) {
+ foreach (ContactPtr contact, groupMembersAdded) {
debug() << "Contact" << contact->id() << "on subscribe list";
contact->setSubscriptionState(Contact::PresenceStateYes);
}
- foreach (QSharedPointer<Contact> contact, groupRemotePendingMembersAdded) {
+ foreach (ContactPtr contact, groupRemotePendingMembersAdded) {
debug() << "Contact" << contact->id() << "added to subscribe list";
contact->setSubscriptionState(Contact::PresenceStateAsk);
}
- foreach (QSharedPointer<Contact> contact, groupMembersRemoved) {
+ foreach (ContactPtr contact, groupMembersRemoved) {
debug() << "Contact" << contact->id() << "removed from subscribe list";
contact->setSubscriptionState(Contact::PresenceStateNo);
}
@@ -678,17 +678,17 @@ void ContactManager::onPublishChannelMembersChanged(
warning() << "Found remote pending contacts on publish list";
}
- foreach (QSharedPointer<Contact> contact, groupMembersAdded) {
+ foreach (ContactPtr contact, groupMembersAdded) {
debug() << "Contact" << contact->id() << "on publish list";
contact->setPublishState(Contact::PresenceStateYes);
}
- foreach (QSharedPointer<Contact> contact, groupLocalPendingMembersAdded) {
+ foreach (ContactPtr contact, groupLocalPendingMembersAdded) {
debug() << "Contact" << contact->id() << "added to publish list";
contact->setPublishState(Contact::PresenceStateAsk);
}
- foreach (QSharedPointer<Contact> contact, groupMembersRemoved) {
+ foreach (ContactPtr contact, groupMembersRemoved) {
debug() << "Contact" << contact->id() << "removed from publish list";
contact->setPublishState(Contact::PresenceStateNo);
}
@@ -715,12 +715,12 @@ void ContactManager::onDenyChannelMembersChanged(
warning() << "Found remote pending contacts on deny list";
}
- foreach (QSharedPointer<Contact> contact, groupMembersAdded) {
+ foreach (ContactPtr contact, groupMembersAdded) {
debug() << "Contact" << contact->id() << "added to deny list";
contact->setBlocked(true);
}
- foreach (QSharedPointer<Contact> contact, groupMembersRemoved) {
+ foreach (ContactPtr contact, groupMembersRemoved) {
debug() << "Contact" << contact->id() << "removed from deny list";
contact->setBlocked(false);
}
@@ -737,13 +737,14 @@ ContactManager::~ContactManager()
delete mPriv;
}
-QSharedPointer<Contact> ContactManager::ensureContact(const ReferencedHandles &handle,
- const QSet<Contact::Feature> &features, const QVariantMap &attributes) {
+ContactPtr ContactManager::ensureContact(const ReferencedHandles &handle,
+ const QSet<Contact::Feature> &features, const QVariantMap &attributes)
+{
uint bareHandle = handle[0];
- QSharedPointer<Contact> contact = lookupContactByHandle(bareHandle);
+ ContactPtr contact = lookupContactByHandle(bareHandle);
if (!contact) {
- contact = QSharedPointer<Contact>(new Contact(this, handle, features, attributes));
+ contact = ContactPtr(new Contact(this, handle, features, attributes));
mPriv->contacts.insert(bareHandle, contact);
} else {
contact->augment(features, attributes);
@@ -779,7 +780,7 @@ void ContactManager::setContactListChannels(
QMap<uint, ContactListChannel>::const_iterator i = contactListsChannels.constBegin();
QMap<uint, ContactListChannel>::const_iterator end = contactListsChannels.constEnd();
uint type;
- QSharedPointer<Channel> channel;
+ ChannelPtr channel;
const char *method;
while (i != end) {
type = i.key();
@@ -825,9 +826,9 @@ void ContactManager::setContactListChannels(
}
}
-QSharedPointer<Contact> ContactManager::lookupContactByHandle(uint handle)
+ContactPtr ContactManager::lookupContactByHandle(uint handle)
{
- QSharedPointer<Contact> contact;
+ ContactPtr contact;
if (mPriv->contacts.contains(handle)) {
contact = mPriv->contacts.value(handle).toStrongRef();
@@ -883,7 +884,7 @@ Contacts ContactManager::Private::allKnownContacts() const
{
Contacts contacts;
foreach (const ContactListChannel &contactListChannel, contactListsChannels) {
- QSharedPointer<Channel> channel = contactListChannel.channel;
+ ChannelPtr channel = contactListChannel.channel;
if (!channel) {
continue;
}
@@ -921,7 +922,7 @@ void ContactManager::Private::updateContactsPresenceState()
}
Contacts contacts = allKnownContacts();
- foreach (QSharedPointer<Contact> contact, contacts) {
+ foreach (ContactPtr contact, contacts) {
if (subscribeChannel) {
// not in "subscribe" -> No, in "subscribe" lp -> Ask, in "subscribe" current -> Yes
if (subscribeContacts.contains(contact)) {
diff --git a/TelepathyQt4/Client/contact-manager.h b/TelepathyQt4/Client/contact-manager.h
index b14bfb7..b6018b3 100644
--- a/TelepathyQt4/Client/contact-manager.h
+++ b/TelepathyQt4/Client/contact-manager.h
@@ -30,7 +30,6 @@
#include <QList>
#include <QSet>
-#include <QSharedPointer>
#include <TelepathyQt4/Types>
#include <TelepathyQt4/Client/Contact>
@@ -62,26 +61,26 @@ class ContactManager : public QObject
bool canRequestPresenceSubscription() const;
bool subscriptionRequestHasMessage() const;
PendingOperation *requestPresenceSubscription(
- const QList<QSharedPointer<Contact> > &contacts, const QString &message = QString());
+ const QList<ContactPtr> &contacts, const QString &message = QString());
bool canRemovePresenceSubscription() const;
bool subscriptionRemovalHasMessage() const;
bool canRescindPresenceSubscriptionRequest() const;
bool subscriptionRescindingHasMessage() const;
PendingOperation *removePresenceSubscription(
- const QList<QSharedPointer<Contact> > &contacts, const QString &message = QString());
+ const QList<ContactPtr> &contacts, const QString &message = QString());
bool canAuthorizePresencePublication() const;
bool publicationAuthorizationHasMessage() const;
PendingOperation *authorizePresencePublication(
- const QList<QSharedPointer<Contact> > &contacts, const QString &message = QString());
+ const QList<ContactPtr> &contacts, const QString &message = QString());
bool publicationRejectionHasMessage() const;
bool canRemovePresencePublication() const;
bool publicationRemovalHasMessage() const;
PendingOperation *removePresencePublication(
- const QList<QSharedPointer<Contact> > &contacts, const QString &message = QString());
+ const QList<ContactPtr> &contacts, const QString &message = QString());
bool canBlockContacts() const;
PendingOperation *blockContacts(
- const QList<QSharedPointer<Contact> > &contacts, bool value = true);
+ const QList<ContactPtr> &contacts, bool value = true);
PendingContacts *contactsForHandles(const UIntList &handles,
const QSet<Contact::Feature> &features = QSet<Contact::Feature>());
@@ -91,9 +90,11 @@ class ContactManager : public QObject
PendingContacts *contactsForIdentifiers(const QStringList &identifiers,
const QSet<Contact::Feature> &features = QSet<Contact::Feature>());
- PendingContacts *upgradeContacts(const QList<QSharedPointer<Contact> > &contacts,
+ PendingContacts *upgradeContacts(const QList<ContactPtr> &contacts,
const QSet<Contact::Feature> &features);
+ ContactPtr lookupContactByHandle(uint handle);
+
Q_SIGNALS:
void presencePublicationRequested(const Telepathy::Client::Contacts &contacts);
@@ -151,24 +152,21 @@ class ContactManager : public QObject
Type type;
ReferencedHandles handle;
- QSharedPointer<Channel> channel;
+ ChannelPtr channel;
};
ContactManager(Connection *parent);
~ContactManager();
- QSharedPointer<Contact> ensureContact(const ReferencedHandles &handle,
+ ContactPtr ensureContact(const ReferencedHandles &handle,
const QSet<Contact::Feature> &features, const QVariantMap &attributes);
void setContactListChannels(const QMap<uint, ContactListChannel> &contactListsChannels);
- QSharedPointer<Contact> lookupContactByHandle(uint handle);
-
struct Private;
friend struct Private;
friend class Connection;
friend class PendingContacts;
- friend class Contact;
Private *mPriv;
};
diff --git a/TelepathyQt4/Client/contact.cpp b/TelepathyQt4/Client/contact.cpp
index 4ee49e2..056396d 100644
--- a/TelepathyQt4/Client/contact.cpp
+++ b/TelepathyQt4/Client/contact.cpp
@@ -167,37 +167,37 @@ Contact::PresenceState Contact::publishState() const
PendingOperation *Contact::requestPresenceSubscription(const QString &message)
{
- QSharedPointer<Contact> self =
+ ContactPtr self =
mPriv->manager->lookupContactByHandle(mPriv->handle[0]);
return mPriv->manager->requestPresenceSubscription(
- QList<QSharedPointer<Contact> >() << self,
+ QList<ContactPtr >() << self,
message);
}
PendingOperation *Contact::removePresenceSubscription(const QString &message)
{
- QSharedPointer<Contact> self =
+ ContactPtr self =
mPriv->manager->lookupContactByHandle(mPriv->handle[0]);
return mPriv->manager->removePresenceSubscription(
- QList<QSharedPointer<Contact> >() << self,
+ QList<ContactPtr>() << self,
message);
}
PendingOperation *Contact::authorizePresencePublication(const QString &message)
{
- QSharedPointer<Contact> self =
+ ContactPtr self =
mPriv->manager->lookupContactByHandle(mPriv->handle[0]);
return mPriv->manager->authorizePresencePublication(
- QList<QSharedPointer<Contact> >() << self,
+ QList<ContactPtr>() << self,
message);
}
PendingOperation *Contact::removePresencePublication(const QString &message)
{
- QSharedPointer<Contact> self =
+ ContactPtr self =
mPriv->manager->lookupContactByHandle(mPriv->handle[0]);
return mPriv->manager->removePresencePublication(
- QList<QSharedPointer<Contact> >() << self,
+ QList<ContactPtr>() << self,
message);
}
@@ -208,10 +208,10 @@ bool Contact::isBlocked() const
PendingOperation *Contact::block(bool value)
{
- QSharedPointer<Contact> self =
+ ContactPtr self =
mPriv->manager->lookupContactByHandle(mPriv->handle[0]);
return mPriv->manager->blockContacts(
- QList<QSharedPointer<Contact> >() << self,
+ QList<ContactPtr>() << self,
value);
}
diff --git a/TelepathyQt4/Client/contact.h b/TelepathyQt4/Client/contact.h
index bb71882..a5706be 100644
--- a/TelepathyQt4/Client/contact.h
+++ b/TelepathyQt4/Client/contact.h
@@ -101,7 +101,7 @@ Q_SIGNALS:
// TODO: consider how the Renaming interface should work and map to Contacts
// I guess it would be something like:
- // void renamedTo(QSharedPointer<Telepathy::Client::Contact>)
+ // void renamedTo(Telepathy::Client::ContactPtr)
// with that contact getting the same features requested as the current one. Or would we rather
// want to signal that change right away with a handle?
@@ -127,9 +127,10 @@ private:
Private *mPriv;
};
-typedef QSet<QSharedPointer<Contact> > Contacts;
+typedef QSharedPointer<Contact> ContactPtr;
+typedef QSet<ContactPtr> Contacts;
-inline uint qHash(const QSharedPointer<Contact> &contact)
+inline uint qHash(const ContactPtr &contact)
{
return qHash(contact.data());
}
diff --git a/TelepathyQt4/Client/feature.cpp b/TelepathyQt4/Client/feature.cpp
new file mode 100644
index 0000000..dee5d3e
--- /dev/null
+++ b/TelepathyQt4/Client/feature.cpp
@@ -0,0 +1,65 @@
+/*
+ * This file is part of TelepathyQt4
+ *
+ * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2009 Nokia Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <TelepathyQt4/Client/Feature>
+
+namespace Telepathy
+{
+namespace Client
+{
+
+struct Feature::Private : public QSharedData
+{
+ Private(bool critical) : critical(critical) {}
+
+ bool critical;
+};
+
+Feature::Feature(const QString &className, uint id, bool critical)
+ : QPair<QString, uint>(className, id),
+ mPriv(new Private(critical))
+{
+}
+
+Feature::Feature(const Feature &other)
+ : QPair<QString, uint>(other.first, other.second),
+ mPriv(other.mPriv)
+{
+}
+
+Feature::~Feature()
+{
+}
+
+Feature &Feature::operator=(const Feature &other)
+{
+ *this = other;
+ this->mPriv = other.mPriv;
+ return *this;
+}
+
+bool Feature::isCritical() const
+{
+ return mPriv->critical;
+}
+
+} // Telepathy::Client
+} // Telepathy
diff --git a/TelepathyQt4/Client/feature.h b/TelepathyQt4/Client/feature.h
new file mode 100644
index 0000000..3334a64
--- /dev/null
+++ b/TelepathyQt4/Client/feature.h
@@ -0,0 +1,72 @@
+/*
+ * This file is part of TelepathyQt4
+ *
+ * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2009 Nokia Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef _TelepathyQt4_cli_feature_h_HEADER_GUARD_
+#define _TelepathyQt4_cli_feature_h_HEADER_GUARD_
+
+#ifndef IN_TELEPATHY_QT4_HEADER
+#error IN_TELEPATHY_QT4_HEADER
+#endif
+
+#include <QPair>
+#include <QSet>
+#include <QSharedDataPointer>
+#include <QString>
+
+namespace Telepathy
+{
+namespace Client
+{
+
+class Feature : public QPair<QString, uint>
+{
+public:
+ Feature(const QString &className, uint id, bool critical = false);
+ Feature(const Feature &other);
+ ~Feature();
+
+ Feature &operator=(const Feature &other);
+
+ bool isCritical() const;
+
+private:
+ struct Private;
+ friend struct Private;
+ QSharedDataPointer<Private> mPriv;
+};
+
+class Features : public QSet<Feature>
+{
+public:
+ Features() { }
+ Features(const Feature &feature) { insert(feature); }
+ Features(const QSet<Feature> &s) : QSet<Feature>(s) { }
+};
+
+inline Features operator|(const Feature &feature1, const Feature &feature2)
+{
+ return Features() << feature1 << feature2;
+}
+
+} // Telepathy::Client
+} // Telepathy
+
+#endif
diff --git a/TelepathyQt4/Client/file-transfer.h b/TelepathyQt4/Client/file-transfer.h
index f493173..00ba9a4 100644
--- a/TelepathyQt4/Client/file-transfer.h
+++ b/TelepathyQt4/Client/file-transfer.h
@@ -48,6 +48,8 @@ private:
Private *mPriv;
};
+typedef QExplicitlySharedDataPointer<FileTransfer> FileTransferPtr;
+
} // Telepathy::Client
} // Telepathy
diff --git a/TelepathyQt4/Client/message.cpp b/TelepathyQt4/Client/message.cpp
index 9f4f5cc..423cd8c 100644
--- a/TelepathyQt4/Client/message.cpp
+++ b/TelepathyQt4/Client/message.cpp
@@ -48,7 +48,7 @@ public:
// for received messages only
QPointer<TextChannel> textChannel;
- QSharedPointer<Contact> sender;
+ ContactPtr sender;
inline QVariant value(uint index, const char *key) const;
inline uint getUIntOrZero(uint index, const char *key) const;
@@ -501,11 +501,11 @@ QDateTime ReceivedMessage::received() const
/**
* Return the Contact who sent the message, or
- * QSharedPointer<Contact>(0) if unknown.
+ * ContactPtr(0) if unknown.
*
- * \return The sender or QSharedPointer<Contact>(0)
+ * \return The sender or ContactPtr(0)
*/
-QSharedPointer<Contact> ReceivedMessage::sender() const
+ContactPtr ReceivedMessage::sender() const
{
return mPriv->sender;
}
@@ -564,7 +564,7 @@ void ReceivedMessage::clearSenderHandle()
mPriv->clearSenderHandle();
}
-void ReceivedMessage::setSender(const QSharedPointer<Contact> &sender)
+void ReceivedMessage::setSender(const ContactPtr &sender)
{
mPriv->sender = sender;
}
diff --git a/TelepathyQt4/Client/message.h b/TelepathyQt4/Client/message.h
index 5354f35..b17da34 100644
--- a/TelepathyQt4/Client/message.h
+++ b/TelepathyQt4/Client/message.h
@@ -26,8 +26,8 @@
#endif
#include <QSharedDataPointer>
-#include <QSharedPointer>
+#include <TelepathyQt4/Client/Contact>
#include <TelepathyQt4/Constants>
#include <TelepathyQt4/Types>
@@ -100,7 +100,7 @@ public:
~ReceivedMessage();
QDateTime received() const;
- QSharedPointer<Contact> sender() const;
+ ContactPtr sender() const;
bool isScrollback() const;
bool isRescued() const;
@@ -115,7 +115,7 @@ private:
void setForceNonText();
void clearSenderHandle();
- void setSender(const QSharedPointer<Contact> &sender);
+ void setSender(const ContactPtr &sender);
};
} // Telepathy::Client
diff --git a/TelepathyQt4/Client/pending-account.cpp b/TelepathyQt4/Client/pending-account.cpp
index cbb4783..f4fc49d 100644
--- a/TelepathyQt4/Client/pending-account.cpp
+++ b/TelepathyQt4/Client/pending-account.cpp
@@ -26,7 +26,6 @@
#include "TelepathyQt4/debug-internal.h"
#include <TelepathyQt4/Client/AccountManager>
-#include <TelepathyQt4/Client/Account>
#include <QDBusObjectPath>
#include <QDBusPendingCallWatcher>
@@ -51,13 +50,13 @@ namespace Client
struct PendingAccount::Private
{
Private(AccountManager *manager) :
- manager(manager),
- account(0)
+ manager(manager)
{
}
AccountManager *manager;
- QSharedPointer<Account> account;
+ AccountPtr account;
+ QDBusObjectPath objectPath;
};
/**
@@ -116,29 +115,52 @@ AccountManager *PendingAccount::manager() const
*
* \return Account object.
*/
-QSharedPointer<Account> PendingAccount::account() const
+AccountPtr PendingAccount::account() const
{
if (!isFinished()) {
warning() << "PendingAccount::account called before finished, returning 0";
- return QSharedPointer<Account>();
+ return AccountPtr();
} else if (!isValid()) {
warning() << "PendingAccount::account called when not valid, returning 0";
- return QSharedPointer<Account>();
+ return AccountPtr();
+ }
+
+ if (!mPriv->account) {
+ mPriv->account = AccountPtr(
+ new Account(mPriv->manager, mPriv->objectPath.path()));
}
return mPriv->account;
}
+/**
+ * Returns the account object path or an empty string on error.
+ *
+ * This method is useful for creating custom Account objects, so instead of using
+ * PendingAccount::account, one could construct a new custom account with
+ * the object path.
+ *
+ * \return Account object path.
+ */
+QString PendingAccount::objectPath() const
+{
+ if (!isFinished()) {
+ warning() << "PendingAccount::account called before finished";
+ } else if (!isValid()) {
+ warning() << "PendingAccount::account called when not valid";
+ }
+
+ return mPriv->objectPath.path();
+}
+
void PendingAccount::onCallFinished(QDBusPendingCallWatcher *watcher)
{
QDBusPendingReply<QDBusObjectPath> reply = *watcher;
if (!reply.isError()) {
- debug() << "Got reply to AccountManager.CreateAccount";
- QDBusObjectPath objectPath = reply.value();
- debug() << "Creating account for objectPath: " << objectPath.path();
- mPriv->account = QSharedPointer<Account>(
- new Account(mPriv->manager, objectPath.path()));
+ mPriv->objectPath = reply.value();
+ debug() << "Got reply to AccountManager.CreateAccount - object path:" <<
+ mPriv->objectPath.path();
setFinished();
} else {
debug().nospace() <<
diff --git a/TelepathyQt4/Client/pending-account.h b/TelepathyQt4/Client/pending-account.h
index c483497..af29210 100644
--- a/TelepathyQt4/Client/pending-account.h
+++ b/TelepathyQt4/Client/pending-account.h
@@ -29,7 +29,6 @@
#include <TelepathyQt4/Client/Account>
#include <TelepathyQt4/Client/PendingOperation>
-#include <QSharedPointer>
#include <QString>
#include <QVariantMap>
@@ -50,7 +49,10 @@ public:
~PendingAccount();
AccountManager *manager() const;
- QSharedPointer<Account> account() const;
+
+ AccountPtr account() const;
+
+ QString objectPath() const;
private Q_SLOTS:
void onCallFinished(QDBusPendingCallWatcher *watcher);
diff --git a/TelepathyQt4/Client/pending-channel.cpp b/TelepathyQt4/Client/pending-channel.cpp
index 9f8b9e5..7e70706 100644
--- a/TelepathyQt4/Client/pending-channel.cpp
+++ b/TelepathyQt4/Client/pending-channel.cpp
@@ -57,7 +57,7 @@ struct PendingChannel::Private
uint handle;
QDBusObjectPath objectPath;
QVariantMap immutableProperties;
- QSharedPointer<Channel> channel;
+ ChannelPtr channel;
};
/**
@@ -186,7 +186,7 @@ const QString &PendingChannel::channelType() const
*
* \return The handle type, as specified in #HandleType.
*/
-uint PendingChannel::handleType() const
+uint PendingChannel::targetHandleType() const
{
return mPriv->handleType;
}
@@ -194,11 +194,11 @@ uint PendingChannel::handleType() const
/**
* If the channel request has finished, return the target handle of the
* resulting channel. Otherwise, return the target handle that was requested
- * (which might be different in some situations - see handleType).
+ * (which might be different in some situations - see targetHandleType).
*
* \return The handle.
*/
-uint PendingChannel::handle() const
+uint PendingChannel::targetHandle() const
{
return mPriv->handle;
}
@@ -232,18 +232,18 @@ QVariantMap PendingChannel::immutableProperties() const
* Returns a shared pointer to a Channel high-level proxy object associated
* with the remote channel resulting from the channel request. If isValid()
* returns <code>false</code>, the request has not (at least yet) completed
- * successfully, and a null QSharedPointer will be returned.
+ * successfully, and a null ChannelPtr will be returned.
*
* \return Shared pointer to the new Channel object, 0 if an error occurred.
*/
-QSharedPointer<Channel> PendingChannel::channel() const
+ChannelPtr PendingChannel::channel() const
{
if (!isFinished()) {
warning() << "PendingChannel::channel called before finished, returning 0";
- return QSharedPointer<Channel>();
+ return ChannelPtr();
} else if (!isValid()) {
warning() << "PendingChannel::channel called when not valid, returning 0";
- return QSharedPointer<Channel>();
+ return ChannelPtr();
}
if (mPriv->channel) {
@@ -251,35 +251,55 @@ QSharedPointer<Channel> PendingChannel::channel() const
}
if (channelType() == TELEPATHY_INTERFACE_CHANNEL_TYPE_TEXT) {
- mPriv->channel = QSharedPointer<Channel>(
+ mPriv->channel = ChannelPtr(
new TextChannel(connection(), mPriv->objectPath.path(),
mPriv->immutableProperties));
}
else if (channelType() == TELEPATHY_INTERFACE_CHANNEL_TYPE_STREAMED_MEDIA) {
- mPriv->channel = QSharedPointer<Channel>(
+ mPriv->channel = ChannelPtr(
new StreamedMediaChannel(connection(), mPriv->objectPath.path(),
mPriv->immutableProperties));
}
else if (channelType() == TELEPATHY_INTERFACE_CHANNEL_TYPE_ROOM_LIST) {
- mPriv->channel = QSharedPointer<Channel>(
+ mPriv->channel = ChannelPtr(
new RoomList(connection(), mPriv->objectPath.path(),
mPriv->immutableProperties));
}
// FIXME: update spec so we can do this properly
else if (channelType() == "org.freedesktop.Telepathy.Channel.Type.FileTransfer") {
- mPriv->channel = QSharedPointer<Channel>(
+ mPriv->channel = ChannelPtr(
new FileTransfer(connection(), mPriv->objectPath.path(),
mPriv->immutableProperties));
}
else {
// ContactList, old-style Tubes, or a future channel type
- mPriv->channel = QSharedPointer<Channel>(
+ mPriv->channel = ChannelPtr(
new Channel(connection(), mPriv->objectPath.path(),
mPriv->immutableProperties));
}
return mPriv->channel;
}
+/**
+ * Returns the channel object path or an empty string on error.
+ *
+ * This method is useful for creating custom Channel objects, so instead of using
+ * PendingChannel::channel, one could construct a new custom channel with
+ * the object path.
+ *
+ * \return Channel object path.
+ */
+QString PendingChannel::objectPath() const
+{
+ if (!isFinished()) {
+ warning() << "PendingChannel::channel called before finished";
+ } else if (!isValid()) {
+ warning() << "PendingChannel::channel called when not valid";
+ }
+
+ return mPriv->objectPath.path();
+}
+
void PendingChannel::onCallCreateChannelFinished(QDBusPendingCallWatcher *watcher)
{
QDBusPendingReply<QDBusObjectPath, QVariantMap> reply = *watcher;
diff --git a/TelepathyQt4/Client/pending-channel.h b/TelepathyQt4/Client/pending-channel.h
index 17a9119..cceb57f 100644
--- a/TelepathyQt4/Client/pending-channel.h
+++ b/TelepathyQt4/Client/pending-channel.h
@@ -29,7 +29,6 @@
#include <TelepathyQt4/Client/Channel>
#include <TelepathyQt4/Client/PendingOperation>
-#include <QSharedPointer>
#include <QString>
#include <QVariantMap>
@@ -56,13 +55,15 @@ public:
const QString &channelType() const;
- uint handleType() const;
+ uint targetHandleType() const;
- uint handle() const;
+ uint targetHandle() const;
QVariantMap immutableProperties() const;
- QSharedPointer<Channel> channel() const;
+ ChannelPtr channel() const;
+
+ QString objectPath() const;
private Q_SLOTS:
void onCallCreateChannelFinished(QDBusPendingCallWatcher *watcher);
diff --git a/TelepathyQt4/Client/pending-connection.cpp b/TelepathyQt4/Client/pending-connection.cpp
index 471350f..b0c51ba 100644
--- a/TelepathyQt4/Client/pending-connection.cpp
+++ b/TelepathyQt4/Client/pending-connection.cpp
@@ -51,13 +51,14 @@ namespace Client
struct PendingConnection::Private
{
Private(ConnectionManager *manager) :
- manager(manager),
- connection(0)
+ manager(manager)
{
}
ConnectionManager *manager;
- QSharedPointer<Connection> connection;
+ ConnectionPtr connection;
+ QString busName;
+ QDBusObjectPath objectPath;
};
/**
@@ -113,31 +114,77 @@ ConnectionManager *PendingConnection::manager() const
*
* \return Connection object.
*/
-QSharedPointer<Connection> PendingConnection::connection() const
+ConnectionPtr PendingConnection::connection() const
{
if (!isFinished()) {
warning() << "PendingConnection::connection called before finished, returning 0";
- return QSharedPointer<Connection>();
+ return ConnectionPtr();
} else if (!isValid()) {
warning() << "PendingConnection::connection called when not valid, returning 0";
- return QSharedPointer<Connection>();
+ return ConnectionPtr();
+ }
+
+ if (!mPriv->connection) {
+ mPriv->connection = ConnectionPtr(
+ new Connection(mPriv->manager->dbusConnection(),
+ mPriv->busName, mPriv->objectPath.path()));
}
return mPriv->connection;
}
+/**
+ * Returns the connection's bus name ("service name"), or an empty string on
+ * error.
+ *
+ * This method is useful for creating custom Connection objects: instead
+ * of using PendingConnection::connection, one could construct a new custom
+ * connection from the bus name and object path.
+ *
+ * \return Connection bus name
+ * \sa objectPath()
+ */
+QString PendingConnection::busName() const
+{
+ if (!isFinished()) {
+ warning() << "PendingConnection::busName called before finished";
+ } else if (!isValid()) {
+ warning() << "PendingConnection::busName called when not valid";
+ }
+
+ return mPriv->busName;
+}
+
+/**
+ * Returns the connection's object path or an empty string on error.
+ *
+ * This method is useful for creating custom Connection objects: instead
+ * of using PendingConnection::connection, one could construct a new custom
+ * connection with the bus name and object path.
+ *
+ * \return Connection object path
+ * \sa busName()
+ */
+QString PendingConnection::objectPath() const
+{
+ if (!isFinished()) {
+ warning() << "PendingConnection::connection called before finished";
+ } else if (!isValid()) {
+ warning() << "PendingConnection::connection called when not valid";
+ }
+
+ return mPriv->objectPath.path();
+}
+
void PendingConnection::onCallFinished(QDBusPendingCallWatcher *watcher)
{
QDBusPendingReply<QString, QDBusObjectPath> reply = *watcher;
if (!reply.isError()) {
- debug() << "Got reply to ConnectionManager.CreateConnection";
- QString serviceName = reply.argumentAt<0>();
- QDBusObjectPath objectPath = reply.argumentAt<1>();
- debug() << "Creating connection for objectPath: " << objectPath.path();
- mPriv->connection = QSharedPointer<Connection>(
- new Connection(mPriv->manager->dbusConnection(),
- serviceName, objectPath.path()));
+ mPriv->busName = reply.argumentAt<0>();
+ mPriv->objectPath = reply.argumentAt<1>();
+ debug() << "Got reply to ConnectionManager.CreateConnection - bus name:" <<
+ mPriv->busName << "- object path:" << mPriv->objectPath.path();
setFinished();
} else {
debug().nospace() <<
diff --git a/TelepathyQt4/Client/pending-connection.h b/TelepathyQt4/Client/pending-connection.h
index 21e497f..eba1df7 100644
--- a/TelepathyQt4/Client/pending-connection.h
+++ b/TelepathyQt4/Client/pending-connection.h
@@ -29,7 +29,6 @@
#include <TelepathyQt4/Client/Connection>
#include <TelepathyQt4/Client/PendingOperation>
-#include <QSharedPointer>
#include <QString>
#include <QVariantMap>
@@ -50,7 +49,12 @@ public:
~PendingConnection();
ConnectionManager *manager() const;
- QSharedPointer<Connection> connection() const;
+
+ ConnectionPtr connection() const;
+
+ QString busName() const;
+
+ QString objectPath() const;
private Q_SLOTS:
void onCallFinished(QDBusPendingCallWatcher *watcher);
diff --git a/TelepathyQt4/Client/pending-contacts.cpp b/TelepathyQt4/Client/pending-contacts.cpp
index 009b2b5..3ca4988 100644
--- a/TelepathyQt4/Client/pending-contacts.cpp
+++ b/TelepathyQt4/Client/pending-contacts.cpp
@@ -45,7 +45,7 @@ struct PendingContacts::Private
Private(ContactManager *manager, const UIntList &handles,
const QSet<Contact::Feature> &features,
- const QMap<uint, QSharedPointer<Contact> > &satisfyingContacts)
+ const QMap<uint, ContactPtr> &satisfyingContacts)
: manager(manager),
features(features),
satisfyingContacts(satisfyingContacts),
@@ -65,7 +65,7 @@ struct PendingContacts::Private
{
}
- Private(ContactManager *manager, const QList<QSharedPointer<Contact> > &contactsToUpgrade,
+ Private(ContactManager *manager, const QList<ContactPtr> &contactsToUpgrade,
const QSet<Contact::Feature> &features)
: manager(manager),
features(features),
@@ -78,17 +78,17 @@ struct PendingContacts::Private
// Generic parameters
ContactManager *manager;
QSet<Contact::Feature> features;
- QMap<uint, QSharedPointer<Contact> > satisfyingContacts;
+ QMap<uint, ContactPtr> satisfyingContacts;
// Request type specific parameters
RequestType requestType;
UIntList handles;
QStringList identifiers;
- QList<QSharedPointer<Contact> > contactsToUpgrade;
+ QList<ContactPtr> contactsToUpgrade;
PendingContacts *nested;
// Results
- QList<QSharedPointer<Contact> > contacts;
+ QList<ContactPtr> contacts;
UIntList invalidHandles;
};
@@ -138,7 +138,7 @@ QStringList PendingContacts::identifiers() const
return mPriv->identifiers;
}
-QList<QSharedPointer<Contact> > PendingContacts::contactsToUpgrade() const
+QList<ContactPtr> PendingContacts::contactsToUpgrade() const
{
if (!isUpgrade()) {
warning() << "Tried to get contacts to upgrade from" << this << "which is not an upgrade!";
@@ -152,7 +152,7 @@ bool PendingContacts::isUpgrade() const
return mPriv->requestType == Private::Upgrade;
}
-QList<QSharedPointer<Contact> > PendingContacts::contacts() const
+QList<ContactPtr> PendingContacts::contacts() const
{
if (!isFinished()) {
warning() << "PendingContacts::contacts() called before finished";
@@ -254,7 +254,7 @@ void PendingContacts::onNestedFinished(PendingOperation *operation)
PendingContacts::PendingContacts(ContactManager *manager,
const UIntList &handles, const QSet<Contact::Feature> &features,
- const QMap<uint, QSharedPointer<Contact> > &satisfyingContacts)
+ const QMap<uint, ContactPtr> &satisfyingContacts)
: PendingOperation(manager),
mPriv(new Private(manager, handles, features, satisfyingContacts))
{
@@ -267,11 +267,11 @@ PendingContacts::PendingContacts(ContactManager *manager,
}
PendingContacts::PendingContacts(ContactManager *manager,
- const QList<QSharedPointer<Contact> > &contacts, const QSet<Contact::Feature> &features)
+ const QList<ContactPtr> &contacts, const QSet<Contact::Feature> &features)
: PendingOperation(manager), mPriv(new Private(manager, contacts, features))
{
UIntList handles;
- foreach (QSharedPointer<Contact> contact, contacts) {
+ foreach (const ContactPtr &contact, contacts) {
handles.push_back(contact->handle()[0]);
}
diff --git a/TelepathyQt4/Client/pending-contacts.h b/TelepathyQt4/Client/pending-contacts.h
index cd3aa22..c23d862 100644
--- a/TelepathyQt4/Client/pending-contacts.h
+++ b/TelepathyQt4/Client/pending-contacts.h
@@ -31,7 +31,6 @@
#include <QList>
#include <QMap>
#include <QSet>
-#include <QSharedPointer>
#include <QStringList>
#include <TelepathyQt4/Types>
@@ -61,9 +60,9 @@ public:
QStringList identifiers() const;
bool isUpgrade() const;
- QList<QSharedPointer<Contact> > contactsToUpgrade() const;
+ QList<ContactPtr> contactsToUpgrade() const;
- QList<QSharedPointer<Contact> > contacts() const;
+ QList<ContactPtr> contacts() const;
UIntList invalidHandles() const;
private Q_SLOTS:
@@ -76,10 +75,10 @@ private:
PendingContacts(ContactManager *manager, const UIntList &handles,
const QSet<Contact::Feature> &features,
- const QMap<uint, QSharedPointer<Contact> > &satisfyingContacts);
+ const QMap<uint, ContactPtr> &satisfyingContacts);
PendingContacts(ContactManager *manager, const QStringList &identifiers,
const QSet<Contact::Feature> &features);
- PendingContacts(ContactManager *manager, const QList<QSharedPointer<Contact> > &contacts,
+ PendingContacts(ContactManager *manager, const QList<ContactPtr> &contacts,
const QSet<Contact::Feature> &features);
void allAttributesFetched();
diff --git a/TelepathyQt4/Client/pending-ready-channel.cpp b/TelepathyQt4/Client/pending-ready-channel.cpp
deleted file mode 100644
index c4ec9d8..0000000
--- a/TelepathyQt4/Client/pending-ready-channel.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * This file is part of TelepathyQt4
- *
- * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
- * Copyright (C) 2009 Nokia Corporation
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <TelepathyQt4/Client/PendingReadyChannel>
-
-#include "TelepathyQt4/Client/_gen/pending-ready-channel.moc.hpp"
-
-#include "TelepathyQt4/debug-internal.h"
-
-#include <QDBusPendingCallWatcher>
-#include <QDBusPendingReply>
-
-/**
- * \addtogroup clientsideproxies Client-side proxies
- *
- * Proxy objects representing remote service objects accessed via D-Bus.
- *
- * In addition to providing direct access to methods, signals and properties
- * exported by the remote objects, some of these proxies offer features like
- * automatic inspection of remote object capabilities, property tracking,
- * backwards compatibility helpers for older services and other utilities.
- */
-
-namespace Telepathy
-{
-namespace Client
-{
-
-struct PendingReadyChannel::Private
-{
- Private(Channel::Features requestedFeatures, Channel *channel) :
- requestedFeatures(requestedFeatures),
- channel(channel)
- {
- }
-
- Channel::Features requestedFeatures;
- Channel *channel;
-};
-
-/**
- * \class PendingReadyChannel
- * \ingroup clientchannel
- * \headerfile <TelepathyQt4/Client/pending-ready-channel.h> <TelepathyQt4/Client/PendingReadyChannel>
- *
- * Class containing the features requested and the reply to a request
- * for a channel to become ready. Instances of this class cannot be
- * constructed directly; the only way to get one is via Channel::becomeReady().
- */
-
-/**
- * Construct a PendingReadyChannel object.
- *
- * \param channel The Channel that will become ready.
- */
-PendingReadyChannel::PendingReadyChannel(Channel::Features requestedFeatures, Channel *channel)
- : PendingOperation(channel),
- mPriv(new Private(requestedFeatures, channel))
-{
-}
-
-/**
- * Class destructor.
- */
-PendingReadyChannel::~PendingReadyChannel()
-{
- delete mPriv;
-}
-
-/**
- * Return the Channel object through which the request was made.
- *
- * \return Channel object.
- */
-Channel *PendingReadyChannel::channel() const
-{
- return mPriv->channel;
-}
-
-/**
- * Return the Features that were requested to become ready on the
- * channel.
- *
- * \return Features.
- */
-Channel::Features PendingReadyChannel::requestedFeatures() const
-{
- return mPriv->requestedFeatures;
-}
-
-} // Telepathy::Client
-} // Telepathy
diff --git a/TelepathyQt4/Client/pending-ready.cpp b/TelepathyQt4/Client/pending-ready.cpp
index 825e82c..9729d95 100644
--- a/TelepathyQt4/Client/pending-ready.cpp
+++ b/TelepathyQt4/Client/pending-ready.cpp
@@ -43,13 +43,13 @@ namespace Client
struct PendingReady::Private
{
- Private(const QSet<uint> &requestedFeatures, QObject *object) :
+ Private(const Features &requestedFeatures, QObject *object) :
requestedFeatures(requestedFeatures),
object(object)
{
}
- QSet<uint> requestedFeatures;
+ Features requestedFeatures;
QObject *object;
};
@@ -67,7 +67,8 @@ struct PendingReady::Private
*
* \param object The object that will become ready.
*/
-PendingReady::PendingReady(const QSet<uint> &requestedFeatures, QObject *object)
+PendingReady::PendingReady(const Features &requestedFeatures,
+ QObject *object)
: PendingOperation(object),
mPriv(new Private(requestedFeatures, object))
{
@@ -97,7 +98,7 @@ QObject *PendingReady::object() const
*
* \return Features.
*/
-QSet<uint> PendingReady::requestedFeatures() const
+Features PendingReady::requestedFeatures() const
{
return mPriv->requestedFeatures;
}
diff --git a/TelepathyQt4/Client/pending-ready.h b/TelepathyQt4/Client/pending-ready.h
index 92bda3f..1e25a62 100644
--- a/TelepathyQt4/Client/pending-ready.h
+++ b/TelepathyQt4/Client/pending-ready.h
@@ -41,14 +41,15 @@ class PendingReady: public PendingOperation
Q_OBJECT
public:
+ PendingReady(const Features &requestedFeatures, QObject *object);
~PendingReady();
QObject *object() const;
- QSet<uint> requestedFeatures() const;
+
+ Features requestedFeatures() const;
private:
Q_DISABLE_COPY(PendingReady);
- PendingReady(const QSet<uint> &requestedFeatures, QObject *object);
struct Private;
friend struct Private;
diff --git a/TelepathyQt4/Client/readiness-helper.cpp b/TelepathyQt4/Client/readiness-helper.cpp
index 03034ef..dd06be2 100644
--- a/TelepathyQt4/Client/readiness-helper.cpp
+++ b/TelepathyQt4/Client/readiness-helper.cpp
@@ -25,9 +25,11 @@
#include "TelepathyQt4/debug-internal.h"
+#include <TelepathyQt4/Client/DBusProxy>
#include <TelepathyQt4/Client/PendingReady>
#include <TelepathyQt4/Constants>
+#include <QDBusError>
#include <QTimer>
namespace Telepathy
@@ -38,30 +40,33 @@ namespace Client
struct ReadinessHelper::Private
{
Private(ReadinessHelper *parent,
- DBusProxy *proxy,
+ QObject *object,
uint currentStatus,
- const QMap<uint, Introspectable> &introspectables);
+ const Introspectables &introspectables);
~Private();
void setCurrentStatus(uint newStatus);
- void introspectCore();
- void setIntrospectCompleted(uint feature, bool success);
+ void setIntrospectCompleted(const Feature &feature, bool success,
+ const QString &errorName = QString(),
+ const QString &errorMessage = QString());
void iterateIntrospection();
void abortOperations(const QString &errorName, const QString &errorMessage);
ReadinessHelper *parent;
+ QObject *object;
DBusProxy *proxy;
uint currentStatus;
QStringList interfaces;
- QMap<uint, Introspectable> introspectables;
+ Introspectables introspectables;
QSet<uint> supportedStatuses;
- QSet<uint> supportedFeatures;
- QSet<uint> satisfiedFeatures;
- QSet<uint> requestedFeatures;
- QSet<uint> missingFeatures;
- QSet<uint> pendingFeatures;
- QSet<uint> inFlightFeatures;
+ Features supportedFeatures;
+ Features satisfiedFeatures;
+ Features requestedFeatures;
+ Features missingFeatures;
+ Features pendingFeatures;
+ Features inFlightFeatures;
+ QHash<Feature, QPair<QString, QString> > missingFeaturesErrors;
QList<PendingReady *> pendingOperations;
bool pendingStatusChange;
@@ -70,22 +75,21 @@ struct ReadinessHelper::Private
ReadinessHelper::Private::Private(
ReadinessHelper *parent,
- DBusProxy *proxy,
+ QObject *object,
uint currentStatus,
- const QMap<uint, Introspectable> &introspectables)
+ const Introspectables &introspectables)
: parent(parent),
- proxy(proxy),
+ object(object),
+ proxy(qobject_cast<DBusProxy*>(object)),
currentStatus(currentStatus),
introspectables(introspectables),
pendingStatusChange(false),
pendingStatus(-1)
{
- // we must have an introspectable for core
- Q_ASSERT(introspectables.contains(0));
-
- QMap<uint, Introspectable>::const_iterator i = introspectables.constBegin();
- while (i != introspectables.constEnd()) {
- uint feature = i.key();
+ Introspectables::const_iterator i = introspectables.constBegin();
+ Introspectables::const_iterator end = introspectables.constEnd();
+ while (i != end) {
+ Feature feature = i.key();
Introspectable introspectable = i.value();
Q_ASSERT(introspectable.introspectFunc != 0);
supportedStatuses += introspectable.makesSenseForStatuses;
@@ -93,12 +97,14 @@ ReadinessHelper::Private::Private(
++i;
}
+ if (proxy) {
+ parent->connect(proxy,
+ SIGNAL(invalidated(Telepathy::Client::DBusProxy *, const QString &, const QString &)),
+ SLOT(onProxyInvalidated(Telepathy::Client::DBusProxy *, const QString &, const QString &)));
+ }
+
debug() << "ReadinessHelper: supportedStatuses =" << supportedStatuses;
debug() << "ReadinessHelper: supportedFeatures =" << supportedFeatures;
-
- if (supportedStatuses.contains(currentStatus)) {
- introspectCore();
- }
}
ReadinessHelper::Private::~Private()
@@ -117,7 +123,7 @@ void ReadinessHelper::Private::setCurrentStatus(uint newStatus)
pendingFeatures = requestedFeatures;
if (supportedStatuses.contains(currentStatus)) {
- introspectCore();
+ QTimer::singleShot(0, parent, SLOT(iterateIntrospection()));
} else {
emit parent->statusReady(currentStatus);
}
@@ -128,15 +134,8 @@ void ReadinessHelper::Private::setCurrentStatus(uint newStatus)
}
}
-void ReadinessHelper::Private::introspectCore()
-{
- debug() << "Status changed to" << currentStatus << "- introspecting core";
- requestedFeatures += 0;
- pendingFeatures += 0;
- QTimer::singleShot(0, parent, SLOT(iterateIntrospection()));
-}
-
-void ReadinessHelper::Private::setIntrospectCompleted(uint feature, bool success)
+void ReadinessHelper::Private::setIntrospectCompleted(const Feature &feature,
+ bool success, const QString &errorName, const QString &errorMessage)
{
debug() << "ReadinessHelper::setIntrospectCompleted: feature:" << feature <<
"- success:" << success;
@@ -163,6 +162,12 @@ void ReadinessHelper::Private::setIntrospectCompleted(uint feature, bool success
}
else {
missingFeatures.insert(feature);
+ missingFeaturesErrors.insert(feature,
+ QPair<QString, QString>(errorName, errorMessage));
+ if (errorName.isEmpty()) {
+ warning() << "ReadinessHelper::setIntrospectCompleted: Feature" <<
+ feature << "introspection failed but no error message was given";
+ }
}
pendingFeatures.remove(feature);
@@ -173,7 +178,7 @@ void ReadinessHelper::Private::setIntrospectCompleted(uint feature, bool success
void ReadinessHelper::Private::iterateIntrospection()
{
- if (!proxy->isValid()) {
+ if (proxy && !proxy->isValid()) {
return;
}
@@ -185,13 +190,17 @@ void ReadinessHelper::Private::iterateIntrospection()
// take care to flag anything with dependencies in missing, and the
// stuff depending on them, as missing
- QMap<uint, Introspectable>::const_iterator i = introspectables.constBegin();
- while (i != introspectables.constEnd()) {
- uint feature = i.key();
+ Introspectables::const_iterator i = introspectables.constBegin();
+ Introspectables::const_iterator end = introspectables.constEnd();
+ while (i != end) {
+ Feature feature = i.key();
Introspectable introspectable = i.value();
- QSet<uint> dependsOnFeatures = introspectable.dependsOnFeatures;
+ Features dependsOnFeatures = introspectable.dependsOnFeatures;
if (!dependsOnFeatures.intersect(missingFeatures).isEmpty()) {
- missingFeatures += feature;
+ missingFeatures.insert(feature);
+ missingFeaturesErrors.insert(feature,
+ QPair<QString, QString>(TELEPATHY_ERROR_NOT_AVAILABLE,
+ "Feature depend on other features that are not available"));
}
++i;
}
@@ -199,9 +208,15 @@ void ReadinessHelper::Private::iterateIntrospection()
// check if any pending operations for becomeReady should finish now
// based on their requested features having nothing more than what
// satisfiedFeatures + missingFeatures has
+ QString errorName;
+ QString errorMessage;
foreach (PendingReady *operation, pendingOperations) {
if ((operation->requestedFeatures() - (satisfiedFeatures + missingFeatures)).isEmpty()) {
- operation->setFinished();
+ if (parent->isReady(operation->requestedFeatures(), &errorName, &errorMessage)) {
+ operation->setFinished();
+ } else {
+ operation->setFinishedWithError(errorName, errorMessage);
+ }
pendingOperations.removeOne(operation);
}
}
@@ -217,8 +232,8 @@ void ReadinessHelper::Private::iterateIntrospection()
pendingFeatures -= (satisfiedFeatures + missingFeatures);
// find out which features don't have dependencies that are still pending
- QSet<uint> readyToIntrospect;
- foreach (uint feature, pendingFeatures) {
+ Features readyToIntrospect;
+ foreach (const Feature &feature, pendingFeatures) {
// missing doesn't have to be considered here anymore
if ((introspectables[feature].dependsOnFeatures - satisfiedFeatures).isEmpty()) {
readyToIntrospect.insert(feature);
@@ -227,7 +242,7 @@ void ReadinessHelper::Private::iterateIntrospection()
// now readyToIntrospect should contain all the features which have
// all their feature dependencies satisfied
- foreach (uint feature, readyToIntrospect) {
+ foreach (const Feature &feature, readyToIntrospect) {
if (inFlightFeatures.contains(feature)) {
continue;
}
@@ -243,18 +258,17 @@ void ReadinessHelper::Private::iterateIntrospection()
return; // will be called with a single-shot soon again
}
- if (feature != 0) {
- foreach (const QString &interface, introspectable.dependsOnInterfaces) {
- if (!interfaces.contains(interface)) {
- // Core is a dependency for everything, so interfaces are
- // introspected - if not all of them are present, the feature can't
- // possibly be satisfied
- debug() << "feature" << feature << "depends on interfaces" <<
- introspectable.dependsOnInterfaces << ", but interface" << interface <<
- "is not present";
- setIntrospectCompleted(feature, false);
- return; // will be called with a single-shot soon again
- }
+ foreach (const QString &interface, introspectable.dependsOnInterfaces) {
+ if (!interfaces.contains(interface)) {
+ // If a feature is ready to introspect and depends on a interface
+ // that is not present the feature can't possibly be satisfied
+ debug() << "feature" << feature << "depends on interfaces" <<
+ introspectable.dependsOnInterfaces << ", but interface" << interface <<
+ "is not present";
+ setIntrospectCompleted(feature, false,
+ QLatin1String(TELEPATHY_ERROR_NOT_AVAILABLE),
+ QLatin1String("Feature depend on interfaces that are not available"));
+ return; // will be called with a single-shot soon again
}
}
@@ -270,19 +284,17 @@ void ReadinessHelper::Private::abortOperations(const QString &errorName,
{
foreach (PendingReady *operation, pendingOperations) {
operation->setFinishedWithError(errorName, errorMessage);
+ pendingOperations.removeOne(operation);
}
}
-ReadinessHelper::ReadinessHelper(DBusProxy *proxy,
+ReadinessHelper::ReadinessHelper(QObject *object,
uint currentStatus,
- const QMap<uint, Introspectable> &introspectables,
+ const Introspectables &introspectables,
QObject *parent)
: QObject(parent),
- mPriv(new Private(this, proxy, currentStatus, introspectables))
+ mPriv(new Private(this, object, currentStatus, introspectables))
{
- connect(proxy,
- SIGNAL(invalidated(Telepathy::Client::DBusProxy *, const QString &, const QString &)),
- SLOT(onProxyInvalidated(Telepathy::Client::DBusProxy *, const QString &, const QString &)));
}
ReadinessHelper::~ReadinessHelper()
@@ -290,6 +302,32 @@ ReadinessHelper::~ReadinessHelper()
delete mPriv;
}
+void ReadinessHelper::addIntrospectables(const Introspectables &introspectables)
+{
+ // QMap::unite will create multiple items if the key is already in the map
+ // so let's make sure we don't duplicate keys
+ Introspectables::const_iterator i = introspectables.constBegin();
+ Introspectables::const_iterator end = introspectables.constEnd();
+ while (i != end) {
+ Feature feature = i.key();
+ if (mPriv->introspectables.contains(feature)) {
+ warning() << "ReadinessHelper::addIntrospectables: trying to add an "
+ "introspectable for feature" << feature << "but introspectable "
+ "for this feature already exists";
+ } else {
+ Introspectable introspectable = i.value();
+ mPriv->introspectables.insert(feature, introspectable);
+ mPriv->supportedStatuses += introspectable.makesSenseForStatuses;
+ mPriv->supportedFeatures += feature;
+ }
+
+ ++i;
+ }
+
+ debug() << "ReadinessHelper: new supportedStatuses =" << mPriv->supportedStatuses;
+ debug() << "ReadinessHelper: new supportedFeatures =" << mPriv->supportedFeatures;
+}
+
uint ReadinessHelper::currentStatus() const
{
return mPriv->currentStatus;
@@ -310,59 +348,113 @@ void ReadinessHelper::setInterfaces(const QStringList &interfaces)
mPriv->interfaces = interfaces;
}
-QSet<uint> ReadinessHelper::requestedFeatures() const
+Features ReadinessHelper::requestedFeatures() const
{
return mPriv->requestedFeatures;
}
-QSet<uint> ReadinessHelper::actualFeatures() const
+Features ReadinessHelper::actualFeatures() const
{
return mPriv->satisfiedFeatures;
}
-QSet<uint> ReadinessHelper::missingFeatures() const
+Features ReadinessHelper::missingFeatures() const
{
return mPriv->missingFeatures;
}
-bool ReadinessHelper::isReady(QSet<uint> features) const
+bool ReadinessHelper::isReady(const Feature &feature,
+ QString *errorName, QString *errorMessage) const
{
- if (!mPriv->proxy->isValid()) {
+ if (mPriv->proxy && !mPriv->proxy->isValid()) {
+ if (errorName) {
+ *errorName = mPriv->proxy->invalidationReason();
+ }
+ if (errorMessage) {
+ *errorMessage = mPriv->proxy->invalidationMessage();
+ }
return false;
}
- if (features.isEmpty()) {
- features << 0; // it is empty, consider core
+ if (!mPriv->supportedFeatures.contains(feature)) {
+ if (errorName) {
+ *errorName = QLatin1String(TELEPATHY_ERROR_INVALID_ARGUMENT);
+ }
+ if (errorMessage) {
+ *errorMessage = QLatin1String("Unsupported feature");
+ }
+ return false;
}
- // if we ask if core is ready, core should be on satisfiedFeatures
- if (features.contains(0)) {
- return (features - mPriv->satisfiedFeatures).isEmpty();
+ bool ret = true;
+
+ if (feature.isCritical()) {
+ if (!mPriv->satisfiedFeatures.contains(feature)) {
+ debug() << "ReadinessHelper::isReady: critical feature" << feature << "not ready";
+ ret = false;
+ }
} else {
- return (features - (mPriv->satisfiedFeatures + mPriv->missingFeatures)).isEmpty();
+ if (!mPriv->satisfiedFeatures.contains(feature) &&
+ !mPriv->missingFeatures.contains(feature)) {
+ debug() << "ReadinessHelper::isReady: feature" << feature << "not ready";
+ ret = false;
+ }
+ }
+
+ if (!ret) {
+ QPair<QString, QString> error = mPriv->missingFeaturesErrors[feature];
+ if (errorName) {
+ *errorName = error.first;
+ }
+ if (errorMessage) {
+ *errorMessage = error.second;
+ }
}
+
+ return ret;
}
-PendingReady *ReadinessHelper::becomeReady(QSet<uint> requestedFeatures)
+bool ReadinessHelper::isReady(const Features &features, QString *errorName, QString *errorMessage) const
{
- if (requestedFeatures.isEmpty()) {
- requestedFeatures << 0; // it is empty, consider core
+ if (mPriv->proxy && !mPriv->proxy->isValid()) {
+ if (errorName) {
+ *errorName = mPriv->proxy->invalidationReason();
+ }
+ if (errorMessage) {
+ *errorMessage = mPriv->proxy->invalidationMessage();
+ }
+ return false;
}
- QSet<uint> supportedFeatures = mPriv->supportedFeatures;
+ Q_ASSERT(!features.isEmpty());
+
+ foreach (const Feature &feature, features) {
+ if (!isReady(feature, errorName, errorMessage)) {
+ return false;
+ }
+ }
+ return true;
+}
+
+PendingReady *ReadinessHelper::becomeReady(const Features &requestedFeatures)
+{
+ Q_ASSERT(!requestedFeatures.isEmpty());
+
+ Features supportedFeatures = mPriv->supportedFeatures;
if (supportedFeatures.intersect(requestedFeatures) != requestedFeatures) {
debug() << "ReadinessHelper::becomeReady called with invalid features: requestedFeatures =" <<
requestedFeatures << "- supportedFeatures =" << mPriv->supportedFeatures;
PendingReady *operation =
- new PendingReady(requestedFeatures, mPriv->proxy);
- operation->setFinishedWithError(TELEPATHY_ERROR_INVALID_ARGUMENT,
- "Requested features contains invalid feature");
+ new PendingReady(requestedFeatures, mPriv->object);
+ operation->setFinishedWithError(
+ QLatin1String(TELEPATHY_ERROR_INVALID_ARGUMENT),
+ QLatin1String("Requested features contains unsupported feature"));
return operation;
}
- if (!mPriv->proxy->isValid()) {
+ if (mPriv->proxy && !mPriv->proxy->isValid()) {
PendingReady *operation =
- new PendingReady(requestedFeatures, mPriv->proxy);
+ new PendingReady(requestedFeatures, mPriv->object);
operation->setFinishedWithError(mPriv->proxy->invalidationReason(),
mPriv->proxy->invalidationMessage());
return operation;
@@ -379,7 +471,7 @@ PendingReady *ReadinessHelper::becomeReady(QSet<uint> requestedFeatures)
// it will be updated on iterateIntrospection
mPriv->pendingFeatures += requestedFeatures;
- operation = new PendingReady(requestedFeatures, mPriv->proxy);
+ operation = new PendingReady(requestedFeatures, mPriv->object);
mPriv->pendingOperations.append(operation);
QTimer::singleShot(0, this, SLOT(iterateIntrospection()));
@@ -387,13 +479,20 @@ PendingReady *ReadinessHelper::becomeReady(QSet<uint> requestedFeatures)
return operation;
}
-void ReadinessHelper::setIntrospectCompleted(uint feature, bool success)
+void ReadinessHelper::setIntrospectCompleted(const Feature &feature, bool success,
+ const QString &errorName, const QString &errorMessage)
{
- if (!mPriv->proxy->isValid()) {
+ if (mPriv->proxy && !mPriv->proxy->isValid()) {
// proxy became invalid, ignore here
return;
}
- mPriv->setIntrospectCompleted(feature, success);
+ mPriv->setIntrospectCompleted(feature, success, errorName, errorMessage);
+}
+
+void ReadinessHelper::setIntrospectCompleted(const Feature &feature, bool success,
+ const QDBusError &error)
+{
+ setIntrospectCompleted(feature, success, error.name(), error.message());
}
void ReadinessHelper::iterateIntrospection()
@@ -404,6 +503,10 @@ void ReadinessHelper::iterateIntrospection()
void ReadinessHelper::onProxyInvalidated(Telepathy::Client::DBusProxy *proxy,
const QString &errorName, const QString &errorMessage)
{
+ // clear satisfied and missing features as we have public methods to get them
+ mPriv->satisfiedFeatures.clear();
+ mPriv->missingFeatures.clear();
+
mPriv->abortOperations(errorName, errorMessage);
}
diff --git a/TelepathyQt4/Client/readiness-helper.h b/TelepathyQt4/Client/readiness-helper.h
index 4096923..51db440 100644
--- a/TelepathyQt4/Client/readiness-helper.h
+++ b/TelepathyQt4/Client/readiness-helper.h
@@ -26,17 +26,20 @@
#error IN_TELEPATHY_QT4_HEADER
#endif
-#include <TelepathyQt4/Client/DBusProxy>
+#include <TelepathyQt4/Client/Feature>
#include <QMap>
#include <QSet>
#include <QStringList>
+class QDBusError;
+
namespace Telepathy
{
namespace Client
{
+class DBusProxy;
class PendingReady;
class ReadinessHelper : public QObject
@@ -55,15 +58,17 @@ public:
}
Introspectable(const QSet<uint> &makesSenseForStatuses,
- const QSet<uint> &dependsOnFeatures,
+ const Features &dependsOnFeatures,
const QStringList &dependsOnInterfaces,
IntrospectFunc introspectFunc,
- void *introspectFuncData)
+ void *introspectFuncData,
+ bool critical = false)
: makesSenseForStatuses(makesSenseForStatuses),
dependsOnFeatures(dependsOnFeatures),
dependsOnInterfaces(dependsOnInterfaces),
introspectFunc(introspectFunc),
- introspectFuncData(introspectFuncData)
+ introspectFuncData(introspectFuncData),
+ critical(critical)
{
}
@@ -71,32 +76,43 @@ public:
friend class ReadinessHelper;
QSet<uint> makesSenseForStatuses;
- QSet<uint> dependsOnFeatures;
+ Features dependsOnFeatures;
QStringList dependsOnInterfaces;
IntrospectFunc introspectFunc;
void *introspectFuncData;
+ bool critical;
};
+ typedef QMap<Feature, Introspectable> Introspectables;
- ReadinessHelper(DBusProxy *proxy,
- uint currentStatus,
- const QMap<uint, Introspectable> &introspectables,
+ ReadinessHelper(QObject *object,
+ uint currentStatus = 0,
+ const Introspectables &introspectables = Introspectables(),
QObject *parent = 0);
~ReadinessHelper();
+ void addIntrospectables(const Introspectables &introspectables);
+
uint currentStatus() const;
void setCurrentStatus(uint currentStatus);
QStringList interfaces() const;
void setInterfaces(const QStringList &interfaces);
- QSet<uint> requestedFeatures() const;
- QSet<uint> actualFeatures() const;
- QSet<uint> missingFeatures() const;
-
- bool isReady(QSet<uint> features) const;
- PendingReady *becomeReady(QSet<uint> requestedFeatures);
-
- void setIntrospectCompleted(uint feature, bool success);
+ Features requestedFeatures() const;
+ Features actualFeatures() const;
+ Features missingFeatures() const;
+
+ bool isReady(const Feature &feature,
+ QString *errorName = 0, QString *errorMessage = 0) const;
+ bool isReady(const Features &features,
+ QString *errorName = 0, QString *errorMessage = 0) const;
+ PendingReady *becomeReady(const Features &requestedFeatures);
+
+ void setIntrospectCompleted(const Feature &feature, bool success,
+ const QString &errorName = QString(),
+ const QString &errorMessage = QString());
+ void setIntrospectCompleted(const Feature &feature, bool success,
+ const QDBusError &error);
Q_SIGNALS:
void statusReady(uint status);
diff --git a/TelepathyQt4/Client/ready-object.cpp b/TelepathyQt4/Client/ready-object.cpp
new file mode 100644
index 0000000..2a05dea
--- /dev/null
+++ b/TelepathyQt4/Client/ready-object.cpp
@@ -0,0 +1,145 @@
+/*
+ * This file is part of TelepathyQt4
+ *
+ * Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2009 Nokia Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <TelepathyQt4/Client/ReadyObject>
+
+#include "TelepathyQt4/debug-internal.h"
+
+#include <TelepathyQt4/Client/PendingReady>
+#include <TelepathyQt4/Client/ReadinessHelper>
+
+namespace Telepathy
+{
+namespace Client
+{
+
+struct ReadyObject::Private
+{
+ Private(ReadyObject *parent, QObject *object,
+ Feature featureCore);
+ ~Private();
+
+ ReadyObject *parent;
+ Feature featureCore;
+ ReadinessHelper *readinessHelper;
+};
+
+ReadyObject::Private::Private(ReadyObject *parent, QObject *object,
+ Feature featureCore)
+ : parent(parent),
+ featureCore(featureCore),
+ readinessHelper(new ReadinessHelper(object))
+{
+}
+
+ReadyObject::Private::~Private()
+{
+ delete readinessHelper;
+}
+
+/**
+ * \class ReadyObject
+ * \ingroup clientreadiness
+ * \headerfile TelepathyQt4/Client/ready-object.h> <TelepathyQt4/Client/ReadyObject>
+ */
+
+/**
+ * Construct a new ReadyObject object.
+ *
+ * \param object The QObject the object refers to.
+ * \param featureCore The core feature of the object.
+ */
+ReadyObject::ReadyObject(QObject *object, const Feature &featureCore)
+ : mPriv(new Private(this, object, featureCore))
+{
+}
+
+/**
+ * Class destructor.
+ */
+ReadyObject::~ReadyObject()
+{
+ delete mPriv;
+}
+
+/**
+ * Return whether this object has finished its initial setup.
+ *
+ * This is mostly useful as a sanity check, in code that shouldn't be run
+ * until the object is ready. To wait for the object to be ready, call
+ * becomeReady() and connect to the finished signal on the result.
+ *
+ * \param features The features which should be tested
+ * \return \c true if the object has finished its initial setup for basic
+ * functionality plus the given features
+ */
+bool ReadyObject::isReady(const Features &features) const
+{
+ if (features.isEmpty()) {
+ return mPriv->readinessHelper->isReady(Features() << mPriv->featureCore);
+ }
+ return mPriv->readinessHelper->isReady(features);
+}
+
+/**
+ * Return a pending operation which will succeed when this object finishes
+ * its initial setup, or will fail if a fatal error occurs during this
+ * initial setup.
+ *
+ * If an empty set is used FeatureCore will be considered as the requested
+ * feature.
+ *
+ * \param requestedFeatures The features which should be enabled
+ * \return A PendingReady object which will emit finished
+ * when this object has finished or failed initial setup for basic
+ * functionality plus the given features
+ */
+PendingReady *ReadyObject::becomeReady(const Features &requestedFeatures)
+{
+ if (requestedFeatures.isEmpty()) {
+ return mPriv->readinessHelper->becomeReady(Features() << mPriv->featureCore);
+ }
+ return mPriv->readinessHelper->becomeReady(requestedFeatures);
+
+}
+
+Features ReadyObject::requestedFeatures() const
+{
+ return mPriv->readinessHelper->requestedFeatures();
+}
+
+Features ReadyObject::actualFeatures() const
+{
+ return mPriv->readinessHelper->actualFeatures();
+}
+
+Features ReadyObject::missingFeatures() const
+{
+ return mPriv->readinessHelper->missingFeatures();
+}
+
+ReadinessHelper *ReadyObject::readinessHelper() const
+{
+ return mPriv->readinessHelper;
+}
+
+} // Telepathy::Client
+} // Telepathy
diff --git a/TelepathyQt4/Client/pending-ready-channel.h b/TelepathyQt4/Client/ready-object.h
index 01e96e8..b442861 100644
--- a/TelepathyQt4/Client/pending-ready-channel.h
+++ b/TelepathyQt4/Client/ready-object.h
@@ -19,41 +19,47 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef _TelepathyQt4_cli_pending_ready_channel_h_HEADER_GUARD_
-#define _TelepathyQt4_cli_pending_ready_channel_h_HEADER_GUARD_
+#ifndef _TelepathyQt4_cli_ready_object_h_HEADER_GUARD_
+#define _TelepathyQt4_cli_ready_object_h_HEADER_GUARD_
#ifndef IN_TELEPATHY_QT4_HEADER
#error IN_TELEPATHY_QT4_HEADER
#endif
-#include <TelepathyQt4/Client/Channel>
-#include <TelepathyQt4/Client/PendingOperation>
+#include <TelepathyQt4/Client/Feature>
-class QDBusPendingCallWatcher;
+#include <QObject>
namespace Telepathy
{
namespace Client
{
-class PendingReadyChannel : public PendingOperation
+class DBusProxy;
+class PendingReady;
+class ReadinessHelper;
+
+class ReadyObject
{
- Q_OBJECT
+ Q_DISABLE_COPY(ReadyObject)
public:
- ~PendingReadyChannel();
+ ReadyObject(QObject *object, const Feature &featureCore);
+ ~ReadyObject();
- Channel *channel() const;
- Channel::Features requestedFeatures() const;
+ virtual bool isReady(const Features &features = Features()) const;
+ virtual PendingReady *becomeReady(const Features &requestedFeatures = Features());
-private:
- Q_DISABLE_COPY(PendingReadyChannel);
- PendingReadyChannel(Channel::Features requestedFeatures, Channel *channel);
+ virtual Features requestedFeatures() const;
+ virtual Features actualFeatures() const;
+ virtual Features missingFeatures() const;
+protected:
+ ReadinessHelper *readinessHelper() const;
+
+private:
struct Private;
friend struct Private;
- friend class Channel;
- friend class TextChannel;
Private *mPriv;
};
diff --git a/TelepathyQt4/Client/room-list.h b/TelepathyQt4/Client/room-list.h
index be1d8dd..5bd8280 100644
--- a/TelepathyQt4/Client/room-list.h
+++ b/TelepathyQt4/Client/room-list.h
@@ -48,6 +48,8 @@ private:
Private *mPriv;
};
+typedef QExplicitlySharedDataPointer<RoomList> RoomListPtr;
+
} // Telepathy::Client
} // Telepathy
diff --git a/TelepathyQt4/Client/streamed-media-channel.cpp b/TelepathyQt4/Client/streamed-media-channel.cpp
index 3a9c77c..864453e 100644
--- a/TelepathyQt4/Client/streamed-media-channel.cpp
+++ b/TelepathyQt4/Client/streamed-media-channel.cpp
@@ -21,31 +21,487 @@
#include <TelepathyQt4/Client/StreamedMediaChannel>
#include "TelepathyQt4/Client/_gen/streamed-media-channel.moc.hpp"
+
#include "TelepathyQt4/debug-internal.h"
+#include <TelepathyQt4/Client/Connection>
+#include <TelepathyQt4/Client/ContactManager>
+#include <TelepathyQt4/Client/PendingContacts>
+#include <TelepathyQt4/Client/PendingReady>
+#include <TelepathyQt4/Client/PendingVoidMethodCall>
+
+#include <QHash>
+
namespace Telepathy
{
namespace Client
{
+struct PendingMediaStreams::Private
+{
+ Private(PendingMediaStreams *parent, StreamedMediaChannel *channel)
+ : parent(parent), channel(channel), streamsReady(0)
+ {
+ }
+
+ PendingMediaStreams *parent;
+ StreamedMediaChannel *channel;
+ MediaStreams streams;
+ uint streamsReady;
+};
+
+PendingMediaStreams::PendingMediaStreams(StreamedMediaChannel *channel,
+ ContactPtr contact,
+ QList<Telepathy::MediaStreamType> types,
+ QObject *parent)
+ : PendingOperation(parent),
+ mPriv(new Private(this, channel))
+{
+ Telepathy::UIntList l;
+ foreach (Telepathy::MediaStreamType type, types) {
+ l << type;
+ }
+ QDBusPendingCallWatcher *watcher =
+ new QDBusPendingCallWatcher(
+ channel->streamedMediaInterface()->RequestStreams(
+ contact->handle()[0], l), this);
+ connect(watcher,
+ SIGNAL(finished(QDBusPendingCallWatcher*)),
+ SLOT(gotStreams(QDBusPendingCallWatcher*)));
+}
+
+PendingMediaStreams::~PendingMediaStreams()
+{
+ delete mPriv;
+}
+
+MediaStreams PendingMediaStreams::streams() const
+{
+ if (!isFinished()) {
+ warning() << "PendingMediaStreams::streams called before finished, "
+ "returning empty list";
+ return MediaStreams();
+ } else if (!isValid()) {
+ warning() << "PendingMediaStreams::streams called when not valid, "
+ "returning empty list";
+ return MediaStreams();
+ }
+
+ return mPriv->streams;
+}
+
+void PendingMediaStreams::gotStreams(QDBusPendingCallWatcher *watcher)
+{
+ QDBusPendingReply<Telepathy::MediaStreamInfoList> reply = *watcher;
+ if (reply.isError()) {
+ warning().nospace() << "StreamedMedia::RequestStreams()"
+ " failed with " << reply.error().name() << ": " <<
+ reply.error().message();
+ setFinishedWithError(reply.error());
+ return;
+ }
+
+ debug() << "Got reply to StreamedMedia::RequestStreams()";
+
+ Telepathy::MediaStreamInfoList list = reply.value();
+ MediaStreamPtr stream;
+ foreach (const Telepathy::MediaStreamInfo &streamInfo, list) {
+ stream = mPriv->channel->lookupStreamById(streamInfo.identifier);
+ if (!stream) {
+ stream = MediaStreamPtr(
+ new MediaStream(mPriv->channel,
+ streamInfo.identifier,
+ streamInfo.contact,
+ (Telepathy::MediaStreamType) streamInfo.type,
+ (Telepathy::MediaStreamState) streamInfo.state,
+ (Telepathy::MediaStreamDirection) streamInfo.direction,
+ (Telepathy::MediaStreamPendingSend) streamInfo.pendingSendFlags));
+ mPriv->channel->addStream(stream);
+ } else {
+ mPriv->channel->onStreamDirectionChanged(streamInfo.identifier,
+ streamInfo.direction, streamInfo.pendingSendFlags);
+ mPriv->channel->onStreamStateChanged(streamInfo.identifier,
+ streamInfo.state);
+ }
+ mPriv->streams.append(stream);
+ connect(mPriv->channel,
+ SIGNAL(streamRemoved(Telepathy::Client::MediaStreamPtr)),
+ SLOT(onStreamRemoved(Telepathy::Client::MediaStreamPtr)));
+ connect(stream->becomeReady(),
+ SIGNAL(finished(Telepathy::Client::PendingOperation*)),
+ SLOT(onStreamReady(Telepathy::Client::PendingOperation*)));
+ }
+
+ watcher->deleteLater();
+}
+
+void PendingMediaStreams::onStreamRemoved(MediaStreamPtr stream)
+{
+ if (isFinished()) {
+ return;
+ }
+
+ if (mPriv->streams.contains(stream)) {
+ // the stream was removed before becoming ready
+ setFinishedWithError(TELEPATHY_ERROR_CANCELLED, "Stream removed before ready");
+ }
+}
+
+void PendingMediaStreams::onStreamReady(PendingOperation *op)
+{
+ if (isFinished()) {
+ return;
+ }
+
+ if (op->isError()) {
+ setFinishedWithError(op->errorName(), op->errorMessage());
+ return;
+ }
+
+ mPriv->streamsReady++;
+ if (mPriv->streamsReady == (uint) mPriv->streams.size()) {
+ setFinished();
+ }
+}
+
+struct MediaStream::Private
+{
+ Private(MediaStream *parent, StreamedMediaChannel *channel, uint id,
+ uint contactHandle, MediaStreamType type,
+ MediaStreamState state, MediaStreamDirection direction,
+ MediaStreamPendingSend pendingSend);
+
+ static void introspectContact(Private *self);
+
+ MediaStream *parent;
+ ReadinessHelper *readinessHelper;
+ StreamedMediaChannel *channel;
+ uint id;
+ uint contactHandle;
+ ContactPtr contact;
+ MediaStreamType type;
+ MediaStreamState state;
+ MediaStreamDirection direction;
+ MediaStreamPendingSend pendingSend;
+};
+
+MediaStream::Private::Private(MediaStream *parent,
+ StreamedMediaChannel *channel, uint id,
+ uint contactHandle, MediaStreamType type,
+ MediaStreamState state, MediaStreamDirection direction,
+ MediaStreamPendingSend pendingSend)
+ : parent(parent),
+ readinessHelper(parent->readinessHelper()),
+ channel(channel),
+ id(id),
+ contactHandle(contactHandle),
+ type(type),
+ state(state),
+ direction(direction),
+ pendingSend(pendingSend)
+{
+ ReadinessHelper::Introspectables introspectables;
+
+ ReadinessHelper::Introspectable introspectableContact(
+ QSet<uint>() << 0, // makesSenseForStatuses
+ Features(), // dependsOnFeatures
+ QStringList(), // dependsOnInterfaces
+ (ReadinessHelper::IntrospectFunc) &Private::introspectContact,
+ this);
+ introspectables[FeatureContact] = introspectableContact;
+
+ readinessHelper->addIntrospectables(introspectables);
+ readinessHelper->becomeReady(FeatureContact);
+}
+
+void MediaStream::Private::introspectContact(MediaStream::Private *self)
+{
+ if (self->contactHandle == 0) {
+ self->readinessHelper->setIntrospectCompleted(FeatureContact, true);
+ return;
+ }
+
+ ContactManager *contactManager = self->channel->connection()->contactManager();
+ self->parent->connect(
+ contactManager->contactsForHandles(UIntList() << self->contactHandle),
+ SIGNAL(finished(Telepathy::Client::PendingOperation *)),
+ SLOT(gotContact(Telepathy::Client::PendingOperation *)));
+}
+
+const Feature MediaStream::FeatureContact = Feature(MediaStream::staticMetaObject.className(), 0);
+
+MediaStream::MediaStream(StreamedMediaChannel *channel, uint id,
+ uint contactHandle, MediaStreamType type,
+ MediaStreamState state, MediaStreamDirection direction,
+ MediaStreamPendingSend pendingSend)
+ : QObject(),
+ ReadyObject(this, FeatureContact),
+ mPriv(new Private(this, channel, id, contactHandle, type,
+ state, direction, pendingSend))
+{
+}
+
+MediaStream::~MediaStream()
+{
+ delete mPriv;
+}
+
+StreamedMediaChannel *MediaStream::channel() const
+{
+ return mPriv->channel;
+}
+
+/**
+ * Return the stream id.
+ *
+ * \return An integer representing the stream id.
+ */
+uint MediaStream::id() const
+{
+ return mPriv->id;
+}
+
+/**
+ * Return the contact who the stream is with.
+ *
+ * \return The contact who the stream is with.
+ */
+ContactPtr MediaStream::contact() const
+{
+ return mPriv->contact;
+}
+
+/**
+ * Return the stream state.
+ *
+ * \return The stream state.
+ */
+Telepathy::MediaStreamState MediaStream::state() const
+{
+ return mPriv->state;
+}
+
+/**
+ * Return the stream type.
+ *
+ * \return The stream type.
+ */
+Telepathy::MediaStreamType MediaStream::type() const
+{
+ return mPriv->type;
+}
+
+/**
+ * Return whether media is being sent on this stream.
+ *
+ * \return A boolean indicating whether media is being sent on this stream.
+ */
+bool MediaStream::sending() const
+{
+ return mPriv->direction & Telepathy::MediaStreamDirectionSend;
+}
+
+/**
+ * Return whether media is being received on this stream.
+ *
+ * \return A boolean indicating whether media is being received on this stream.
+ */
+bool MediaStream::receiving() const
+{
+ return mPriv->direction & Telepathy::MediaStreamDirectionReceive;
+}
+
+/**
+ * Return whether the local user has been asked to send media by the remote user.
+ *
+ * \return A boolean indicating whether the local user has been asked to
+ * send media by the remote user.
+ */
+bool MediaStream::localSendingRequested() const
+{
+ return mPriv->pendingSend & MediaStreamPendingLocalSend;
+}
+
+/**
+ * Return whether the remote user has been asked to send media by the local user.
+ *
+ * \return A boolean indicating whether the remote user has been asked to
+ * send media by the local user.
+ */
+bool MediaStream::remoteSendingRequested() const
+{
+ return mPriv->pendingSend & MediaStreamPendingRemoteSend;
+}
+
+/**
+ * Return the stream direction.
+ *
+ * \return The stream direction.
+ */
+Telepathy::MediaStreamDirection MediaStream::direction() const
+{
+ return mPriv->direction;
+}
+
+/**
+ * Return the stream pending send flags.
+ *
+ * \return The stream pending send flags.
+ */
+Telepathy::MediaStreamPendingSend MediaStream::pendingSend() const
+{
+ return mPriv->pendingSend;
+}
+
+/**
+ * Request a change in the direction of this stream. In particular, this
+ * might be useful to stop sending media of a particular type, or inform the
+ * peer that you are no longer using media that is being sent to you.
+ *
+ * \return A PendingOperation which will emit PendingOperation::finished
+ * when the call has finished.
+ */
+PendingOperation *MediaStream::requestDirection(
+ Telepathy::MediaStreamDirection direction)
+{
+ return new PendingVoidMethodCall(this,
+ mPriv->channel->streamedMediaInterface()->RequestStreamDirection(mPriv->id, direction));
+}
+
+/**
+ * Request a change in the direction of this stream. In particular, this
+ * might be useful to stop sending media of a particular type, or inform the
+ * peer that you are no longer using media that is being sent to you.
+ *
+ * \return A PendingOperation which will emit PendingOperation::finished
+ * when the call has finished.
+ * \sa requestDirection(Telepathy::MediaStreamDirection direction)
+ */
+PendingOperation *MediaStream::requestDirection(bool send, bool receive)
+{
+ uint dir = Telepathy::MediaStreamDirectionNone;
+ if (send) {
+ dir |= Telepathy::MediaStreamDirectionSend;
+ }
+ if (receive) {
+ dir |= Telepathy::MediaStreamDirectionReceive;
+ }
+ return requestDirection((Telepathy::MediaStreamDirection) dir);
+}
+
+uint MediaStream::contactHandle() const
+{
+ return mPriv->contactHandle;
+}
+
+void MediaStream::setDirection(Telepathy::MediaStreamDirection direction,
+ Telepathy::MediaStreamPendingSend pendingSend)
+{
+ mPriv->direction = direction;
+ mPriv->pendingSend = pendingSend;
+}
+
+void MediaStream::setState(Telepathy::MediaStreamState state)
+{
+ mPriv->state = state;
+}
+
+void MediaStream::gotContact(PendingOperation *op)
+{
+ PendingContacts *pc = qobject_cast<PendingContacts *>(op);
+ Q_ASSERT(pc->isForHandles());
+
+ if (pc->isError()) {
+ warning().nospace() << "Gathering media stream contact failed: "
+ << pc->errorName() << ": " << pc->errorMessage();
+ }
+
+ QList<ContactPtr> contacts = pc->contacts();
+ UIntList invalidHandles = pc->invalidHandles();
+ if (contacts.size()) {
+ Q_ASSERT(contacts.size() == 1);
+ Q_ASSERT(invalidHandles.size() == 0);
+ mPriv->contact = contacts.first();
+ } else {
+ Q_ASSERT(invalidHandles.size() == 1);
+ warning().nospace() << "Error retrieving media stream contact (invalid handle)";
+ }
+
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureContact, true);
+}
+
struct StreamedMediaChannel::Private
{
- inline Private();
- inline ~Private();
+ Private(StreamedMediaChannel *parent);
+ ~Private();
+
+ static void introspectStreams(Private *self);
+
+ // Public object
+ StreamedMediaChannel *parent;
+
+ ReadinessHelper *readinessHelper;
+
+ // Introspection
+
+ QHash<uint, MediaStreamPtr> incompleteStreams;
+ QHash<uint, MediaStreamPtr> streams;
};
-StreamedMediaChannel::Private::Private()
+StreamedMediaChannel::Private::Private(StreamedMediaChannel *parent)
+ : parent(parent),
+ readinessHelper(parent->readinessHelper())
{
+ ReadinessHelper::Introspectables introspectables;
+
+ ReadinessHelper::Introspectable introspectableStreams(
+ QSet<uint>() << 0, // makesSenseForStatuses
+ Features() << Channel::FeatureCore, // dependsOnFeatures (core)
+ QStringList(), // dependsOnInterfaces
+ (ReadinessHelper::IntrospectFunc) &Private::introspectStreams,
+ this);
+ introspectables[FeatureStreams] = introspectableStreams;
+
+ readinessHelper->addIntrospectables(introspectables);
}
StreamedMediaChannel::Private::~Private()
{
}
+void StreamedMediaChannel::Private::introspectStreams(StreamedMediaChannel::Private *self)
+{
+ StreamedMediaChannel *parent = self->parent;
+ ChannelTypeStreamedMediaInterface *streamedMediaInterface =
+ parent->streamedMediaInterface();
+
+ parent->connect(streamedMediaInterface,
+ SIGNAL(StreamAdded(uint, uint, uint)),
+ SLOT(onStreamAdded(uint, uint, uint)));
+ parent->connect(streamedMediaInterface,
+ SIGNAL(StreamRemoved(uint)),
+ SLOT(onStreamRemoved(uint)));
+ parent->connect(streamedMediaInterface,
+ SIGNAL(StreamDirectionChanged(uint, uint, uint)),
+ SLOT(onStreamDirectionChanged(uint, uint, uint)));
+ parent->connect(streamedMediaInterface,
+ SIGNAL(StreamStateChanged(uint, uint)),
+ SLOT(onStreamStateChanged(uint, uint)));
+ parent->connect(streamedMediaInterface,
+ SIGNAL(StreamError(uint, uint, const QString &)),
+ SLOT(onStreamError(uint, uint, const QString &)));
+
+ QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(
+ streamedMediaInterface->ListStreams(), parent);
+ parent->connect(watcher,
+ SIGNAL(finished(QDBusPendingCallWatcher *)),
+ SLOT(gotStreams(QDBusPendingCallWatcher *)));
+}
+
/**
* \class StreamedMediaChannel
* \ingroup clientchannel
- * \headerfile TelepathyQt4/Client/streamed-media-channel.h <TelepathyQt4/Client/StreamedMediaChannel>
+ * \headerfile <TelepathyQt4/Client/streamed-media-channel.h> <TelepathyQt4/Client/StreamedMediaChannel>
*
* High-level proxy object for accessing remote %Channel objects of the
* StreamedMedia channel type.
@@ -54,6 +510,8 @@ StreamedMediaChannel::Private::~Private()
* StreamedMedia interface. Until then, it's just a Channel.
*/
+const Feature StreamedMediaChannel::FeatureStreams = Feature(StreamedMediaChannel::staticMetaObject.className(), 0);
+
/**
* Creates a StreamedMediaChannel associated with the given object on the same
* service as the given connection.
@@ -71,7 +529,7 @@ StreamedMediaChannel::StreamedMediaChannel(Connection *connection,
const QVariantMap &immutableProperties,
QObject *parent)
: Channel(connection, objectPath, immutableProperties, parent),
- mPriv(new Private())
+ mPriv(new Private(this))
{
}
@@ -83,5 +541,315 @@ StreamedMediaChannel::~StreamedMediaChannel()
delete mPriv;
}
+/**
+ * Return a list of streams in this channel. This list is empty unless
+ * the FeatureStreams Feature has been enabled.
+ *
+ * Streams are added to the list when they are received; the streamAdded signal
+ * is emitted.
+ *
+ * \return The streams in this channel.
+ */
+MediaStreams StreamedMediaChannel::streams() const
+{
+ if (!isReady(FeatureStreams)) {
+ warning() << "Trying to retrieve streams from streamed media channel, but "
+ "streams was not requested or the request did not finish yet. "
+ "Use becomeReady(FeatureStreams)";
+ return MediaStreams();
+ }
+
+ return mPriv->streams.values();
+}
+
+MediaStreams StreamedMediaChannel::streamsForType(Telepathy::MediaStreamType type) const
+{
+ if (!isReady(FeatureStreams)) {
+ warning() << "Trying to retrieve streams from streamed media channel, but "
+ "streams was not requested or the request did not finish yet. "
+ "Use becomeReady(FeatureStreams)";
+ return MediaStreams();
+ }
+
+ QHash<uint, MediaStreamPtr> allStreams = mPriv->streams;
+ MediaStreams streams;
+ foreach (const MediaStreamPtr &stream, allStreams) {
+ if (stream->type() == type) {
+ streams.append(stream);
+ }
+ }
+ return streams;
+}
+
+bool StreamedMediaChannel::awaitingLocalAnswer() const
+{
+ return groupSelfHandleIsLocalPending();
+}
+
+bool StreamedMediaChannel::awaitingRemoteAnswer() const
+{
+ return !groupRemotePendingContacts().isEmpty();
+}
+
+PendingOperation *StreamedMediaChannel::acceptCall()
+{
+ return groupAddSelfHandle();
+}
+
+/**
+ * Remove the specified stream from this channel.
+ *
+ * \param stream Stream to remove.
+ * \return A PendingOperation which will emit PendingOperation::finished
+ * when the call has finished.
+ */
+PendingOperation *StreamedMediaChannel::removeStream(const MediaStreamPtr &stream)
+{
+ return new PendingVoidMethodCall(this,
+ streamedMediaInterface()->RemoveStreams(UIntList() << stream->id()));
+}
+
+/**
+ * Remove the specified streams from this channel.
+ *
+ * \param streams List of streams to remove.
+ * \return A PendingOperation which will emit PendingOperation::finished
+ * when the call has finished.
+ */
+PendingOperation *StreamedMediaChannel::removeStreams(const MediaStreams &streams)
+{
+ Telepathy::UIntList ids;
+ foreach (const MediaStreamPtr &stream, streams) {
+ ids << stream->id();
+ }
+ return new PendingVoidMethodCall(this,
+ streamedMediaInterface()->RemoveStreams(ids));
+}
+
+PendingMediaStreams *StreamedMediaChannel::requestStream(
+ const ContactPtr &contact,
+ Telepathy::MediaStreamType type)
+{
+ return new PendingMediaStreams(this, contact,
+ QList<Telepathy::MediaStreamType>() << type, this);
+}
+
+PendingMediaStreams *StreamedMediaChannel::requestStreams(
+ const ContactPtr &contact,
+ QList<Telepathy::MediaStreamType> types)
+{
+ return new PendingMediaStreams(this, contact, types, this);
+}
+
+void StreamedMediaChannel::gotStreams(QDBusPendingCallWatcher *watcher)
+{
+ QDBusPendingReply<Telepathy::MediaStreamInfoList> reply = *watcher;
+ if (reply.isError()) {
+ warning().nospace() << "StreamedMedia::ListStreams()"
+ " failed with " << reply.error().name() << ": " <<
+ reply.error().message();
+
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams,
+ false, reply.error());
+ return;
+ }
+
+ debug() << "Got reply to StreamedMedia::ListStreams()";
+
+ Telepathy::MediaStreamInfoList list = reply.value();
+ if (list.size() > 0) {
+ foreach (const Telepathy::MediaStreamInfo &streamInfo, list) {
+ MediaStreamPtr stream = lookupStreamById(streamInfo.identifier);
+ if (!stream) {
+ addStream(MediaStreamPtr(
+ new MediaStream(this,
+ streamInfo.identifier,
+ streamInfo.contact,
+ (Telepathy::MediaStreamType) streamInfo.type,
+ (Telepathy::MediaStreamState) streamInfo.state,
+ (Telepathy::MediaStreamDirection) streamInfo.direction,
+ (Telepathy::MediaStreamPendingSend) streamInfo.pendingSendFlags)));
+ } else {
+ onStreamDirectionChanged(streamInfo.identifier,
+ streamInfo.direction, streamInfo.pendingSendFlags);
+ onStreamStateChanged(streamInfo.identifier,
+ streamInfo.state);
+ }
+ }
+ } else {
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true);
+ }
+
+ watcher->deleteLater();
+}
+
+void StreamedMediaChannel::onStreamReady(PendingOperation *op)
+{
+ PendingReady *pr = qobject_cast<PendingReady*>(op);
+ MediaStreamPtr stream = MediaStreamPtr(qobject_cast<MediaStream*>(pr->object()));
+
+ if (op->isError()) {
+ mPriv->incompleteStreams.remove(stream->id());
+ // let's not fail because a stream could not become ready
+ if (!isReady(FeatureStreams) && mPriv->incompleteStreams.size() == 0) {
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true);
+ }
+ return;
+ }
+
+ // the stream was removed before become ready
+ if (!mPriv->incompleteStreams.contains(stream->id())) {
+ if (!isReady(FeatureStreams) && mPriv->incompleteStreams.size() == 0) {
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true);
+ }
+ return;
+ }
+
+ mPriv->incompleteStreams.remove(stream->id());
+ mPriv->streams.insert(stream->id(), stream);
+
+ if (!isReady(FeatureStreams) && mPriv->incompleteStreams.size() == 0) {
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true);
+ }
+
+ if (isReady(FeatureStreams)) {
+ emit streamAdded(stream);
+ }
+}
+
+void StreamedMediaChannel::onStreamAdded(uint streamId,
+ uint contactHandle, uint streamType)
+{
+ if (lookupStreamById(streamId)) {
+ debug() << "Received StreamedMediaChannel.StreamAdded for an existing "
+ "stream, ignoring";
+ return;
+ }
+
+ MediaStreamPtr stream = MediaStreamPtr(
+ new MediaStream(this, streamId,
+ contactHandle,
+ (Telepathy::MediaStreamType) streamType,
+ // TODO where to get this info from?
+ Telepathy::MediaStreamStateDisconnected,
+ Telepathy::MediaStreamDirectionNone,
+ (Telepathy::MediaStreamPendingSend) 0));
+ addStream(stream);
+}
+
+void StreamedMediaChannel::onStreamRemoved(uint streamId)
+{
+ debug() << "StreamedMediaChannel::onStreamRemoved: stream" <<
+ streamId << "removed";
+
+ MediaStreamPtr stream = lookupStreamById(streamId);
+ if (!stream) {
+ return;
+ }
+ bool incomplete = mPriv->incompleteStreams.contains(streamId);
+ if (incomplete) {
+ mPriv->incompleteStreams.remove(streamId);
+ } else {
+ mPriv->streams.remove(streamId);
+ }
+
+ // the stream was added/removed before become ready
+ if (!isReady(FeatureStreams) &&
+ mPriv->streams.size() == 0 &&
+ mPriv->incompleteStreams.size() == 0) {
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureStreams, true);
+ }
+
+ if (isReady(FeatureStreams) && !incomplete) {
+ emit streamRemoved(stream);
+ }
+}
+
+void StreamedMediaChannel::onStreamDirectionChanged(uint streamId,
+ uint streamDirection, uint streamPendingFlags)
+{
+ debug() << "StreamedMediaChannel::onStreamDirectionChanged: stream" <<
+ streamId << "direction changed to" << streamDirection;
+
+ MediaStreamPtr stream = lookupStreamById(streamId);
+ if (!stream) {
+ return;
+ }
+
+ if ((uint) stream->direction() == streamDirection &&
+ (uint) stream->pendingSend() == streamPendingFlags) {
+ return;
+ }
+
+ stream->setDirection(
+ (Telepathy::MediaStreamDirection) streamDirection,
+ (Telepathy::MediaStreamPendingSend) streamPendingFlags);
+ if (isReady(FeatureStreams) &&
+ !mPriv->incompleteStreams.contains(stream->id())) {
+ emit streamDirectionChanged(stream,
+ (Telepathy::MediaStreamDirection) streamDirection,
+ (Telepathy::MediaStreamPendingSend) streamPendingFlags);
+ }
+}
+
+void StreamedMediaChannel::onStreamStateChanged(uint streamId,
+ uint streamState)
+{
+ debug() << "StreamedMediaChannel::onStreamStateChanged: stream" <<
+ streamId << "state changed to" << streamState;
+
+ MediaStreamPtr stream = lookupStreamById(streamId);
+ if (!stream) {
+ return;
+ }
+
+ if ((uint) stream->state() == streamState) {
+ return;
+ }
+
+ stream->setState((Telepathy::MediaStreamState) streamState);
+ if (isReady(FeatureStreams) &&
+ !mPriv->incompleteStreams.contains(stream->id())) {
+ emit streamStateChanged(stream,
+ (Telepathy::MediaStreamState) streamState);
+ }
+}
+
+void StreamedMediaChannel::onStreamError(uint streamId,
+ uint errorCode, const QString &errorMessage)
+{
+ debug() << "StreamedMediaChannel::onStreamError: stream" <<
+ streamId << "error:" << errorCode << "-" << errorMessage;
+
+ MediaStreamPtr stream = lookupStreamById(streamId);
+ if (!stream) {
+ return;
+ }
+ if (isReady(FeatureStreams) &&
+ !mPriv->incompleteStreams.contains(stream->id())) {
+ emit streamError(stream,
+ (Telepathy::MediaStreamError) errorCode,
+ errorMessage);
+ }
+}
+
+void StreamedMediaChannel::addStream(const MediaStreamPtr &stream)
+{
+ mPriv->incompleteStreams.insert(stream->id(), stream);
+ connect(stream->becomeReady(),
+ SIGNAL(finished(Telepathy::Client::PendingOperation*)),
+ SLOT(onStreamReady(Telepathy::Client::PendingOperation*)));
+}
+
+MediaStreamPtr StreamedMediaChannel::lookupStreamById(uint streamId)
+{
+ if (mPriv->streams.contains(streamId)) {
+ return mPriv->streams.value(streamId);
+ } else if (mPriv->incompleteStreams.contains(streamId)) {
+ return mPriv->incompleteStreams.value(streamId);
+ }
+ return MediaStreamPtr();
+}
+
} // Telepathy::Client
} // Telepathy
diff --git a/TelepathyQt4/Client/streamed-media-channel.h b/TelepathyQt4/Client/streamed-media-channel.h
index 55c5361..c5ed877 100644
--- a/TelepathyQt4/Client/streamed-media-channel.h
+++ b/TelepathyQt4/Client/streamed-media-channel.h
@@ -26,28 +26,169 @@
#endif
#include <TelepathyQt4/Client/Channel>
+#include <TelepathyQt4/Client/PendingOperation>
namespace Telepathy
{
namespace Client
{
+class StreamedMediaChannel;
+class MediaStream;
+
+typedef QExplicitlySharedDataPointer<MediaStream> MediaStreamPtr;
+typedef QList<MediaStreamPtr> MediaStreams;
+
+class PendingMediaStreams : public PendingOperation
+{
+ Q_OBJECT
+ Q_DISABLE_COPY(PendingMediaStreams)
+
+public:
+ ~PendingMediaStreams();
+
+ MediaStreams streams() const;
+
+private Q_SLOTS:
+ void gotStreams(QDBusPendingCallWatcher *);
+ void onStreamRemoved(Telepathy::Client::MediaStreamPtr);
+ void onStreamReady(Telepathy::Client::PendingOperation *);
+
+private:
+ friend class StreamedMediaChannel;
+
+ PendingMediaStreams(StreamedMediaChannel *channel,
+ ContactPtr contact,
+ QList<Telepathy::MediaStreamType> types,
+ QObject *parent = 0);
+ PendingMediaStreams(StreamedMediaChannel *channel,
+ const MediaStreams &streams,
+ QObject *parent = 0);
+
+ struct Private;
+ friend struct Private;
+ Private *mPriv;
+};
+
+class MediaStream : public QObject,
+ private ReadyObject,
+ public QSharedData
+{
+ Q_OBJECT
+ Q_DISABLE_COPY(MediaStream)
+
+public:
+ ~MediaStream();
+
+ StreamedMediaChannel *channel() const;
+ uint id() const;
+
+ ContactPtr contact() const;
+ Telepathy::MediaStreamState state() const;
+ Telepathy::MediaStreamType type() const;
+
+ bool sending() const;
+ bool receiving() const;
+ bool localSendingRequested() const;
+ bool remoteSendingRequested() const;
+
+ Telepathy::MediaStreamDirection direction() const;
+ Telepathy::MediaStreamPendingSend pendingSend() const;
+
+ PendingOperation *requestDirection(
+ Telepathy::MediaStreamDirection direction);
+ PendingOperation *requestDirection(
+ bool send, bool receive);
+
+private Q_SLOTS:
+ void gotContact(Telepathy::Client::PendingOperation *op);
+
+private:
+ friend class PendingMediaStreams;
+ friend class StreamedMediaChannel;
+
+ static const Feature FeatureContact;
+
+ MediaStream(StreamedMediaChannel *channel, uint id,
+ uint contactHandle, MediaStreamType type,
+ MediaStreamState state, MediaStreamDirection direction,
+ MediaStreamPendingSend pendingSend);
+
+ uint contactHandle() const;
+ void setContact(const ContactPtr &contact);
+ void setDirection(Telepathy::MediaStreamDirection direction,
+ Telepathy::MediaStreamPendingSend pendingSend);
+ void setState(Telepathy::MediaStreamState state);
+
+ struct Private;
+ friend struct Private;
+ Private *mPriv;
+};
+
class StreamedMediaChannel : public Channel
{
Q_OBJECT
Q_DISABLE_COPY(StreamedMediaChannel)
public:
+ static const Feature FeatureStreams;
+
StreamedMediaChannel(Connection *connection, const QString &objectPath,
const QVariantMap &immutableProperties, QObject *parent = 0);
~StreamedMediaChannel();
+ MediaStreams streams() const;
+ MediaStreams streamsForType(Telepathy::MediaStreamType type) const;
+
+ bool awaitingLocalAnswer() const;
+ bool awaitingRemoteAnswer() const;
+
+ PendingOperation *acceptCall();
+
+ PendingOperation *removeStream(const MediaStreamPtr &stream);
+ PendingOperation *removeStreams(const MediaStreams &streams);
+
+ PendingMediaStreams *requestStream(
+ const ContactPtr &contact,
+ Telepathy::MediaStreamType type);
+ PendingMediaStreams *requestStreams(
+ const ContactPtr &contact,
+ QList<Telepathy::MediaStreamType> types);
+
+Q_SIGNALS:
+ void streamAdded(const Telepathy::Client::MediaStreamPtr &stream);
+ void streamRemoved(const Telepathy::Client::MediaStreamPtr &stream);
+ void streamDirectionChanged(const Telepathy::Client::MediaStreamPtr &stream,
+ Telepathy::MediaStreamDirection direction,
+ Telepathy::MediaStreamPendingSend pendingSend);
+ void streamStateChanged(const Telepathy::Client::MediaStreamPtr &stream,
+ Telepathy::MediaStreamState);
+ void streamError(const Telepathy::Client::MediaStreamPtr &stream,
+ Telepathy::MediaStreamError errorCode,
+ const QString &errorMessage);
+
+private Q_SLOTS:
+ void gotStreams(QDBusPendingCallWatcher *);
+ void onStreamReady(Telepathy::Client::PendingOperation *);
+ void onStreamAdded(uint, uint, uint);
+ void onStreamRemoved(uint);
+ void onStreamDirectionChanged(uint, uint, uint);
+ void onStreamStateChanged(uint, uint);
+ void onStreamError(uint, uint, const QString &);
+
private:
+ friend class PendingMediaStreams;
+
+ void addStream(const MediaStreamPtr &stream);
+ MediaStreamPtr lookupStreamById(uint streamId);
+
struct Private;
friend struct Private;
Private *mPriv;
};
+typedef QExplicitlySharedDataPointer<StreamedMediaChannel> StreamedMediaChannelPtr;
+
} // Telepathy::Client
} // Telepathy
diff --git a/TelepathyQt4/Client/text-channel.cpp b/TelepathyQt4/Client/text-channel.cpp
index 28c5471..4a534e4 100644
--- a/TelepathyQt4/Client/text-channel.cpp
+++ b/TelepathyQt4/Client/text-channel.cpp
@@ -28,7 +28,7 @@
#include <TelepathyQt4/Client/ContactManager>
#include <TelepathyQt4/Client/Message>
#include <TelepathyQt4/Client/PendingContacts>
-#include <TelepathyQt4/Client/PendingReadyChannel>
+#include <TelepathyQt4/Client/PendingReady>
#include <TelepathyQt4/Client/ReceivedMessage>
#include <TelepathyQt4/Client/ReferencedHandles>
@@ -98,15 +98,25 @@ void PendingSendMessage::onMessageSent(QDBusPendingCallWatcher *watcher)
struct TextChannel::Private
{
- inline Private();
- inline ~Private();
+ Private(TextChannel *parent);
+ ~Private();
- TextChannel::Features features;
- TextChannel::Features pendingFeatures;
- QList<PendingReadyChannel *> pendingReady;
- void continueReadying(TextChannel *channel);
- void failReadying(TextChannel *channel, const QString &error,
- const QString &message);
+ static void introspectMessageQueue(Private *self);
+ static void introspectMessageCapabilities(Private *self);
+ static void introspectMessageSentSignal(Private *self);
+
+ void updateInitialMessages();
+ void updateCapabilities();
+
+ // Public object
+ TextChannel *parent;
+
+ ReadinessHelper *readinessHelper;
+
+ // FeatureMessageCapabilities and FeatureMessageQueue
+ QVariantMap props;
+ bool getAllInFlight;
+ bool gotProperties;
// requires FeatureMessageCapabilities
QStringList supportedContentTypes;
@@ -114,9 +124,6 @@ struct TextChannel::Private
DeliveryReportingSupportFlags deliveryReportingSupport;
// FeatureMessageQueue
- bool connectedMessageQueueSignals;
- bool getAllMessagesInFlight;
- bool listPendingMessagesCalled;
bool initialMessagesReceived;
struct QueuedEvent
{
@@ -137,34 +144,184 @@ struct TextChannel::Private
QSet<uint> awaitingContacts;
QHash<QDBusPendingCallWatcher *, UIntList> acknowledgeBatches;
void contactLost(uint handle);
- void contactFound(QSharedPointer<Contact> contact);
+ void contactFound(ContactPtr contact);
};
-TextChannel::Private::Private()
- : features(0),
- pendingFeatures(0),
- pendingReady(),
- supportedContentTypes(),
+TextChannel::Private::Private(TextChannel *parent)
+ : parent(parent),
+ readinessHelper(parent->readinessHelper()),
+ getAllInFlight(false),
+ gotProperties(false),
messagePartSupport(0),
deliveryReportingSupport(0),
- connectedMessageQueueSignals(false),
- getAllMessagesInFlight(false),
- listPendingMessagesCalled(false),
- initialMessagesReceived(false),
- messages(),
- incompleteMessages(),
- awaitingContacts()
+ initialMessagesReceived(false)
{
+ ReadinessHelper::Introspectables introspectables;
+
+ ReadinessHelper::Introspectable introspectableMessageQueue(
+ QSet<uint>() << 0, // makesSenseForStatuses
+ Features() << Channel::FeatureCore, // dependsOnFeatures (core)
+ QStringList(), // dependsOnInterfaces
+ (ReadinessHelper::IntrospectFunc) &Private::introspectMessageQueue,
+ this);
+ introspectables[FeatureMessageQueue] = introspectableMessageQueue;
+
+ ReadinessHelper::Introspectable introspectableMessageCapabilities(
+ QSet<uint>() << 0, // makesSenseForStatuses
+ Features() << Channel::FeatureCore, // dependsOnFeatures (core)
+ QStringList(), // dependsOnInterfaces
+ (ReadinessHelper::IntrospectFunc) &Private::introspectMessageCapabilities,
+ this);
+ introspectables[FeatureMessageCapabilities] = introspectableMessageCapabilities;
+
+ ReadinessHelper::Introspectable introspectableMessageSentSignal(
+ QSet<uint>() << 0, // makesSenseForStatuses
+ Features() << Channel::FeatureCore, // dependsOnFeatures (core)
+ QStringList(), // dependsOnInterfaces
+ (ReadinessHelper::IntrospectFunc) &Private::introspectMessageSentSignal,
+ this);
+ introspectables[FeatureMessageSentSignal] = introspectableMessageSentSignal;
+
+ readinessHelper->addIntrospectables(introspectables);
}
TextChannel::Private::~Private()
{
}
+void TextChannel::Private::introspectMessageQueue(
+ TextChannel::Private *self)
+{
+ TextChannel *parent = self->parent;
+
+ if (parent->hasMessagesInterface()) {
+ // FeatureMessageQueue needs signal connections + Get (but we
+ // might as well do GetAll and reduce the number of code paths)
+ parent->connect(parent->messagesInterface(),
+ SIGNAL(MessageReceived(const Telepathy::MessagePartList &)),
+ SLOT(onMessageReceived(const Telepathy::MessagePartList &)));
+ parent->connect(parent->messagesInterface(),
+ SIGNAL(PendingMessagesRemoved(const Telepathy::UIntList &)),
+ SLOT(onPendingMessagesRemoved(const Telepathy::UIntList &)));
+
+ if (!self->gotProperties && !self->getAllInFlight) {
+ self->getAllInFlight = true;
+ QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(
+ parent->propertiesInterface()->GetAll(
+ QLatin1String(TELEPATHY_INTERFACE_CHANNEL_INTERFACE_MESSAGES)),
+ parent);
+ parent->connect(watcher,
+ SIGNAL(finished(QDBusPendingCallWatcher *)),
+ SLOT(gotProperties(QDBusPendingCallWatcher *)));
+ } else if (self->gotProperties) {
+ self->updateInitialMessages();
+ }
+ } else {
+ // FeatureMessageQueue needs signal connections + ListPendingMessages
+ parent->connect(parent->textInterface(),
+ SIGNAL(Received(uint, uint, uint, uint, uint, const QString &)),
+ SLOT(onTextReceived(uint, uint, uint, uint, uint, const QString &)));
+
+ // we present SendError signals as if they were incoming
+ // messages, to be consistent with Messages
+ parent->connect(parent->textInterface(),
+ SIGNAL(SendError(uint, uint, uint, const QString &)),
+ SLOT(onTextSendError(uint, uint, uint, const QString &)));
+
+ QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(
+ parent->textInterface()->ListPendingMessages(false), parent);
+ parent->connect(watcher,
+ SIGNAL(finished(QDBusPendingCallWatcher *)),
+ SLOT(gotPendingMessages(QDBusPendingCallWatcher *)));
+ }
+}
+
+void TextChannel::Private::introspectMessageCapabilities(
+ TextChannel::Private *self)
+{
+ TextChannel *parent = self->parent;
+
+ if (parent->hasMessagesInterface()) {
+ if (!self->gotProperties && !self->getAllInFlight) {
+ self->getAllInFlight = true;
+ QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(
+ parent->propertiesInterface()->GetAll(
+ QLatin1String(TELEPATHY_INTERFACE_CHANNEL_INTERFACE_MESSAGES)),
+ parent);
+ parent->connect(watcher,
+ SIGNAL(finished(QDBusPendingCallWatcher *)),
+ SLOT(gotProperties(QDBusPendingCallWatcher *)));
+ } else if (self->gotProperties) {
+ self->updateCapabilities();
+ }
+ } else {
+ self->supportedContentTypes =
+ (QStringList(QLatin1String("text/plain")));
+ parent->readinessHelper()->setIntrospectCompleted(
+ FeatureMessageCapabilities, true);
+ }
+}
+
+void TextChannel::Private::introspectMessageSentSignal(
+ TextChannel::Private *self)
+{
+ TextChannel *parent = self->parent;
+
+ if (parent->hasMessagesInterface()) {
+ parent->connect(parent->messagesInterface(),
+ SIGNAL(MessageSent(const Telepathy::MessagePartList &,
+ uint, const QString &)),
+ SLOT(onMessageSent(const Telepathy::MessagePartList &,
+ uint, const QString &)));
+ } else {
+ parent->connect(parent->textInterface(),
+ SIGNAL(Sent(uint, uint, const QString &)),
+ SLOT(onTextSent(uint, uint, const QString &)));
+ }
+
+ self->readinessHelper->setIntrospectCompleted(FeatureMessageSentSignal, true);
+}
+
+void TextChannel::Private::updateInitialMessages()
+{
+ if (!readinessHelper->requestedFeatures().contains(FeatureMessageQueue) ||
+ readinessHelper->isReady(Features() << FeatureMessageQueue)) {
+ return;
+ }
+
+ Q_ASSERT(!initialMessagesReceived);
+ initialMessagesReceived = true;
+
+ MessagePartListList messages = qdbus_cast<MessagePartListList>(
+ props["PendingMessages"]);
+ foreach (const MessagePartList &message, messages) {
+ parent->onMessageReceived(message);
+ }
+}
+
+void TextChannel::Private::updateCapabilities()
+{
+ if (!readinessHelper->requestedFeatures().contains(FeatureMessageCapabilities) ||
+ readinessHelper->isReady(Features() << FeatureMessageQueue)) {
+ return;
+ }
+
+ supportedContentTypes = qdbus_cast<QStringList>(
+ props["SupportedContentTypes"]);
+ if (supportedContentTypes.isEmpty()) {
+ supportedContentTypes << QLatin1String("text/plain");
+ }
+ messagePartSupport = MessagePartSupportFlags(qdbus_cast<uint>(
+ props["MessagePartSupportFlags"]));
+ deliveryReportingSupport = DeliveryReportingSupportFlags(
+ qdbus_cast<uint>(props["DeliveryReportingSupport"]));
+ readinessHelper->setIntrospectCompleted(FeatureMessageCapabilities, true);
+}
+
/**
* \class TextChannel
* \ingroup clientchannel
- * \headerfile TelepathyQt4/Client/text-channel.h <TelepathyQt4/Client/TextChannel>
+ * \headerfile <TelepathyQt4/Client/text-channel.h> <TelepathyQt4/Client/TextChannel>
*
* High-level proxy object for accessing remote %Channel objects of the Text
* channel type.
@@ -174,25 +331,24 @@ TextChannel::Private::~Private()
*/
/**
- * \enum TextChannel::Feature
- *
- * Features that can be enabled on a TextChannel using becomeReady().
- */
-/**
- * \var TextChannel::Feature TextChannel::FeatureMessageQueue
+ * \var Feature TextChannel::FeatureMessageQueue
* The messageQueue method can be called, and the messageReceived and
* pendingMessageRemoved methods can be called
*/
/**
- * \var TextChannel::Feature TextChannel::FeatureMessageCapabilities
+ * \var Feature TextChannel::FeatureMessageCapabilities
* The supportedContentTypes, messagePartSupport and deliveryReportingSupport
* methods can be called
*/
/**
- * \var TextChannel::Feature TextChannel::FeatureMessageSentSignal
+ * \var Feature TextChannel::FeatureMessageSentSignal
* The messageSent signal will be emitted when a message is sent
*/
+const Feature TextChannel::FeatureMessageQueue = Feature(TextChannel::staticMetaObject.className(), 0);
+const Feature TextChannel::FeatureMessageCapabilities = Feature(TextChannel::staticMetaObject.className(), 1);
+const Feature TextChannel::FeatureMessageSentSignal = Feature(TextChannel::staticMetaObject.className(), 2);
+
/**
* \fn void TextChannel::messageSent(const Telepathy::Client::Message &message,
* Telepathy::MessageSendingFlags flags,
@@ -251,7 +407,7 @@ TextChannel::TextChannel(Connection *connection,
const QVariantMap &immutableProperties,
QObject *parent)
: Channel(connection, objectPath, immutableProperties, parent),
- mPriv(new Private())
+ mPriv(new Private(this))
{
}
@@ -508,228 +664,6 @@ PendingSendMessage *TextChannel::send(const MessagePartList &parts)
return op;
}
-/**
- * Return whether the desired features are ready for use.
- *
- * \param channelFeatures Features of the Channel class
- * \param textFeatures Features of the TextChannel class
- * \return true if basic Channel functionality, and all the requested features
- * (if any), are ready for use
- */
-bool TextChannel::isReady(Channel::Features channelFeatures,
- Features textFeatures) const
-{
- debug() << "Checking whether ready:" << channelFeatures << textFeatures;
- debug() << "Am I ready? mPriv->features =" << mPriv->features;
- return Channel::isReady(channelFeatures) &&
- ((mPriv->features & textFeatures) == textFeatures);
-}
-
-/**
- * Gather the necessary information to use the requested features.
- *
- * \param channelFeatures Features of the Channel class
- * \param textFeatures Features of the TextChannel class
- * \return A pending operation which will finish when basic Channel
- * functionality, and all the requested features (if any), are ready
- * for use
- */
-PendingReadyChannel *TextChannel::becomeReady(
- Channel::Features channelFeatures,
- Features textFeatures)
-{
- PendingReadyChannel *textReady;
-
- if (!isValid()) {
- textReady = new PendingReadyChannel(channelFeatures, this);
- textReady->setFinishedWithError(invalidationReason(),
- invalidationMessage());
- return textReady;
- }
-
- if (isReady(channelFeatures, textFeatures)) {
- textReady = new PendingReadyChannel(channelFeatures, this);
- textReady->setFinished();
- return textReady;
- }
-
- if ((textFeatures & (FeatureMessageQueue |
- FeatureMessageCapabilities |
- FeatureMessageSentSignal))
- != textFeatures) {
- textReady = new PendingReadyChannel(channelFeatures, this);
- textReady->setFinishedWithError(TELEPATHY_ERROR_INVALID_ARGUMENT,
- "Invalid features argument");
- return textReady;
- }
-
- PendingReadyChannel *channelReady = Channel::becomeReady(channelFeatures);
-
- textReady = new PendingReadyChannel(channelFeatures, this);
-
- connect(channelReady,
- SIGNAL(finished(Telepathy::Client::PendingOperation *)),
- this,
- SLOT(onChannelReady(Telepathy::Client::PendingOperation *)));
-
- mPriv->pendingReady.append(textReady);
- mPriv->pendingFeatures |= (textFeatures & ~mPriv->features);
- return textReady;
-}
-
-void TextChannel::onChannelReady(Telepathy::Client::PendingOperation *op)
-{
- // Handle the error and insanity cases
- if (op->isError()) {
- mPriv->failReadying(this, op->errorName(), op->errorMessage());
- }
- if (channelType() != QLatin1String(TELEPATHY_INTERFACE_CHANNEL_TYPE_TEXT)) {
- mPriv->failReadying(this,
- QLatin1String(TELEPATHY_ERROR_INVALID_ARGUMENT),
- QLatin1String("TextChannel object with non-Text channel"));
- return;
- }
-
- // Now that the basic Channel stuff is ready, we can know whether we have
- // the Messages interface.
-
- if (mPriv->pendingFeatures & FeatureMessageSentSignal) {
- if (hasMessagesInterface()) {
- connect(messagesInterface(),
- SIGNAL(MessageSent(const Telepathy::MessagePartList &,
- uint, const QString &)),
- this,
- SLOT(onMessageSent(const Telepathy::MessagePartList &,
- uint, const QString &)));
- } else {
- connect(textInterface(),
- SIGNAL(Sent(uint, uint, const QString &)),
- this,
- SLOT(onTextSent(uint, uint, const QString &)));
- }
-
- mPriv->features |= FeatureMessageSentSignal;
- mPriv->pendingFeatures &= ~FeatureMessageSentSignal;
- }
-
- if (!hasMessagesInterface()) {
- // For plain Text channels, FeatureMessageCapabilities is trivial to
- // implement - we don't do anything special at all - so we might as
- // well set it up even if the library user didn't actually care.
- mPriv->supportedContentTypes =
- (QStringList(QLatin1String("text/plain")));
- mPriv->messagePartSupport = 0;
- mPriv->deliveryReportingSupport = 0;
- mPriv->features |= FeatureMessageCapabilities;
- mPriv->pendingFeatures &= ~FeatureMessageCapabilities;
- }
-
- mPriv->continueReadying(this);
-}
-
-void TextChannel::Private::failReadying(TextChannel *channel,
- const QString &error, const QString &message)
-{
- QList<PendingReadyChannel *> ops = pendingReady;
- pendingReady.clear();
-
- foreach (PendingReadyChannel *op, ops) {
- op->setFinishedWithError(error, message);
- }
- channel->invalidate(error, message);
-}
-
-void TextChannel::Private::continueReadying(TextChannel *channel)
-{
- Q_ASSERT ((pendingFeatures & features) == 0);
-
- if (pendingFeatures == 0) {
- // everything we wanted is ready
- QList<PendingReadyChannel *> ops = pendingReady;
- pendingReady.clear();
- foreach (PendingReadyChannel *op, ops) {
- op->setFinished();
- }
- return;
- }
-
- // else there's more work to do yet
-
- if (channel->hasMessagesInterface()) {
- // FeatureMessageQueue needs signal connections + Get (but we
- // might as well do GetAll and reduce the number of code paths)
- // FeatureMessageCapabilities needs GetAll
- // FeatureMessageSentSignal already done
-
- bool getAll = false;
-
- if (pendingFeatures & TextChannel::FeatureMessageQueue) {
- if (!connectedMessageQueueSignals) {
- connectedMessageQueueSignals = true;
- channel->connect(channel->messagesInterface(),
- SIGNAL(MessageReceived(const Telepathy::MessagePartList &)),
- SLOT(onMessageReceived(const Telepathy::MessagePartList &)));
-
- channel->connect(channel->messagesInterface(),
- SIGNAL(PendingMessagesRemoved(const Telepathy::UIntList &)),
- SLOT(onPendingMessagesRemoved(const Telepathy::UIntList &)));
- }
-
- if (!initialMessagesReceived) {
- getAll = true;
- }
- }
-
- if (pendingFeatures & TextChannel::FeatureMessageCapabilities) {
- getAll = true;
- }
-
- if (getAll && !getAllMessagesInFlight) {
- getAllMessagesInFlight = true;
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(
- channel->propertiesInterface()->GetAll(
- QLatin1String(TELEPATHY_INTERFACE_CHANNEL_INTERFACE_MESSAGES)),
- channel);
- channel->connect(watcher,
- SIGNAL(finished(QDBusPendingCallWatcher *)),
- SLOT(onGetAllMessagesReply(QDBusPendingCallWatcher *)));
- }
- } else {
- // FeatureMessageQueue needs signal connections +
- // ListPendingMessages
- // FeatureMessageCapabilities already done
- // FeatureMessageSentSignal already done
-
- if (pendingFeatures & TextChannel::FeatureMessageQueue) {
- if (!connectedMessageQueueSignals) {
- connectedMessageQueueSignals = true;
-
- channel->connect(channel->textInterface(),
- SIGNAL(Received(uint, uint, uint, uint, uint,
- const QString &)),
- SLOT(onTextReceived(uint, uint, uint, uint, uint,
- const QString &)));
-
- // we present SendError signals as if they were incoming
- // messages, to be consistent with Messages
- channel->connect(channel->textInterface(),
- SIGNAL(SendError(uint, uint, uint, const QString &)),
- SLOT(onTextSendError(uint, uint, uint, const QString &)));
- }
-
- if (!listPendingMessagesCalled) {
- listPendingMessagesCalled = true;
-
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(
- channel->textInterface()->ListPendingMessages(false), channel);
- channel->connect(watcher,
- SIGNAL(finished(QDBusPendingCallWatcher *)),
- SLOT(onListPendingMessagesReply(QDBusPendingCallWatcher *)));
- }
- }
- }
-}
-
void TextChannel::onMessageSent(const Telepathy::MessagePartList &parts,
uint flags,
const QString &sentMessageToken)
@@ -780,12 +714,11 @@ void TextChannel::processQueue()
}
if (mPriv->incompleteMessages.isEmpty()) {
- if (mPriv->pendingFeatures & FeatureMessageQueue) {
+ if (mPriv->readinessHelper->requestedFeatures().contains(FeatureMessageQueue) &&
+ !mPriv->readinessHelper->isReady(Features() << FeatureMessageQueue)) {
debug() << "incompleteMessages empty for the first time: "
"FeatureMessageQueue is now ready";
- mPriv->features |= FeatureMessageQueue;
- mPriv->pendingFeatures &= ~FeatureMessageQueue;
- mPriv->continueReadying(this);
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureMessageQueue, true);
}
return;
}
@@ -823,7 +756,7 @@ void TextChannel::Private::contactLost(uint handle)
}
}
-void TextChannel::Private::contactFound(QSharedPointer<Contact> contact)
+void TextChannel::Private::contactFound(ContactPtr contact)
{
uint handle = contact->handle().at(0);
@@ -853,7 +786,7 @@ void TextChannel::onContactsFinished(PendingOperation *op)
mPriv->contactLost(handle);
}
} else {
- foreach (const QSharedPointer<Contact> &contact, pc->contacts()) {
+ foreach (const ContactPtr &contact, pc->contacts()) {
mPriv->contactFound(contact);
}
foreach (uint handle, pc->invalidHandles()) {
@@ -1005,80 +938,65 @@ void TextChannel::onTextSendError(uint error, uint timestamp, uint type,
parts << header;
}
-void TextChannel::onGetAllMessagesReply(QDBusPendingCallWatcher *watcher)
+void TextChannel::gotProperties(QDBusPendingCallWatcher *watcher)
{
- Q_ASSERT(mPriv->getAllMessagesInFlight);
- mPriv->getAllMessagesInFlight = false;
+ Q_ASSERT(mPriv->getAllInFlight);
+ mPriv->getAllInFlight = false;
+ mPriv->gotProperties = true;
QDBusPendingReply<QVariantMap> reply = *watcher;
- QVariantMap props;
-
- if (!reply.isError()) {
- debug() << "Properties::GetAll(Channel.Interface.Messages) returned";
- props = reply.value();
- } else {
+ if (reply.isError()) {
warning().nospace() << "Properties::GetAll(Channel.Interface.Messages)"
" failed with " << reply.error().name() << ": " <<
reply.error().message();
- // ... and act as though props had been empty
- }
- if (!mPriv->initialMessagesReceived &&
- (mPriv->pendingFeatures & FeatureMessageQueue)) {
- mPriv->initialMessagesReceived = true;
+ ReadinessHelper *readinessHelper = mPriv->readinessHelper;
+ if (readinessHelper->requestedFeatures().contains(FeatureMessageQueue) &&
+ !readinessHelper->isReady(Features() << FeatureMessageQueue)) {
+ readinessHelper->setIntrospectCompleted(FeatureMessageQueue, false, reply.error());
+ }
- MessagePartListList messages = qdbus_cast<MessagePartListList>(
- props["PendingMessages"]);
- foreach (const MessagePartList &message, messages) {
- onMessageReceived(message);
+ if (readinessHelper->requestedFeatures().contains(FeatureMessageCapabilities) &&
+ !readinessHelper->isReady(Features() << FeatureMessageCapabilities)) {
+ readinessHelper->setIntrospectCompleted(FeatureMessageCapabilities, false, reply.error());
}
+ return;
}
- // Since we have the capabilities, we might as well set them - doing this
- // multiple times is a no-op
+ debug() << "Properties::GetAll(Channel.Interface.Messages) returned";
+ mPriv->props = reply.value();
- mPriv->supportedContentTypes = qdbus_cast<QStringList>(
- props["SupportedContentTypes"]);
- if (mPriv->supportedContentTypes.isEmpty()) {
- mPriv->supportedContentTypes << QLatin1String("text/plain");
- }
- mPriv->messagePartSupport = MessagePartSupportFlags(qdbus_cast<uint>(
- props["MessagePartSupportFlags"]));
- mPriv->deliveryReportingSupport = DeliveryReportingSupportFlags(
- qdbus_cast<uint>(props["DeliveryReportingSupport"]));
+ mPriv->updateInitialMessages();
+ mPriv->updateCapabilities();
- mPriv->features |= FeatureMessageCapabilities;
- mPriv->pendingFeatures &= ~FeatureMessageCapabilities;
- mPriv->continueReadying(this);
+ watcher->deleteLater();
}
-void TextChannel::onListPendingMessagesReply(QDBusPendingCallWatcher *watcher)
+void TextChannel::gotPendingMessages(QDBusPendingCallWatcher *watcher)
{
Q_ASSERT(!mPriv->initialMessagesReceived);
- Q_ASSERT(mPriv->listPendingMessagesCalled);
-
mPriv->initialMessagesReceived = true;
QDBusPendingReply<PendingTextMessageList> reply = *watcher;
- PendingTextMessageList list;
-
- if (!reply.isError()) {
- debug() << "Text::ListPendingMessages returned";
- list = reply.value();
- } else {
+ if (reply.isError()) {
warning().nospace() << "Properties::GetAll(Channel.Interface.Messages)"
" failed with " << reply.error().name() << ": " <<
reply.error().message();
- // ... and act as though list was empty
+
+ // TODO should we fail here?
+ mPriv->readinessHelper->setIntrospectCompleted(FeatureMessageQueue, false, reply.error());
+ return;
}
+ debug() << "Text::ListPendingMessages returned";
+ PendingTextMessageList list = reply.value();
foreach (const PendingTextMessage &message, list) {
onTextReceived(message.identifier, message.unixTimestamp,
message.sender, message.messageType, message.flags,
message.text);
}
- mPriv->continueReadying(this);
+ watcher->deleteLater();
}
} // Telepathy::Client
diff --git a/TelepathyQt4/Client/text-channel.h b/TelepathyQt4/Client/text-channel.h
index c66de61..07c6093 100644
--- a/TelepathyQt4/Client/text-channel.h
+++ b/TelepathyQt4/Client/text-channel.h
@@ -68,30 +68,17 @@ class TextChannel : public Channel
Q_DISABLE_COPY(TextChannel)
public:
+ static const Feature FeatureMessageQueue;
+ static const Feature FeatureMessageCapabilities;
+ static const Feature FeatureMessageSentSignal;
+
TextChannel(Connection *connection, const QString &objectPath,
const QVariantMap &immutableProperties, QObject *parent = 0);
~TextChannel();
- enum Feature {
- // FeatureMessageQueue guarantees that incoming messages go in
- // messageQueue when their corresponding contact objects have been
- // created, and that messageReceived will be emitted. If not enabled,
- // messageReceived will not be emitted.
- FeatureMessageQueue = 1,
- FeatureMessageCapabilities = 2,
- FeatureMessageSentSignal = 4,
- _Padding = 0xFFFFFFFF
- };
- Q_DECLARE_FLAGS(Features, Feature)
-
bool hasMessagesInterface() const;
bool canInviteContacts() const;
- bool isReady(Channel::Features channelFeatures = 0,
- Features textFeatures = 0) const;
- PendingReadyChannel *becomeReady(Channel::Features channelFeatures = 0,
- Features textFeatures = 0);
-
// requires FeatureMessageCapabilities
QStringList supportedContentTypes() const;
MessagePartSupportFlags messagePartSupport() const;
@@ -101,7 +88,6 @@ public:
QList<ReceivedMessage> messageQueue() const;
public Q_SLOTS:
-
void acknowledge(const QList<ReceivedMessage> &messages);
void forget(const QList<ReceivedMessage> &messages);
@@ -112,14 +98,13 @@ public Q_SLOTS:
PendingSendMessage *send(const MessagePartList &parts);
inline PendingOperation *inviteContacts(
- const QList<QSharedPointer<Contact> > &contacts,
+ const QList<ContactPtr> &contacts,
const QString &message = QString())
{
return groupAddContacts(contacts, message);
}
Q_SIGNALS:
-
// FeatureMessageSentSignal
void messageSent(const Telepathy::Client::Message &message,
Telepathy::MessageSendingFlags flags,
@@ -131,7 +116,6 @@ Q_SIGNALS:
const Telepathy::Client::ReceivedMessage &message);
private Q_SLOTS:
- void onChannelReady(Telepathy::Client::PendingOperation *);
void onContactsFinished(Telepathy::Client::PendingOperation *);
void onAcknowledgePendingMessagesReply(QDBusPendingCallWatcher *);
@@ -139,12 +123,13 @@ private Q_SLOTS:
const QString &);
void onMessageReceived(const Telepathy::MessagePartList &);
void onPendingMessagesRemoved(const Telepathy::UIntList &);
- void onGetAllMessagesReply(QDBusPendingCallWatcher *);
void onTextSent(uint, uint, const QString &);
void onTextReceived(uint, uint, uint, uint, uint, const QString &);
void onTextSendError(uint, uint, uint, const QString &);
- void onListPendingMessagesReply(QDBusPendingCallWatcher *);
+
+ void gotProperties(QDBusPendingCallWatcher *);
+ void gotPendingMessages(QDBusPendingCallWatcher *);
private:
void processQueue();
@@ -154,6 +139,8 @@ private:
Private *mPriv;
};
+typedef QExplicitlySharedDataPointer<TextChannel> TextChannelPtr;
+
} // Telepathy::Client
} // Telepathy
diff --git a/TelepathyQt4/Makefile.am b/TelepathyQt4/Makefile.am
index ea5bb6b..8af8617 100644
--- a/TelepathyQt4/Makefile.am
+++ b/TelepathyQt4/Makefile.am
@@ -47,6 +47,7 @@ libtelepathy_qt4_la_SOURCES = \
Client/contact-manager.cpp \
Client/dbus.cpp \
Client/dbus-proxy.cpp \
+ Client/feature.cpp \
Client/file-transfer.cpp \
Client/media-session-handler.cpp \
Client/media-stream-handler.cpp \
@@ -60,10 +61,10 @@ libtelepathy_qt4_la_SOURCES = \
Client/pending-handles.cpp \
Client/pending-operation.cpp \
Client/pending-ready.cpp \
- Client/pending-ready-channel.cpp \
Client/pending-string-list.cpp \
Client/properties.cpp \
Client/readiness-helper.cpp \
+ Client/ready-object.cpp \
Client/referenced-handles.cpp \
Client/room-list.cpp \
Client/streamed-media-channel.cpp \
@@ -115,7 +116,6 @@ nodist_libtelepathy_qt4_la_SOURCES = \
Client/_gen/pending-handles.moc.hpp \
Client/_gen/pending-operation.moc.hpp \
Client/_gen/pending-ready.moc.hpp \
- Client/_gen/pending-ready-channel.moc.hpp \
Client/_gen/pending-string-list.moc.hpp \
Client/_gen/readiness-helper.moc.hpp \
Client/_gen/room-list.moc.hpp \
@@ -146,6 +146,7 @@ tpqt4clientinclude_HEADERS = \
Client/ContactManager \
Client/DBus \
Client/DBusProxy \
+ Client/Feature \
Client/FileTransfer \
Client/MediaSessionHandler \
Client/MediaStreamHandler \
@@ -160,12 +161,12 @@ tpqt4clientinclude_HEADERS = \
Client/PendingHandles \
Client/PendingOperation \
Client/PendingReady \
- Client/PendingReadyChannel \
Client/PendingSuccess \
Client/PendingStringList \
Client/PendingVoidMethodCall \
Client/Properties \
Client/ReadinessHelper \
+ Client/ReadyObject \
Client/ReceivedMessage \
Client/ReferencedHandles \
Client/ReferencedHandlesIterator \
@@ -215,6 +216,7 @@ tpqt4clientinclude_HEADERS = \
Client/contact-manager.h \
Client/dbus.h \
Client/dbus-proxy.h \
+ Client/feature.h \
Client/file-transfer.h \
Client/media-session-handler.h \
Client/media-stream-handler.h \
@@ -228,10 +230,10 @@ tpqt4clientinclude_HEADERS = \
Client/pending-handles.h \
Client/pending-operation.h \
Client/pending-ready.h \
- Client/pending-ready-channel.h \
Client/pending-string-list.h \
Client/properties.h \
Client/readiness-helper.h \
+ Client/ready-object.h \
Client/referenced-handles.h \
Client/room-list.h \
Client/simple-pending-operations.h \
@@ -267,16 +269,17 @@ distclean-local:
include $(top_srcdir)/tools/check-coding-style.mk
check-local: check-coding-style
+AM_CPPFLAGS = \
+ -I$(top_srcdir) -I$(top_builddir) \
+ $(QTCORE_CFLAGS) \
+ $(QTDBUS_CFLAGS)
+
AM_CXXFLAGS = \
- $(ERROR_CXXFLAGS) \
- @QTCORE_CFLAGS@ \
- @QTDBUS_CFLAGS@ \
- -I$(top_builddir) \
- -I$(top_srcdir)
+ $(ERROR_CXXFLAGS)
ALL_LIBS = \
- @QTCORE_LIBS@ \
- @QTDBUS_LIBS@
+ $(QTCORE_LIBS) \
+ $(QTDBUS_LIBS)
# Generated stuff
@@ -387,7 +390,7 @@ _gen/cli-%.h _gen/cli-%-body.hpp: _gen/spec-%.xml \
Client/_gen/%.moc.hpp: $(srcdir)/Client/%.h _gen/constants.h _gen/types.h
$(mkdir_p) Client/_gen
- $(MOC) @QTCORE_CFLAGS@ @QTDBUS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) -i $< -o $@
+ $(MOC) $(AM_CPPFLAGS) -i $< -o $@
_gen/%.moc.hpp: _gen/%.h _gen/constants.h _gen/types.h
- $(MOC) @QTCORE_CFLAGS@ @QTDBUS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) -i $< -o $@
+ $(MOC) $(AM_CPPFLAGS) -i $< -o $@
diff --git a/TelepathyQt4/Makefile.in b/TelepathyQt4/Makefile.in
index 33b3c83..c838dce 100644
--- a/TelepathyQt4/Makefile.in
+++ b/TelepathyQt4/Makefile.in
@@ -67,17 +67,18 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
am__DEPENDENCIES_1 =
+am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
am_libtelepathy_qt4_la_OBJECTS = abstract-interface.lo account.lo \
account-manager.lo channel.lo connection.lo \
connection-manager.lo contact.lo contact-manager.lo dbus.lo \
- dbus-proxy.lo file-transfer.lo media-session-handler.lo \
- media-stream-handler.lo message.lo \
+ dbus-proxy.lo feature.lo file-transfer.lo \
+ media-session-handler.lo media-stream-handler.lo message.lo \
optional-interface-factory.lo pending-account.lo \
pending-channel.lo pending-connection.lo \
pending-contact-attributes.lo pending-contacts.lo \
pending-handles.lo pending-operation.lo pending-ready.lo \
- pending-ready-channel.lo pending-string-list.lo properties.lo \
- readiness-helper.lo referenced-handles.lo room-list.lo \
+ pending-string-list.lo properties.lo readiness-helper.lo \
+ ready-object.lo referenced-handles.lo room-list.lo \
streamed-media-channel.lo text-channel.lo debug.lo key-file.lo \
manager-file.lo types.lo header-compile-test.lo
nodist_libtelepathy_qt4_la_OBJECTS =
@@ -196,6 +197,8 @@ ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_CODING_STYLE_CHECKS = @ENABLE_CODING_STYLE_CHECKS@
+ENABLE_TP_FARSIGHT_EXAMPLES_FALSE = @ENABLE_TP_FARSIGHT_EXAMPLES_FALSE@
+ENABLE_TP_FARSIGHT_EXAMPLES_TRUE = @ENABLE_TP_FARSIGHT_EXAMPLES_TRUE@
ENABLE_TP_GLIB_TESTS_FALSE = @ENABLE_TP_GLIB_TESTS_FALSE@
ENABLE_TP_GLIB_TESTS_TRUE = @ENABLE_TP_GLIB_TESTS_TRUE@
ERROR_CFLAGS = @ERROR_CFLAGS@
@@ -262,6 +265,8 @@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TEST_PYTHON = @TEST_PYTHON@
+TP_FARSIGHT_CFLAGS = @TP_FARSIGHT_CFLAGS@
+TP_FARSIGHT_LIBS = @TP_FARSIGHT_LIBS@
TP_GLIB_CFLAGS = @TP_GLIB_CFLAGS@
TP_GLIB_LIBS = @TP_GLIB_LIBS@
TP_QT4_CFLAGS = @TP_QT4_CFLAGS@
@@ -365,6 +370,7 @@ libtelepathy_qt4_la_SOURCES = \
Client/contact-manager.cpp \
Client/dbus.cpp \
Client/dbus-proxy.cpp \
+ Client/feature.cpp \
Client/file-transfer.cpp \
Client/media-session-handler.cpp \
Client/media-stream-handler.cpp \
@@ -378,10 +384,10 @@ libtelepathy_qt4_la_SOURCES = \
Client/pending-handles.cpp \
Client/pending-operation.cpp \
Client/pending-ready.cpp \
- Client/pending-ready-channel.cpp \
Client/pending-string-list.cpp \
Client/properties.cpp \
Client/readiness-helper.cpp \
+ Client/ready-object.cpp \
Client/referenced-handles.cpp \
Client/room-list.cpp \
Client/streamed-media-channel.cpp \
@@ -433,7 +439,6 @@ nodist_libtelepathy_qt4_la_SOURCES = \
Client/_gen/pending-handles.moc.hpp \
Client/_gen/pending-operation.moc.hpp \
Client/_gen/pending-ready.moc.hpp \
- Client/_gen/pending-ready-channel.moc.hpp \
Client/_gen/pending-string-list.moc.hpp \
Client/_gen/readiness-helper.moc.hpp \
Client/_gen/room-list.moc.hpp \
@@ -464,6 +469,7 @@ tpqt4clientinclude_HEADERS = \
Client/ContactManager \
Client/DBus \
Client/DBusProxy \
+ Client/Feature \
Client/FileTransfer \
Client/MediaSessionHandler \
Client/MediaStreamHandler \
@@ -478,12 +484,12 @@ tpqt4clientinclude_HEADERS = \
Client/PendingHandles \
Client/PendingOperation \
Client/PendingReady \
- Client/PendingReadyChannel \
Client/PendingSuccess \
Client/PendingStringList \
Client/PendingVoidMethodCall \
Client/Properties \
Client/ReadinessHelper \
+ Client/ReadyObject \
Client/ReceivedMessage \
Client/ReferencedHandles \
Client/ReferencedHandlesIterator \
@@ -533,6 +539,7 @@ tpqt4clientinclude_HEADERS = \
Client/contact-manager.h \
Client/dbus.h \
Client/dbus-proxy.h \
+ Client/feature.h \
Client/file-transfer.h \
Client/media-session-handler.h \
Client/media-stream-handler.h \
@@ -546,10 +553,10 @@ tpqt4clientinclude_HEADERS = \
Client/pending-handles.h \
Client/pending-operation.h \
Client/pending-ready.h \
- Client/pending-ready-channel.h \
Client/pending-string-list.h \
Client/properties.h \
Client/readiness-helper.h \
+ Client/ready-object.h \
Client/referenced-handles.h \
Client/room-list.h \
Client/simple-pending-operations.h \
@@ -579,16 +586,17 @@ BUILT_SOURCES = \
CLEANFILES = \
$(BUILT_SOURCES)
+AM_CPPFLAGS = \
+ -I$(top_srcdir) -I$(top_builddir) \
+ $(QTCORE_CFLAGS) \
+ $(QTDBUS_CFLAGS)
+
AM_CXXFLAGS = \
- $(ERROR_CXXFLAGS) \
- @QTCORE_CFLAGS@ \
- @QTDBUS_CFLAGS@ \
- -I$(top_builddir) \
- -I$(top_srcdir)
+ $(ERROR_CXXFLAGS)
ALL_LIBS = \
- @QTCORE_LIBS@ \
- @QTDBUS_LIBS@
+ $(QTCORE_LIBS) \
+ $(QTDBUS_LIBS)
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-recursive
@@ -673,6 +681,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-proxy.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/feature.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-transfer.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/header-compile-test.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/key-file.Plo@am__quote@
@@ -688,11 +697,11 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pending-contacts.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pending-handles.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pending-operation.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pending-ready-channel.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pending-ready.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pending-string-list.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/properties.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readiness-helper.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ready-object.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/referenced-handles.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/room-list.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/streamed-media-channel.Plo@am__quote@
@@ -790,6 +799,13 @@ dbus-proxy.lo: Client/dbus-proxy.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dbus-proxy.lo `test -f 'Client/dbus-proxy.cpp' || echo '$(srcdir)/'`Client/dbus-proxy.cpp
+feature.lo: Client/feature.cpp
+@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT feature.lo -MD -MP -MF "$(DEPDIR)/feature.Tpo" -c -o feature.lo `test -f 'Client/feature.cpp' || echo '$(srcdir)/'`Client/feature.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/feature.Tpo" "$(DEPDIR)/feature.Plo"; else rm -f "$(DEPDIR)/feature.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Client/feature.cpp' object='feature.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o feature.lo `test -f 'Client/feature.cpp' || echo '$(srcdir)/'`Client/feature.cpp
+
file-transfer.lo: Client/file-transfer.cpp
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT file-transfer.lo -MD -MP -MF "$(DEPDIR)/file-transfer.Tpo" -c -o file-transfer.lo `test -f 'Client/file-transfer.cpp' || echo '$(srcdir)/'`Client/file-transfer.cpp; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/file-transfer.Tpo" "$(DEPDIR)/file-transfer.Plo"; else rm -f "$(DEPDIR)/file-transfer.Tpo"; exit 1; fi
@@ -881,13 +897,6 @@ pending-ready.lo: Client/pending-ready.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pending-ready.lo `test -f 'Client/pending-ready.cpp' || echo '$(srcdir)/'`Client/pending-ready.cpp
-pending-ready-channel.lo: Client/pending-ready-channel.cpp
-@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pending-ready-channel.lo -MD -MP -MF "$(DEPDIR)/pending-ready-channel.Tpo" -c -o pending-ready-channel.lo `test -f 'Client/pending-ready-channel.cpp' || echo '$(srcdir)/'`Client/pending-ready-channel.cpp; \
-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/pending-ready-channel.Tpo" "$(DEPDIR)/pending-ready-channel.Plo"; else rm -f "$(DEPDIR)/pending-ready-channel.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Client/pending-ready-channel.cpp' object='pending-ready-channel.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o pending-ready-channel.lo `test -f 'Client/pending-ready-channel.cpp' || echo '$(srcdir)/'`Client/pending-ready-channel.cpp
-
pending-string-list.lo: Client/pending-string-list.cpp
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT pending-string-list.lo -MD -MP -MF "$(DEPDIR)/pending-string-list.Tpo" -c -o pending-string-list.lo `test -f 'Client/pending-string-list.cpp' || echo '$(srcdir)/'`Client/pending-string-list.cpp; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/pending-string-list.Tpo" "$(DEPDIR)/pending-string-list.Plo"; else rm -f "$(DEPDIR)/pending-string-list.Tpo"; exit 1; fi
@@ -909,6 +918,13 @@ readiness-helper.lo: Client/readiness-helper.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o readiness-helper.lo `test -f 'Client/readiness-helper.cpp' || echo '$(srcdir)/'`Client/readiness-helper.cpp
+ready-object.lo: Client/ready-object.cpp
+@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ready-object.lo -MD -MP -MF "$(DEPDIR)/ready-object.Tpo" -c -o ready-object.lo `test -f 'Client/ready-object.cpp' || echo '$(srcdir)/'`Client/ready-object.cpp; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ready-object.Tpo" "$(DEPDIR)/ready-object.Plo"; else rm -f "$(DEPDIR)/ready-object.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Client/ready-object.cpp' object='ready-object.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ready-object.lo `test -f 'Client/ready-object.cpp' || echo '$(srcdir)/'`Client/ready-object.cpp
+
referenced-handles.lo: Client/referenced-handles.cpp
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT referenced-handles.lo -MD -MP -MF "$(DEPDIR)/referenced-handles.Tpo" -c -o referenced-handles.lo `test -f 'Client/referenced-handles.cpp' || echo '$(srcdir)/'`Client/referenced-handles.cpp; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/referenced-handles.Tpo" "$(DEPDIR)/referenced-handles.Plo"; else rm -f "$(DEPDIR)/referenced-handles.Tpo"; exit 1; fi
@@ -1433,10 +1449,10 @@ _gen/cli-%.h _gen/cli-%-body.hpp: _gen/spec-%.xml \
Client/_gen/%.moc.hpp: $(srcdir)/Client/%.h _gen/constants.h _gen/types.h
$(mkdir_p) Client/_gen
- $(MOC) @QTCORE_CFLAGS@ @QTDBUS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) -i $< -o $@
+ $(MOC) $(AM_CPPFLAGS) -i $< -o $@
_gen/%.moc.hpp: _gen/%.h _gen/constants.h _gen/types.h
- $(MOC) @QTCORE_CFLAGS@ @QTDBUS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) -i $< -o $@
+ $(MOC) $(AM_CPPFLAGS) -i $< -o $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/TelepathyQt4/Prototype/Makefile.am b/TelepathyQt4/Prototype/Makefile.am
index 49906ba..c7942dd 100644
--- a/TelepathyQt4/Prototype/Makefile.am
+++ b/TelepathyQt4/Prototype/Makefile.am
@@ -104,17 +104,17 @@ include $(top_srcdir)/tools/check-coding-style.mk
check-local: check-coding-style
AM_CXXFLAGS = \
- $(ERROR_CXXFLAGS) \
+ $(ERROR_CXXFLAGS)
+
+AM_CPPFLAGS = \
+ -I$(top_srcdir) -I$(top_builddir) \
$(QTCORE_CFLAGS) \
- $(QTDBUS_CFLAGS) \
- $(TP_QT4_CFLAGS) \
- -I$(top_builddir) \
- -I$(top_srcdir)
+ $(QTDBUS_CFLAGS)
ALL_LIBS = \
$(QTCORE_LIBS) \
$(QTDBUS_LIBS) \
- $(TP_QT4_LIBS)
+ $(top_builddir)/TelepathyQt4/libtelepathy-qt4.la
# Generated stuff
@@ -192,7 +192,7 @@ _gen/cli-%.h _gen/cli-%-body.hpp: _gen/spec-%.xml \
$$mainiface
_gen/%.moc: % _gen/constants.h _gen/types.h
- $(MOC) @QTCORE_CFLAGS@ @QTDBUS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) -i $< -o $@
+ $(MOC) $(AM_CPPFLAGS) -i $< -o $@
_gen/%.moc.hpp: _gen/%.h _gen/constants.h _gen/types.h
- $(MOC) @QTCORE_CFLAGS@ @QTDBUS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) -i $< -o $@
+ $(MOC) $(AM_CPPFLAGS) -i $< -o $@
diff --git a/TelepathyQt4/Prototype/Makefile.in b/TelepathyQt4/Prototype/Makefile.in
index a8518c8..b592b3f 100644
--- a/TelepathyQt4/Prototype/Makefile.in
+++ b/TelepathyQt4/Prototype/Makefile.in
@@ -67,7 +67,8 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(top_builddir)/TelepathyQt4/libtelepathy-qt4.la
am_libtpqt4_prototype_la_OBJECTS = Account.lo AccountManager.lo \
AvatarManager.lo CapabilitiesManager.lo ChatChannel.lo \
Connection.lo ConnectionFacade.lo Contact.lo ContactManager.lo \
@@ -182,6 +183,8 @@ ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_CODING_STYLE_CHECKS = @ENABLE_CODING_STYLE_CHECKS@
+ENABLE_TP_FARSIGHT_EXAMPLES_FALSE = @ENABLE_TP_FARSIGHT_EXAMPLES_FALSE@
+ENABLE_TP_FARSIGHT_EXAMPLES_TRUE = @ENABLE_TP_FARSIGHT_EXAMPLES_TRUE@
ENABLE_TP_GLIB_TESTS_FALSE = @ENABLE_TP_GLIB_TESTS_FALSE@
ENABLE_TP_GLIB_TESTS_TRUE = @ENABLE_TP_GLIB_TESTS_TRUE@
ERROR_CFLAGS = @ERROR_CFLAGS@
@@ -248,6 +251,8 @@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
TEST_PYTHON = @TEST_PYTHON@
+TP_FARSIGHT_CFLAGS = @TP_FARSIGHT_CFLAGS@
+TP_FARSIGHT_LIBS = @TP_FARSIGHT_LIBS@
TP_GLIB_CFLAGS = @TP_GLIB_CFLAGS@
TP_GLIB_LIBS = @TP_GLIB_LIBS@
TP_QT4_CFLAGS = @TP_QT4_CFLAGS@
@@ -402,17 +407,17 @@ CLEANFILES = \
$(BUILT_SOURCES)
AM_CXXFLAGS = \
- $(ERROR_CXXFLAGS) \
+ $(ERROR_CXXFLAGS)
+
+AM_CPPFLAGS = \
+ -I$(top_srcdir) -I$(top_builddir) \
$(QTCORE_CFLAGS) \
- $(QTDBUS_CFLAGS) \
- $(TP_QT4_CFLAGS) \
- -I$(top_builddir) \
- -I$(top_srcdir)
+ $(QTDBUS_CFLAGS)
ALL_LIBS = \
$(QTCORE_LIBS) \
$(QTDBUS_LIBS) \
- $(TP_QT4_LIBS)
+ $(top_builddir)/TelepathyQt4/libtelepathy-qt4.la
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -881,10 +886,10 @@ _gen/cli-%.h _gen/cli-%-body.hpp: _gen/spec-%.xml \
$$mainiface
_gen/%.moc: % _gen/constants.h _gen/types.h
- $(MOC) @QTCORE_CFLAGS@ @QTDBUS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) -i $< -o $@
+ $(MOC) $(AM_CPPFLAGS) -i $< -o $@
_gen/%.moc.hpp: _gen/%.h _gen/constants.h _gen/types.h
- $(MOC) @QTCORE_CFLAGS@ @QTDBUS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) -i $< -o $@
+ $(MOC) $(AM_CPPFLAGS) -i $< -o $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/configure b/configure
index bb117b3..58d3d31 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for Telepathy-Qt4 0.1.1.
+# Generated by GNU Autoconf 2.63 for Telepathy-Qt4 0.1.2.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=Telepathy>.
#
@@ -750,8 +750,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='Telepathy-Qt4'
PACKAGE_TARNAME='telepathy-qt4'
-PACKAGE_VERSION='0.1.1'
-PACKAGE_STRING='Telepathy-Qt4 0.1.1'
+PACKAGE_VERSION='0.1.2'
+PACKAGE_STRING='Telepathy-Qt4 0.1.2'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=Telepathy'
# Factoring default headers for most tests.
@@ -854,6 +854,10 @@ HAVE_PINOCCHIO_FALSE
HAVE_PINOCCHIO_TRUE
PINOCCHIO_CTL
PINOCCHIO
+ENABLE_TP_FARSIGHT_EXAMPLES_FALSE
+ENABLE_TP_FARSIGHT_EXAMPLES_TRUE
+TP_FARSIGHT_LIBS
+TP_FARSIGHT_CFLAGS
ENABLE_TP_GLIB_TESTS_FALSE
ENABLE_TP_GLIB_TESTS_TRUE
TP_GLIB_LIBS
@@ -1041,6 +1045,8 @@ QTTEST_CFLAGS
QTTEST_LIBS
TP_GLIB_CFLAGS
TP_GLIB_LIBS
+TP_FARSIGHT_CFLAGS
+TP_FARSIGHT_LIBS
DOXYGEN_PAPER_SIZE'
@@ -1594,7 +1600,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Telepathy-Qt4 0.1.1 to adapt to many kinds of systems.
+\`configure' configures Telepathy-Qt4 0.1.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1664,7 +1670,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Telepathy-Qt4 0.1.1:";;
+ short | recursive ) echo "Configuration of Telepathy-Qt4 0.1.2:";;
esac
cat <<\_ACEOF
@@ -1741,6 +1747,10 @@ Some influential environment variables:
C compiler flags for TP_GLIB, overriding pkg-config
TP_GLIB_LIBS
linker flags for TP_GLIB, overriding pkg-config
+ TP_FARSIGHT_CFLAGS
+ C compiler flags for TP_FARSIGHT, overriding pkg-config
+ TP_FARSIGHT_LIBS
+ linker flags for TP_FARSIGHT, overriding pkg-config
DOXYGEN_PAPER_SIZE
a4wide (default), a4, letter, legal or executive
@@ -1810,7 +1820,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Telepathy-Qt4 configure 0.1.1
+Telepathy-Qt4 configure 0.1.2
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1824,7 +1834,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Telepathy-Qt4 $as_me 0.1.1, which was
+It was created by Telepathy-Qt4 $as_me 0.1.2, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
@@ -2529,7 +2539,7 @@ fi
# Define the identity of the package.
PACKAGE='telepathy-qt4'
- VERSION='0.1.1'
+ VERSION='0.1.2'
cat >>confdefs.h <<_ACEOF
@@ -5217,7 +5227,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 5220 "configure"' > conftest.$ac_ext
+ echo '#line 5230 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7821,11 +7831,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7824: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7834: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7828: \$? = $ac_status" >&5
+ echo "$as_me:7838: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8111,11 +8121,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8114: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8124: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8118: \$? = $ac_status" >&5
+ echo "$as_me:8128: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8215,11 +8225,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8218: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8228: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:8222: \$? = $ac_status" >&5
+ echo "$as_me:8232: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10628,7 +10638,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 10631 "configure"
+#line 10641 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10728,7 +10738,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 10731 "configure"
+#line 10741 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13137,11 +13147,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13140: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13150: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:13144: \$? = $ac_status" >&5
+ echo "$as_me:13154: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -13241,11 +13251,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13244: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13254: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13248: \$? = $ac_status" >&5
+ echo "$as_me:13258: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14839,11 +14849,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14842: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14852: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:14846: \$? = $ac_status" >&5
+ echo "$as_me:14856: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -14943,11 +14953,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:14946: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14956: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:14950: \$? = $ac_status" >&5
+ echo "$as_me:14960: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -17171,11 +17181,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17174: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17184: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:17178: \$? = $ac_status" >&5
+ echo "$as_me:17188: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17461,11 +17471,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17464: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17474: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:17468: \$? = $ac_status" >&5
+ echo "$as_me:17478: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -17565,11 +17575,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:17568: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17578: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:17572: \$? = $ac_status" >&5
+ echo "$as_me:17582: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -23041,12 +23051,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_TP_GLIB_CFLAGS="$TP_GLIB_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"telepathy-glib >= 0.7.26\"") >&5
- ($PKG_CONFIG --exists --print-errors "telepathy-glib >= 0.7.26") 2>&5
+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"telepathy-glib >= 0.7.27\"") >&5
+ ($PKG_CONFIG --exists --print-errors "telepathy-glib >= 0.7.27") 2>&5
ac_status=$?
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
- pkg_cv_TP_GLIB_CFLAGS=`$PKG_CONFIG --cflags "telepathy-glib >= 0.7.26" 2>/dev/null`
+ pkg_cv_TP_GLIB_CFLAGS=`$PKG_CONFIG --cflags "telepathy-glib >= 0.7.27" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -23059,12 +23069,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_TP_GLIB_LIBS="$TP_GLIB_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"telepathy-glib >= 0.7.26\"") >&5
- ($PKG_CONFIG --exists --print-errors "telepathy-glib >= 0.7.26") 2>&5
+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"telepathy-glib >= 0.7.27\"") >&5
+ ($PKG_CONFIG --exists --print-errors "telepathy-glib >= 0.7.27") 2>&5
ac_status=$?
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
- pkg_cv_TP_GLIB_LIBS=`$PKG_CONFIG --libs "telepathy-glib >= 0.7.26" 2>/dev/null`
+ pkg_cv_TP_GLIB_LIBS=`$PKG_CONFIG --libs "telepathy-glib >= 0.7.27" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -23083,9 +23093,9 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- TP_GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "telepathy-glib >= 0.7.26"`
+ TP_GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "telepathy-glib >= 0.7.27"`
else
- TP_GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "telepathy-glib >= 0.7.26"`
+ TP_GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "telepathy-glib >= 0.7.27"`
fi
# Put the nasty error message in config.log where it belongs
echo "$TP_GLIB_PKG_ERRORS" >&5
@@ -23127,6 +23137,95 @@ else
fi
+
+pkg_failed=no
+{ $as_echo "$as_me:$LINENO: checking for TP_FARSIGHT" >&5
+$as_echo_n "checking for TP_FARSIGHT... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$TP_FARSIGHT_CFLAGS"; then
+ pkg_cv_TP_FARSIGHT_CFLAGS="$TP_FARSIGHT_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"telepathy-farsight >= 0.0.4 gstreamer-0.10 gstreamer-interfaces-0.10\"") >&5
+ ($PKG_CONFIG --exists --print-errors "telepathy-farsight >= 0.0.4 gstreamer-0.10 gstreamer-interfaces-0.10") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_TP_FARSIGHT_CFLAGS=`$PKG_CONFIG --cflags "telepathy-farsight >= 0.0.4 gstreamer-0.10 gstreamer-interfaces-0.10" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$TP_FARSIGHT_LIBS"; then
+ pkg_cv_TP_FARSIGHT_LIBS="$TP_FARSIGHT_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"telepathy-farsight >= 0.0.4 gstreamer-0.10 gstreamer-interfaces-0.10\"") >&5
+ ($PKG_CONFIG --exists --print-errors "telepathy-farsight >= 0.0.4 gstreamer-0.10 gstreamer-interfaces-0.10") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_TP_FARSIGHT_LIBS=`$PKG_CONFIG --libs "telepathy-farsight >= 0.0.4 gstreamer-0.10 gstreamer-interfaces-0.10" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ TP_FARSIGHT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "telepathy-farsight >= 0.0.4 gstreamer-0.10 gstreamer-interfaces-0.10"`
+ else
+ TP_FARSIGHT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "telepathy-farsight >= 0.0.4 gstreamer-0.10 gstreamer-interfaces-0.10"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$TP_FARSIGHT_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+ have_tp_fs=no
+elif test $pkg_failed = untried; then
+ have_tp_fs=no
+else
+ TP_FARSIGHT_CFLAGS=$pkg_cv_TP_FARSIGHT_CFLAGS
+ TP_FARSIGHT_LIBS=$pkg_cv_TP_FARSIGHT_LIBS
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+ have_tp_fs=yes
+fi
+
+
+if test no = "$have_tp_fs"; then
+ { $as_echo "$as_me:$LINENO: WARNING: telepathy-farsight not found: not all examples will be built" >&5
+$as_echo "$as_me: WARNING: telepathy-farsight not found: not all examples will be built" >&2;}
+fi
+
+
+if test yes = "$have_tp_glib" && test yes = "$have_tp_fs" &&
+ test yes = "$have_qt_glib_main_loop"; then
+ ENABLE_TP_FARSIGHT_EXAMPLES_TRUE=
+ ENABLE_TP_FARSIGHT_EXAMPLES_FALSE='#'
+else
+ ENABLE_TP_FARSIGHT_EXAMPLES_TRUE='#'
+ ENABLE_TP_FARSIGHT_EXAMPLES_FALSE=
+fi
+
+
for ac_prog in telepathy-pinocchio
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -25455,7 +25554,7 @@ esac
#echo DX_ENV=$DX_ENV
-ac_config_files="$ac_config_files Makefile TelepathyQt4/Makefile TelepathyQt4/Prototype/Makefile TelepathyQt4/Prototype/TpQt4Prototype.pc TelepathyQt4/TelepathyQt4.pc doxygen.cfg examples/Makefile examples/extensions/Makefile examples/accounts/Makefile examples/roster/Makefile m4/Makefile spec/Makefile tests/Makefile tests/dbus/Makefile tests/dbus-1/services/account-manager.service tests/lib/Makefile tests/lib/contactlist/Makefile tests/lib/csh/Makefile tests/lib/echo/Makefile tests/lib/echo2/Makefile tests/pinocchio/Makefile tests/prototype/Makefile tools/Makefile"
+ac_config_files="$ac_config_files Makefile TelepathyQt4/Makefile TelepathyQt4/Prototype/Makefile TelepathyQt4/Prototype/TpQt4Prototype.pc TelepathyQt4/TelepathyQt4.pc doxygen.cfg examples/Makefile examples/accounts/Makefile examples/call/Makefile examples/extensions/Makefile examples/roster/Makefile m4/Makefile spec/Makefile tests/Makefile tests/dbus/Makefile tests/dbus-1/services/account-manager.service tests/lib/Makefile tests/lib/callable/Makefile tests/lib/contactlist/Makefile tests/lib/csh/Makefile tests/lib/echo/Makefile tests/lib/echo2/Makefile tests/pinocchio/Makefile tests/prototype/Makefile tools/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -25610,6 +25709,13 @@ $as_echo "$as_me: error: conditional \"ENABLE_TP_GLIB_TESTS\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
+if test -z "${ENABLE_TP_FARSIGHT_EXAMPLES_TRUE}" && test -z "${ENABLE_TP_FARSIGHT_EXAMPLES_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"ENABLE_TP_FARSIGHT_EXAMPLES\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"ENABLE_TP_FARSIGHT_EXAMPLES\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
if test -z "${HAVE_PINOCCHIO_TRUE}" && test -z "${HAVE_PINOCCHIO_FALSE}"; then
{ { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_PINOCCHIO\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@@ -26100,7 +26206,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Telepathy-Qt4 $as_me 0.1.1, which was
+This file was extended by Telepathy-Qt4 $as_me 0.1.2, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -26163,7 +26269,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-Telepathy-Qt4 config.status 0.1.1
+Telepathy-Qt4 config.status 0.1.2
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
@@ -26294,8 +26400,9 @@ do
"TelepathyQt4/TelepathyQt4.pc") CONFIG_FILES="$CONFIG_FILES TelepathyQt4/TelepathyQt4.pc" ;;
"doxygen.cfg") CONFIG_FILES="$CONFIG_FILES doxygen.cfg" ;;
"examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
- "examples/extensions/Makefile") CONFIG_FILES="$CONFIG_FILES examples/extensions/Makefile" ;;
"examples/accounts/Makefile") CONFIG_FILES="$CONFIG_FILES examples/accounts/Makefile" ;;
+ "examples/call/Makefile") CONFIG_FILES="$CONFIG_FILES examples/call/Makefile" ;;
+ "examples/extensions/Makefile") CONFIG_FILES="$CONFIG_FILES examples/extensions/Makefile" ;;
"examples/roster/Makefile") CONFIG_FILES="$CONFIG_FILES examples/roster/Makefile" ;;
"m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
"spec/Makefile") CONFIG_FILES="$CONFIG_FILES spec/Makefile" ;;
@@ -26303,6 +26410,7 @@ do
"tests/dbus/Makefile") CONFIG_FILES="$CONFIG_FILES tests/dbus/Makefile" ;;
"tests/dbus-1/services/account-manager.service") CONFIG_FILES="$CONFIG_FILES tests/dbus-1/services/account-manager.service" ;;
"tests/lib/Makefile") CONFIG_FILES="$CONFIG_FILES tests/lib/Makefile" ;;
+ "tests/lib/callable/Makefile") CONFIG_FILES="$CONFIG_FILES tests/lib/callable/Makefile" ;;
"tests/lib/contactlist/Makefile") CONFIG_FILES="$CONFIG_FILES tests/lib/contactlist/Makefile" ;;
"tests/lib/csh/Makefile") CONFIG_FILES="$CONFIG_FILES tests/lib/csh/Makefile" ;;
"tests/lib/echo/Makefile") CONFIG_FILES="$CONFIG_FILES tests/lib/echo/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index 94803bb..79057c8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11,7 +11,7 @@ AC_PREREQ([2.59])
m4_define([tp_qt4_major_version], [0])
m4_define([tp_qt4_minor_version], [1])
-m4_define([tp_qt4_micro_version], [1])
+m4_define([tp_qt4_micro_version], [2])
m4_define([tp_qt4_nano_version], [0])
# If library source has changed since last release, increment revision
@@ -182,7 +182,7 @@ AC_SUBST(PROTO_CFLAGS)
dnl Check for telepathy-glib, and for Qt <-> GLib main loop integration:
dnl if we have both, we can run more tests
-PKG_CHECK_MODULES(TP_GLIB, [telepathy-glib >= 0.7.26], [have_tp_glib=yes],
+PKG_CHECK_MODULES(TP_GLIB, [telepathy-glib >= 0.7.27], [have_tp_glib=yes],
[have_tp_glib=no])
AC_SUBST(TP_GLIB_CFLAGS)
AC_SUBST(TP_GLIB_LIBS)
@@ -199,6 +199,20 @@ fi
AM_CONDITIONAL([ENABLE_TP_GLIB_TESTS],
[test yes = "$have_tp_glib" && test yes = "$have_qt_glib_main_loop"])
+dnl Check for telepathy-farsight... if we have that too, we can build an
+dnl audio/video calling example
+PKG_CHECK_MODULES(TP_FARSIGHT, [telepathy-farsight >= 0.0.4 gstreamer-0.10 gstreamer-interfaces-0.10],
+ [have_tp_fs=yes],
+ [have_tp_fs=no])
+AC_SUBST(TP_FARSIGHT_CFLAGS)
+AC_SUBST(TP_FARSIGHT_LIBS)
+if test no = "$have_tp_fs"; then
+ AC_MSG_WARN([telepathy-farsight not found: not all examples will be built])
+fi
+AM_CONDITIONAL([ENABLE_TP_FARSIGHT_EXAMPLES],
+ [test yes = "$have_tp_glib" && test yes = "$have_tp_fs" &&
+ test yes = "$have_qt_glib_main_loop"])
+
AC_PATH_PROGS([PINOCCHIO], [telepathy-pinocchio], [none],
[$PATH:/usr/local/libexec:/usr/libexec:/usr/lib/telepathy])
AC_PATH_PROGS([PINOCCHIO_CTL], [pinocchio-ctl], [none])
@@ -240,8 +254,9 @@ AC_OUTPUT([
TelepathyQt4/TelepathyQt4.pc
doxygen.cfg
examples/Makefile
- examples/extensions/Makefile
examples/accounts/Makefile
+ examples/call/Makefile
+ examples/extensions/Makefile
examples/roster/Makefile
m4/Makefile
spec/Makefile
@@ -249,6 +264,7 @@ AC_OUTPUT([
tests/dbus/Makefile
tests/dbus-1/services/account-manager.service
tests/lib/Makefile
+ tests/lib/callable/Makefile
tests/lib/contactlist/Makefile
tests/lib/csh/Makefile
tests/lib/echo/Makefile
diff --git a/doc/html/__gen_2cli-channel-handler_8h-source.html b/doc/html/__gen_2cli-channel-handler_8h-source.html
index fca514f..c814b88 100644
--- a/doc/html/__gen_2cli-channel-handler_8h-source.html
+++ b/doc/html/__gen_2cli-channel-handler_8h-source.html
@@ -1,6 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>TelepathyQt4-0.1.1: cli-channel-handler.h Source File</title>
+<title>TelepathyQt4-0.1.2: cli-channel-handler.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
@@ -65,24 +65,24 @@
<a name="l00055"></a>00055 <span class="keywordflow">return</span> <span class="stringliteral">"org.freedesktop.Telepathy.ChannelHandler"</span>;
<a name="l00056"></a>00056 }
<a name="l00057"></a>00057
-<a name="l00065"></a>00065 <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#68eb9f069281a49c1959ae257be7e510">ChannelHandlerInterface</a>(
-<a name="l00066"></a>00066 <span class="keyword">const</span> QString&amp; serviceName,
+<a name="l00065"></a>00065 <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#67a78017d016c537dbc6d605231929d7">ChannelHandlerInterface</a>(
+<a name="l00066"></a>00066 <span class="keyword">const</span> QString&amp; busName,
<a name="l00067"></a>00067 <span class="keyword">const</span> QString&amp; objectPath,
<a name="l00068"></a>00068 QObject* parent = 0
<a name="l00069"></a>00069 );
<a name="l00070"></a>00070
-<a name="l00079"></a>00079 <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#68eb9f069281a49c1959ae257be7e510">ChannelHandlerInterface</a>(
+<a name="l00079"></a>00079 <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#67a78017d016c537dbc6d605231929d7">ChannelHandlerInterface</a>(
<a name="l00080"></a>00080 <span class="keyword">const</span> QDBusConnection&amp; connection,
-<a name="l00081"></a>00081 <span class="keyword">const</span> QString&amp; serviceName,
+<a name="l00081"></a>00081 <span class="keyword">const</span> QString&amp; busName,
<a name="l00082"></a>00082 <span class="keyword">const</span> QString&amp; objectPath,
<a name="l00083"></a>00083 QObject* parent = 0
<a name="l00084"></a>00084 );
<a name="l00085"></a>00085
-<a name="l00092"></a>00092 <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#68eb9f069281a49c1959ae257be7e510">ChannelHandlerInterface</a>(<a class="code" href="class_telepathy_1_1_client_1_1_d_bus_proxy.html">Telepathy::Client::DBusProxy</a> *proxy);
+<a name="l00092"></a>00092 <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#67a78017d016c537dbc6d605231929d7">ChannelHandlerInterface</a>(<a class="code" href="class_telepathy_1_1_client_1_1_d_bus_proxy.html">Telepathy::Client::DBusProxy</a> *proxy);
<a name="l00093"></a>00093
-<a name="l00101"></a>00101 <span class="keyword">explicit</span> <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#68eb9f069281a49c1959ae257be7e510">ChannelHandlerInterface</a>(<span class="keyword">const</span> <a class="code" href="class_telepathy_1_1_client_1_1_abstract_interface.html">Telepathy::Client::AbstractInterface</a>&amp; mainInterface);
+<a name="l00101"></a>00101 <span class="keyword">explicit</span> <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#67a78017d016c537dbc6d605231929d7">ChannelHandlerInterface</a>(<span class="keyword">const</span> <a class="code" href="class_telepathy_1_1_client_1_1_abstract_interface.html">Telepathy::Client::AbstractInterface</a>&amp; mainInterface);
<a name="l00102"></a>00102
-<a name="l00110"></a>00110 <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#68eb9f069281a49c1959ae257be7e510">ChannelHandlerInterface</a>(<span class="keyword">const</span> <a class="code" href="class_telepathy_1_1_client_1_1_abstract_interface.html">Telepathy::Client::AbstractInterface</a>&amp; mainInterface, QObject* parent);
+<a name="l00110"></a>00110 <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#67a78017d016c537dbc6d605231929d7">ChannelHandlerInterface</a>(<span class="keyword">const</span> <a class="code" href="class_telepathy_1_1_client_1_1_abstract_interface.html">Telepathy::Client::AbstractInterface</a>&amp; mainInterface, QObject* parent);
<a name="l00111"></a>00111
<a name="l00112"></a>00112 <span class="keyword">public</span> Q_SLOTS:
<a name="l00144"></a><a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#9d976132e63d597cbe0549f571e6775d">00144</a> <span class="keyword">inline</span> QDBusPendingReply&lt;&gt; <a class="code" href="class_tp_prototype_1_1_client_1_1_channel_handler_interface.html#9d976132e63d597cbe0549f571e6775d">HandleChannel</a>(<span class="keyword">const</span> QString&amp; busName, <span class="keyword">const</span> QDBusObjectPath&amp; connection, <span class="keyword">const</span> QString&amp; channelType, <span class="keyword">const</span> QDBusObjectPath&amp; channel, uint handleType, uint handle)
@@ -106,7 +106,7 @@
<a name="l00162"></a>00162 }
<a name="l00163"></a>00163 }
</pre></div></div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Mar 5 18:51:47 2009 for TelepathyQt4-0.1.1 by&nbsp;
+<hr size="1"><address style="text-align: right;"><small>Generated on Mon Mar 23 18:02:10 2009 for TelepathyQt4-0.1.2 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
diff --git a/doc/html/__gen_2cli-stream-engine_8h-source.html b/doc/html/__gen_2cli-stream-engine_8h-source.html
index 948ebbe..7752c38 100644
--- a/doc/html/__gen_2cli-stream-engine_8h-source.html
+++ b/doc/html/__gen_2cli-stream-engine_8h-source.html
@@ -1,6 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>TelepathyQt4-0.1.1: cli-stream-engine.h Source File</title>
+<title>TelepathyQt4-0.1.2: cli-stream-engine.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
@@ -65,24 +65,24 @@
<a name="l00055"></a>00055 <span class="keywordflow">return</span> <span class="stringliteral">"org.freedesktop.Telepathy.StreamEngine"</span>;
<a name="l00056"></a>00056 }
<a name="l00057"></a>00057
-<a name="l00065"></a>00065 <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#85a80caaa1d7aa042003d603cb644e97">StreamEngineInterface</a>(
-<a name="l00066"></a>00066 <span class="keyword">const</span> QString&amp; serviceName,
+<a name="l00065"></a>00065 <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#7268db221aa1d3174ca9508162dc4f75">StreamEngineInterface</a>(
+<a name="l00066"></a>00066 <span class="keyword">const</span> QString&amp; busName,
<a name="l00067"></a>00067 <span class="keyword">const</span> QString&amp; objectPath,
<a name="l00068"></a>00068 QObject* parent = 0
<a name="l00069"></a>00069 );
<a name="l00070"></a>00070
-<a name="l00079"></a>00079 <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#85a80caaa1d7aa042003d603cb644e97">StreamEngineInterface</a>(
+<a name="l00079"></a>00079 <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#7268db221aa1d3174ca9508162dc4f75">StreamEngineInterface</a>(
<a name="l00080"></a>00080 <span class="keyword">const</span> QDBusConnection&amp; connection,
-<a name="l00081"></a>00081 <span class="keyword">const</span> QString&amp; serviceName,
+<a name="l00081"></a>00081 <span class="keyword">const</span> QString&amp; busName,
<a name="l00082"></a>00082 <span class="keyword">const</span> QString&amp; objectPath,
<a name="l00083"></a>00083 QObject* parent = 0
<a name="l00084"></a>00084 );
<a name="l00085"></a>00085
-<a name="l00092"></a>00092 <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#85a80caaa1d7aa042003d603cb644e97">StreamEngineInterface</a>(<a class="code" href="class_telepathy_1_1_client_1_1_d_bus_proxy.html">Telepathy::Client::DBusProxy</a> *proxy);
+<a name="l00092"></a>00092 <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#7268db221aa1d3174ca9508162dc4f75">StreamEngineInterface</a>(<a class="code" href="class_telepathy_1_1_client_1_1_d_bus_proxy.html">Telepathy::Client::DBusProxy</a> *proxy);
<a name="l00093"></a>00093
-<a name="l00101"></a>00101 <span class="keyword">explicit</span> <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#85a80caaa1d7aa042003d603cb644e97">StreamEngineInterface</a>(<span class="keyword">const</span> <a class="code" href="class_telepathy_1_1_client_1_1_abstract_interface.html">Telepathy::Client::AbstractInterface</a>&amp; mainInterface);
+<a name="l00101"></a>00101 <span class="keyword">explicit</span> <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#7268db221aa1d3174ca9508162dc4f75">StreamEngineInterface</a>(<span class="keyword">const</span> <a class="code" href="class_telepathy_1_1_client_1_1_abstract_interface.html">Telepathy::Client::AbstractInterface</a>&amp; mainInterface);
<a name="l00102"></a>00102
-<a name="l00110"></a>00110 <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#85a80caaa1d7aa042003d603cb644e97">StreamEngineInterface</a>(<span class="keyword">const</span> <a class="code" href="class_telepathy_1_1_client_1_1_abstract_interface.html">Telepathy::Client::AbstractInterface</a>&amp; mainInterface, QObject* parent);
+<a name="l00110"></a>00110 <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#7268db221aa1d3174ca9508162dc4f75">StreamEngineInterface</a>(<span class="keyword">const</span> <a class="code" href="class_telepathy_1_1_client_1_1_abstract_interface.html">Telepathy::Client::AbstractInterface</a>&amp; mainInterface, QObject* parent);
<a name="l00111"></a>00111
<a name="l00112"></a>00112 <span class="keyword">public</span> Q_SLOTS:
<a name="l00116"></a><a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#78b484399a3d578c8820878ae1499c18">00116</a> <span class="keyword">inline</span> QDBusPendingReply&lt;&gt; <a class="code" href="class_tp_prototype_1_1_client_1_1_stream_engine_interface.html#78b484399a3d578c8820878ae1499c18">SetOutputVolume</a>(<span class="keyword">const</span> QDBusObjectPath&amp; channelpath, uint streamid, uint volume)
@@ -199,7 +199,7 @@
<a name="l00251"></a>00251 }
<a name="l00252"></a>00252 }
</pre></div></div>
-<hr size="1"><address style="text-align: right;"><small>Generated on Thu Mar 5 18:51:47 2009 for TelepathyQt4-0.1.1 by&nbsp;
+<hr size="1"><address style="text-align: right;"><small>Generated on Mon Mar 23 18:02:10 2009 for TelepathyQt4-0.1.2 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
diff --git a/doc/html/__gen_2constants_8h-source.html b/doc/html/__gen_2constants_8h-source.html
index 6677c02..6f54636 100644
--- a/doc/html/__gen_2constants_8h-source.html
+++ b/doc/html/__gen_2constants_8h-source.html
@@ -1,6 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-<title>TelepathyQt4-0.1.1: constants.h Source File</title>
+<title>TelepathyQt4-0.1.2: constants.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
@@ -740,7 +740,7 @@
<a name="l02628"></a><a class="code" href="group__errorstrconsts.html#g86f68805f9b9e0d6ad1a7113ebdcf470">02628</a> <span class="preprocessor">#define TELEPATHY_ERROR_DOES_NOT_EXIST "org.freedesktop.Telepathy.Error.DoesNotExist"</span>
<a name="l02629"></a>02629 <span class="preprocessor"></span>
</pre>