Merge lp:~tiagosh/ubuntu/wily/telepathy-qt5/update-0.9.6.1 into lp:ubuntu/wily/telepathy-qt5

Proposed by Tiago Salem Herrmann
Status: Merged
Merge reported by: Martin Pitt
Merged at revision: not available
Proposed branch: lp:~tiagosh/ubuntu/wily/telepathy-qt5/update-0.9.6.1
Merge into: lp:ubuntu/wily/telepathy-qt5
Diff against target: 765114 lines (+358179/-292145)
1826 files modified
.pc/01-force_setInterfaces_on_call-content-for-dtmf.patch/TelepathyQt/call-content.cpp (+0/-537)
.pc/02-adapt_to_work_with_q5_final.patch/CMakeLists.txt (+0/-304)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/CMakeLists.txt (+0/-1007)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/CMakeLists.txt (+0/-83)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsight-uninstalled.pc.in (+0/-11)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsight.pc.in (+0/-11)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsightConfig.cmake.in (+0/-24)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/channel.cpp (+0/-98)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/CMakeLists.txt (+0/-105)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstream-uninstalled.pc.in (+0/-11)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstream.pc.in (+0/-11)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstreamConfig.cmake.in (+0/-24)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/channel.cpp (+0/-166)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQt-uninstalled.pc.in (+0/-11)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQt.pc.in (+0/-11)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtConfig.cmake.in (+0/-28)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtService-uninstalled.pc.in (+0/-11)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtService.pc.in (+0/-11)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtServiceConfig.cmake.in (+0/-22)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/account.cpp (+0/-4858)
.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/utils.cpp (+0/-220)
.pc/02-adapt_to_work_with_q5_final.patch/cmake/modules/FindQt.cmake (+0/-85)
.pc/02-adapt_to_work_with_q5_final.patch/cmake/modules/FindQt5.cmake (+0/-164)
.pc/02-adapt_to_work_with_q5_final.patch/cmake/modules/TpQtMacros.cmake (+0/-493)
.pc/02-adapt_to_work_with_q5_final.patch/examples/accounts/CMakeLists.txt (+0/-23)
.pc/02-adapt_to_work_with_q5_final.patch/examples/cm/CMakeLists.txt (+0/-21)
.pc/02-adapt_to_work_with_q5_final.patch/examples/contact-messenger/CMakeLists.txt (+0/-16)
.pc/02-adapt_to_work_with_q5_final.patch/examples/extensions/CMakeLists.txt (+0/-77)
.pc/02-adapt_to_work_with_q5_final.patch/examples/file-transfer/CMakeLists.txt (+0/-43)
.pc/02-adapt_to_work_with_q5_final.patch/examples/protocols/CMakeLists.txt (+0/-21)
.pc/02-adapt_to_work_with_q5_final.patch/examples/roster/CMakeLists.txt (+0/-40)
.pc/02-adapt_to_work_with_q5_final.patch/examples/stream-tubes/CMakeLists.txt (+0/-33)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/CMakeLists.txt (+0/-102)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/account-channel-dispatcher.cpp (+0/-1242)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/chan-basics.cpp (+0/-286)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/chan-conference.cpp (+0/-284)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/chan-group.cpp (+0/-511)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/client-factories.cpp (+0/-1182)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/client.cpp (+0/-853)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/contact-messenger.cpp (+0/-679)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/contact-search-chan.cpp (+0/-310)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/properties.cpp (+0/-148)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/stream-tube-handlers.cpp (+0/-1934)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/streamed-media-chan.cpp (+0/-1374)
.pc/02-adapt_to_work_with_q5_final.patch/tests/dbus/text-chan.cpp (+0/-565)
.pc/02-adapt_to_work_with_q5_final.patch/tests/lib/CMakeLists.txt (+0/-30)
.pc/02-adapt_to_work_with_q5_final.patch/tests/lib/glib-helpers/CMakeLists.txt (+0/-22)
.pc/03-add_service_side_classes.patch/CMakeLists.txt (+0/-308)
.pc/03-add_service_side_classes.patch/TelepathyQt/CMakeLists.txt (+0/-1007)
.pc/03-add_service_side_classes.patch/TelepathyQt/base-connection-internal.h (+0/-45)
.pc/03-add_service_side_classes.patch/TelepathyQt/base-connection.cpp (+0/-217)
.pc/03-add_service_side_classes.patch/TelepathyQt/base-connection.h (+0/-108)
.pc/03-add_service_side_classes.patch/TelepathyQt/service-types.h (+0/-59)
.pc/03-add_service_side_classes.patch/TelepathyQt/stable-interfaces.xml (+0/-32)
.pc/03-add_service_side_classes.patch/spec/Connection_Interface_Contact_List.xml (+0/-1129)
.pc/03-add_service_side_classes.patch/spec/Connection_Interface_Contacts.xml (+0/-191)
.pc/03-add_service_side_classes.patch/spec/Connection_Manager.xml (+0/-634)
.pc/03-add_service_side_classes.patch/spec/Protocol_Interface_Presence.xml (+0/-113)
.pc/03-add_service_side_classes.patch/spec/all.xml (+0/-323)
.pc/03-add_service_side_classes.patch/spec/errors.xml (+0/-667)
.pc/04-force_PIC_QT5.patch/CMakeLists.txt (+0/-308)
.pc/05-fix-qt52-build.patch/cmake/modules/TpQtMacros.cmake (+0/-493)
.pc/06-conference_interfaces.patch/TelepathyQt/base-channel-internal.h (+0/-351)
.pc/06-conference_interfaces.patch/TelepathyQt/base-channel.cpp (+0/-1688)
.pc/06-conference_interfaces.patch/TelepathyQt/base-channel.h (+0/-479)
.pc/06-conference_interfaces.patch/TelepathyQt/service-types.h (+0/-97)
.pc/06-conference_interfaces.patch/TelepathyQt/svc-channel.xml (+0/-38)
.pc/07-fix_createChannel.patch/TelepathyQt/base-connection.cpp (+0/-1356)
.pc/07-fix_createChannel.patch/TelepathyQt/base-connection.h (+0/-364)
.pc/08-add_conference_call_client_side.patch/TelepathyQt/account.cpp (+0/-4858)
.pc/08-add_conference_call_client_side.patch/TelepathyQt/account.h (+0/-580)
.pc/09-add_sms_iface_service_side.patch/TelepathyQt/base-channel-internal.h (+0/-418)
.pc/09-add_sms_iface_service_side.patch/TelepathyQt/base-channel.cpp (+0/-2001)
.pc/09-add_sms_iface_service_side.patch/TelepathyQt/base-channel.h (+0/-591)
.pc/09-add_sms_iface_service_side.patch/TelepathyQt/service-types.h (+0/-103)
.pc/10-emit_selfHandleChanged.patch/TelepathyQt/base-connection.cpp (+0/-1337)
.pc/11-fix-requested.patch/TelepathyQt/base-connection.cpp (+0/-1340)
.pc/applied-patches (+0/-11)
CMakeLists.txt (+28/-52)
ChangeLog (+14922/-13223)
NEWS (+66/-0)
TelepathyQt/BaseCall (+0/-13)
TelepathyQt/BaseChannel (+0/-13)
TelepathyQt/CMakeLists.txt (+68/-64)
TelepathyQt/ChannelInterfaceRoomConfigInterface (+13/-0)
TelepathyQt/ChannelInterfaceRoomInterface (+13/-0)
TelepathyQt/ChannelInterfaceSubjectInterface (+13/-0)
TelepathyQt/Farsight/CMakeLists.txt (+0/-83)
TelepathyQt/Farsight/Channel (+0/-13)
TelepathyQt/Farsight/TelepathyQtFarsight-uninstalled.pc.in (+0/-11)
TelepathyQt/Farsight/TelepathyQtFarsight.pc.in (+0/-11)
TelepathyQt/Farsight/TelepathyQtFarsightConfig.cmake.in (+0/-24)
TelepathyQt/Farsight/channel.cpp (+0/-98)
TelepathyQt/Farsight/channel.h (+0/-43)
TelepathyQt/Farsight/global.h (+0/-58)
TelepathyQt/Farstream/CMakeLists.txt (+23/-22)
TelepathyQt/Farstream/TelepathyQtFarstream-uninstalled.pc.in (+3/-3)
TelepathyQt/Farstream/TelepathyQtFarstream.pc.in (+4/-4)
TelepathyQt/Farstream/TelepathyQtFarstreamConfig.cmake.in (+19/-19)
TelepathyQt/TelepathyQt-uninstalled.pc.in (+3/-3)
TelepathyQt/TelepathyQt.pc.in (+4/-4)
TelepathyQt/TelepathyQtConfig.cmake.in (+19/-19)
TelepathyQt/TelepathyQtService-uninstalled.pc.in (+3/-3)
TelepathyQt/TelepathyQtService.pc.in (+4/-4)
TelepathyQt/TelepathyQtServiceConfig.cmake.in (+17/-17)
TelepathyQt/abstract-client.cpp (+0/-5)
TelepathyQt/account.cpp (+85/-58)
TelepathyQt/account.h (+69/-63)
TelepathyQt/base-call-internal.h (+0/-136)
TelepathyQt/base-call.cpp (+0/-502)
TelepathyQt/base-call.h (+0/-190)
TelepathyQt/base-channel-internal.h (+0/-443)
TelepathyQt/base-channel.cpp (+0/-2105)
TelepathyQt/base-channel.h (+0/-630)
TelepathyQt/base-connection-internal.h (+154/-47)
TelepathyQt/base-connection.cpp (+1251/-270)
TelepathyQt/base-connection.h (+267/-59)
TelepathyQt/call-interfaces.xml (+0/-9)
TelepathyQt/channel-dispatcher.xml (+14/-0)
TelepathyQt/channel-request.cpp (+1/-0)
TelepathyQt/channel.xml (+3/-0)
TelepathyQt/client-registrar.cpp (+12/-0)
TelepathyQt/connection-manager.cpp (+4/-0)
TelepathyQt/contact-manager.cpp (+20/-10)
TelepathyQt/contact-messenger.cpp (+3/-4)
TelepathyQt/contact.cpp (+4/-3)
TelepathyQt/dbus-object.cpp (+11/-0)
TelepathyQt/dbus-object.h (+6/-0)
TelepathyQt/dbus-service.cpp (+29/-3)
TelepathyQt/dbus-service.h (+3/-0)
TelepathyQt/dbus-tube-channel.cpp (+1/-1)
TelepathyQt/future-channel-dispatcher.xml (+0/-12)
TelepathyQt/global.h (+0/-139)
TelepathyQt/global.h.in (+159/-0)
TelepathyQt/handled-channel-notifier.cpp (+9/-0)
TelepathyQt/handled-channel-notifier.h (+5/-1)
TelepathyQt/main.dox (+2/-2)
TelepathyQt/message.h (+11/-11)
TelepathyQt/outgoing-stream-tube-channel.cpp (+1/-1)
TelepathyQt/pending-channel-request.cpp (+1/-1)
TelepathyQt/profile.cpp (+1/-1)
TelepathyQt/readiness-helper.h (+1/-0)
TelepathyQt/service-types.h (+27/-9)
TelepathyQt/simple-observer.cpp (+1/-1)
TelepathyQt/stable-interfaces.xml (+1/-0)
TelepathyQt/svc-call.xml (+0/-12)
TelepathyQt/svc-channel.xml (+3/-0)
TelepathyQt/text-channel.cpp (+1/-1)
cmake/modules/FindFarstream.cmake (+4/-4)
cmake/modules/FindGStreamer.cmake (+18/-28)
cmake/modules/FindQt.cmake (+104/-0)
cmake/modules/FindQt5.cmake (+135/-0)
cmake/modules/FindTelepathyFarsight.cmake (+0/-49)
cmake/modules/TelepathyDefaults.cmake (+4/-2)
cmake/modules/TelepathyDist.cmake (+10/-10)
cmake/modules/TpQtMacros.cmake (+6/-6)
debian/changelog (+6/-0)
debian/libtelepathy-qt5-0.symbols (+97/-2)
debian/patches/01-force_setInterfaces_on_call-content-for-dtmf.patch (+0/-17)
debian/patches/02-adapt_to_work_with_q5_final.patch (+0/-1745)
debian/patches/03-add_service_side_classes.patch (+0/-5585)
debian/patches/04-force_PIC_QT5.patch (+0/-19)
debian/patches/05-fix-qt52-build.patch (+0/-17)
debian/patches/06-conference_interfaces.patch (+0/-573)
debian/patches/07-fix_createChannel.patch (+0/-136)
debian/patches/08-add_conference_call_client_side.patch (+0/-207)
debian/patches/09-add_sms_iface_service_side.patch (+0/-222)
debian/patches/10-emit_selfHandleChanged.patch (+0/-22)
debian/patches/11-fix-requested.patch (+0/-18)
debian/patches/series (+0/-11)
debian/rules (+2/-1)
doc/html/a00001.html (+0/-50)
doc/html/a00002.html (+12/-21)
doc/html/a00003.html (+0/-50)
doc/html/a00004.html (+23/-162)
doc/html/a00005.html (+0/-112)
doc/html/a00006.html (+13/-86)
doc/html/a00007.html (+0/-78)
doc/html/a00008.html (+162/-28)
doc/html/a00009.html (+0/-47)
doc/html/a00010.html (+75/-67)
doc/html/a00011.html (+0/-73)
doc/html/a00012.html (+86/-13)
doc/html/a00013.html (+0/-64)
doc/html/a00014.html (+41/-50)
doc/html/a00015.html (+0/-81)
doc/html/a00016.html (+28/-58)
doc/html/a00017.html (+0/-79)
doc/html/a00018.html (+7/-12)
doc/html/a00019.html (+0/-72)
doc/html/a00020.html (+67/-64)
doc/html/a00021.html (+0/-75)
doc/html/a00022.html (+36/-366)
doc/html/a00023.html (+0/-114)
doc/html/a00024.html (+13/-88)
doc/html/a00025.html (+0/-78)
doc/html/a00026.html (+27/-37)
doc/html/a00027.html (+0/-49)
doc/html/a00028.html (+50/-12)
doc/html/a00029.html (+0/-53)
doc/html/a00030.html (+44/-130)
doc/html/a00031.html (+0/-134)
doc/html/a00032.html (+58/-184)
doc/html/a00033.html (+0/-439)
doc/html/a00034.html (+42/-270)
doc/html/a00035.html (+0/-247)
doc/html/a00036.html (+15/-120)
doc/html/a00037.html (+0/-409)
doc/html/a00038.html (+35/-67)
doc/html/a00039.html (+0/-100)
doc/html/a00040.html (+64/-5572)
doc/html/a00041.html (+0/-56)
doc/html/a00042.html (+38/-285)
doc/html/a00043.html (+0/-1467)
doc/html/a00044.html (+366/-370)
doc/html/a00045.html (+0/-394)
doc/html/a00046.html (+77/-425)
doc/html/a00047.html (+0/-1127)
doc/html/a00048.html (+88/-508)
doc/html/a00049.html (+0/-126)
doc/html/a00050.html (+41/-367)
doc/html/a00051.html (+0/-117)
doc/html/a00052.html (+35/-80)
doc/html/a00053.html (+0/-91)
doc/html/a00054.html (+12/-142)
doc/html/a00055.html (+0/-547)
doc/html/a00056.html (+12/-58)
doc/html/a00057.html (+0/-144)
doc/html/a00058.html (+16/-316)
doc/html/a00059.html (+0/-117)
doc/html/a00060.html (+122/-150)
doc/html/a00061.html (+102/-440)
doc/html/a00062.html (+102/-435)
doc/html/a00063.html (+105/-14)
doc/html/a00064.html (+207/-106)
doc/html/a00065.html (+449/-923)
doc/html/a00066.html (+292/-389)
doc/html/a00067.html (+102/-177)
doc/html/a00068.html (+276/-168)
doc/html/a00069.html (+133/-73)
doc/html/a00070.html (+424/-125)
doc/html/a00071.html (+101/-124)
doc/html/a00072.html (+54/-138)
doc/html/a00073.html (+6386/-142)
doc/html/a00074.html (+14/-153)
doc/html/a00075.html (+345/-152)
doc/html/a00076.html (+1759/-162)
doc/html/a00077.html (+441/-168)
doc/html/a00078.html (+428/-1020)
doc/html/a00079.html (+508/-298)
doc/html/a00080.html (+1234/-454)
doc/html/a00081.html (+503/-288)
doc/html/a00082.html (+123/-563)
doc/html/a00083.html (+427/-761)
doc/html/a00084.html (+96/-489)
doc/html/a00085.html (+96/-473)
doc/html/a00086.html (+45/-426)
doc/html/a00087.html (+184/-324)
doc/html/a00088.html (+461/-144)
doc/html/a00089.html (+49/-74)
doc/html/a00090.html (+113/-99)
doc/html/a00091.html (+306/-304)
doc/html/a00092.html (+96/-799)
doc/html/a00093.html (+204/-577)
doc/html/a00094.html (+455/-1166)
doc/html/a00095.html (+351/-80)
doc/html/a00096.html (+280/-122)
doc/html/a00097.html (+636/-50)
doc/html/a00098.html (+968/-477)
doc/html/a00099.html (+366/-469)
doc/html/a00100.html (+336/-104)
doc/html/a00101.html (+399/-48)
doc/html/a00102.html (+311/-210)
doc/html/a00103.html (+318/-75)
doc/html/a00104.html (+209/-376)
doc/html/a00105.html (+411/-136)
doc/html/a00106.html (+751/-1599)
doc/html/a00107.html (+378/-74)
doc/html/a00108.html (+386/-88)
doc/html/a00109.html (+898/-1329)
doc/html/a00110.html (+275/-109)
doc/html/a00111.html (+180/-92)
doc/html/a00112.html (+299/-909)
doc/html/a00113.html (+220/-456)
doc/html/a00114.html (+393/-652)
doc/html/a00115.html (+1083/-2283)
doc/html/a00116.html (+286/-80)
doc/html/a00117.html (+465/-790)
doc/html/a00118.html (+555/-357)
doc/html/a00119.html (+555/-361)
doc/html/a00120.html (+851/-638)
doc/html/a00121.html (+297/-414)
doc/html/a00122.html (+534/-719)
doc/html/a00123.html (+368/-348)
doc/html/a00124.html (+350/-602)
doc/html/a00125.html (+12/-390)
doc/html/a00126.html (+145/-1277)
doc/html/a00127.html (+1026/-448)
doc/html/a00128.html (+473/-359)
doc/html/a00129.html (+254/-724)
doc/html/a00130.html (+254/-400)
doc/html/a00131.html (+95/-1038)
doc/html/a00132.html (+166/-342)
doc/html/a00133.html (+167/-365)
doc/html/a00134.html (+177/-520)
doc/html/a00135.html (+183/-396)
doc/html/a00136.html (+188/-75)
doc/html/a00137.html (+193/-566)
doc/html/a00138.html (+200/-233)
doc/html/a00139.html (+207/-689)
doc/html/a00140.html (+1326/-1221)
doc/html/a00141.html (+404/-285)
doc/html/a00142.html (+279/-605)
doc/html/a00143.html (+438/-374)
doc/html/a00144.html (+334/-779)
doc/html/a00145.html (+314/-487)
doc/html/a00146.html (+523/-150)
doc/html/a00147.html (+787/-184)
doc/html/a00148.html (+463/-795)
doc/html/a00149.html (+468/-522)
doc/html/a00150.html (+377/-495)
doc/html/a00151.html (+237/-851)
doc/html/a00152.html (+371/-74)
doc/html/a00153.html (+135/-431)
doc/html/a00154.html (+96/-607)
doc/html/a00155.html (+96/-257)
doc/html/a00156.html (+427/-460)
doc/html/a00157.html (+876/-532)
doc/html/a00158.html (+703/-456)
doc/html/a00159.html (+1447/-128)
doc/html/a00160.html (+77/-73)
doc/html/a00161.html (+144/-794)
doc/html/a00162.html (+47/-351)
doc/html/a00163.html (+616/-260)
doc/html/a00164.html (+511/-1260)
doc/html/a00165.html (+101/-495)
doc/html/a00166.html (+45/-475)
doc/html/a00167.html (+220/-418)
doc/html/a00168.html (+97/-820)
doc/html/a00169.html (+433/-367)
doc/html/a00170.html (+133/-471)
doc/html/a00171.html (+1843/-640)
doc/html/a00172.html (+630/-411)
doc/html/a00173.html (+96/-519)
doc/html/a00174.html (+110/-456)
doc/html/a00175.html (+1718/-944)
doc/html/a00176.html (+149/-592)
doc/html/a00177.html (+89/-1192)
doc/html/a00178.html (+909/-302)
doc/html/a00179.html (+312/-391)
doc/html/a00180.html (+601/-562)
doc/html/a00181.html (+662/-284)
doc/html/a00182.html (+2509/-625)
doc/html/a00183.html (+77/-613)
doc/html/a00184.html (+822/-222)
doc/html/a00185.html (+102/-566)
doc/html/a00186.html (+440/-522)
doc/html/a00187.html (+113/-541)
doc/html/a00188.html (+295/-378)
doc/html/a00189.html (+445/-114)
doc/html/a00190.html (+761/-1494)
doc/html/a00191.html (+168/-68)
doc/html/a00192.html (+496/-232)
doc/html/a00193.html (+483/-74)
doc/html/a00194.html (+848/-76)
doc/html/a00195.html (+94/-75)
doc/html/a00196.html (+415/-74)
doc/html/a00197.html (+375/-253)
doc/html/a00198.html (+741/-191)
doc/html/a00199.html (+130/-75)
doc/html/a00200.html (+475/-74)
doc/html/a00201.html (+1159/-1385)
doc/html/a00202.html (+1575/-73)
doc/html/a00203.html (+219/-349)
doc/html/a00204.html (+529/-72)
doc/html/a00205.html (+104/-465)
doc/html/a00206.html (+433/-74)
doc/html/a00207.html (+96/-74)
doc/html/a00208.html (+503/-74)
doc/html/a00209.html (+880/-73)
doc/html/a00210.html (+161/-74)
doc/html/a00211.html (+482/-65)
doc/html/a00212.html (+163/-90)
doc/html/a00213.html (+471/-906)
doc/html/a00214.html (+892/-240)
doc/html/a00215.html (+499/-81)
doc/html/a00216.html (+835/-342)
doc/html/a00217.html (+1215/-255)
doc/html/a00218.html (+85/-244)
doc/html/a00219.html (+414/-355)
doc/html/a00220.html (+117/-50)
doc/html/a00221.html (+446/-74)
doc/html/a00222.html (+289/-352)
doc/html/a00223.html (+609/-92)
doc/html/a00224.html (+67/-215)
doc/html/a00225.html (+227/-315)
doc/html/a00226.html (+579/-340)
doc/html/a00227.html (+469/-153)
doc/html/a00228.html (+94/-69)
doc/html/a00229.html (+730/-80)
doc/html/a00230.html (+229/-696)
doc/html/a00231.html (+826/-568)
doc/html/a00232.html (+1074/-115)
doc/html/a00233.html (+1491/-151)
doc/html/a00234.html (+342/-105)
doc/html/a00235.html (+373/-115)
doc/html/a00236.html (+737/-121)
doc/html/a00237.html (+277/-127)
doc/html/a00238.html (+613/-133)
doc/html/a00239.html (+809/-139)
doc/html/a00240.html (+1220/-145)
doc/html/a00241.html (+223/-151)
doc/html/a00242.html (+600/-175)
doc/html/a00243.html (+53/-185)
doc/html/a00244.html (+377/-341)
doc/html/a00245.html (+89/-113)
doc/html/a00246.html (+427/-74)
doc/html/a00247.html (+719/-72)
doc/html/a00248.html (+1121/-71)
doc/html/a00249.html (+435/-112)
doc/html/a00250.html (+772/-84)
doc/html/a00251.html (+464/-175)
doc/html/a00252.html (+791/-275)
doc/html/a00253.html (+1232/-273)
doc/html/a00254.html (+97/-179)
doc/html/a00255.html (+510/-146)
doc/html/a00256.html (+537/-138)
doc/html/a00257.html (+314/-48)
doc/html/a00258.html (+544/-80)
doc/html/a00259.html (+751/-74)
doc/html/a00260.html (+501/-498)
doc/html/a00261.html (+125/-75)
doc/html/a00262.html (+96/-60)
doc/html/a00263.html (+1018/-72)
doc/html/a00264.html (+1245/-51)
doc/html/a00265.html (+415/-84)
doc/html/a00266.html (+333/-50)
doc/html/a00267.html (+1478/-234)
doc/html/a00268.html (+258/-48)
doc/html/a00269.html (+571/-110)
doc/html/a00270.html (+247/-1438)
doc/html/a00271.html (+571/-159)
doc/html/a00272.html (+171/-103)
doc/html/a00273.html (+522/-147)
doc/html/a00274.html (+680/-148)
doc/html/a00275.html (+1026/-158)
doc/html/a00276.html (+116/-164)
doc/html/a00277.html (+448/-170)
doc/html/a00278.html (+550/-176)
doc/html/a00279.html (+398/-182)
doc/html/a00280.html (+795/-188)
doc/html/a00281.html (+182/-396)
doc/html/a00282.html (+499/-163)
doc/html/a00283.html (+269/-128)
doc/html/a00284.html (+621/-347)
doc/html/a00285.html (+227/-74)
doc/html/a00286.html (+553/-74)
doc/html/a00287.html (+735/-296)
doc/html/a00288.html (+1124/-74)
doc/html/a00289.html (+376/-49)
doc/html/a00290.html (+709/-74)
doc/html/a00291.html (+965/-134)
doc/html/a00292.html (+1369/-110)
doc/html/a00293.html (+216/-68)
doc/html/a00294.html (+570/-73)
doc/html/a00295.html (+341/-130)
doc/html/a00296.html (+686/-235)
doc/html/a00297.html (+333/-135)
doc/html/a00298.html (+691/-186)
doc/html/a00299.html (+153/-200)
doc/html/a00300.html (+483/-430)
doc/html/a00301.html (+783/-269)
doc/html/a00302.html (+346/-94)
doc/html/a00303.html (+723/-80)
doc/html/a00304.html (+89/-343)
doc/html/a00305.html (+413/-83)
doc/html/a00306.html (+308/-54)
doc/html/a00307.html (+665/-112)
doc/html/a00308.html (+522/-202)
doc/html/a00309.html (+714/-95)
doc/html/a00310.html (+357/-120)
doc/html/a00311.html (+620/-103)
doc/html/a00312.html (+114/-81)
doc/html/a00313.html (+1695/-167)
doc/html/a00314.html (+97/-83)
doc/html/a00315.html (+299/-396)
doc/html/a00316.html (+97/-84)
doc/html/a00317.html (+73/-54)
doc/html/a00318.html (+97/-86)
doc/html/a00319.html (+97/-233)
doc/html/a00320.html (+255/-275)
doc/html/a00321.html (+188/-84)
doc/html/a00322.html (+97/-115)
doc/html/a00323.html (+97/-83)
doc/html/a00324.html (+1451/-133)
doc/html/a00325.html (+95/-111)
doc/html/a00326.html (+381/-118)
doc/html/a00327.html (+97/-42)
doc/html/a00328.html (+721/-104)
doc/html/a00329.html (+97/-89)
doc/html/a00330.html (+97/-89)
doc/html/a00331.html (+97/-60)
doc/html/a00332.html (+95/-502)
doc/html/a00333.html (+97/-249)
doc/html/a00334.html (+61/-545)
doc/html/a00335.html (+87/-110)
doc/html/a00336.html (+1113/-470)
doc/html/a00337.html (+238/-209)
doc/html/a00338.html (+134/-402)
doc/html/a00339.html (+376/-448)
doc/html/a00340.html (+344/-48)
doc/html/a00341.html (+284/-76)
doc/html/a00342.html (+638/-48)
doc/html/a00343.html (+47/-443)
doc/html/a00344.html (+96/-793)
doc/html/a00345.html (+301/-454)
doc/html/a00346.html (+89/-446)
doc/html/a00347.html (+318/-304)
doc/html/a00348.html (+317/-396)
doc/html/a00349.html (+424/-77)
doc/html/a00350.html (+167/-121)
doc/html/a00351.html (+97/-122)
doc/html/a00352.html (+77/-133)
doc/html/a00353.html (+1011/-138)
doc/html/a00354.html (+572/-144)
doc/html/a00355.html (+148/-150)
doc/html/a00356.html (+211/-156)
doc/html/a00357.html (+136/-161)
doc/html/a00358.html (+148/-74)
doc/html/a00359.html (+153/-509)
doc/html/a00360.html (+159/-238)
doc/html/a00361.html (+166/-268)
doc/html/a00362.html (+172/-65)
doc/html/a00363.html (+177/-1160)
doc/html/a00364.html (+177/-184)
doc/html/a00365.html (+243/-126)
doc/html/a00366.html (+246/-715)
doc/html/a00367.html (+407/-127)
doc/html/a00368.html (+127/-58)
doc/html/a00369.html (+97/-61)
doc/html/a00370.html (+90/-145)
doc/html/a00371.html (+68/-64)
doc/html/a00372.html (+109/-74)
doc/html/a00373.html (+81/-49)
doc/html/a00374.html (+459/-80)
doc/html/a00375.html (+578/-161)
doc/html/a00376.html (+510/-134)
doc/html/a00377.html (+183/-50)
doc/html/a00378.html (+142/-50)
doc/html/a00379.html (+380/-519)
doc/html/a00380.html (+44/-447)
doc/html/a00381.html (+77/-74)
doc/html/a00382.html (+96/-364)
doc/html/a00383.html (+518/-85)
doc/html/a00384.html (+97/-65)
doc/html/a00385.html (+57/-74)
doc/html/a00386.html (+69/-297)
doc/html/a00387.html (+48/-299)
doc/html/a00388.html (+100/-67)
doc/html/a00389.html (+30/-33)
doc/html/a00390.html (+430/-50)
doc/html/a00391.html (+44/-50)
doc/html/a00392.html (+105/-48)
doc/html/a00393.html (+1776/-50)
doc/html/a00394.html (+156/-170)
doc/html/a00395.html (+100/-96)
doc/html/a00396.html (+156/-75)
doc/html/a00397.html (+157/-73)
doc/html/a00398.html (+167/-50)
doc/html/a00399.html (+171/-805)
doc/html/a00400.html (+166/-521)
doc/html/a00401.html (+184/-719)
doc/html/a00402.html (+190/-924)
doc/html/a00403.html (+196/-906)
doc/html/a00404.html (+401/-74)
doc/html/a00405.html (+168/-74)
doc/html/a00406.html (+176/-74)
doc/html/a00407.html (+89/-93)
doc/html/a00408.html (+96/-812)
doc/html/a00409.html (+98/-114)
doc/html/a00410.html (+377/-190)
doc/html/a00411.html (+97/-192)
doc/html/a00412.html (+46/-268)
doc/html/a00413.html (+97/-104)
doc/html/a00414.html (+185/-73)
doc/html/a00415.html (+144/-79)
doc/html/a00416.html (+97/-49)
doc/html/a00417.html (+95/-287)
doc/html/a00418.html (+177/-0)
doc/html/a00419.html (+330/-0)
doc/html/a00419_source.html (+0/-82)
doc/html/a00420.html (+229/-0)
doc/html/a00421.html (+513/-0)
doc/html/a00421_source.html (+0/-349)
doc/html/a00422.html (+545/-0)
doc/html/a00423.html (+796/-0)
doc/html/a00423_source.html (+0/-110)
doc/html/a00424.html (+308/-0)
doc/html/a00425.html (+149/-0)
doc/html/a00425_source.html (+0/-61)
doc/html/a00426.html (+120/-0)
doc/html/a00427.html (+458/-0)
doc/html/a00427_source.html (+0/-101)
doc/html/a00428.html (+154/-0)
doc/html/a00428_source.html (+0/-61)
doc/html/a00429.html (+125/-0)
doc/html/a00430.html (+191/-0)
doc/html/a00430_source.html (+0/-179)
doc/html/a00431.html (+173/-0)
doc/html/a00432.html (+275/-0)
doc/html/a00432_source.html (+0/-81)
doc/html/a00433.html (+199/-0)
doc/html/a00434.html (+174/-0)
doc/html/a00434_source.html (+0/-101)
doc/html/a00435.html (+154/-0)
doc/html/a00436.html (+249/-0)
doc/html/a00436_source.html (+0/-602)
doc/html/a00437.html (+154/-0)
doc/html/a00438.html (+473/-0)
doc/html/a00438_source.html (+0/-105)
doc/html/a00439.html (+163/-0)
doc/html/a00440.html (+133/-0)
doc/html/a00441.html (+173/-0)
doc/html/a00441_source.html (+0/-108)
doc/html/a00442.html (+304/-0)
doc/html/a00443.html (+409/-0)
doc/html/a00443_source.html (+0/-132)
doc/html/a00444.html (+154/-0)
doc/html/a00445.html (+186/-0)
doc/html/a00445_source.html (+0/-130)
doc/html/a00446.html (+154/-0)
doc/html/a00447.html (+226/-0)
doc/html/a00447_source.html (+0/-296)
doc/html/a00448.html (+190/-0)
doc/html/a00449.html (+208/-0)
doc/html/a00449_source.html (+0/-171)
doc/html/a00450.html (+121/-0)
doc/html/a00451.html (+144/-0)
doc/html/a00451_source.html (+0/-54)
doc/html/a00452.html (+160/-0)
doc/html/a00453.html (+160/-0)
doc/html/a00453_source.html (+0/-137)
doc/html/a00454.html (+131/-0)
doc/html/a00455.html (+622/-0)
doc/html/a00455_source.html (+0/-54)
doc/html/a00456.html (+288/-0)
doc/html/a00457.html (+686/-0)
doc/html/a00457_source.html (+0/-120)
doc/html/a00458.html (+192/-0)
doc/html/a00459.html (+533/-0)
doc/html/a00459_source.html (+0/-408)
doc/html/a00460.html (+317/-0)
doc/html/a00461.html (+540/-0)
doc/html/a00461_source.html (+0/-112)
doc/html/a00462.html (+628/-0)
doc/html/a00463.html (+88/-0)
doc/html/a00463_source.html (+0/-126)
doc/html/a00464.html (+116/-0)
doc/html/a00465.html (+88/-0)
doc/html/a00465_source.html (+0/-88)
doc/html/a00466.html (+610/-0)
doc/html/a00466_source.html (+0/-67)
doc/html/a00467.html (+491/-0)
doc/html/a00468.html (+982/-0)
doc/html/a00468_source.html (+0/-343)
doc/html/a00469.html (+401/-0)
doc/html/a00470.html (+731/-0)
doc/html/a00470_source.html (+0/-136)
doc/html/a00471.html (+238/-0)
doc/html/a00472.html (+610/-0)
doc/html/a00472_source.html (+0/-54)
doc/html/a00473.html (+91/-0)
doc/html/a00474.html (+414/-0)
doc/html/a00474_source.html (+0/-420)
doc/html/a00475.html (+446/-0)
doc/html/a00476.html (+143/-0)
doc/html/a00476_source.html (+0/-171)
doc/html/a00477.html (+173/-0)
doc/html/a00478.html (+174/-0)
doc/html/a00479.html (+184/-0)
doc/html/a00480.html (+190/-0)
doc/html/a00480_source.html (+0/-274)
doc/html/a00481.html (+196/-0)
doc/html/a00481_source.html (+0/-65)
doc/html/a00482.html (+202/-0)
doc/html/a00482_source.html (+0/-91)
doc/html/a00483.html (+208/-0)
doc/html/a00483_source.html (+0/-173)
doc/html/a00484.html (+214/-0)
doc/html/a00484_source.html (+0/-76)
doc/html/a00485.html (+140/-0)
doc/html/a00485_source.html (+0/-156)
doc/html/a00486.html (+559/-0)
doc/html/a00486_source.html (+0/-485)
doc/html/a00487.html (+334/-0)
doc/html/a00487_source.html (+0/-218)
doc/html/a00488.html (+570/-0)
doc/html/a00488_source.html (+0/-170)
doc/html/a00489.html (+116/-0)
doc/html/a00489_source.html (+0/-343)
doc/html/a00490.html (+1408/-0)
doc/html/a00490_source.html (+0/-544)
doc/html/a00491.html (+256/-0)
doc/html/a00491_source.html (+0/-117)
doc/html/a00492.html (+165/-0)
doc/html/a00492_source.html (+0/-79)
doc/html/a00493.html (+949/-0)
doc/html/a00493_source.html (+0/-237)
doc/html/a00494.html (+219/-0)
doc/html/a00494_source.html (+0/-404)
doc/html/a00495.html (+98/-0)
doc/html/a00495_source.html (+0/-1090)
doc/html/a00496.html (+101/-0)
doc/html/a00496_source.html (+0/-76)
doc/html/a00497.html (+429/-0)
doc/html/a00497_source.html (+0/-190)
doc/html/a00498.html (+105/-0)
doc/html/a00498_source.html (+0/-74)
doc/html/a00499.html (+140/-0)
doc/html/a00499_source.html (+0/-216)
doc/html/a00500.html (+89/-0)
doc/html/a00500_source.html (+0/-77)
doc/html/a00501.html (+120/-0)
doc/html/a00501_source.html (+0/-181)
doc/html/a00502.html (+226/-0)
doc/html/a00502_source.html (+0/-3036)
doc/html/a00503.html (+502/-0)
doc/html/a00503_source.html (+0/-202)
doc/html/a00504.html (+90/-0)
doc/html/a00504_source.html (+0/-395)
doc/html/a00505.html (+90/-0)
doc/html/a00505_source.html (+0/-777)
doc/html/a00506.html (+756/-0)
doc/html/a00506_source.html (+0/-203)
doc/html/a00507.html (+552/-0)
doc/html/a00507_source.html (+0/-486)
doc/html/a00508.html (+140/-0)
doc/html/a00508_source.html (+0/-2379)
doc/html/a00509.html (+456/-0)
doc/html/a00509_source.html (+0/-186)
doc/html/a00510.html (+124/-0)
doc/html/a00510_source.html (+0/-572)
doc/html/a00511.html (+105/-0)
doc/html/a00511_source.html (+0/-75)
doc/html/a00512.html (+140/-0)
doc/html/a00512_source.html (+0/-143)
doc/html/a00513.html (+408/-0)
doc/html/a00513_source.html (+0/-75)
doc/html/a00514.html (+390/-0)
doc/html/a00514_source.html (+0/-148)
doc/html/a00515.html (+140/-0)
doc/html/a00515_source.html (+0/-89)
doc/html/a00516.html (+90/-0)
doc/html/a00516_source.html (+0/-390)
doc/html/a00517.html (+90/-0)
doc/html/a00517_source.html (+0/-86)
doc/html/a00518.html (+90/-0)
doc/html/a00518_source.html (+0/-169)
doc/html/a00519.html (+90/-0)
doc/html/a00519_source.html (+0/-86)
doc/html/a00520.html (+90/-0)
doc/html/a00520_source.html (+0/-174)
doc/html/a00521.html (+299/-0)
doc/html/a00522.html (+210/-0)
doc/html/a00522_source.html (+0/-119)
doc/html/a00523.html (+115/-0)
doc/html/a00524.html (+139/-0)
doc/html/a00524_source.html (+0/-54)
doc/html/a00525.html (+90/-0)
doc/html/a00526.html (+1143/-0)
doc/html/a00526_source.html (+0/-96)
doc/html/a00527.html (+605/-0)
doc/html/a00528.html (+1106/-0)
doc/html/a00528_source.html (+0/-100)
doc/html/a00529.html (+1059/-0)
doc/html/a00529_source.html (+0/-118)
doc/html/a00530.html (+1027/-0)
doc/html/a00530_source.html (+0/-86)
doc/html/a00531.html (+140/-0)
doc/html/a00532.html (+140/-0)
doc/html/a00532_source.html (+0/-147)
doc/html/a00533.html (+140/-0)
doc/html/a00534.html (+154/-0)
doc/html/a00534_source.html (+0/-271)
doc/html/a00535.html (+1205/-0)
doc/html/a00535_source.html (+0/-98)
doc/html/a00536.html (+153/-0)
doc/html/a00536_source.html (+0/-1648)
doc/html/a00537.html (+257/-0)
doc/html/a00538.html (+257/-0)
doc/html/a00538_source.html (+0/-91)
doc/html/a00539.html (+561/-0)
doc/html/a00540.html (+144/-0)
doc/html/a00540_source.html (+0/-98)
doc/html/a00541.html (+139/-0)
doc/html/a00542.html (+145/-0)
doc/html/a00543.html (+89/-0)
doc/html/a00543_source.html (+0/-219)
doc/html/a00544.html (+431/-0)
doc/html/a00545_source.html (+0/-100)
doc/html/a00546_source.html (+87/-0)
doc/html/a00547_source.html (+0/-136)
doc/html/a00548_source.html (+383/-0)
doc/html/a00549_source.html (+0/-270)
doc/html/a00550_source.html (+119/-0)
doc/html/a00551_source.html (+0/-83)
doc/html/a00552_source.html (+67/-0)
doc/html/a00553_source.html (+0/-80)
doc/html/a00554_source.html (+109/-0)
doc/html/a00555_source.html (+29/-69)
doc/html/a00557_source.html (+158/-106)
doc/html/a00559_source.html (+50/-85)
doc/html/a00561_source.html (+69/-68)
doc/html/a00563_source.html (+618/-16)
doc/html/a00565_source.html (+79/-59)
doc/html/a00567_source.html (+0/-68)
doc/html/a00568_source.html (+119/-0)
doc/html/a00570_source.html (+204/-78)
doc/html/a00572_source.html (+1112/-80)
doc/html/a00574_source.html (+106/-92)
doc/html/a00576_source.html (+644/-47)
doc/html/a00578_source.html (+293/-53)
doc/html/a00579_source.html (+0/-365)
doc/html/a00580_source.html (+200/-0)
doc/html/a00581_source.html (+0/-136)
doc/html/a00582_source.html (+58/-0)
doc/html/a00583_source.html (+0/-99)
doc/html/a00584_source.html (+118/-42)
doc/html/a00585_source.html (+0/-68)
doc/html/a00586_source.html (+20/-46)
doc/html/a00588_source.html (+137/-0)
doc/html/a00589_source.html (+0/-97)
doc/html/a00590_source.html (+519/-0)
doc/html/a00591_source.html (+0/-84)
doc/html/a00592_source.html (+121/-0)
doc/html/a00593_source.html (+0/-103)
doc/html/a00594_source.html (+140/-0)
doc/html/a00595_source.html (+0/-99)
doc/html/a00596_source.html (+96/-0)
doc/html/a00597_source.html (+34/-75)
doc/html/a00599_source.html (+346/-79)
doc/html/a00601_source.html (+147/-0)
doc/html/a00602_source.html (+0/-97)
doc/html/a00603_source.html (+58/-0)
doc/html/a00604_source.html (+0/-54)
doc/html/a00605_source.html (+450/-0)
doc/html/a00606_source.html (+0/-54)
doc/html/a00607_source.html (+185/-0)
doc/html/a00608_source.html (+0/-118)
doc/html/a00610_source.html (+266/-157)
doc/html/a00611_source.html (+98/-0)
doc/html/a00612_source.html (+154/-176)
doc/html/a00613_source.html (+87/-0)
doc/html/a00614_source.html (+134/-57)
doc/html/a00615_source.html (+550/-0)
doc/html/a00616_source.html (+219/-47)
doc/html/a00617_source.html (+186/-0)
doc/html/a00618_source.html (+344/-128)
doc/html/a00619_source.html (+601/-0)
doc/html/a00620_source.html (+110/-67)
doc/html/a00621_source.html (+95/-0)
doc/html/a00622_source.html (+224/-45)
doc/html/a00623_source.html (+451/-0)
doc/html/a00624_source.html (+1291/-62)
doc/html/a00625_source.html (+87/-0)
doc/html/a00626_source.html (+171/-74)
doc/html/a00627_source.html (+118/-0)
doc/html/a00628_source.html (+258/-59)
doc/html/a00629_source.html (+89/-0)
doc/html/a00630_source.html (+162/-60)
doc/html/a00631_source.html (+3639/-0)
doc/html/a00632_source.html (+182/-68)
doc/html/a00633_source.html (+434/-0)
doc/html/a00634_source.html (+837/-87)
doc/html/a00635_source.html (+222/-0)
doc/html/a00636_source.html (+499/-57)
doc/html/a00637_source.html (+2624/-0)
doc/html/a00638_source.html (+166/-61)
doc/html/a00639_source.html (+613/-0)
doc/html/a00640_source.html (+47/-50)
doc/html/a00641_source.html (+158/-0)
doc/html/a00642_source.html (+47/-121)
doc/html/a00643_source.html (+160/-0)
doc/html/a00644_source.html (+80/-56)
doc/html/a00645_source.html (+426/-0)
doc/html/a00646_source.html (+61/-45)
doc/html/a00647_source.html (+185/-0)
doc/html/a00648_source.html (+60/-80)
doc/html/a00649_source.html (+192/-0)
doc/html/a00650_source.html (+0/-109)
doc/html/a00651_source.html (+129/-0)
doc/html/a00652_source.html (+0/-93)
doc/html/a00653_source.html (+58/-0)
doc/html/a00654_source.html (+0/-99)
doc/html/a00655_source.html (+107/-0)
doc/html/a00656_source.html (+0/-104)
doc/html/a00657_source.html (+108/-0)
doc/html/a00658_source.html (+99/-47)
doc/html/a00659_source.html (+94/-0)
doc/html/a00660_source.html (+0/-88)
doc/html/a00661_source.html (+164/-0)
doc/html/a00662_source.html (+0/-82)
doc/html/a00663_source.html (+311/-0)
doc/html/a00664_source.html (+64/-44)
doc/html/a00665_source.html (+2275/-0)
doc/html/a00666_source.html (+0/-193)
doc/html/a00667_source.html (+100/-0)
doc/html/a00668_source.html (+0/-97)
doc/html/a00669_source.html (+110/-0)
doc/html/a00670_source.html (+0/-197)
doc/html/a00672_source.html (+203/-16)
doc/html/a00674_source.html (+75/-95)
doc/html/a00676_source.html (+115/-78)
doc/html/a00678_source.html (+269/-114)
doc/html/a00680_source.html (+53/-53)
doc/html/a00682_source.html (+54/-248)
doc/html/a00684_source.html (+78/-124)
doc/html/a00686_source.html (+116/-43)
doc/html/a00688_source.html (+97/-57)
doc/html/a00689_source.html (+0/-81)
doc/html/a00690_source.html (+119/-0)
doc/html/a00691_source.html (+0/-309)
doc/html/a00692_source.html (+58/-0)
doc/html/a00693_source.html (+0/-122)
doc/html/a00694_source.html (+108/-0)
doc/html/a00695_source.html (+0/-127)
doc/html/a00696_source.html (+38/-94)
doc/html/a00698_source.html (+0/-142)
doc/html/a00699_source.html (+128/-0)
doc/html/a00700_source.html (+0/-102)
doc/html/a00701_source.html (+126/-0)
doc/html/a00702_source.html (+0/-126)
doc/html/a00703_source.html (+143/-0)
doc/html/a00704_source.html (+0/-239)
doc/html/a00705_source.html (+96/-0)
doc/html/a00706_source.html (+0/-275)
doc/html/a00707_source.html (+99/-0)
doc/html/a00708_source.html (+438/-212)
doc/html/a00710_source.html (+119/-43)
doc/html/a00712_source.html (+75/-125)
doc/html/a00713_source.html (+72/-0)
doc/html/a00714_source.html (+57/-16)
doc/html/a00716_source.html (+0/-96)
doc/html/a00717_source.html (+71/-1554)
doc/html/a00719_source.html (+53/-173)
doc/html/a00720_source.html (+0/-1783)
doc/html/a00721_source.html (+112/-0)
doc/html/a00722_source.html (+0/-70)
doc/html/a00723_source.html (+108/-0)
doc/html/a00724.html (+0/-8685)
doc/html/a00725_source.html (+117/-0)
doc/html/a00727_source.html (+124/-0)
doc/html/a00728.html (+0/-149)
doc/html/a00729.html (+0/-60)
doc/html/a00730.html (+0/-80)
doc/html/a00730_source.html (+103/-0)
doc/html/a00731.html (+0/-49)
doc/html/a00732.html (+0/-49)
doc/html/a00732_source.html (+58/-0)
doc/html/a00733.html (+0/-205)
doc/html/a00734.html (+0/-55)
doc/html/a00734_source.html (+58/-0)
doc/html/a00735.html (+0/-156)
doc/html/a00736.html (+0/-82)
doc/html/a00736_source.html (+135/-0)
doc/html/a00737.html (+0/-59)
doc/html/a00738.html (+0/-53)
doc/html/a00738_source.html (+212/-0)
doc/html/a00739.html (+0/-114)
doc/html/a00740.html (+0/-52)
doc/html/a00740_source.html (+230/-0)
doc/html/a00741.html (+0/-53)
doc/html/a00742.html (+0/-55)
doc/html/a00742_source.html (+107/-0)
doc/html/a00743.html (+0/-63)
doc/html/a00744.html (+0/-60)
doc/html/a00744_source.html (+91/-0)
doc/html/a00745.html (+0/-89)
doc/html/a00746.html (+0/-64)
doc/html/a00746_source.html (+181/-0)
doc/html/a00747.html (+0/-44)
doc/html/a00748.html (+0/-57)
doc/html/a00748_source.html (+117/-0)
doc/html/a00749.html (+0/-52)
doc/html/a00750.html (+0/-63)
doc/html/a00750_source.html (+90/-0)
doc/html/a00751.html (+0/-97)
doc/html/a00752.html (+0/-52)
doc/html/a00752_source.html (+109/-0)
doc/html/a00753.html (+0/-52)
doc/html/a00754.html (+0/-52)
doc/html/a00754_source.html (+121/-0)
doc/html/a00755.html (+0/-50)
doc/html/a00756.html (+0/-1586)
doc/html/a00756_source.html (+104/-0)
doc/html/a00757.html (+0/-3808)
doc/html/a00758.html (+0/-1432)
doc/html/a00758_source.html (+107/-0)
doc/html/a00759.html (+0/-1063)
doc/html/a00760.html (+0/-108)
doc/html/a00760_source.html (+114/-0)
doc/html/a00761.html (+0/-777)
doc/html/a00762.html (+0/-98)
doc/html/a00762_source.html (+134/-0)
doc/html/a00763.html (+0/-67)
doc/html/a00764.html (+0/-63)
doc/html/a00764_source.html (+102/-0)
doc/html/a00765.html (+0/-55)
doc/html/a00766_source.html (+109/-0)
doc/html/a00768.html (+0/-54)
doc/html/a00768_source.html (+96/-0)
doc/html/a00769.html (+0/-55)
doc/html/a00770.html (+0/-60)
doc/html/a00770_source.html (+168/-0)
doc/html/a00771.html (+0/-57)
doc/html/a00772.html (+0/-59)
doc/html/a00772_source.html (+105/-0)
doc/html/a00773.html (+0/-64)
doc/html/a00774.html (+0/-77)
doc/html/a00774_source.html (+92/-0)
doc/html/a00775.html (+0/-56)
doc/html/a00776.html (+0/-63)
doc/html/a00776_source.html (+128/-0)
doc/html/a00777.html (+0/-71)
doc/html/a00778.html (+0/-126)
doc/html/a00778_source.html (+117/-0)
doc/html/a00779.html (+0/-63)
doc/html/a00780.html (+0/-67)
doc/html/a00780_source.html (+104/-0)
doc/html/a00781.html (+0/-256)
doc/html/a00782.html (+0/-59)
doc/html/a00782_source.html (+108/-0)
doc/html/a00783.html (+0/-54)
doc/html/a00784.html (+0/-64)
doc/html/a00784_source.html (+115/-0)
doc/html/a00785.html (+0/-79)
doc/html/a00786.html (+0/-77)
doc/html/a00786_source.html (+92/-0)
doc/html/a00787.html (+0/-98)
doc/html/a00788.html (+0/-66)
doc/html/a00788_source.html (+96/-0)
doc/html/a00789.html (+0/-79)
doc/html/a00790.html (+0/-71)
doc/html/a00790_source.html (+89/-0)
doc/html/a00791.html (+0/-71)
doc/html/a00792.html (+0/-186)
doc/html/a00792_source.html (+89/-0)
doc/html/a00793.html (+0/-103)
doc/html/a00794.html (+0/-64)
doc/html/a00794_source.html (+217/-0)
doc/html/a00795.html (+0/-102)
doc/html/a00796.html (+0/-55)
doc/html/a00796_source.html (+108/-0)
doc/html/a00797.html (+0/-58)
doc/html/a00798.html (+0/-57)
doc/html/a00798_source.html (+211/-0)
doc/html/a00799.html (+0/-62)
doc/html/a00800.html (+0/-62)
doc/html/a00800_source.html (+58/-0)
doc/html/a00801.html (+0/-62)
doc/html/a00802.html (+0/-62)
doc/html/a00802_source.html (+148/-0)
doc/html/a00803.html (+0/-62)
doc/html/a00804.html (+0/-62)
doc/html/a00804_source.html (+129/-0)
doc/html/a00805.html (+0/-62)
doc/html/a00806.html (+0/-62)
doc/html/a00806_source.html (+165/-0)
doc/html/a00807.html (+0/-62)
doc/html/a00808.html (+0/-62)
doc/html/a00808_source.html (+102/-0)
doc/html/a00809.html (+0/-62)
doc/html/a00810.html (+0/-62)
doc/html/a00810_source.html (+334/-0)
doc/html/a00811.html (+0/-62)
doc/html/a00812.html (+0/-62)
doc/html/a00812_source.html (+180/-0)
doc/html/a00813.html (+0/-62)
doc/html/a00814.html (+0/-62)
doc/html/a00814_source.html (+89/-0)
doc/html/a00815.html (+0/-71)
doc/html/a00816.html (+0/-79)
doc/html/a00816_source.html (+104/-0)
doc/html/a00817.html (+0/-60)
doc/html/a00817_source.html (+149/-0)
doc/html/a00818.html (+0/-116)
doc/html/a00819.html (+0/-55)
doc/html/a00819_source.html (+354/-0)
doc/html/a00820.html (+0/-104)
doc/html/a00821.html (+0/-159)
doc/html/a00821_source.html (+129/-0)
doc/html/a00822.html (+0/-108)
doc/html/a00823.html (+0/-60)
doc/html/a00823_source.html (+137/-0)
doc/html/a00824.html (+0/-149)
doc/html/a00824_source.html (+145/-0)
doc/html/a00825.html (+0/-67)
doc/html/a00826.html (+0/-70)
doc/html/a00826_source.html (+155/-0)
doc/html/a00827.html (+0/-87)
doc/html/a00828.html (+0/-71)
doc/html/a00828_source.html (+111/-0)
doc/html/a00829.html (+0/-70)
doc/html/a00830.html (+0/-56)
doc/html/a00830_source.html (+138/-0)
doc/html/a00831.html (+0/-108)
doc/html/a00832.html (+0/-119)
doc/html/a00832_source.html (+258/-0)
doc/html/a00833.html (+0/-68)
doc/html/a00834.html (+0/-80)
doc/html/a00834_source.html (+298/-0)
doc/html/a00835.html (+0/-60)
doc/html/a00836.html (+0/-104)
doc/html/a00836_source.html (+281/-0)
doc/html/a00837.html (+0/-62)
doc/html/a00838.html (+0/-162)
doc/html/a00838_source.html (+210/-0)
doc/html/a00839.html (+0/-59)
doc/html/a00840.html (+0/-124)
doc/html/a00840_source.html (+1848/-0)
doc/html/a00841.html (+0/-59)
doc/html/a00842.html (+0/-59)
doc/html/a00842_source.html (+298/-0)
doc/html/a00843.html (+0/-53)
doc/html/a00844.html (+0/-61)
doc/html/a00844_source.html (+1287/-0)
doc/html/a00845.html (+0/-77)
doc/html/a00846.html (+0/-79)
doc/html/a00846_source.html (+85/-0)
doc/html/a00847.html (+0/-81)
doc/html/a00848.html (+0/-65)
doc/html/a00848_source.html (+188/-0)
doc/html/a00849.html (+0/-64)
doc/html/a00850.html (+0/-164)
doc/html/a00850_source.html (+58/-0)
doc/html/a00851.html (+0/-88)
doc/html/a00852.html (+0/-57)
doc/html/a00852_source.html (+106/-0)
doc/html/a00853.html (+0/-53)
doc/html/a00853_source.html (+1838/-0)
doc/html/a00854.html (+0/-74)
doc/html/a00855.html (+0/-174)
doc/html/a00855_source.html (+218/-0)
doc/html/a00856.html (+0/-56)
doc/html/a00856_source.html (+2276/-0)
doc/html/a00857.html (+0/-66)
doc/html/a00858.html (+0/-55)
doc/html/a00858_source.html (+78/-0)
doc/html/a00859.html (+0/-56)
doc/html/a00860.html (+10034/-18)
doc/html/a00861.html (+0/-56)
doc/html/a00862.html (+0/-55)
doc/html/a00863.html (+0/-56)
doc/html/a00864.html (+205/-17)
doc/html/a00865.html (+23/-18)
doc/html/a00866.html (+40/-17)
doc/html/a00867.html (+9/-18)
doc/html/a00868.html (+9/-17)
doc/html/a00869.html (+137/-18)
doc/html/a00870.html (+168/-18)
doc/html/a00871.html (+22/-19)
doc/html/a00872.html (+119/-18)
doc/html/a00873.html (+63/-19)
doc/html/a00874.html (+34/-24)
doc/html/a00875.html (+19/-24)
doc/html/a00876.html (+177/-17)
doc/html/a00877.html (+18/-130)
doc/html/a00878.html (+19/-140)
doc/html/a00879.html (+25/-149)
doc/html/a00880.html (+45/-41)
doc/html/a00881.html (+36/-21)
doc/html/a00882.html (+106/-19)
doc/html/a00883.html (+39/-31)
doc/html/a00884.html (+80/-43)
doc/html/a00885.html (+135/-29)
doc/html/a00886.html (+57/-25)
doc/html/a00887.html (+50/-22)
doc/html/a00888.html (+152/-19)
doc/html/a00889.html (+16/-23)
doc/html/a00890.html (+16/-22)
doc/html/a00891.html (+16/-130)
doc/html/a00892.html (+13/-138)
doc/html/a00893.html (+1500/-153)
doc/html/a00894.html (+3724/-28)
doc/html/a00895.html (+1470/-29)
doc/html/a00896.html (+1026/-30)
doc/html/a00897.html (+128/-34)
doc/html/a00898.html (+742/-28)
doc/html/a00899.html (+108/-33)
doc/html/a00900.html (+38/-28)
doc/html/a00901.html (+0/-84)
doc/html/a00902.html (+26/-28)
doc/html/a00903.html (+0/-64)
doc/html/a00904.html (+18/-36)
doc/html/a00905.html (+0/-62)
doc/html/a00906.html (+14/-25)
doc/html/a00907.html (+15/-27)
doc/html/a00908.html (+20/-28)
doc/html/a00909.html (+16/-27)
doc/html/a00910.html (+19/-26)
doc/html/a00911.html (+24/-25)
doc/html/a00912.html (+36/-25)
doc/html/a00913.html (+15/-35)
doc/html/a00914.html (+23/-41)
doc/html/a00915.html (+31/-15)
doc/html/a00916.html (+86/-33)
doc/html/a00917.html (+24/-34)
doc/html/a00918.html (+27/-22)
doc/html/a00919.html (+221/-21)
doc/html/a00920.html (+19/-30)
doc/html/a00921.html (+14/-29)
doc/html/a00922.html (+24/-30)
doc/html/a00923.html (+27/-16)
doc/html/a00924.html (+38/-19)
doc/html/a00925.html (+34/-73)
doc/html/a00926.html (+39/-50)
doc/html/a00927.html (+47/-16)
doc/html/a00928.html (+27/-111)
doc/html/a00929.html (+40/-113)
doc/html/a00930.html (+38/-12)
doc/html/a00931.html (+40/-34)
doc/html/a00932.html (+29/-23)
doc/html/a00933.html (+40/-29)
doc/html/a00934.html (+59/-23)
doc/html/a00935.html (+34/-23)
doc/html/a00936.html (+36/-24)
doc/html/a00937.html (+35/-23)
doc/html/a00938.html (+35/-25)
doc/html/a00939.html (+61/-29)
doc/html/a00940.html (+63/-21)
doc/html/a00941.html (+35/-141)
doc/html/a00942.html (+32/-34)
doc/html/a00943.html (+32/-13)
doc/html/a00944.html (+37/-19)
doc/html/a00945.html (+34/-33)
doc/html/a00946.html (+39/-13)
doc/html/a00947.html (+61/-19)
doc/html/a00948.html (+27/-19)
doc/html/a00949.html (+35/-25)
doc/html/a00950.html (+34/-51)
doc/html/a00951.html (+38/-136)
doc/html/a00952.html (+62/-135)
doc/html/a00953.html (+47/-115)
doc/html/a00954.html (+34/-13)
doc/html/a00955.html (+43/-13)
doc/html/a00956.html (+46/-13)
doc/html/a00957.html (+58/-12)
doc/html/a00958.html (+27/-13)
doc/html/a00959.html (+40/-13)
doc/html/a00960.html (+32/-12)
doc/html/a00961.html (+32/-12)
doc/html/a00962.html (+146/-13)
doc/html/a00963.html (+63/-13)
doc/html/a00964.html (+24/-14)
doc/html/a00965.html (+62/-14)
doc/html/a00966.html (+15/-13)
doc/html/a00967.html (+18/-16)
doc/html/a00968.html (+17/-12)
doc/html/a00969.html (+22/-13)
doc/html/a00970.html (+22/-15)
doc/html/a00971.html (+22/-13)
doc/html/a00972.html (+22/-13)
doc/html/a00973.html (+22/-12)
doc/html/a00974.html (+22/-14)
doc/html/a00975.html (+22/-13)
doc/html/a00976.html (+22/-13)
doc/html/a00977.html (+22/-13)
doc/html/a00978.html (+22/-13)
doc/html/a00979.html (+22/-14)
doc/html/a00980.html (+22/-13)
doc/html/a00981.html (+22/-13)
doc/html/a00982.html (+22/-13)
doc/html/a00983.html (+22/-13)
doc/html/a00984.html (+22/-13)
doc/html/a00985.html (+31/-13)
doc/html/a00986.html (+39/-13)
doc/html/a00987.html (+20/-13)
doc/html/a00988.html (+76/-13)
doc/html/a00989.html (+15/-12)
doc/html/a00990.html (+64/-13)
doc/html/a00991.html (+119/-14)
doc/html/a00992.html (+68/-14)
doc/html/a00993.html (+20/-12)
doc/html/a00994.html (+109/-13)
doc/html/a00995.html (+26/-13)
doc/html/a00996.html (+30/-14)
doc/html/a00997.html (+47/-13)
doc/html/a00998.html (+31/-13)
doc/html/a00999.html (+30/-12)
doc/html/a01000.html (+16/-12)
doc/html/a01001.html (+68/-13)
doc/html/a01002.html (+79/-12)
doc/html/a01003.html (+27/-20)
doc/html/a01004.html (+40/-16)
doc/html/a01005.html (+20/-13)
doc/html/a01006.html (+64/-13)
doc/html/a01007.html (+22/-13)
doc/html/a01008.html (+122/-13)
doc/html/a01009.html (+18/-12)
doc/html/a01010.html (+84/-13)
doc/html/a01011.html (+18/-14)
doc/html/a01012.html (+19/-16)
doc/html/a01013.html (+15/-12)
doc/html/a01014.html (+21/-14)
doc/html/a01015.html (+37/-12)
doc/html/a01016.html (+39/-13)
doc/html/a01017.html (+41/-13)
doc/html/a01018.html (+25/-13)
doc/html/a01019.html (+25/-14)
doc/html/a01020.html (+124/-12)
doc/html/a01021.html (+48/-12)
doc/html/a01022.html (+17/-13)
doc/html/a01023.html (+13/-12)
doc/html/a01024.html (+34/-13)
doc/html/a01025.html (+134/-13)
doc/html/a01026.html (+16/-13)
doc/html/a01027.html (+26/-12)
doc/html/a01028.html (+15/-12)
doc/html/a01029.html (+16/-12)
doc/html/a01030.html (+15/-12)
doc/html/a01031.html (+16/-12)
doc/html/a01032.html (+15/-12)
doc/html/a01033.html (+16/-13)
doc/html/a01034.html (+15/-13)
doc/html/a01035.html (+16/-13)
doc/html/a01036.html (+15/-13)
doc/html/a01037.html (+16/-16)
doc/html/a01038.html (+15/-13)
doc/html/a01039.html (+16/-12)
doc/html/a01040.html (+15/-12)
doc/html/a01041.html (+16/-16)
doc/html/a01042.html (+15/-13)
doc/html/a01043.html (+16/-13)
doc/html/a01044.html (+21/-13)
doc/html/a01045.html (+21/-13)
doc/html/a01046.html (+14/-13)
doc/html/a01047.html (+127/-12)
doc/html/a01048.html (+137/-13)
doc/html/a01049.html (+146/-12)
doc/html/a01050.html (+38/-16)
doc/html/a01051.html (+18/-13)
doc/html/a01052.html (+16/-12)
doc/html/a01053.html (+28/-12)
doc/html/a01054.html (+48/-13)
doc/html/a01055.html (+25/-13)
doc/html/a01056.html (+22/-14)
doc/html/a01057.html (+19/-13)
doc/html/a01058.html (+16/-13)
doc/html/a01059.html (+20/-13)
doc/html/a01060.html (+19/-13)
doc/html/a01061.html (+127/-36)
doc/html/a01062.html (+135/-64)
doc/html/a01063.html (+150/-33)
doc/html/a01064.html (+25/-34)
doc/html/a01065.html (+26/-35)
doc/html/a01066.html (+27/-37)
doc/html/a01067.html (+31/-38)
doc/html/a01068.html (+25/-33)
doc/html/a01069.html (+30/-32)
doc/html/a01070.html (+25/-37)
doc/html/a01071.html (+44/-35)
doc/html/a01072.html (+25/-39)
doc/html/a01073.html (+24/-46)
doc/html/a01074.html (+33/-41)
doc/html/a01075.html (+22/-46)
doc/html/a01076.html (+25/-38)
doc/html/a01077.html (+27/-58)
doc/html/a01078.html (+28/-39)
doc/html/a01079.html (+27/-37)
doc/html/a01080.html (+26/-40)
doc/html/a01081.html (+25/-42)
doc/html/a01082.html (+25/-34)
doc/html/a01083.html (+35/-33)
doc/html/a01084.html (+41/-39)
doc/html/a01085.html (+15/-34)
doc/html/a01086.html (+33/-39)
doc/html/a01087.html (+34/-40)
doc/html/a01088.html (+21/-32)
doc/html/a01089.html (+20/-35)
doc/html/a01090.html (+30/-56)
doc/html/a01091.html (+29/-34)
doc/html/a01092.html (+30/-33)
doc/html/a01093.html (+15/-41)
doc/html/a01094.html (+19/-34)
doc/html/a01095.html (+73/-48)
doc/html/a01096.html (+50/-35)
doc/html/a01097.html (+16/-33)
doc/html/a01098.html (+111/-34)
doc/html/a01099.html (+113/-34)
doc/html/a01100.html (+34/-54)
doc/html/a01101.html (+23/-31)
doc/html/a01102.html (+12/-40)
doc/html/a01103.html (+29/-37)
doc/html/a01104.html (+23/-50)
doc/html/a01105.html (+23/-37)
doc/html/a01106.html (+24/-32)
doc/html/a01107.html (+23/-34)
doc/html/a01108.html (+25/-38)
doc/html/a01109.html (+29/-43)
doc/html/a01110.html (+21/-39)
doc/html/a01111.html (+141/-47)
doc/html/a01112.html (+34/-30)
doc/html/a01113.html (+12/-33)
doc/html/a01114.html (+18/-36)
doc/html/a01115.html (+33/-33)
doc/html/a01116.html (+12/-35)
doc/html/a01117.html (+18/-35)
doc/html/a01118.html (+18/-41)
doc/html/a01119.html (+25/-35)
doc/html/a01120.html (+51/-39)
doc/html/a01121.html (+136/-32)
doc/html/a01122.html (+135/-51)
doc/html/a01123.html (+115/-33)
doc/html/a01124.html (+13/-36)
doc/html/a01125.html (+13/-37)
doc/html/a01126.html (+13/-48)
doc/html/a01127.html (+12/-34)
doc/html/a01128.html (+13/-34)
doc/html/a01129.html (+13/-43)
doc/html/a01130.html (+12/-34)
doc/html/a01131.html (+12/-36)
doc/html/a01132.html (+13/-34)
doc/html/a01133.html (+13/-44)
doc/html/a01134.html (+14/-38)
doc/html/a01135.html (+14/-46)
doc/html/a01136.html (+13/-33)
doc/html/a01137.html (+16/-39)
doc/html/a01138.html (+12/-39)
doc/html/a01139.html (+13/-34)
doc/html/a01140.html (+15/-40)
doc/html/a01141.html (+13/-37)
doc/html/a01142.html (+13/-33)
doc/html/a01143.html (+12/-36)
doc/html/a01144.html (+14/-33)
doc/html/a01145.html (+13/-32)
doc/html/a01146.html (+13/-63)
doc/html/a01147.html (+13/-36)
doc/html/a01148.html (+13/-39)
doc/html/a01149.html (+14/-51)
doc/html/a01150.html (+13/-33)
doc/html/a01151.html (+13/-34)
doc/html/a01152.html (+13/-35)
doc/html/a01153.html (+13/-27)
doc/html/a01154.html (+53/-0)
doc/html/a01155.html (+53/-0)
doc/html/a01156.html (+53/-0)
doc/html/a01157.html (+53/-0)
doc/html/a01158.html (+53/-0)
doc/html/a01159.html (+52/-0)
doc/html/a01160.html (+53/-0)
doc/html/a01161.html (+54/-0)
doc/html/a01162.html (+54/-0)
doc/html/a01163.html (+52/-0)
doc/html/a01164.html (+53/-0)
doc/html/a01165.html (+53/-0)
doc/html/a01166.html (+54/-0)
doc/html/a01167.html (+53/-0)
doc/html/a01168.html (+53/-0)
doc/html/a01169.html (+52/-0)
doc/html/a01170.html (+52/-0)
doc/html/a01171.html (+53/-0)
doc/html/a01172.html (+52/-0)
doc/html/a01173.html (+60/-0)
doc/html/a01174.html (+56/-0)
doc/html/a01175.html (+53/-0)
doc/html/a01176.html (+53/-0)
doc/html/a01177.html (+53/-0)
doc/html/a01178.html (+53/-0)
doc/html/a01179.html (+52/-0)
doc/html/a01180.html (+53/-0)
doc/html/a01181.html (+54/-0)
doc/html/a01182.html (+56/-0)
doc/html/a01183.html (+52/-0)
doc/html/a01184.html (+54/-0)
doc/html/a01185.html (+52/-0)
doc/html/a01186.html (+53/-0)
doc/html/a01187.html (+53/-0)
doc/html/a01188.html (+53/-0)
doc/html/a01189.html (+54/-0)
doc/html/a01190.html (+52/-0)
doc/html/a01191.html (+52/-0)
doc/html/a01192.html (+53/-0)
doc/html/a01193.html (+52/-0)
doc/html/a01194.html (+53/-0)
doc/html/a01195.html (+53/-0)
doc/html/a01196.html (+53/-0)
doc/html/a01197.html (+52/-0)
doc/html/a01198.html (+52/-0)
doc/html/a01199.html (+52/-0)
doc/html/a01200.html (+52/-0)
doc/html/a01201.html (+52/-0)
doc/html/a01202.html (+52/-0)
doc/html/a01203.html (+53/-0)
doc/html/a01204.html (+53/-0)
doc/html/a01205.html (+53/-0)
doc/html/a01206.html (+53/-0)
doc/html/a01207.html (+56/-0)
doc/html/a01208.html (+53/-0)
doc/html/a01209.html (+52/-0)
doc/html/a01210.html (+52/-0)
doc/html/a01211.html (+56/-0)
doc/html/a01212.html (+53/-0)
doc/html/a01213.html (+53/-0)
doc/html/a01214.html (+53/-0)
doc/html/a01215.html (+53/-0)
doc/html/a01216.html (+53/-0)
doc/html/a01217.html (+52/-0)
doc/html/a01218.html (+53/-0)
doc/html/a01219.html (+52/-0)
doc/html/a01220.html (+56/-0)
doc/html/a01221.html (+53/-0)
doc/html/a01222.html (+52/-0)
doc/html/a01223.html (+52/-0)
doc/html/a01224.html (+53/-0)
doc/html/a01225.html (+53/-0)
doc/html/a01226.html (+54/-0)
doc/html/a01227.html (+53/-0)
doc/html/a01228.html (+53/-0)
doc/html/a01229.html (+53/-0)
doc/html/a01230.html (+53/-0)
doc/html/a01231.html (+75/-0)
doc/html/a01232.html (+103/-0)
doc/html/a01233.html (+72/-0)
doc/html/a01234.html (+73/-0)
doc/html/a01235.html (+74/-0)
doc/html/a01236.html (+76/-0)
doc/html/a01237.html (+77/-0)
doc/html/a01238.html (+72/-0)
doc/html/a01239.html (+71/-0)
doc/html/a01240.html (+76/-0)
doc/html/a01241.html (+74/-0)
doc/html/a01242.html (+78/-0)
doc/html/a01243.html (+85/-0)
doc/html/a01244.html (+80/-0)
doc/html/a01245.html (+85/-0)
doc/html/a01246.html (+77/-0)
doc/html/a01247.html (+97/-0)
doc/html/a01248.html (+78/-0)
doc/html/a01249.html (+76/-0)
doc/html/a01250.html (+71/-0)
doc/html/a01251.html (+79/-0)
doc/html/a01252.html (+81/-0)
doc/html/a01253.html (+73/-0)
doc/html/a01254.html (+72/-0)
doc/html/a01255.html (+78/-0)
doc/html/a01256.html (+73/-0)
doc/html/a01257.html (+78/-0)
doc/html/a01258.html (+79/-0)
doc/html/a01259.html (+71/-0)
doc/html/a01260.html (+74/-0)
doc/html/a01261.html (+95/-0)
doc/html/a01262.html (+73/-0)
doc/html/a01263.html (+72/-0)
doc/html/a01264.html (+80/-0)
doc/html/a01265.html (+73/-0)
doc/html/a01266.html (+85/-0)
doc/html/a01267.html (+75/-0)
doc/html/a01268.html (+87/-0)
doc/html/a01269.html (+74/-0)
doc/html/a01270.html (+72/-0)
doc/html/a01271.html (+73/-0)
doc/html/a01272.html (+76/-0)
doc/html/a01273.html (+73/-0)
doc/html/a01274.html (+93/-0)
doc/html/a01275.html (+70/-0)
doc/html/a01276.html (+79/-0)
doc/html/a01277.html (+76/-0)
doc/html/a01278.html (+90/-0)
doc/html/a01279.html (+76/-0)
doc/html/a01280.html (+71/-0)
doc/html/a01281.html (+73/-0)
doc/html/a01282.html (+77/-0)
doc/html/a01283.html (+82/-0)
doc/html/a01284.html (+78/-0)
doc/html/a01285.html (+86/-0)
doc/html/a01286.html (+69/-0)
doc/html/a01287.html (+72/-0)
doc/html/a01288.html (+75/-0)
doc/html/a01289.html (+72/-0)
doc/html/a01290.html (+74/-0)
doc/html/a01291.html (+74/-0)
doc/html/a01292.html (+80/-0)
doc/html/a01293.html (+74/-0)
doc/html/a01294.html (+78/-0)
doc/html/a01295.html (+71/-0)
doc/html/a01296.html (+92/-0)
doc/html/a01297.html (+72/-0)
doc/html/a01298.html (+75/-0)
doc/html/a01299.html (+76/-0)
doc/html/a01300.html (+87/-0)
doc/html/a01301.html (+73/-0)
doc/html/a01302.html (+73/-0)
doc/html/a01303.html (+82/-0)
doc/html/a01304.html (+73/-0)
doc/html/a01305.html (+75/-0)
doc/html/a01306.html (+73/-0)
doc/html/a01307.html (+83/-0)
doc/html/a01308.html (+77/-0)
doc/html/a01309.html (+85/-0)
doc/html/a01310.html (+73/-0)
doc/html/a01311.html (+78/-0)
doc/html/a01312.html (+78/-0)
doc/html/a01313.html (+73/-0)
doc/html/a01314.html (+79/-0)
doc/html/a01315.html (+76/-0)
doc/html/a01316.html (+72/-0)
doc/html/a01317.html (+75/-0)
doc/html/a01318.html (+72/-0)
doc/html/a01319.html (+71/-0)
doc/html/a01320.html (+102/-0)
doc/html/a01321.html (+75/-0)
doc/html/a01322.html (+78/-0)
doc/html/a01323.html (+89/-0)
doc/html/a01324.html (+71/-0)
doc/html/a01325.html (+72/-0)
doc/html/a01326.html (+73/-0)
doc/html/a01327.html (+66/-0)
doc/html/a01328.html (+62/-0)
doc/html/a01329.html (+62/-0)
doc/html/a01330.html (+57/-0)
doc/html/a01331.html (+67/-0)
doc/html/a01332.html (+57/-0)
doc/html/a01333.html (+56/-0)
doc/html/a01334.html (+62/-0)
doc/html/a01335.html (+57/-0)
doc/html/a01336.html (+62/-0)
doc/html/a01337.html (+63/-0)
doc/html/a01338.html (+55/-0)
doc/html/a01339.html (+58/-0)
doc/html/a01340.html (+79/-0)
doc/html/a01341.html (+57/-0)
doc/html/a01342.html (+56/-0)
doc/html/a01343.html (+55/-0)
doc/html/a01344.html (+64/-0)
doc/html/a01345.html (+57/-0)
doc/html/a01346.html (+59/-0)
doc/html/a01347.html (+69/-0)
doc/html/a01348.html (+71/-0)
doc/html/a01349.html (+58/-0)
doc/html/a01350.html (+56/-0)
doc/html/a01351.html (+57/-0)
doc/html/a01352.html (+55/-0)
doc/html/a01353.html (+60/-0)
doc/html/a01354.html (+77/-0)
doc/html/a01355.html (+63/-0)
doc/html/a01356.html (+60/-0)
doc/html/a01357.html (+74/-0)
doc/html/a01358.html (+60/-0)
doc/html/a01359.html (+55/-0)
doc/html/a01360.html (+57/-0)
doc/html/a01361.html (+61/-0)
doc/html/a01362.html (+66/-0)
doc/html/a01363.html (+62/-0)
doc/html/a01364.html (+60/-0)
doc/html/a01365.html (+64/-0)
doc/html/a01366.html (+58/-0)
doc/html/a01367.html (+62/-0)
doc/html/a01368.html (+55/-0)
doc/html/a01369.html (+78/-0)
doc/html/a01370.html (+56/-0)
doc/html/a01371.html (+59/-0)
doc/html/a01372.html (+60/-0)
doc/html/a01373.html (+71/-0)
doc/html/a01374.html (+57/-0)
doc/html/a01375.html (+66/-0)
doc/html/a01376.html (+57/-0)
doc/html/a01377.html (+59/-0)
doc/html/a01378.html (+57/-0)
doc/html/a01379.html (+67/-0)
doc/html/a01380.html (+61/-0)
doc/html/a01381.html (+69/-0)
doc/html/a01382.html (+57/-0)
doc/html/a01383.html (+62/-0)
doc/html/a01384.html (+62/-0)
doc/html/a01385.html (+57/-0)
doc/html/a01386.html (+60/-0)
doc/html/a01387.html (+56/-0)
doc/html/a01388.html (+59/-0)
doc/html/annotated.html (+498/-392)
doc/html/classes.html (+128/-106)
doc/html/dir_6a0ad83b73160d92798e0df0d91b99f2.html (+58/-0)
doc/html/dir_873b20b8174f0d08bad0230936669cc5.html (+53/-0)
doc/html/dir_a7efd3693e0e01cb2055bca70ce6963d.html (+57/-0)
doc/html/dir_d31e7bccdbb8c214182f9922ec6f9b9e.html (+550/-0)
doc/html/dir_da638a168252e2c60116c394abd6721a.html (+149/-0)
doc/html/dynsections.js (+97/-0)
doc/html/files.html (+0/-221)
doc/html/functions.html (+376/-244)
doc/html/functions_0x62.html (+112/-55)
doc/html/functions_0x63.html (+853/-555)
doc/html/functions_0x64.html (+141/-76)
doc/html/functions_0x65.html (+99/-74)
doc/html/functions_0x66.html (+196/-183)
doc/html/functions_0x67.html (+235/-110)
doc/html/functions_0x68.html (+132/-100)
doc/html/functions_0x69.html (+457/-309)
doc/html/functions_0x6b.html (+8/-5)
doc/html/functions_0x6c.html (+93/-61)
doc/html/functions_0x6d.html (+239/-100)
doc/html/functions_0x6e.html (+104/-81)
doc/html/functions_0x6f.html (+202/-192)
doc/html/functions_0x70.html (+213/-156)
doc/html/functions_0x71.html (+7/-7)
doc/html/functions_0x72.html (+812/-609)
doc/html/functions_0x73.html (+1125/-506)
doc/html/functions_0x74.html (+122/-87)
doc/html/functions_0x75.html (+109/-68)
doc/html/functions_0x76.html (+45/-34)
doc/html/functions_0x77.html (+7/-7)
doc/html/functions_0x78.html (+5/-5)
doc/html/functions_0x79.html (+4/-4)
doc/html/functions_0x7e.html (+245/-149)
doc/html/functions_enum.html (+10/-10)
doc/html/functions_eval.html (+31/-31)
doc/html/functions_func.html (+339/-224)
doc/html/functions_func_0x62.html (+111/-54)
doc/html/functions_func_0x63.html (+800/-512)
doc/html/functions_func_0x64.html (+124/-65)
doc/html/functions_func_0x65.html (+75/-63)
doc/html/functions_func_0x66.html (+93/-80)
doc/html/functions_func_0x67.html (+205/-109)
doc/html/functions_func_0x68.html (+119/-88)
doc/html/functions_func_0x69.html (+427/-280)
doc/html/functions_func_0x6b.html (+7/-4)
doc/html/functions_func_0x6c.html (+82/-54)
doc/html/functions_func_0x6d.html (+207/-84)
doc/html/functions_func_0x6e.html (+94/-65)
doc/html/functions_func_0x6f.html (+190/-180)
doc/html/functions_func_0x70.html (+175/-114)
doc/html/functions_func_0x71.html (+6/-6)
doc/html/functions_func_0x72.html (+737/-562)
doc/html/functions_func_0x73.html (+1038/-473)
doc/html/functions_func_0x74.html (+107/-72)
doc/html/functions_func_0x75.html (+91/-57)
doc/html/functions_func_0x76.html (+35/-26)
doc/html/functions_func_0x77.html (+5/-5)
doc/html/functions_func_0x78.html (+5/-5)
doc/html/functions_func_0x79.html (+4/-4)
doc/html/functions_func_0x7e.html (+245/-149)
doc/html/functions_prop.html (+37/-37)
doc/html/functions_rela.html (+5/-5)
doc/html/functions_type.html (+288/-87)
doc/html/functions_vars.html (+16/-16)
doc/html/functions_vars_0x63.html (+26/-22)
doc/html/functions_vars_0x64.html (+11/-11)
doc/html/functions_vars_0x65.html (+11/-7)
doc/html/functions_vars_0x66.html (+84/-84)
doc/html/functions_vars_0x67.html (+4/-4)
doc/html/functions_vars_0x68.html (+11/-11)
doc/html/functions_vars_0x69.html (+16/-16)
doc/html/functions_vars_0x6b.html (+4/-4)
doc/html/functions_vars_0x6c.html (+7/-7)
doc/html/functions_vars_0x6d.html (+19/-19)
doc/html/functions_vars_0x6e.html (+14/-14)
doc/html/functions_vars_0x6f.html (+13/-13)
doc/html/functions_vars_0x70.html (+31/-31)
doc/html/functions_vars_0x72.html (+13/-8)
doc/html/functions_vars_0x73.html (+21/-21)
doc/html/functions_vars_0x74.html (+19/-19)
doc/html/functions_vars_0x75.html (+10/-10)
doc/html/functions_vars_0x76.html (+5/-5)
doc/html/functions_vars_0x77.html (+5/-5)
doc/html/hierarchy.html (+595/-515)
doc/html/index.html (+20/-20)
doc/html/index.qhp (+25233/-12936)
doc/html/installdox (+0/-112)
doc/html/jquery.js (+31/-0)
doc/html/modules.html (+38/-42)
doc/html/namespacemembers.html (+5/-5)
doc/html/namespacemembers_enum.html (+82/-79)
doc/html/namespacemembers_eval.html (+25/-25)
doc/html/namespacemembers_func.html (+4/-4)
doc/html/namespacemembers_type.html (+84/-84)
doc/html/namespacemembers_vars.html (+58/-55)
doc/html/namespaces.html (+13/-10)
doc/html/pages.html (+10/-11)
doc/html/tabs.css (+1/-0)
doc/html/telepathy-qt.tags (+17380/-7363)
examples/accounts/CMakeLists.txt (+7/-7)
examples/cm/CMakeLists.txt (+8/-8)
examples/contact-messenger/CMakeLists.txt (+5/-5)
examples/extensions/CMakeLists.txt (+3/-3)
examples/file-transfer/CMakeLists.txt (+10/-10)
examples/file-transfer/file-sender.cpp (+2/-0)
examples/protocols/CMakeLists.txt (+7/-7)
examples/roster/CMakeLists.txt (+14/-14)
examples/stream-tubes/CMakeLists.txt (+10/-10)
spec/Account_Interface_Addressing.xml (+8/-0)
spec/Account_Interface_Minimum_Presence.xml (+0/-108)
spec/Call_Content_Codec_Offer.xml (+0/-87)
spec/Call_Content_Interface_Mute.xml (+0/-85)
spec/Channel.xml (+1/-1)
spec/Channel_Dispatcher_Future.xml (+0/-377)
spec/Channel_Dispatcher_Interface_Messages.xml (+0/-49)
spec/Channel_Dispatcher_Interface_Messages1.xml (+175/-0)
spec/Channel_Interface_Room_Config.xml (+1/-1)
spec/Channel_Interface_Tube.xml (+2/-1)
spec/Channel_Request_Future.xml (+0/-98)
spec/Channel_Type_Call.xml (+6/-9)
spec/Channel_Type_DBus_Tube.xml (+5/-2)
spec/Channel_Type_File_Transfer.xml (+29/-0)
spec/Channel_Type_Room_List.xml (+2/-1)
spec/Channel_Type_Stream_Tube.xml (+5/-2)
spec/Connection.xml (+45/-5)
spec/Connection_Future.xml (+0/-110)
spec/Connection_Interface_Contact_Capabilities.xml (+1/-1)
spec/Connection_Interface_IRC_Command1.xml (+55/-0)
spec/Connection_Interface_Renaming.xml (+2/-2)
spec/Connection_Interface_Sidecars1.xml (+110/-0)
spec/all.xml (+4/-2)
spec/errors.xml (+3/-3)
tests/dbus/CMakeLists.txt (+11/-11)
tests/dbus/account-channel-dispatcher.cpp (+15/-1)
tests/dbus/account-set.cpp (+1/-1)
tests/dbus/client.cpp (+17/-3)
tests/dbus/contact-messenger.cpp (+2/-2)
tests/dbus/dbus-proxy-factory.cpp (+4/-0)
tests/dbus/dbus-tube-chan.cpp (+0/-5)
tests/key-file.cpp (+3/-1)
tests/lib/CMakeLists.txt (+1/-1)
tests/lib/glib-helpers/CMakeLists.txt (+3/-3)
tests/lib/glib/future/extensions/misc.xml (+0/-1)
tests/lib/glib/simple-channel-dispatch-operation.c (+10/-1)
tests/lib/glib/util.c (+4/-0)
tools/manager-file.py (+1/-0)
tools/qt-svc-gen.py (+1/-1)
To merge this branch: bzr merge lp:~tiagosh/ubuntu/wily/telepathy-qt5/update-0.9.6.1
Reviewer Review Type Date Requested Status
Martin Pitt Approve
Review via email: mp+262167@code.launchpad.net

Commit message

Update to new upstream release (0.9.6.1).

Description of the change

Update to new upstream release (0.9.6.1).

To post a comment you must log in.
Revision history for this message
Martin Pitt (pitti) wrote :

The changelog doesn't document/justify the dropping of all patches. I went through them, and most seem to be applied upstream. 02-adapt_to_work_with_q5_final.patch and 05-fix-qt52-build.patch don't seem to be applied at all, but the package builds fine in wily (with Qt 5.4), so I assume they are obsolete.

Please document this in the changelog next time instead of requiring such guesswork.

Uploaded, thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== removed directory '.pc/01-force_setInterfaces_on_call-content-for-dtmf.patch'
=== removed directory '.pc/01-force_setInterfaces_on_call-content-for-dtmf.patch/TelepathyQt'
=== removed file '.pc/01-force_setInterfaces_on_call-content-for-dtmf.patch/TelepathyQt/call-content.cpp'
--- .pc/01-force_setInterfaces_on_call-content-for-dtmf.patch/TelepathyQt/call-content.cpp 2013-06-06 04:56:14 +0000
+++ .pc/01-force_setInterfaces_on_call-content-for-dtmf.patch/TelepathyQt/call-content.cpp 1970-01-01 00:00:00 +0000
@@ -1,537 +0,0 @@
1/*
2 * This file is part of TelepathyQt
3 *
4 * @copyright Copyright (C) 2010-2012 Collabora Ltd. <http://www.collabora.co.uk/>
5 * @copyright Copyright (C) 2012 Nokia Corporation
6 * @license LGPL 2.1
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#include <TelepathyQt/CallContent>
24
25#include "TelepathyQt/_gen/call-content.moc.hpp"
26
27#include "TelepathyQt/_gen/cli-call-content-body.hpp"
28#include "TelepathyQt/_gen/cli-call-content.moc.hpp"
29
30#include <TelepathyQt/debug-internal.h>
31
32#include <TelepathyQt/CallChannel>
33#include <TelepathyQt/DBus>
34#include <TelepathyQt/PendingReady>
35#include <TelepathyQt/PendingVoid>
36#include <TelepathyQt/PendingVariantMap>
37#include <TelepathyQt/ReadinessHelper>
38
39namespace Tp
40{
41
42/* ====== CallContent ====== */
43struct TP_QT_NO_EXPORT CallContent::Private
44{
45 Private(CallContent *parent, const CallChannelPtr &channel);
46
47 static void introspectMainProperties(Private *self);
48 void checkIntrospectionCompleted();
49
50 CallStreamPtr addStream(const QDBusObjectPath &streamPath);
51 CallStreamPtr lookupStream(const QDBusObjectPath &streamPath);
52
53 // Public object
54 CallContent *parent;
55
56 WeakPtr<CallChannel> channel;
57
58 // Mandatory proxies
59 Client::CallContentInterface *contentInterface;
60
61 ReadinessHelper *readinessHelper;
62
63 // Introspection
64 QString name;
65 uint type;
66 uint disposition;
67 CallStreams streams;
68 CallStreams incompleteStreams;
69};
70
71CallContent::Private::Private(CallContent *parent, const CallChannelPtr &channel)
72 : parent(parent),
73 channel(channel.data()),
74 contentInterface(parent->interface<Client::CallContentInterface>()),
75 readinessHelper(parent->readinessHelper())
76{
77 ReadinessHelper::Introspectables introspectables;
78
79 ReadinessHelper::Introspectable introspectableCore(
80 QSet<uint>() << 0, // makesSenseForStatuses
81 Features(), // dependsOnFeatures
82 QStringList(), // dependsOnInterfaces
83 (ReadinessHelper::IntrospectFunc) &Private::introspectMainProperties,
84 this);
85 introspectables[FeatureCore] = introspectableCore;
86
87 readinessHelper->addIntrospectables(introspectables);
88 readinessHelper->becomeReady(FeatureCore);
89}
90
91void CallContent::Private::introspectMainProperties(CallContent::Private *self)
92{
93 CallContent *parent = self->parent;
94 CallChannelPtr channel = parent->channel();
95
96 parent->connect(self->contentInterface,
97 SIGNAL(StreamsAdded(Tp::ObjectPathList)),
98 SLOT(onStreamsAdded(Tp::ObjectPathList)));
99 parent->connect(self->contentInterface,
100 SIGNAL(StreamsRemoved(Tp::ObjectPathList,Tp::CallStateReason)),
101 SLOT(onStreamsRemoved(Tp::ObjectPathList,Tp::CallStateReason)));
102
103 parent->connect(self->contentInterface->requestAllProperties(),
104 SIGNAL(finished(Tp::PendingOperation*)),
105 SLOT(gotMainProperties(Tp::PendingOperation*)));
106}
107
108void CallContent::Private::checkIntrospectionCompleted()
109{
110 if (!parent->isReady(FeatureCore) && incompleteStreams.size() == 0) {
111 readinessHelper->setIntrospectCompleted(FeatureCore, true);
112 }
113}
114
115CallStreamPtr CallContent::Private::addStream(const QDBusObjectPath &streamPath)
116{
117 CallStreamPtr stream = CallStreamPtr(
118 new CallStream(CallContentPtr(parent), streamPath));
119 incompleteStreams.append(stream);
120 parent->connect(stream->becomeReady(),
121 SIGNAL(finished(Tp::PendingOperation*)),
122 SLOT(onStreamReady(Tp::PendingOperation*)));
123 return stream;
124}
125
126CallStreamPtr CallContent::Private::lookupStream(const QDBusObjectPath &streamPath)
127{
128 foreach (const CallStreamPtr &stream, streams) {
129 if (stream->objectPath() == streamPath.path()) {
130 return stream;
131 }
132 }
133 foreach (const CallStreamPtr &stream, incompleteStreams) {
134 if (stream->objectPath() == streamPath.path()) {
135 return stream;
136 }
137 }
138 return CallStreamPtr();
139}
140
141/**
142 * \class CallContent
143 * \ingroup clientchannel
144 * \headerfile TelepathyQt/call-content.h <TelepathyQt/CallContent>
145 *
146 * \brief The CallContent class provides an object representing a Telepathy
147 * Call.Content.
148 *
149 * Instances of this class cannot be constructed directly; the only way to get
150 * one is via CallChannel.
151 *
152 * See \ref async_model
153 */
154
155/**
156 * Feature representing the core that needs to become ready to make the
157 * CallContent object usable.
158 *
159 * Note that this feature must be enabled in order to use most CallContent
160 * methods. See specific methods documentation for more details.
161 *
162 * When calling isReady(), becomeReady(), this feature is implicitly added
163 * to the requested features.
164 */
165const Feature CallContent::FeatureCore = Feature(QLatin1String(CallContent::staticMetaObject.className()), 0);
166
167/**
168 * Construct a new CallContent object.
169 *
170 * \param channel The channel owning this media content.
171 * \param name The object path of this media content.
172 */
173CallContent::CallContent(const CallChannelPtr &channel, const QDBusObjectPath &objectPath)
174 : StatefulDBusProxy(channel->dbusConnection(), channel->busName(),
175 objectPath.path(), FeatureCore),
176 OptionalInterfaceFactory<CallContent>(this),
177 mPriv(new Private(this, channel))
178{
179}
180
181/**
182 * Class destructor.
183 */
184CallContent::~CallContent()
185{
186 delete mPriv;
187}
188
189/**
190 * Return the channel owning this media content.
191 *
192 * \return The channel owning this media content.
193 */
194CallChannelPtr CallContent::channel() const
195{
196 return CallChannelPtr(mPriv->channel);
197}
198
199/**
200 * Return the name of this media content.
201 *
202 * \return The name of this media content.
203 */
204QString CallContent::name() const
205{
206 return mPriv->name;
207}
208
209/**
210 * Return the type of this media content.
211 *
212 * \return The type of this media content.
213 */
214MediaStreamType CallContent::type() const
215{
216 return (MediaStreamType) mPriv->type;
217}
218
219/**
220 * Return the disposition of this media content.
221 *
222 * \return The disposition of this media content.
223 */
224CallContentDisposition CallContent::disposition() const
225{
226 return (CallContentDisposition) mPriv->disposition;
227}
228
229/**
230 * Return the media streams of this media content.
231 *
232 * \return A list of media streams of this media content.
233 * \sa streamAdded(), streamRemoved()
234 */
235CallStreams CallContent::streams() const
236{
237 return mPriv->streams;
238}
239
240/**
241 * Removes this media content from the call.
242 *
243 * \return A PendingOperation which will emit PendingOperation::finished
244 * when the call has finished.
245 */
246PendingOperation *CallContent::remove()
247{
248 return new PendingVoid(mPriv->contentInterface->Remove(), CallContentPtr(this));
249}
250
251/**
252 * Return whether sending DTMF events is supported on this content.
253 * DTMF is only supported on audio contents that implement the
254 * #TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF interface.
255 *
256 * \returns \c true if DTMF is supported, or \c false otherwise.
257 */
258bool CallContent::supportsDTMF() const
259{
260 return hasInterface(TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF);
261}
262
263/**
264 * Start sending a DTMF tone on this media stream.
265 *
266 * Where possible, the tone will continue until stopDTMFTone() is called.
267 * On certain protocols, it may only be possible to send events with a predetermined
268 * length. In this case, the implementation may emit a fixed-length tone,
269 * and the stopDTMFTone() method call should return #TP_QT_ERROR_NOT_AVAILABLE.
270 *
271 * If this content does not support the #TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF
272 * interface, the resulting PendingOperation will fail with error code
273 * #TP_QT_ERROR_NOT_IMPLEMENTED.
274 *
275 * \param event A numeric event code from the #DTMFEvent enum.
276 * \return A PendingOperation which will emit PendingOperation::finished
277 * when the request finishes.
278 * \sa stopDTMFTone(), supportsDTMF()
279 */
280PendingOperation *CallContent::startDTMFTone(DTMFEvent event)
281{
282 if (!supportsDTMF()) {
283 warning() << "CallContent::startDTMFTone() used with no dtmf interface";
284 return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED,
285 QLatin1String("This CallContent does not support the dtmf interface"),
286 CallContentPtr(this));
287 }
288
289 Client::CallContentInterfaceDTMFInterface *dtmfInterface =
290 interface<Client::CallContentInterfaceDTMFInterface>();
291 return new PendingVoid(dtmfInterface->StartTone(event), CallContentPtr(this));
292}
293
294/**
295 * Stop sending any DTMF tone which has been started using the startDTMFTone()
296 * method.
297 *
298 * If there is no current tone, the resulting PendingOperation will
299 * finish successfully.
300 *
301 * If this content does not support the #TP_QT_IFACE_CALL_CONTENT_INTERFACE_DTMF
302 * interface, the resulting PendingOperation will fail with error code
303 * #TP_QT_ERROR_NOT_IMPLEMENTED.
304 *
305 * \return A PendingOperation which will emit PendingOperation::finished
306 * when the request finishes.
307 * \sa startDTMFTone(), supportsDTMF()
308 */
309PendingOperation *CallContent::stopDTMFTone()
310{
311 if (!supportsDTMF()) {
312 warning() << "CallContent::stopDTMFTone() used with no dtmf interface";
313 return new PendingFailure(TP_QT_ERROR_NOT_IMPLEMENTED,
314 QLatin1String("This CallContent does not support the dtmf interface"),
315 CallContentPtr(this));
316 }
317
318 Client::CallContentInterfaceDTMFInterface *dtmfInterface =
319 interface<Client::CallContentInterfaceDTMFInterface>();
320 return new PendingVoid(dtmfInterface->StopTone(), CallContentPtr(this));
321}
322
323void CallContent::gotMainProperties(PendingOperation *op)
324{
325 if (op->isError()) {
326 warning().nospace() << "CallContentInterface::requestAllProperties() failed with" <<
327 op->errorName() << ": " << op->errorMessage();
328 mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, false,
329 op->errorName(), op->errorMessage());
330 return;
331 }
332
333 debug() << "Got reply to CallContentInterface::requestAllProperties()";
334
335 PendingVariantMap *pvm = qobject_cast<PendingVariantMap*>(op);
336 Q_ASSERT(pvm);
337
338 QVariantMap props = pvm->result();
339
340 mPriv->name = qdbus_cast<QString>(props[QLatin1String("Name")]);
341 mPriv->type = qdbus_cast<uint>(props[QLatin1String("Type")]);
342 mPriv->disposition = qdbus_cast<uint>(props[QLatin1String("Disposition")]);
343
344 ObjectPathList streamsPaths = qdbus_cast<ObjectPathList>(props[QLatin1String("Streams")]);
345 if (streamsPaths.size() != 0) {
346 foreach (const QDBusObjectPath &streamPath, streamsPaths) {
347 CallStreamPtr stream = mPriv->lookupStream(streamPath);
348 if (!stream) {
349 mPriv->addStream(streamPath);
350 }
351 }
352 } else {
353 mPriv->readinessHelper->setIntrospectCompleted(FeatureCore, true);
354 }
355}
356
357void CallContent::onStreamsAdded(const ObjectPathList &streamsPaths)
358{
359 foreach (const QDBusObjectPath &streamPath, streamsPaths) {
360 debug() << "Received Call::Content::StreamAdded for stream" << streamPath.path();
361
362 if (mPriv->lookupStream(streamPath)) {
363 debug() << "Stream already exists, ignoring";
364 return;
365 }
366
367 mPriv->addStream(streamPath);
368 }
369}
370
371void CallContent::onStreamsRemoved(const ObjectPathList &streamsPaths,
372 const CallStateReason &reason)
373{
374 foreach (const QDBusObjectPath &streamPath, streamsPaths) {
375 debug() << "Received Call::Content::StreamRemoved for stream" << streamPath.path();
376
377 CallStreamPtr stream = mPriv->lookupStream(streamPath);
378 if (!stream) {
379 debug() << "Stream does not exist, ignoring";
380 return;
381 }
382
383 bool incomplete = mPriv->incompleteStreams.contains(stream);
384 if (incomplete) {
385 mPriv->incompleteStreams.removeOne(stream);
386 } else {
387 mPriv->streams.removeOne(stream);
388 }
389
390 if (isReady(FeatureCore) && !incomplete) {
391 emit streamRemoved(stream, reason);
392 }
393
394 mPriv->checkIntrospectionCompleted();
395 }
396}
397
398void CallContent::onStreamReady(PendingOperation *op)
399{
400 PendingReady *pr = qobject_cast<PendingReady*>(op);
401 CallStreamPtr stream = CallStreamPtr::qObjectCast(pr->proxy());
402
403 if (op->isError() || !mPriv->incompleteStreams.contains(stream)) {
404 mPriv->incompleteStreams.removeOne(stream);
405 mPriv->checkIntrospectionCompleted();
406 return;
407 }
408
409 mPriv->incompleteStreams.removeOne(stream);
410 mPriv->streams.append(stream);
411
412 if (isReady(FeatureCore)) {
413 emit streamAdded(stream);
414 }
415
416 mPriv->checkIntrospectionCompleted();
417}
418
419/**
420 * \fn void CallContent::streamAdded(const Tp::CallStreamPtr &stream);
421 *
422 * This signal is emitted when a new media stream is added to this media
423 * content.
424 *
425 * \param stream The media stream that was added.
426 * \sa streams()
427 */
428
429/**
430 * \fn void CallContent::streamRemoved(const Tp::CallStreamPtr &stream, const Tp::CallStateReason &reason);
431 *
432 * This signal is emitted when a new media stream is removed from this media
433 * content.
434 *
435 * \param stream The media stream that was removed.
436 * \param reason The reason for this removal.
437 * \sa streams()
438 */
439
440
441/* ====== PendingCallContent ====== */
442struct TP_QT_NO_EXPORT PendingCallContent::Private
443{
444 Private(PendingCallContent *parent, const CallChannelPtr &channel)
445 : parent(parent),
446 channel(channel)
447 {
448 }
449
450 PendingCallContent *parent;
451 CallChannelPtr channel;
452 CallContentPtr content;
453};
454
455PendingCallContent::PendingCallContent(const CallChannelPtr &channel,
456 const QString &name, MediaStreamType type, MediaStreamDirection direction)
457 : PendingOperation(channel),
458 mPriv(new Private(this, channel))
459{
460 Client::ChannelTypeCallInterface *callInterface =
461 channel->interface<Client::ChannelTypeCallInterface>();
462 QDBusPendingCallWatcher *watcher =
463 new QDBusPendingCallWatcher(
464 callInterface->AddContent(name, type, direction), this);
465 connect(watcher,
466 SIGNAL(finished(QDBusPendingCallWatcher*)),
467 SLOT(gotContent(QDBusPendingCallWatcher*)));
468}
469
470PendingCallContent::~PendingCallContent()
471{
472 delete mPriv;
473}
474
475CallContentPtr PendingCallContent::content() const
476{
477 if (!isFinished() || !isValid()) {
478 return CallContentPtr();
479 }
480
481 return mPriv->content;
482}
483
484void PendingCallContent::gotContent(QDBusPendingCallWatcher *watcher)
485{
486 QDBusPendingReply<QDBusObjectPath> reply = *watcher;
487 if (reply.isError()) {
488 warning().nospace() << "Call::AddContent failed with " <<
489 reply.error().name() << ": " << reply.error().message();
490 setFinishedWithError(reply.error());
491 watcher->deleteLater();
492 return;
493 }
494
495 QDBusObjectPath contentPath = reply.value();
496 CallChannelPtr channel(mPriv->channel);
497 CallContentPtr content = channel->lookupContent(contentPath);
498 if (!content) {
499 content = channel->addContent(contentPath);
500 }
501
502 connect(content->becomeReady(),
503 SIGNAL(finished(Tp::PendingOperation*)),
504 SLOT(onContentReady(Tp::PendingOperation*)));
505 connect(channel.data(),
506 SIGNAL(contentRemoved(Tp::CallContentPtr,Tp::CallStateReason)),
507 SLOT(onContentRemoved(Tp::CallContentPtr)));
508
509 mPriv->content = content;
510
511 watcher->deleteLater();
512}
513
514void PendingCallContent::onContentReady(PendingOperation *op)
515{
516 if (op->isError()) {
517 setFinishedWithError(op->errorName(), op->errorMessage());
518 return;
519 }
520
521 setFinished();
522}
523
524void PendingCallContent::onContentRemoved(const CallContentPtr &content)
525{
526 if (isFinished()) {
527 return;
528 }
529
530 if (mPriv->content == content) {
531 // the content was removed before becoming ready
532 setFinishedWithError(TP_QT_ERROR_CANCELLED,
533 QLatin1String("Content removed before ready"));
534 }
535}
536
537} // Tp
5380
=== removed directory '.pc/02-adapt_to_work_with_q5_final.patch'
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/CMakeLists.txt'
--- .pc/02-adapt_to_work_with_q5_final.patch/CMakeLists.txt 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,304 +0,0 @@
1project(TelepathyQt)
2
3cmake_minimum_required(VERSION 2.6)
4
5# CMake policies are used for backwards compatibilty. Setting a policy to a behavior lets newer
6# CMake versions where some behaviors changed behave in a way or another. In our specific case,
7# From CMake's documentation:
8#
9# In CMake 2.6.2 and below, CMake Policy settings in scripts loaded by
10# the include() and find_package() commands would affect the includer.
11# Explicit invocations of cmake_policy(PUSH) and cmake_policy(POP) were
12# required to isolate policy changes and protect the includer. While
13# some scripts intend to affect the policies of their includer, most do
14# not. In CMake 2.6.3 and above, include() and find_package() by
15# default PUSH and POP an entry on the policy stack around an included
16# script, but provide a NO_POLICY_SCOPE option to disable it. This
17# policy determines whether or not to imply NO_POLICY_SCOPE for
18# compatibility. The OLD behavior for this policy is to imply
19# NO_POLICY_SCOPE for include() and find_package() commands. The NEW
20# behavior for this policy is to allow the commands to do their default
21# cmake_policy PUSH and POP.
22#
23# This policy was introduced in CMake version 2.6.3. CMake version
24# 2.8.2 warns when the policy is not set and uses OLD behavior. Use the
25# cmake_policy command to set it to OLD or NEW explicitly.
26#
27# Whenever our cmake_minimum_required version bumps up to 2.7 or 2.6.3, this policy setting can
28# hence be removed.
29if(POLICY CMP0011)
30 cmake_policy(SET CMP0011 NEW)
31endif(POLICY CMP0011)
32
33# Making releases:
34# set the new version number:
35# odd minor -> development series
36# even minor -> stable series
37# increment micro for each release within a series
38# set nano_version to 0
39# make the release, tag it
40# set nano_version to 1
41set(TP_QT_MAJOR_VERSION 0)
42set(TP_QT_MINOR_VERSION 9)
43set(TP_QT_MICRO_VERSION 3)
44set(TP_QT_NANO_VERSION 0)
45
46set(PACKAGE_NAME telepathy-qt)
47
48if (${TP_QT_NANO_VERSION} EQUAL 0)
49 set(PACKAGE_VERSION ${TP_QT_MAJOR_VERSION}.${TP_QT_MINOR_VERSION}.${TP_QT_MICRO_VERSION})
50else (${TP_QT_NANO_VERSION} EQUAL 0)
51 set(PACKAGE_VERSION ${TP_QT_MAJOR_VERSION}.${TP_QT_MINOR_VERSION}.${TP_QT_MICRO_VERSION}.${TP_QT_NANO_VERSION})
52endif (${TP_QT_NANO_VERSION} EQUAL 0)
53
54# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is
55# checked
56set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
57
58# Default build type is RelWithDebInfo for release versions and Debug for developement
59# versions
60if(NOT CMAKE_BUILD_TYPE)
61 if(TP_QT_NANO_VERSION EQUAL 0)
62 set(CMAKE_BUILD_TYPE RelWithDebInfo)
63 else(TP_QT_NANO_VERSION EQUAL 0)
64 set(CMAKE_BUILD_TYPE Debug)
65 endif(TP_QT_NANO_VERSION EQUAL 0)
66endif(NOT CMAKE_BUILD_TYPE)
67
68# This file contains all the needed initialization macros
69include(TelepathyDefaults)
70
71# This file contains all the tpqt macros used in the buildsystem
72include(TpQtMacros)
73
74include(MacroLogFeature)
75
76# external dependencies
77
78# Required dependencies
79# Find qt4 version >= 4.6 or qt5 >= 5.0.0
80set(QT4_MIN_VERSION "4.6.0")
81set(QT4_MAX_VERSION "5.0.0")
82set(QT5_MIN_VERSION "5.0.0")
83set(QT5_MAX_VERSION "6.0.0")
84find_package(Qt REQUIRED)
85
86foreach(flag ${QT_CONFIG_FLAGS})
87 if (${flag} MATCHES "reduce_relocations")
88 set(TP_QT_EXECUTABLE_LINKER_FLAGS "-fPIE")
89 set(TP_QT_LIBRARY_LINKER_FLAGS "-fPIC")
90 endif (${flag} MATCHES "reduce_relocations")
91endforeach(flag ${QT_CONFIG_FLAGS})
92
93# This value contains the library's SOVERSION. This value is to be increased everytime an API/ABI break
94# occurs, and will be used for the SOVERSION of the generated shared libraries.
95if (${QT_VERSION_MAJOR} EQUAL 4)
96 set(TP_QT_ABI_VERSION 2)
97else (${QT_VERSION_MAJOR} EQUAL 4)
98 set(TP_QT_ABI_VERSION 0)
99endif (${QT_VERSION_MAJOR} EQUAL 4)
100
101# This variable is used for the library's long version. It is generated dynamically, so don't change its
102# value! Change TP_QT_ABI_VERSION and TP_QT_*_VERSION instead.
103if (${TP_QT_NANO_VERSION} EQUAL 0)
104 set(TP_QT_LIBRARY_VERSION ${TP_QT_ABI_VERSION}.${TP_QT_MAJOR_VERSION}.${TP_QT_MINOR_VERSION}.${TP_QT_MICRO_VERSION})
105else (${TP_QT_NANO_VERSION} EQUAL 0)
106 set(TP_QT_LIBRARY_VERSION ${TP_QT_ABI_VERSION}.${TP_QT_MAJOR_VERSION}.${TP_QT_MINOR_VERSION}.${TP_QT_MICRO_VERSION}.${TP_QT_NANO_VERSION})
107endif (${TP_QT_NANO_VERSION} EQUAL 0)
108
109# Add an option for compiling tp-qt-service
110option(ENABLE_EXPERIMENTAL_SERVICE_SUPPORT "Enable compilation of experimental and unstable service side bindings for Telepathy-Qt" FALSE)
111# Add an option for compiling examples
112option(ENABLE_EXAMPLES "Enable compilation of examples for Telepathy-Qt" TRUE)
113# Add an option for compiling Farsight (disabled by default)
114option(ENABLE_FARSIGHT "Enable compilation of Farsight bindings (deprecated)" FALSE)
115# Add an option for compiling Farstream
116option(ENABLE_FARSTREAM "Enable compilation of Farstream bindings" TRUE)
117# Add an option for building tests
118option(ENABLE_TESTS "Enable compilation of automated tests" TRUE)
119
120if (ENABLE_EXPERIMENTAL_SERVICE_SUPPORT)
121 message(STATUS "You have enabled experimental service support for Telepathy-Qt. Be aware there are no guarantees of API stability yet for service-side classes.")
122endif (ENABLE_EXPERIMENTAL_SERVICE_SUPPORT)
123
124# The doxygen macro requires Qt to have been looked up to enable crosslinking
125include(Doxygen)
126
127include_directories(${CMAKE_SOURCE_DIR}
128 ${CMAKE_BINARY_DIR}
129 ${QT_INCLUDES})
130
131add_definitions(-DQT_NO_CAST_FROM_ASCII)
132
133set(ENABLE_DEBUG_OUTPUT ON CACHE BOOL "If activated, compiles support for printing debug output to stderr")
134if (ENABLE_DEBUG_OUTPUT)
135 add_definitions(-DENABLE_DEBUG)
136endif (ENABLE_DEBUG_OUTPUT)
137
138# Check for Qt Glib support
139include(CheckCXXSourceCompiles)
140set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES})
141set(CMAKE_REQUIRED_DEFINITIONS "")
142# set the flags (-fPIE) here so that CHECK_CXX_SOURCE_COMPILES works properly if qt5 was built with
143# -reduce-locations
144set(CMAKE_REQUIRED_FLAGS "${TP_QT_EXECUTABLE_LINKER_FLAGS}")
145
146CHECK_CXX_SOURCE_COMPILES("
147#include <QtCore/QtGlobal>
148int main()
149{
150#if defined(QT_NO_GLIB)
151#error \"Qt was compiled with Glib disabled\"
152#endif
153return 0;
154}"
155QT_GLIB_SUPPORT)
156macro_log_feature(QT_GLIB_SUPPORT "Qt Glib Support"
157 "QtCore library using Glib's main event loop"
158 "http://qt.nokia.com/" FALSE ""
159 "Needed, together with Telepathy-Glib, to build most of the unit tests")
160
161# reset flags
162set(CMAKE_REQUIRED_FLAGS "")
163
164# Find python version >= 2.5
165find_package(PythonLibrary REQUIRED)
166set(REQUIRED_PY 2.5)
167if(${PYTHON_SHORT_VERSION} VERSION_GREATER ${REQUIRED_PY} OR ${PYTHON_SHORT_VERSION} VERSION_EQUAL ${REQUIRED_PY})
168 message(STATUS "Python ${PYTHON_SHORT_VERSION} found")
169else(${PYTHON_SHORT_VERSION} VERSION_GREATER ${REQUIRED_PY} OR ${PYTHON_SHORT_VERSION} VERSION_EQUAL ${REQUIRED_PY})
170 message(SEND_ERROR "Python >= ${REQUIRED_PY} is required")
171endif(${PYTHON_SHORT_VERSION} VERSION_GREATER ${REQUIRED_PY} OR ${PYTHON_SHORT_VERSION} VERSION_EQUAL ${REQUIRED_PY})
172
173# Check for dbus-python
174execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import dbus.mainloop.glib"
175 RESULT_VARIABLE PYTHON_DBUS_RESULT)
176if(PYTHON_DBUS_RESULT EQUAL 0)
177 set(HAVE_TEST_PYTHON 1)
178else(PYTHON_DBUS_RESULT EQUAL 0)
179 set(HAVE_TEST_PYTHON 0)
180endif(PYTHON_DBUS_RESULT EQUAL 0)
181macro_log_feature(HAVE_TEST_PYTHON "dbus-python"
182 "GLib-based Python DBus support"
183 "http://www.python.org/" FALSE ""
184 "Needed to build some additional unit tests")
185
186if(ENABLE_TESTS OR ENABLE_FARSTREAM OR ENABLE_FARSIGHT)
187 # Find telepathy-glib
188 set(TELEPATHY_GLIB_MIN_VERSION 0.17.5)
189 find_package(TelepathyGlib)
190 macro_log_feature(TELEPATHYGLIB_FOUND "Telepathy-glib"
191 "Glib bindings for Telepathy"
192 "http://telepathy.freedesktop.org/" FALSE ${TELEPATHY_GLIB_MIN_VERSION}
193 "Needed, together with Qt Glib integration, to build most of the unit tests")
194
195 find_program(GLIB_GENMARSHAL glib-genmarshal)
196
197 # Find GLib2, GObject, DBus and LibXml2
198 # Those are needed for the insane include dir dependency hell
199 find_package(GLIB2)
200 find_package(GObject)
201 find_package(GIO)
202 find_package(GIOUnix)
203 find_package(DBus)
204 find_package(DBusGLib)
205 find_package(LibXml2)
206endif()
207
208if(ENABLE_FARSIGHT)
209 # Find tp-farsight
210 set(TELEPATHY_FARSIGHT_MIN_VERSION "0.0.4")
211 find_package(TelepathyFarsight)
212 macro_log_feature(TELEPATHYFARSIGHT_FOUND "Telepathy-Farsight"
213 "A Framework for dealing with audio/video conferencing protocols"
214 "http://farsight.freedesktop.org/wiki/" FALSE "${TELEPATHY_FARSIGHT_MIN_VERSION}"
215 "Needed, together with GStreamer, to build telepathy-qt-farsight and some additional examples")
216endif()
217
218if(ENABLE_FARSTREAM)
219 # Find tp-farstream
220 set(FARSTREAM_MIN_VERSION "0.1.0")
221 find_package(Farstream)
222 macro_log_feature(FARSTREAM_FOUND "Farstream"
223 "A Framework for dealing with audio/video conferencing protocols"
224 "http://www.freedesktop.org/wiki/Software/Farstream" FALSE "${FARSTREAM_MIN_VERSION}"
225 "Needed, together with GStreamer and Telepathy-Farstream, to build telepathy-qt-farstream")
226
227 # Find tp-farstream
228 set(TELEPATHY_FARSTREAM_MIN_VERSION "0.2.2")
229 find_package(TelepathyFarstream)
230 macro_log_feature(TELEPATHYFARSTREAM_FOUND "Telepathy-Farstream"
231 "A Framework for dealing with audio/video conferencing protocols"
232 "http://telepathy.freedesktop.org/wiki/" FALSE "${TELEPATHY_FARSTREAM_MIN_VERSION}"
233 "Needed, together with GStreamer and Farstream, to build telepathy-qt-farstream")
234endif()
235
236if(ENABLE_FARSTREAM OR ENABLE_FARSIGHT)
237 # Find GStreamer
238 find_package(GStreamer)
239 macro_log_feature(GSTREAMER_FOUND "GStreamer"
240 "An open source multimedia framework"
241 "Needed, together with Tp-Farsight, to build telepathy-qt-farsight and some additional examples"
242 "http://www.gstreamer.net/" FALSE)
243endif()
244
245# Build TelepathyQt-Farsight only if GStreamer, TelepathyFarsight and all of their dependencies were found
246if (TELEPATHYFARSIGHT_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND AND TELEPATHYGLIB_FOUND AND ENABLE_FARSIGHT)
247 set (FARSIGHT_COMPONENTS_FOUND 1)
248else (TELEPATHYFARSIGHT_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND AND TELEPATHYGLIB_FOUND AND ENABLE_FARSIGHT)
249 set (FARSIGHT_COMPONENTS_FOUND 0)
250endif (TELEPATHYFARSIGHT_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND AND TELEPATHYGLIB_FOUND AND ENABLE_FARSIGHT)
251
252# Build TelepathyQt-Farstream only if GStreamer, TelepathyFarstream and all of their dependencies were found
253if (TELEPATHYFARSTREAM_FOUND AND FARSTREAM_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND AND TELEPATHYGLIB_FOUND AND ENABLE_FARSTREAM)
254 set (FARSTREAM_COMPONENTS_FOUND 1)
255else (TELEPATHYFARSTREAM_FOUND AND FARSTREAM_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND AND TELEPATHYGLIB_FOUND AND ENABLE_FARSTREAM)
256 set (FARSTREAM_COMPONENTS_FOUND 0)
257endif (TELEPATHYFARSTREAM_FOUND AND FARSTREAM_FOUND AND GSTREAMER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND AND DBUS_FOUND AND LIBXML2_FOUND AND TELEPATHYGLIB_FOUND AND ENABLE_FARSTREAM)
258
259if (ENABLE_TESTS)
260 # Enable glib-based tests only if Qt has GLib support and Telepathy-glib was found
261 if(QT_GLIB_SUPPORT AND TELEPATHYGLIB_FOUND AND GLIB2_FOUND AND DBUS_FOUND)
262 # Disable GLib deprecation warnings for now; GValueArray is deprecated but we
263 # need it for telepathy-glib.
264 add_definitions(-DGLIB_DISABLE_DEPRECATION_WARNINGS)
265 set(ENABLE_TP_GLIB_TESTS 1)
266 if(GIO_FOUND AND GIOUNIX_FOUND)
267 set(ENABLE_TP_GLIB_GIO_TESTS 1)
268 else(GIO_FOUND AND GIOUNIX_FOUND)
269 set(ENABLE_TP_GLIB_GIO_TESTS 0)
270 endif(GIO_FOUND AND GIOUNIX_FOUND)
271 else(QT_GLIB_SUPPORT AND TELEPATHYGLIB_FOUND AND GLIB2_FOUND AND DBUS_FOUND)
272 set(ENABLE_TP_GLIB_TESTS 0)
273 set(ENABLE_TP_GLIB_GIO_TESTS 0)
274 endif(QT_GLIB_SUPPORT AND TELEPATHYGLIB_FOUND AND GLIB2_FOUND AND DBUS_FOUND)
275endif(ENABLE_TESTS)
276
277# Add the source subdirectories
278add_subdirectory(TelepathyQt)
279if(ENABLE_EXAMPLES)
280 add_subdirectory(examples)
281endif()
282if(ENABLE_TESTS)
283 add_subdirectory(tests)
284endif()
285add_subdirectory(tools)
286
287# Generate config.h and config-version.h
288configure_file(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h)
289configure_file(${CMAKE_SOURCE_DIR}/config-version.h.in ${CMAKE_BINARY_DIR}/config-version.h)
290
291# Create the uninstall target
292configure_file(
293 "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
294 "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
295 IMMEDIATE @ONLY)
296
297add_custom_target(uninstall
298 "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
299
300# Display the feature log
301macro_display_feature_log()
302
303# Always keep it last: CPack definitions file
304include(TelepathyDist)
3050
=== removed directory '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt'
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/CMakeLists.txt'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/CMakeLists.txt 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,1007 +0,0 @@
1file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_gen")
2
3# Set the required flags found in TelepathyDefaults
4set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VISIBILITY_HIDDEN_FLAGS} ${COMPILER_COVERAGE_FLAGS} ${DEPRECATED_DECLARATIONS_FLAGS}")
5set(LD_FLAGS "${LD_FLAGS} ${VISIBILITY_HIDDEN_FLAGS} ${COMPILER_COVERAGE_FLAGS} ${DEPRECATED_DECLARATIONS_FLAGS}")
6
7# We are building Telepathy-Qt
8add_definitions(-DBUILDING_TP_QT)
9
10# Sources for Tp-Qt
11set(telepathy_qt_SRCS
12 abstract-client.cpp
13 abstract-interface.cpp
14 account.cpp
15 account-factory.cpp
16 account-manager.cpp
17 account-property-filter.cpp
18 account-set.cpp
19 account-set-internal.h
20 avatar.cpp
21 call-channel.cpp
22 call-content.cpp
23 call-stream.cpp
24 capabilities-base.cpp
25 call-content.cpp
26 call-content-media-description.cpp
27 call-stream.cpp
28 call-stream-endpoint.cpp
29 captcha.cpp
30 captcha-authentication.cpp
31 channel.cpp
32 channel-class-spec.cpp
33 channel-dispatcher.cpp
34 channel-dispatch-operation.cpp
35 channel-factory.cpp
36 channel-internal.h
37 channel-request.cpp
38 client.cpp
39 client-registrar.cpp
40 client-registrar-internal.h
41 connection.cpp
42 connection-capabilities.cpp
43 connection-factory.cpp
44 connection-internal.h
45 connection-manager.cpp
46 connection-manager-internal.h
47 contact.cpp
48 contact-capabilities.cpp
49 contact-factory.cpp
50 contact-manager.cpp
51 contact-manager-roster.cpp
52 contact-messenger.cpp
53 contact-search-channel.cpp
54 dbus.cpp
55 dbus-proxy.cpp
56 dbus-proxy-factory.cpp
57 dbus-proxy-factory-internal.h
58 dbus-tube-channel.cpp
59 debug.cpp
60 debug-receiver.cpp
61 debug-internal.h
62 fake-handler-manager-internal.cpp
63 fake-handler-manager-internal.h
64 feature.cpp
65 file-transfer-channel.cpp
66 file-transfer-channel-creation-properties.cpp
67 fixed-feature-factory.cpp
68 future.cpp
69 future-internal.h
70 handled-channel-notifier.cpp
71 incoming-dbus-tube-channel.cpp
72 incoming-file-transfer-channel.cpp
73 incoming-stream-tube-channel.cpp
74 key-file.cpp
75 key-file.h
76 location-info.cpp
77 manager-file.cpp
78 manager-file.h
79 media-session-handler.cpp
80 media-stream-handler.cpp
81 message.cpp
82 message-content-part.cpp
83 object.cpp
84 optional-interface-factory.cpp
85 outgoing-dbus-tube-channel.cpp
86 outgoing-file-transfer-channel.cpp
87 outgoing-stream-tube-channel.cpp
88 pending-account.cpp
89 pending-captchas.cpp
90 pending-channel.cpp
91 pending-channel-request.cpp
92 pending-channel-request-internal.h
93 pending-connection.cpp
94 pending-contact-attributes.cpp
95 pending-contact-info.cpp
96 pending-contacts.cpp
97 pending-dbus-tube-connection.cpp
98 pending-debug-message-list.cpp
99 pending-handles.cpp
100 pending-operation.cpp
101 pending-ready.cpp
102 pending-send-message.cpp
103 pending-string.cpp
104 pending-string-list.cpp
105 pending-stream-tube-connection.cpp
106 pending-variant.cpp
107 presence.cpp
108 pending-variant-map.cpp
109 profile.cpp
110 profile-manager.cpp
111 properties.cpp
112 protocol-info.cpp
113 protocol-parameter.cpp
114 readiness-helper.cpp
115 requestable-channel-class-spec.cpp
116 ready-object.cpp
117 referenced-handles.cpp
118 request-temporary-handler-internal.cpp
119 request-temporary-handler-internal.h
120 room-list-channel.cpp
121 server-authentication-channel.cpp
122 simple-call-observer.cpp
123 simple-observer.cpp
124 simple-observer-internal.h
125 simple-stream-tube-handler.cpp
126 simple-text-observer.cpp
127 simple-text-observer-internal.h
128 stream-tube-channel.cpp
129 stream-tube-client.cpp
130 stream-tube-client-internal.h
131 stream-tube-server.cpp
132 stream-tube-server-internal.h
133 streamed-media-channel.cpp
134 text-channel.cpp
135 tls-certificate.cpp
136 tube-channel.cpp
137 types.cpp
138 types-internal.h
139 utils.cpp)
140
141# Exported headers for Tp-Qt
142set(telepathy_qt_HEADERS
143 AbstractClient
144 AbstractClientApprover
145 abstract-client.h
146 AbstractClientHandler
147 AbstractClientObserver
148 AbstractInterface
149 abstract-interface.h
150 Account
151 account.h
152 AccountCapabilityFilter
153 account-capability-filter.h
154 AccountFactory
155 account-factory.h
156 AccountFilter
157 account-filter.h
158 AccountInterface
159 AccountInterfaceAddressingInterface
160 AccountInterfaceAvatarInterface
161 AccountInterfaceStorageInterface
162 AccountManager
163 account-manager.h
164 AccountManagerInterface
165 account-property-filter.h
166 AccountPropertyFilter
167 AccountSet
168 account-set.h
169 AndFilter
170 and-filter.h
171 AuthenticationTLSCertificateInterface
172 AvatarData
173 AvatarSpec
174 avatar.h
175 CallChannel
176 call-channel.h
177 Callbacks
178 callbacks.h
179 CallContent
180 CallContentInterface
181 CallContentInterfaceAudioControlInterface
182 CallContentInterfaceDTMFInterface
183 CallContentInterfaceMediaInterface
184 CallContentInterfaceVideoControlInterface
185 call-content.h
186 CallContentMediaDescription
187 CallContentMediaDescriptionInterface
188 CallContentMediaDescriptionInterfaceRTCPExtendedReportsInterface
189 CallContentMediaDescriptionInterfaceRTCPFeedbackInterface
190 CallContentMediaDescriptionInterfaceRTPHeaderExtensionsInterface
191 call-content-media-description.h
192 CallStream
193 CallStreamInterface
194 CallStreamInterfaceMediaInterface
195 call-stream.h
196 CallStreamEndpoint
197 CallStreamEndpoint
198 CallStreamEndpointInterface
199 call-stream-endpoint.h
200 CapabilitiesBase
201 capabilities-base.h
202 Captcha
203 captcha.h
204 CaptchaAuthentication
205 captcha-authentication.h
206 Channel
207 channel.h
208 ChannelClassFeatures
209 channel-class-features.h
210 ChannelClassSpec
211 ChannelClassSpecList
212 channel-class-spec.h
213 ChannelDispatcher
214 ChannelDispatcherInterface
215 channel-dispatcher.h
216 ChannelDispatchOperation
217 channel-dispatch-operation.h
218 ChannelDispatchOperationInterface
219 ChannelFactory
220 channel-factory.h
221 ChannelInterface
222 ChannelInterfaceAnonymityInterface
223 ChannelInterfaceCaptchaAuthenticationInterface
224 ChannelInterfaceCallStateInterface
225 ChannelInterfaceChatStateInterface
226 ChannelInterfaceConferenceInterface
227 ChannelInterfaceDestroyableInterface
228 ChannelInterfaceDTMFInterface
229 ChannelInterfaceFileTransferMetadataInterface
230 ChannelInterfaceGroupInterface
231 ChannelInterfaceHoldInterface
232 ChannelInterfaceMediaSignallingInterface
233 ChannelInterfaceMessagesInterface
234 ChannelInterfacePasswordInterface
235 ChannelInterfaceSASLAuthenticationInterface
236 ChannelInterfaceSecurableInterface
237 ChannelInterfaceServicePointInterface
238 ChannelInterfaceSMSInterface
239 ChannelInterfaceTubeInterface
240 ChannelRequest
241 ChannelRequestHints
242 channel-request.h
243 ChannelRequestInterface
244 ChannelTypeCallInterface
245 ChannelTypeContactListInterface
246 ChannelTypeContactSearchInterface
247 ChannelTypeDBusTubeInterface
248 ChannelTypeFileTransferInterface
249 ChannelTypeRoomListInterface
250 ChannelTypeServerAuthenticationInterface
251 ChannelTypeServerTLSConnectionInterface
252 ChannelTypeStreamedMediaInterface
253 ChannelTypeStreamTubeInterface
254 ChannelTypeTextInterface
255 ChannelTypeTubeInterface
256 ChannelTypeTubesInterface
257 Client
258 ClientApproverInterface
259 client.h
260 ClientHandlerInterface
261 ClientInterface
262 ClientInterfaceRequestsInterface
263 ClientObserverInterface
264 ClientRegistrar
265 client-registrar.h
266 Connection
267 ConnectionCapabilities
268 connection-capabilities.h
269 connection.h
270 ConnectionFactory
271 connection-factory.h
272 connection-lowlevel.h
273 ConnectionInterface
274 ConnectionInterfaceAddressingInterface
275 ConnectionInterfaceAliasingInterface
276 ConnectionInterfaceAnonymityInterface
277 ConnectionInterfaceAvatarsInterface
278 ConnectionInterfaceBalanceInterface
279 ConnectionInterfaceCapabilitiesInterface
280 ConnectionInterfaceCellularInterface
281 ConnectionInterfaceContactBlockingInterface
282 ConnectionInterfaceClientTypesInterface
283 ConnectionInterfaceContactCapabilitiesInterface
284 ConnectionInterfaceContactGroupsInterface
285 ConnectionInterfaceContactInfoInterface
286 ConnectionInterfaceContactListInterface
287 ConnectionInterfaceContactsInterface
288 ConnectionInterfaceLocationInterface
289 ConnectionInterfaceMailNotificationInterface
290 ConnectionInterfacePowerSavingInterface
291 ConnectionInterfacePresenceInterface
292 ConnectionInterfaceRequestsInterface
293 ConnectionInterfaceServicePointInterface
294 ConnectionInterfaceSimplePresenceInterface
295 ConnectionLowlevel
296 ConnectionManager
297 connection-manager.h
298 connection-manager-lowlevel.h
299 ConnectionManagerInterface
300 ConnectionManagerLowlevel
301 Constants
302 constants.h
303 Contact
304 contact.h
305 ContactCapabilities
306 contact-capabilities.h
307 ContactFactory
308 contact-factory.h
309 ContactManager
310 contact-manager.h
311 ContactMessenger
312 contact-messenger.h
313 ContactSearchChannel
314 contact-search-channel.h
315 DBus
316 DBusDaemonInterface
317 dbus.h
318 DBusProxy
319 dbus-proxy.h
320 DBusProxyFactory
321 dbus-proxy-factory.h
322 DBusTubeChannel
323 dbus-tube-channel.h
324 Debug
325 debug.h
326 DebugReceiver
327 debug-receiver.h
328 Feature
329 Features
330 feature.h
331 FileTransferChannel
332 FileTransferChannelCreationProperties
333 file-transfer-channel-creation-properties.h
334 file-transfer-channel.h
335 Filter
336 filter.h
337 FixedFeatureFactory
338 fixed-feature-factory.h
339 Functors
340 functors.h
341 GenericCapabilityFilter
342 generic-capability-filter.h
343 GenericPropertyFilter
344 generic-property-filter.h
345 Global
346 global.h
347 HandledChannelNotifier
348 handled-channel-notifier.h
349 IncomingDBusTubeChannel
350 incoming-dbus-tube-channel.h
351 IncomingFileTransferChannel
352 incoming-file-transfer-channel.h
353 IncomingStreamTubeChannel
354 incoming-stream-tube-channel.h
355 IntrospectableInterface
356 LocationInfo
357 location-info.h
358 MediaSessionHandler
359 media-session-handler.h
360 MediaSessionHandlerInterface
361 MediaStreamHandler
362 media-stream-handler.h
363 MediaStreamHandlerInterface
364 Message
365 message.h
366 MessageContentPart
367 MessageContentPartList
368 message-content-part.h
369 MethodInvocationContext
370 method-invocation-context.h
371 NotFilter
372 not-filter.h
373 Object
374 object.h
375 OptionalInterfaceFactory
376 optional-interface-factory.h
377 OrFilter
378 or-filter.h
379 OutgoingDBusTubeChannel
380 outgoing-dbus-tube-channel.h
381 OutgoingFileTransferChannel
382 outgoing-file-transfer-channel.h
383 OutgoingStreamTubeChannel
384 outgoing-stream-tube-channel.h
385 PeerInterface
386 PendingAccount
387 pending-account.h
388 PendingCallContent
389 PendingCaptchas
390 pending-captchas.h
391 PendingChannel
392 pending-channel.h
393 PendingChannelRequest
394 pending-channel-request.h
395 PendingComposite
396 PendingConnection
397 pending-connection.h
398 PendingContactAttributes
399 pending-contact-attributes.h
400 PendingContactInfo
401 pending-contact-info.h
402 PendingContacts
403 pending-contacts.h
404 PendingDBusTubeConnection
405 pending-dbus-tube-connection.h
406 PendingDebugMessageList
407 pending-debug-message-list.h
408 PendingFailure
409 PendingHandles
410 pending-handles.h
411 PendingOperation
412 pending-operation.h
413 PendingReady
414 pending-ready.h
415 PendingSendMessage
416 pending-send-message.h
417 PendingStreamedMediaStreams
418 PendingStreamTubeConnection
419 pending-stream-tube-connection.h
420 PendingString
421 pending-string.h
422 PendingStringList
423 pending-string-list.h
424 PendingSuccess
425 PendingVariant
426 pending-variant.h
427 PendingVariantMap
428 pending-variant-map.h
429 PendingVoid
430 Presence
431 presence.h
432 PresenceSpec
433 PresenceSpecList
434 Profile
435 profile.h
436 ProfileManager
437 profile-manager.h
438 Properties
439 properties.h
440 PropertiesInterface
441 PropertiesInterfaceInterface
442 ProtocolInfo
443 ProtocolInfoList
444 protocol-info.h
445 ProtocolInterface
446 ProtocolInterfaceAddressingInterface
447 ProtocolInterfaceAvatarsInterface
448 ProtocolInterfacePresenceInterface
449 ProtocolParameter
450 ProtocolParameterList
451 protocol-parameter.h
452 ReadinessHelper
453 readiness-helper.h
454 ReadyObject
455 ready-object.h
456 ReceivedMessage
457 RefCounted
458 ReferencedHandles
459 referenced-handles.h
460 ReferencedHandlesIterator
461 requestable-channel-class-spec.h
462 RequestableChannelClassSpec
463 RequestableChannelClassSpecList
464 RoomListChannel
465 room-list-channel.h
466 ServerAuthenticationChannel
467 server-authentication-channel.h
468 SharedPtr
469 shared-ptr.h
470 SimpleCallObserver
471 simple-call-observer.h
472 SimpleObserver
473 simple-observer.h
474 simple-pending-operations.h
475 SimpleTextObserver
476 simple-text-observer.h
477 StatefulDBusProxy
478 StatelessDBusProxy
479 StreamTubeChannel
480 StreamTubeClient
481 StreamTubeServer
482 stream-tube-channel.h
483 stream-tube-client.h
484 stream-tube-server.h
485 StreamedMediaChannel
486 streamed-media-channel.h
487 StreamedMediaStream
488 TextChannel
489 text-channel.h
490 tls-certificate.h
491 TubeChannel
492 tube-channel.h
493 Types
494 types.h
495 Utils
496 utils.h
497 SharedPtr)
498
499# Generated headers which will be installed and exported
500set(telepathy_qt_gen_HEADERS
501 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-account.h
502 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-account-manager.h
503 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-content.h
504 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-content-media-description.h
505 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-stream.h
506 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-call-stream-endpoint.h
507 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel.h
508 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel-dispatcher.h
509 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel-dispatch-operation.h
510 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-channel-request.h
511 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-client.h
512 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection.h
513 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-connection-manager.h
514 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-dbus.h
515 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-debug-receiver.h
516 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-media-session-handler.h
517 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-media-stream-handler.h
518 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-properties.h
519 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-tls-certificate.h
520 ${CMAKE_CURRENT_BINARY_DIR}/_gen/constants.h
521 ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h)
522
523# Headers file moc will be run on
524set(telepathy_qt_MOC_SRCS
525 abstract-interface.h
526 account.h
527 account-factory.h
528 account-manager.h
529 account-set.h
530 account-set-internal.h
531 call-channel.h
532 call-content.h
533 call-stream.h
534 captcha-authentication.h
535 captcha-authentication-internal.h
536 channel.h
537 channel-dispatch-operation.h
538 channel-dispatch-operation-internal.h
539 channel-factory.h
540 channel-internal.h
541 channel-request.h
542 client-registrar.h
543 client-registrar-internal.h
544 connection.h
545 connection-internal.h
546 connection-lowlevel.h
547 connection-manager.h
548 connection-manager-internal.h
549 connection-manager-lowlevel.h
550 contact.h
551 contact-manager.h
552 contact-manager-internal.h
553 contact-messenger.h
554 contact-search-channel.h
555 contact-search-channel-internal.h
556 dbus-proxy.h
557 dbus-proxy-factory.h
558 dbus-proxy-factory-internal.h
559 debug-receiver.h
560 dbus-tube-channel.h
561 fake-handler-manager-internal.h
562 file-transfer-channel.h
563 fixed-feature-factory.h
564 handled-channel-notifier.h
565 incoming-dbus-tube-channel.h
566 incoming-file-transfer-channel.h
567 incoming-stream-tube-channel.h
568 object.h
569 outgoing-dbus-tube-channel.h
570 outgoing-file-transfer-channel.h
571 outgoing-stream-tube-channel.h
572 outgoing-stream-tube-channel-internal.h
573 pending-account.h
574 pending-captchas.h
575 pending-channel.h
576 pending-channel-request.h
577 pending-channel-request-internal.h
578 pending-connection.h
579 pending-contact-attributes.h
580 pending-contact-info.h
581 pending-contacts.h
582 pending-contacts-internal.h
583 pending-dbus-tube-connection.h
584 pending-debug-message-list.h
585 pending-handles.h
586 pending-operation.h
587 pending-ready.h
588 pending-send-message.h
589 pending-stream-tube-connection.h
590 pending-string.h
591 pending-string-list.h
592 pending-variant.h
593 pending-variant-map.h
594 profile-manager.h
595 readiness-helper.h
596 request-temporary-handler-internal.h
597 room-list-channel.h
598 server-authentication-channel.h
599 simple-call-observer.h
600 simple-pending-operations.h
601 simple-observer.h
602 simple-observer-internal.h
603 simple-stream-tube-handler.h
604 simple-text-observer.h
605 simple-text-observer-internal.h
606 stream-tube-channel.h
607 stream-tube-client.h
608 stream-tube-client-internal.h
609 stream-tube-server.h
610 stream-tube-server-internal.h
611 streamed-media-channel.h
612 text-channel.h
613 tube-channel.h)
614
615# Sources for test library, used by tests to test some unexported functionality
616set(telepathy_qt_test_backdoors_SRCS
617 key-file.cpp
618 manager-file.cpp
619 test-backdoors.cpp
620 utils.cpp)
621
622# Generate the spec files for both stable and future spec
623set(gen_stable_spec_xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/stable-spec.xml)
624set(gen_future_spec_xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-spec.xml)
625
626tpqt_xincludator(stable-ifaces-includator ${CMAKE_CURRENT_SOURCE_DIR}/stable-interfaces.xml ${gen_stable_spec_xml})
627tpqt_xincludator(future-ifaces-includator ${CMAKE_CURRENT_SOURCE_DIR}/future-interfaces.xml ${gen_future_spec_xml})
628
629add_custom_target(all-generated-sources)
630
631tpqt_constants_gen(stable-constants ${gen_stable_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/constants.h
632 --namespace=Tp
633 --define-prefix=TP_QT_
634 --must-define=IN_TP_QT_HEADER
635 DEPENDS stable-ifaces-includator)
636tpqt_constants_gen(future-constants ${gen_future_spec_xml} ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-constants.h
637 --namespace=TpFuture
638 --define-prefix=TP_QT_FUTURE_
639 DEPENDS future-ifaces-includator)
640
641tpqt_types_gen(stable-typesgen ${gen_stable_spec_xml}
642 ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/types-body.hpp
643 Tp TelepathyQt/types.h TelepathyQt/Types
644 --must-define=IN_TP_QT_HEADER
645 --visibility=TP_QT_EXPORT
646 DEPENDS stable-constants)
647tpqt_types_gen(future-typesgen ${gen_future_spec_xml}
648 ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types.h ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types-body.hpp
649 TpFuture TelepathyQt/future-internal.h TelepathyQt/future-internal.h
650 DEPENDS future-constants)
651
652# Add the generated types to the library's sources
653list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/types.h)
654list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/types-body.hpp)
655list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-constants.h)
656list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types.h)
657list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-types-body.hpp)
658
659# For each spec, both stable and future, generate a cli file and add it to the sources (including mocs).
660set(SPECS
661 account
662 account-manager
663 call-content
664 call-content-media-description
665 call-stream
666 call-stream-endpoint
667 channel
668 channel-dispatcher
669 channel-dispatch-operation
670 channel-request
671 client
672 connection
673 connection-manager
674 dbus
675 debug-receiver
676 media-session-handler
677 media-stream-handler
678 properties
679 tls-certificate)
680foreach(spec ${SPECS})
681 tpqt_xincludator(${spec}-spec-xincludator ${CMAKE_CURRENT_SOURCE_DIR}/${spec}.xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/spec-${spec}.xml
682 DEPENDS stable-typesgen)
683 set(NEW_FILES
684 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}-body.hpp
685 ${CMAKE_CURRENT_BINARY_DIR}/_gen/cli-${spec}.moc.hpp)
686 list(APPEND telepathy_qt_SRCS ${NEW_FILES})
687 list(APPEND telepathy_qt_generated_specs_mocs "moc-cli-${spec}.moc.hpp")
688 set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true)
689endforeach(spec ${SPECS})
690
691set(FUTURE_SPECS
692 channel
693 channel-dispatcher
694 misc)
695foreach(spec ${FUTURE_SPECS})
696 tpqt_xincludator(${spec}-future-xincludator ${CMAKE_CURRENT_SOURCE_DIR}/future-${spec}.xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.xml
697 DEPENDS stable-typesgen future-typesgen)
698 set(NEW_FILES
699 ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.h
700 ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}-body.hpp
701 ${CMAKE_CURRENT_BINARY_DIR}/_gen/future-${spec}.moc.hpp)
702 list(APPEND telepathy_qt_SRCS ${NEW_FILES})
703 list(APPEND telepathy_qt_generated_specs_mocs "moc-future-${spec}.moc.hpp")
704 set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true)
705endforeach(spec ${FUTURE_SPECS})
706
707# The escape character in MSVC is ^
708if(MSVC)
709 set(TYPES_INCLUDE ^<TelepathyQt/Types^> )
710else(MSVC)
711 set(TYPES_INCLUDE '<TelepathyQt/Types>' )
712endif(MSVC)
713
714# Use the client generator for generating headers out of specs
715tpqt_client_generator(account clientaccount AccountManager Tp::Client --mainiface=Tp::Client::AccountInterface DEPENDS account-spec-xincludator)
716tpqt_client_generator(account-manager clientam AccountManager Tp::Client --mainiface=Tp::Client::AccountManagerInterface DEPENDS account-manager-spec-xincludator)
717tpqt_client_generator(call-content clientcall CallContent Tp::Client --mainiface=Tp::Client::CallContentInterface DEPENDS call-content-spec-xincludator)
718tpqt_client_generator(call-content-media-description clientcall CallContentMediaDescriptionInterface Tp::Client --mainiface=Tp::Client::CallContentMediaDescriptionInterface DEPENDS call-content-media-description-spec-xincludator)
719tpqt_client_generator(call-stream clientcall CallStream Tp::Client --mainiface=Tp::Client::CallStreamInterface DEPENDS call-stream-spec-xincludator)
720tpqt_client_generator(call-stream-endpoint clientcall CallStreamEndpoint Tp::Client --mainiface=Tp::Client::CallStreamEndpointInterface DEPENDS call-stream-endpoint-spec-xincludator)
721tpqt_client_generator(channel clientchannel Channel Tp::Client --mainiface=Tp::Client::ChannelInterface DEPENDS channel-spec-xincludator)
722tpqt_client_generator(channel-dispatcher clientchanneldispatcher ChannelDispatcher Tp::Client --mainiface=Tp::Client::ChannelDispatcherInterface DEPENDS channel-dispatcher-spec-xincludator)
723tpqt_client_generator(channel-dispatch-operation clientchanneldispatchoperation ChannelDispatchOperation Tp::Client --mainiface=Tp::Client::ChannelDispatchOperationInterface DEPENDS channel-dispatch-operation-spec-xincludator)
724tpqt_client_generator(channel-request clientchannelrequest ChannelRequest Tp::Client --mainiface=Tp::Client::ChannelRequestInterface DEPENDS channel-request-spec-xincludator)
725tpqt_client_generator(client clientclient Client Tp::Client --mainiface=Tp::Client::ClientInterface DEPENDS client-spec-xincludator)
726tpqt_client_generator(connection clientconn Connection Tp::Client --mainiface=Tp::Client::ConnectionInterface DEPENDS connection-spec-xincludator)
727tpqt_client_generator(connection-manager clientcm ConnectionManager Tp::Client --mainiface=Tp::Client::ConnectionManagerInterface DEPENDS connection-manager-spec-xincludator)
728tpqt_client_generator(dbus clientdbus DBus Tp::Client::DBus DEPENDS dbus-spec-xincludator)
729tpqt_client_generator(debug-receiver clientdebug DebugReceiver Tp::Client --mainiface=Tp::Client::DebugInterface DEPENDS debug-receiver-spec-xincludator)
730tpqt_client_generator(media-session-handler clientmsesh MediaSessionHandler Tp::Client --mainiface=Tp::Client::MediaSessionHandlerInterface DEPENDS media-session-handler-spec-xincludator)
731tpqt_client_generator(media-stream-handler clientmstrh MediaStreamHandler Tp::Client --mainiface=Tp::Client::MediaStreamHandlerInterface DEPENDS media-stream-handler-spec-xincludator)
732tpqt_client_generator(properties clientprops Properties Tp::Client DEPENDS properties-spec-xincludator)
733tpqt_client_generator(tls-certificate clienttls TLSCertificate Tp::Client DEPENDS tls-certificate-spec-xincludator)
734
735tpqt_future_client_generator(channel TpFuture::Client --mainiface=Tp::Client::ChannelInterface DEPENDS channel-future-xincludator)
736tpqt_future_client_generator(channel-dispatcher TpFuture::Client --mainiface=Tp::Client::ChannelDispatcherInterface DEPENDS channel-dispatcher-future-xincludator)
737tpqt_future_client_generator(misc TpFuture::Client DEPENDS misc-future-xincludator)
738
739if (TARGET doxygen-doc)
740 add_dependencies(doxygen-doc all-generated-sources)
741endif (TARGET doxygen-doc)
742
743# Create the library
744if (ENABLE_COMPILER_COVERAGE)
745 add_library(telepathy-qt${QT_VERSION_MAJOR} STATIC ${telepathy_qt_SRCS})
746else (ENABLE_COMPILER_COVERAGE)
747 add_library(telepathy-qt${QT_VERSION_MAJOR} SHARED ${telepathy_qt_SRCS})
748endif (ENABLE_COMPILER_COVERAGE)
749
750# Library used by tests to test some unexported functionality
751add_library(telepathy-qt-test-backdoors STATIC ${telepathy_qt_test_backdoors_SRCS})
752add_dependencies(telepathy-qt-test-backdoors stable-constants)
753add_dependencies(telepathy-qt-test-backdoors stable-typesgen)
754
755# generate client moc files
756foreach(moc_src ${telepathy_qt_MOC_SRCS})
757 set(generated_file _gen/${moc_src})
758 string(REPLACE ".h" ".moc.hpp" generated_file ${generated_file})
759 tpqt_generate_moc_i_target_deps(${CMAKE_CURRENT_SOURCE_DIR}/${moc_src} ${CMAKE_CURRENT_BINARY_DIR}/${generated_file}
760 ${telepathy_qt_generated_specs_mocs})
761 list(APPEND telepathy_qt_SRCS ${CMAKE_CURRENT_BINARY_DIR}/${generated_file})
762 string(REPLACE ".h" ".moc.hpp" moc_src ${moc_src})
763 add_dependencies(telepathy-qt${QT_VERSION_MAJOR} "moc-${moc_src}")
764endforeach(moc_src ${telepathy_qt_MOC_SRCS})
765
766# Link
767target_link_libraries(telepathy-qt${QT_VERSION_MAJOR}
768 ${QT_QTCORE_LIBRARY}
769 ${QT_QTDBUS_LIBRARY}
770 ${QT_QTNETWORK_LIBRARY}
771 ${QT_QTXML_LIBRARY}
772 ${TP_QT_LIBRARY_LINKER_FLAGS})
773
774# Link - Library used by tests to test some unexported functionality
775target_link_libraries(telepathy-qt-test-backdoors
776 ${QT_QTCORE_LIBRARY}
777 ${QT_QTDBUS_LIBRARY}
778 ${QT_QTNETWORK_LIBRARY}
779 ${QT_QTXML_LIBRARY}
780 ${TP_QT_LIBRARY_LINKER_FLAGS})
781
782if (ENABLE_COMPILER_COVERAGE)
783 target_link_libraries(telepathy-qt${QT_VERSION_MAJOR} gcov)
784 target_link_libraries(telepathy-qt-test-backdoors gcov)
785endif (ENABLE_COMPILER_COVERAGE)
786
787# Set the correct version number
788set_target_properties(telepathy-qt${QT_VERSION_MAJOR} PROPERTIES
789 SOVERSION ${TP_QT_ABI_VERSION}
790 VERSION ${TP_QT_LIBRARY_VERSION})
791
792
793# Install header files
794install(FILES ${telepathy_qt_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt COMPONENT headers)
795install(FILES ${telepathy_qt_gen_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt/_gen COMPONENT headers)
796
797# Install the library - watch out for the correct components
798if (WIN32)
799 install(TARGETS telepathy-qt${QT_VERSION_MAJOR}
800 EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets
801 RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT mainlibrary
802 ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT libs)
803else (WIN32)
804 install(TARGETS telepathy-qt${QT_VERSION_MAJOR}
805 EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets
806 LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT mainlibrary
807 ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT libs)
808endif (WIN32)
809
810# pkg-config files, only if we are not using windows
811if (NOT WIN32)
812 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQt.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}.pc)
813 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQt-uninstalled.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}-uninstalled.pc)
814 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig COMPONENT pkgconfig)
815endif (NOT WIN32)
816
817# CMake Version and config files
818include(MacroWriteBasicCMakeVersionFile)
819
820# all the following variables are put into TelepathyQt*Config.cmake, so
821# they are usable by projects using TelepathyQt.
822make_install_path_absolute(TELEPATHY_QT_INCLUDE_DIR ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR})
823make_install_path_absolute(TELEPATHY_QT_LIB_DIR ${LIB_INSTALL_DIR})
824make_install_path_absolute(TELEPATHY_QT_DATA_DIR ${DATA_INSTALL_DIR})
825
826# Configure the actual Config file
827configure_file(TelepathyQtConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Config.cmake" @ONLY)
828
829# this file is used by to check if the installed version can be used.
830macro_write_basic_cmake_version_file(${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ConfigVersion.cmake
831 ${PACKAGE_VERSION})
832
833# Find out the correct installation directory
834if (USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
835 set(_TelepathyQtConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/TelepathyQt${QT_VERSION_MAJOR})
836else (USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
837 set(_TelepathyQtConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/TelepathyQt${QT_VERSION_MAJOR}/cmake)
838endif (USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
839
840install(EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets
841 DESTINATION ${_TelepathyQtConfig_INSTALL_DIR}
842 COMPONENT headers)
843install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ConfigVersion.cmake
844 ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Config.cmake
845 DESTINATION ${_TelepathyQtConfig_INSTALL_DIR}
846 COMPONENT headers)
847
848add_subdirectory(Farsight)
849add_subdirectory(Farstream)
850
851if(ENABLE_EXPERIMENTAL_SERVICE_SUPPORT)
852 # lets build tp-qt service side support as a separate library until we can guarantee API/ABI
853 # stability
854 set(telepathy_qt_service_SRCS
855 base-connection-manager.cpp
856 base-connection.cpp
857 base-protocol.cpp
858 dbus-error.cpp
859 dbus-object.cpp
860 dbus-service.cpp
861 abstract-adaptor.cpp)
862
863 set(telepathy_qt_service_HEADERS
864 AbstractAdaptor
865 abstract-adaptor.h
866 AbstractDBusServiceInterface
867 AbstractProtocolInterface
868 BaseConnectionManager
869 base-connection-manager.h
870 BaseConnection
871 base-connection.h
872 BaseProtocol
873 BaseProtocolAddressingInterface
874 BaseProtocolAvatarsInterface
875 BaseProtocolPresenceInterface
876 base-protocol.h
877 DBusError
878 dbus-error.h
879 DBusObject
880 dbus-object.h
881 DBusService
882 dbus-service.h
883 ServiceTypes
884 service-types.h)
885
886 # Generated headers which will be installed and exported
887 set(telepathy_qt_service_gen_HEADERS
888 ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-channel.h
889 ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-connection.h
890 ${CMAKE_CURRENT_BINARY_DIR}/_gen/svc-connection-manager.h)
891
892 # Headers file moc will be run on
893 set(telepathy_qt_service_MOC_SRCS
894 abstract-adaptor.h
895 base-connection-manager.h
896 base-connection-manager-internal.h
897 base-connection.h
898 base-connection-internal.h
899 base-protocol.h
900 base-protocol-internal.h
901 dbus-object.h
902 dbus-service.h)
903
904 add_custom_target(all-generated-service-sources)
905
906 set(SPECS
907 svc-channel
908 svc-connection
909 svc-connection-manager)
910 foreach(spec ${SPECS})
911 tpqt_xincludator(${spec}-spec-xincludator ${CMAKE_CURRENT_SOURCE_DIR}/${spec}.xml ${CMAKE_CURRENT_BINARY_DIR}/_gen/spec-${spec}.xml
912 DEPENDS stable-typesgen)
913 set(NEW_FILES
914 ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.h
915 ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.cpp
916 ${CMAKE_CURRENT_BINARY_DIR}/_gen/${spec}.moc.hpp)
917 list(APPEND telepathy_qt_service_SRCS ${NEW_FILES})
918 list(APPEND telepathy_qt_service_generated_specs_mocs "moc-${spec}.moc.hpp")
919 set_source_files_properties(${NEW_FILES} PROPERTIES GENERATED true)
920 endforeach(spec ${SPECS})
921
922 tpqt_service_generator(svc-channel servicechannel Channel Tp::Service DEPENDS svc-channel-spec-xincludator)
923 tpqt_service_generator(svc-connection serviceconn Connection Tp::Service DEPENDS svc-connection-spec-xincludator)
924 tpqt_service_generator(svc-connection-manager servicecm ConnectionManager Tp::Service DEPENDS svc-connection-manager-spec-xincludator)
925
926 if (TARGET doxygen-doc)
927 add_dependencies(doxygen-doc all-generated-service-sources)
928 endif (TARGET doxygen-doc)
929
930 # Create the library
931 #if (ENABLE_COMPILER_COVERAGE)
932 # add_library(telepathy-qt${QT_VERSION_MAJOR}-service STATIC ${telepathy_qt_service_SRCS})
933 #else (ENABLE_COMPILER_COVERAGE)
934 # add_library(telepathy-qt${QT_VERSION_MAJOR}-service SHARED ${telepathy_qt_service_SRCS})
935 #endif (ENABLE_COMPILER_COVERAGE)
936 # lets build a static only library until we have a stable API/ABI
937 add_library(telepathy-qt${QT_VERSION_MAJOR}-service STATIC ${telepathy_qt_service_SRCS})
938
939 # generate service moc files
940 foreach(moc_src ${telepathy_qt_service_MOC_SRCS})
941 set(generated_file _gen/${moc_src})
942 string(REPLACE ".h" ".moc.hpp" generated_file ${generated_file})
943 tpqt_generate_moc_i_target_deps(${CMAKE_CURRENT_SOURCE_DIR}/${moc_src}
944 ${CMAKE_CURRENT_BINARY_DIR}/${generated_file}
945 ${telepathy_qt_service_generated_specs_mocs})
946 list(APPEND telepathy_qt_service_SRCS ${CMAKE_CURRENT_BINARY_DIR}/${generated_file})
947 string(REPLACE ".h" ".moc.hpp" moc_src ${moc_src})
948 add_dependencies(telepathy-qt${QT_VERSION_MAJOR}-service "moc-${moc_src}")
949 endforeach(moc_src ${telepathy_qt_service_MOC_SRCS})
950
951 # Link
952 target_link_libraries(telepathy-qt${QT_VERSION_MAJOR}-service
953 ${QT_QTDBUS_LIBRARY}
954 ${QT_QTCORE_LIBRARY}
955 telepathy-qt${QT_VERSION_MAJOR}
956 ${TP_QT_LIBRARY_LINKER_FLAGS})
957
958 # Set the correct version number
959 set_target_properties(telepathy-qt${QT_VERSION_MAJOR}-service PROPERTIES
960 SOVERSION ${TP_QT_ABI_VERSION}
961 VERSION ${TP_QT_LIBRARY_VERSION})
962
963 # Install the library - watch out for the correct components
964 if (WIN32)
965 install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-service
966 EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets
967 RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT service
968 ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT service_libs)
969 else (WIN32)
970 install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-service
971 EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets
972 LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT service
973 ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT service_libs)
974 endif (WIN32)
975
976 # Install headers
977 install(FILES ${telepathy_qt_service_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt
978 COMPONENT service_headers)
979 install(FILES ${telepathy_qt_service_gen_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt/_gen
980 COMPONENT service_headers)
981
982 # pkg-config files, only if not on windows
983 if (NOT WIN32)
984 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtService.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service.pc)
985 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtService-uninstalled.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service-uninstalled.pc)
986 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig COMPONENT pkgconfig)
987 endif (NOT WIN32)
988
989 # Configure the actual Config file
990 configure_file(TelepathyQtServiceConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfig.cmake" @ONLY)
991
992 # this file is used by to check if the installed version can be used.
993 macro_write_basic_cmake_version_file(${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfigVersion.cmake
994 ${PACKAGE_VERSION})
995
996 if(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
997 set(_TelepathyQtServiceConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/TelepathyQt${QT_VERSION_MAJOR}Service)
998 else(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
999 set(_TelepathyQtServiceConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/TelepathyQt${QT_VERSION_MAJOR}Service/cmake)
1000 endif(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
1001
1002 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfigVersion.cmake
1003 ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}ServiceConfig.cmake
1004 DESTINATION ${_TelepathyQtServiceConfig_INSTALL_DIR}
1005 COMPONENT headers)
1006
1007endif(ENABLE_EXPERIMENTAL_SERVICE_SUPPORT)
10080
=== removed directory '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight'
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/CMakeLists.txt'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/CMakeLists.txt 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,83 +0,0 @@
1if(FARSIGHT_COMPONENTS_FOUND)
2 include_directories(${TELEPATHY_FARSIGHT_INCLUDE_DIR}
3 ${GSTREAMER_INCLUDE_DIR}
4 ${GLIB2_INCLUDE_DIR}
5 ${LIBXML2_INCLUDE_DIR}
6 ${DBUS_INCLUDE_DIR})
7
8 # It gets inherited from the previous directory, hence it has to be removed explicitely
9 remove_definitions(-DBUILDING_TP_QT)
10 # We are building Telepathy-Qt-Farsight
11 add_definitions(-DBUILDING_TP_QT_FARSIGHT -DQT_NO_KEYWORDS)
12
13 set(telepathy_qt_farsight_SRCS
14 channel.cpp)
15
16 set(telepathy_qt_farsight_HEADERS
17 Channel
18 channel.h
19 global.h)
20
21 # Create the library
22 if (ENABLE_COMPILER_COVERAGE)
23 add_library(telepathy-qt${QT_VERSION_MAJOR}-farsight STATIC ${telepathy_qt_farsight_SRCS})
24 else (ENABLE_COMPILER_COVERAGE)
25 add_library(telepathy-qt${QT_VERSION_MAJOR}-farsight SHARED ${telepathy_qt_farsight_SRCS})
26 endif (ENABLE_COMPILER_COVERAGE)
27 # Link
28 target_link_libraries(telepathy-qt${QT_VERSION_MAJOR}-farsight
29 ${QT_QTDBUS_LIBRARY}
30 ${QT_QTCORE_LIBRARY}
31 ${TELEPATHY_FARSIGHT_LIBRARIES}
32 ${GSTREAMER_INTERFACE_LIBRARY}
33 telepathy-qt${QT_VERSION_MAJOR}
34 ${TP_QT_LIBRARY_LINKER_FLAGS})
35
36 # Set the correct version number
37 set_target_properties(telepathy-qt${QT_VERSION_MAJOR}-farsight PROPERTIES
38 SOVERSION ${TP_QT_ABI_VERSION}
39 VERSION ${TP_QT_LIBRARY_VERSION})
40
41 # Install the library - watch out for the correct components
42 if (WIN32)
43 install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-farsight
44 EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets
45 RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT farsight
46 ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT farsight_libs)
47 else (WIN32)
48 install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-farsight
49 EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets
50 LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT farsight
51 ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT farsight_libs)
52 endif (WIN32)
53
54 # Install headers
55 install(FILES ${telepathy_qt_farsight_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt/Farsight
56 COMPONENT farsight_headers)
57
58 # pkg-config files, only if not on windows
59 if (NOT WIN32)
60 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtFarsight.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farsight.pc)
61 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtFarsight-uninstalled.pc.in ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farsight-uninstalled.pc)
62 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farsight.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig COMPONENT pkgconfig)
63 endif (NOT WIN32)
64
65 # Configure the actual Config file
66 configure_file(TelepathyQtFarsightConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarsightConfig.cmake" @ONLY)
67
68 # this file is used by to check if the installed version can be used.
69 macro_write_basic_cmake_version_file(${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarsightConfigVersion.cmake
70 ${PACKAGE_VERSION})
71
72 if(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
73 set(_TelepathyQtFarsightConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/TelepathyQt${QT_VERSION_MAJOR}Farsight)
74 else(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
75 set(_TelepathyQtFarsightConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farsight/cmake)
76 endif(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
77
78 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarsightConfigVersion.cmake
79 ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarsightConfig.cmake
80 DESTINATION ${_TelepathyQtFarsightConfig_INSTALL_DIR}
81 COMPONENT headers)
82
83endif(FARSIGHT_COMPONENTS_FOUND)
840
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsight-uninstalled.pc.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsight-uninstalled.pc.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsight-uninstalled.pc.in 1970-01-01 00:00:00 +0000
@@ -1,11 +0,0 @@
1prefix=/nonexistent
2exec_prefix=/nonexistent
3abs_top_builddir=${CMAKE_BINARY_DIR}
4abs_top_srcdir=${CMAKE_SOURCE_DIR}
5
6Name: TelepathyQt${QT_VERSION_MAJOR}Farsight (uninstalled copy)
7Description: Qt Telepathy Farsight utility library for the Telepathy framework
8Version: ${PACKAGE_VERSION}
9Requires.private: QtCore >= ${QT_MIN_VERSION}, QtCore < ${QT_MAX_VERSION}, QtDBus >= ${QT_MIN_VERSION}, QtDBus < ${QT_MAX_VERSION}, telepathy-glib >= ${TELEPATHY_GLIB_MIN_VERSION}, telepathy-farsight >= ${TELEPATHY_FARSIGHT_MIN_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION}
10Libs: ${CMAKE_BINARY_DIR}/TelepathyQt/Farsight/libtelepathy-qt${QT_VERSION_MAJOR}-farsight.so
11Cflags: -I${CMAKE_SOURCE_DIR} -I${CMAKE_BINARY_DIR}
120
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsight.pc.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsight.pc.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsight.pc.in 1970-01-01 00:00:00 +0000
@@ -1,11 +0,0 @@
1prefix=${CMAKE_INSTALL_PREFIX}
2exec_prefix=${CMAKE_INSTALL_PREFIX}
3libdir=${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}
4includedir=${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}
5
6Name: TelepathyQt${QT_VERSION_MAJOR}Farsight
7Description: Qt Telepathy Farsight utility library for the Telepathy framework
8Version: ${PACKAGE_VERSION}
9Requires.private: QtCore >= ${QT_MIN_VERSION}, QtCore < ${QT_MAX_VERSION}, QtDBus >= ${QT_MIN_VERSION}, QtDBus < ${QT_MAX_VERSION}, telepathy-glib >= ${TELEPATHY_GLIB_MIN_VERSION}, telepathy-farsight >= ${TELEPATHY_FARSIGHT_MIN_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION}
10Libs: -L${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} -ltelepathy-qt${QT_VERSION_MAJOR}-farsight
11Cflags: -I${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}
120
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsightConfig.cmake.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsightConfig.cmake.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/TelepathyQtFarsightConfig.cmake.in 1970-01-01 00:00:00 +0000
@@ -1,24 +0,0 @@
1# TelepathyQt@QT_VERSION_MAJOR@FarsightConfig.cmake is generated by CMake from TelepathyQt/TelepathyQtFarsightConfig.cmake.in.
2# Any changed value in this file will be overwritten by CMake.
3
4if(NOT TelepathyQt@QT_VERSION_MAJOR@Farsight_FOUND)
5 # set the version number
6 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_VERSION_MAJOR @TP_QT_MAJOR_VERSION@)
7 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_VERSION_MINOR @TP_QT_MINOR_VERSION@)
8 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_VERSION_MICRO @TP_QT_MICRO_VERSION@)
9 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_VERSION_NANO @TP_QT_NANO_VERSION@)
10 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_VERSION @PACKAGE_VERSION@)
11
12 # set the directories
13 if(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_INSTALL_DIR)
14 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@")
15 endif(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_INSTALL_DIR)
16
17 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_INCLUDE_DIR "@TELEPATHY_QT_INCLUDE_DIR@")
18 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_LIB_DIR "@TELEPATHY_QT_LIB_DIR@")
19 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_SHARE_DIR "@TELEPATHY_QT_DATA_DIR@")
20
21 find_package(TelepathyQt@QT_VERSION_MAJOR@ REQUIRED)
22
23 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSIGHT_LIBRARIES telepathy-qt@QT_VERSION_MAJOR@-farsight)
24endif(NOT TelepathyQt@QT_VERSION_MAJOR@Farsight_FOUND)
250
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/channel.cpp'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/channel.cpp 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farsight/channel.cpp 1970-01-01 00:00:00 +0000
@@ -1,98 +0,0 @@
1/**
2 * This file is part of TelepathyQt
3 *
4 * @copyright Copyright (C) 2009 Collabora Ltd. <http://www.collabora.co.uk/>
5 * @copyright Copyright (C) 2009 Nokia Corporation
6 * @license LGPL 2.1
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#include <TelepathyQt/Farsight/Channel>
24
25#include "TelepathyQt/debug-internal.h"
26
27#include <TelepathyQt/Channel>
28#include <TelepathyQt/Connection>
29#include <TelepathyQt/StreamedMediaChannel>
30
31#include <telepathy-glib/automatic-client-factory.h>
32#include <telepathy-glib/channel.h>
33#include <telepathy-glib/connection.h>
34#include <telepathy-glib/dbus.h>
35
36#include <telepathy-farsight/channel.h>
37
38namespace Tp
39{
40
41TfChannel *createFarsightChannel(const StreamedMediaChannelPtr &channel)
42{
43 if (!channel->handlerStreamingRequired()) {
44 warning() << "Handler streaming not required";
45 return 0;
46 }
47
48 TpDBusDaemon *dbus = tp_dbus_daemon_dup(0);
49
50 if (!dbus) {
51 warning() << "Unable to connect to D-Bus";
52 return 0;
53 }
54
55 ConnectionPtr connection = channel->connection();
56
57 TpSimpleClientFactory *factory = (TpSimpleClientFactory *)
58 tp_automatic_client_factory_new (dbus);
59 if (!factory) {
60 warning() << "Unable to construct TpAutomaticClientFactory";
61 g_object_unref(dbus);
62 return 0;
63 }
64
65 TpConnection *gconnection = tp_simple_client_factory_ensure_connection (factory,
66 connection->objectPath().toAscii(), NULL, 0);
67 g_object_unref(factory);
68 factory = 0;
69 g_object_unref(dbus);
70 dbus = 0;
71
72 if (!gconnection) {
73 warning() << "Unable to construct TpConnection";
74 return 0;
75 }
76
77 TpChannel *gchannel = tp_channel_new(gconnection,
78 channel->objectPath().toAscii(),
79 TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA.latin1(),
80 (TpHandleType) channel->targetHandleType(),
81 channel->targetHandle(),
82 0);
83 g_object_unref(gconnection);
84 gconnection = 0;
85
86 if (!gchannel) {
87 warning() << "Unable to construct TpChannel";
88 return 0;
89 }
90
91 TfChannel *ret = tf_channel_new(gchannel);
92 g_object_unref(gchannel);
93 gchannel = 0;
94
95 return ret;
96}
97
98} // Tp
990
=== removed directory '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream'
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/CMakeLists.txt'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/CMakeLists.txt 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/CMakeLists.txt 1970-01-01 00:00:00 +0000
@@ -1,105 +0,0 @@
1if(FARSTREAM_COMPONENTS_FOUND)
2 include_directories(${TELEPATHY_FARSTREAM_INCLUDE_DIR}
3 ${TELEPATHY_GLIB_INCLUDE_DIR}
4 ${FARSTREAM_INCLUDE_DIR}
5 ${GSTREAMER_INCLUDE_DIR}
6 ${GLIB2_INCLUDE_DIR}
7 ${LIBXML2_INCLUDE_DIR}
8 ${DBUS_INCLUDE_DIR})
9
10 # It gets inherited from the previous directory, hence it has to be removed explicitely
11 remove_definitions(-DBUILDING_TP_QT)
12 # We are building Telepathy-Qt-Farstream
13 add_definitions(-DBUILDING_TP_QT_FARSTREAM -DQT_NO_KEYWORDS)
14
15 set(telepathy_qt_farstream_SRCS
16 channel.cpp)
17
18 set(telepathy_qt_farstream_HEADERS
19 Channel
20 channel.h
21 Global
22 global.h
23 PendingChannel)
24
25 set(telepathy_qt_farstream_MOC_SRCS
26 channel.h)
27
28 # generate client moc files
29 tpqt_generate_mocs(${telepathy_qt_farstream_MOC_SRCS})
30
31 # Create the library
32 if (ENABLE_COMPILER_COVERAGE)
33 add_library(telepathy-qt${QT_VERSION_MAJOR}-farstream STATIC
34 ${telepathy_qt_farstream_SRCS} ${telepathy_qt_farstream_MOC_SRCS})
35 else (ENABLE_COMPILER_COVERAGE)
36 add_library(telepathy-qt${QT_VERSION_MAJOR}-farstream SHARED
37 ${telepathy_qt_farstream_SRCS} ${telepathy_qt_farstream_MOC_SRCS})
38 endif (ENABLE_COMPILER_COVERAGE)
39
40 # Link
41 target_link_libraries(telepathy-qt${QT_VERSION_MAJOR}-farstream
42 ${QT_QTDBUS_LIBRARY}
43 ${QT_QTCORE_LIBRARY}
44 ${TELEPATHY_FARSTREAM_LIBRARIES}
45 ${TELEPATHY_GLIB_LIBRARIES}
46 telepathy-qt${QT_VERSION_MAJOR}
47 ${TP_QT_LIBRARY_LINKER_FLAGS})
48
49 if (ENABLE_COMPILER_COVERAGE)
50 target_link_libraries(telepathy-qt${QT_VERSION_MAJOR}-farstream gcov)
51 endif (ENABLE_COMPILER_COVERAGE)
52
53 # Set the correct version number
54 set_target_properties(telepathy-qt${QT_VERSION_MAJOR}-farstream PROPERTIES
55 SOVERSION ${TP_QT_ABI_VERSION}
56 VERSION ${TP_QT_LIBRARY_VERSION})
57
58 # Install the library - watch out for the correct components
59 if (WIN32)
60 install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-farstream
61 EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets
62 RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT farstream
63 ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT farstream_libs)
64 else (WIN32)
65 install(TARGETS telepathy-qt${QT_VERSION_MAJOR}-farstream
66 EXPORT TelepathyQt${QT_VERSION_MAJOR}Targets
67 LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT farstream
68 ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT farstream_libs)
69 endif (WIN32)
70
71 # Install headers
72 install(FILES ${telepathy_qt_farstream_HEADERS}
73 DESTINATION ${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}/TelepathyQt/Farstream
74 COMPONENT farstream_headers)
75
76 # pkg-config files, only if not on windows
77 if (NOT WIN32)
78 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtFarstream.pc.in
79 ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farstream.pc)
80 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TelepathyQtFarstream-uninstalled.pc.in
81 ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farstream-uninstalled.pc)
82 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farstream.pc
83 DESTINATION ${LIB_INSTALL_DIR}/pkgconfig COMPONENT pkgconfig)
84 endif (NOT WIN32)
85
86 # Configure the actual Config file
87 configure_file(TelepathyQtFarstreamConfig.cmake.in
88 "${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarstreamConfig.cmake" @ONLY)
89
90 # this file is used by to check if the installed version can be used.
91 macro_write_basic_cmake_version_file(${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarstreamConfigVersion.cmake
92 ${PACKAGE_VERSION})
93
94 if(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
95 set(_TelepathyQtFarstreamConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/TelepathyQt${QT_VERSION_MAJOR}Farstream)
96 else(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
97 set(_TelepathyQtFarstreamConfig_INSTALL_DIR ${LIB_INSTALL_DIR}/TelepathyQt${QT_VERSION_MAJOR}Farstream/cmake)
98 endif(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR)
99
100 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarstreamConfigVersion.cmake
101 ${CMAKE_CURRENT_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}FarstreamConfig.cmake
102 DESTINATION ${_TelepathyQtFarstreamConfig_INSTALL_DIR}
103 COMPONENT headers)
104
105endif(FARSTREAM_COMPONENTS_FOUND)
1060
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstream-uninstalled.pc.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstream-uninstalled.pc.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstream-uninstalled.pc.in 1970-01-01 00:00:00 +0000
@@ -1,11 +0,0 @@
1prefix=/nonexistent
2exec_prefix=/nonexistent
3abs_top_builddir=${CMAKE_BINARY_DIR}
4abs_top_srcdir=${CMAKE_SOURCE_DIR}
5
6Name: TelepathyQt${QT_VERSION_MAJOR}Farstream (uninstalled copy)
7Description: Qt Telepathy Farstream utility library for the Telepathy framework
8Version: ${PACKAGE_VERSION}
9Requires.private: QtCore >= ${QT_MIN_VERSION}, QtCore < ${QT_MAX_VERSION}, QtDBus >= ${QT_MIN_VERSION}, QtDBus < ${QT_MAX_VERSION}, telepathy-glib >= ${TELEPATHY_GLIB_MIN_VERSION}, telepathy-farstream >= ${TELEPATHY_FARSTREAM_MIN_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION}
10Libs: ${CMAKE_BINARY_DIR}/TelepathyQt${QT_VERSION_MAJOR}/Farstream/libtelepathy-qt${QT_VERSION_MAJOR}-farstream.so
11Cflags: -I${CMAKE_SOURCE_DIR} -I${CMAKE_BINARY_DIR}
120
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstream.pc.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstream.pc.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstream.pc.in 1970-01-01 00:00:00 +0000
@@ -1,11 +0,0 @@
1prefix=${CMAKE_INSTALL_PREFIX}
2exec_prefix=${CMAKE_INSTALL_PREFIX}
3libdir=${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}
4includedir=${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}
5
6Name: TelepathyQt${QT_VERSION_MAJOR}Farstream
7Description: Qt Telepathy Farstream utility library for the Telepathy framework
8Version: ${PACKAGE_VERSION}
9Requires.private: QtCore >= ${QT_MIN_VERSION}, QtCore < ${QT_MAX_VERSION}, QtDBus >= ${QT_MIN_VERSION}, QtDBus < ${QT_MAX_VERSION}, telepathy-glib >= ${TELEPATHY_GLIB_MIN_VERSION}, telepathy-farstream >= ${TELEPATHY_FARSTREAM_MIN_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION}
10Libs: -L${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} -ltelepathy-qt${QT_VERSION_MAJOR}-farstream
11Cflags: -I${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}
120
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstreamConfig.cmake.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstreamConfig.cmake.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/TelepathyQtFarstreamConfig.cmake.in 1970-01-01 00:00:00 +0000
@@ -1,24 +0,0 @@
1# TelepathyQt@QT_VERSION_MAJOR@FarstreamConfig.cmake is generated by CMake from TelepathyQt/TelepathyQtFarstreamConfig.cmake.in.
2# Any changed value in this file will be overwritten by CMake.
3
4if(NOT TelepathyQt@QT_VERSION_MAJOR@Farstream_FOUND)
5 # set the version number
6 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION_MAJOR @TP_QT_MAJOR_VERSION@)
7 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION_MINOR @TP_QT_MINOR_VERSION@)
8 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION_MICRO @TP_QT_MICRO_VERSION@)
9 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION_NANO @TP_QT_NANO_VERSION@)
10 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_VERSION @PACKAGE_VERSION@)
11
12 # set the directories
13 if(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_INSTALL_DIR)
14 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@")
15 endif(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_INSTALL_DIR)
16
17 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_INCLUDE_DIR "@TELEPATHY_QT_INCLUDE_DIR@")
18 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_LIB_DIR "@TELEPATHY_QT_LIB_DIR@")
19 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_SHARE_DIR "@TELEPATHY_QT_DATA_DIR@")
20
21 find_package(TelepathyQt@QT_VERSION_MAJOR@ REQUIRED)
22
23 set(TELEPATHY_QT@QT_VERSION_MAJOR@_FARSTREAM_LIBRARIES telepathy-qt@QT_VERSION_MAJOR@-farstream)
24endif(NOT TelepathyQt@QT_VERSION_MAJOR@Farstream_FOUND)
250
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/channel.cpp'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/channel.cpp 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/Farstream/channel.cpp 1970-01-01 00:00:00 +0000
@@ -1,166 +0,0 @@
1/**
2 * This file is part of TelepathyQt
3 *
4 * Copyright © 2009-2012 Collabora Ltd. <http://www.collabora.co.uk/>
5 * Copyright © 2009 Nokia Corporation
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22#include <TelepathyQt/Farstream/Channel>
23
24#include "TelepathyQt/Farstream/_gen/channel.moc.hpp"
25
26#include "TelepathyQt/debug-internal.h"
27
28#include <TelepathyQt/CallChannel>
29#include <TelepathyQt/Connection>
30
31#include <telepathy-farstream/telepathy-farstream.h>
32#include <telepathy-glib/automatic-client-factory.h>
33#include <telepathy-glib/call-channel.h>
34#include <telepathy-glib/connection.h>
35#include <telepathy-glib/dbus.h>
36
37namespace Tp
38{
39namespace Farstream
40{
41
42struct TP_QT_FS_NO_EXPORT PendingChannel::Private
43{
44 Private()
45 : mTfChannel(0)
46 {
47 }
48
49 static void onTfChannelNewFinish(GObject *sourceObject, GAsyncResult *res, gpointer userData);
50
51 TfChannel *mTfChannel;
52};
53
54PendingChannel::PendingChannel(const CallChannelPtr &channel)
55 : Tp::PendingOperation(channel),
56 mPriv(new PendingChannel::Private)
57{
58 if (!channel->handlerStreamingRequired()) {
59 warning() << "Handler streaming not required";
60 setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE,
61 QLatin1String("Handler streaming not required"));
62 return;
63 }
64
65 TpDBusDaemon *dbus = tp_dbus_daemon_dup(0);
66 if (!dbus) {
67 warning() << "Unable to connect to D-Bus";
68 setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE,
69 QLatin1String("Unable to connect to D-Bus"));
70 return;
71 }
72
73 Tp::ConnectionPtr connection = channel->connection();
74 if (connection.isNull()) {
75 warning() << "Connection not available";
76 setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE,
77 QLatin1String("Connection not available"));
78 g_object_unref(dbus);
79 return;
80 }
81
82 TpSimpleClientFactory *factory = (TpSimpleClientFactory *)
83 tp_automatic_client_factory_new (dbus);
84 if (!factory) {
85 warning() << "Unable to construct TpAutomaticClientFactory";
86 setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE,
87 QLatin1String("Unable to construct TpAutomaticClientFactory"));
88 g_object_unref(dbus);
89 return;
90 }
91
92 TpConnection *gconnection = tp_simple_client_factory_ensure_connection (factory,
93 connection->objectPath().toAscii(), NULL, 0);
94 if (!gconnection) {
95 warning() << "Unable to construct TpConnection";
96 setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE,
97 QLatin1String("Unable to construct TpConnection"));
98 g_object_unref(factory);
99 g_object_unref(dbus);
100 return;
101 }
102
103 TpChannel *gchannel = (TpChannel*) g_object_new(TP_TYPE_CALL_CHANNEL,
104 "bus-name", connection->busName().toAscii().constData(),
105 "connection", gconnection,
106 "dbus-daemon", dbus,
107 "object-path", channel->objectPath().toAscii().constData(),
108 NULL);
109 g_object_unref(factory);
110 factory = 0;
111 g_object_unref(dbus);
112 dbus = 0;
113 g_object_unref(gconnection);
114 gconnection = 0;
115 if (!gchannel) {
116 warning() << "Unable to construct TpChannel";
117 setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE,
118 QLatin1String("Unable to construct TpChannel"));
119 return;
120 }
121
122 tf_channel_new_async(gchannel, PendingChannel::Private::onTfChannelNewFinish, this);
123 g_object_unref(gchannel);
124}
125
126PendingChannel::~PendingChannel()
127{
128 delete mPriv;
129}
130
131void PendingChannel::Private::onTfChannelNewFinish(GObject *sourceObject,
132 GAsyncResult *res, gpointer userData)
133{
134 PendingChannel *self = reinterpret_cast<PendingChannel *>(userData);
135
136 GError *error = NULL;
137 TfChannel *ret = tf_channel_new_finish(sourceObject, res, &error);
138 if (error) {
139 warning() << "Fs::PendingChannel::Private::onTfChannelNewFinish: error " << error->message;
140 self->setFinishedWithError(TP_QT_ERROR_NOT_AVAILABLE, QLatin1String(error->message));
141 g_clear_error(&error);
142 return;
143 }
144
145 self->mPriv->mTfChannel = ret;
146 self->setFinished();
147}
148
149TfChannel *PendingChannel::tfChannel() const
150{
151 return mPriv->mTfChannel;
152}
153
154CallChannelPtr PendingChannel::callChannel() const
155{
156 return CallChannelPtr::staticCast(object());
157}
158
159PendingChannel *createChannel(const CallChannelPtr &channel)
160{
161 PendingChannel *ptf = new PendingChannel(channel);
162 return ptf;
163}
164
165} // Farstream
166} // Tp
1670
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQt-uninstalled.pc.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQt-uninstalled.pc.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQt-uninstalled.pc.in 1970-01-01 00:00:00 +0000
@@ -1,11 +0,0 @@
1prefix=/nonexistent
2exec_prefix=/nonexistent
3abs_top_builddir=${CMAKE_BINARY_DIR}
4abs_top_srcdir=${CMAKE_SOURCE_DIR}
5
6Name: TelepathyQt${QT_VERSION_MAJOR} (uninstalled copy)
7Description: Qt utility library for the Telepathy framework
8Version: ${PACKAGE_VERSION}
9Requires.private: QtCore >= ${QT_MIN_VERSION}, QtCore < ${QT_MAX_VERSION}, QtDBus >= ${QT_MIN_VERSION}, QtDBus < ${QT_MAX_VERSION}, QtNetwork >= ${QT_MIN_VERSION}, QtNetwork < ${QT_MAX_VERSION}, QtXml >= ${QT_MIN_VERSION}, QtXml < ${QT_MAX_VERSION}
10Libs: ${CMAKE_BINARY_DIR}/TelepathyQt/libtelepathy-qt${QT_VERSION_MAJOR}.so
11Cflags: -I${CMAKE_SOURCE_DIR} -I${CMAKE_BINARY_DIR}
120
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQt.pc.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQt.pc.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQt.pc.in 1970-01-01 00:00:00 +0000
@@ -1,11 +0,0 @@
1prefix=${CMAKE_INSTALL_PREFIX}
2exec_prefix=${CMAKE_INSTALL_PREFIX}
3libdir=${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}
4includedir=${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}
5
6Name: TelepathyQt${QT_VERSION_MAJOR}
7Description: Qt utility library for the Telepathy framework
8Version: ${PACKAGE_VERSION}
9Requires.private: QtCore >= ${QT_MIN_VERSION}, QtCore < ${QT_MAX_VERSION}, QtDBus >= ${QT_MIN_VERSION}, QtDBus < ${QT_MAX_VERSION}, QtNetwork >= ${QT_MIN_VERSION}, QtNetwork < ${QT_MAX_VERSION}, QtXml >= ${QT_MIN_VERSION}, QtXml < ${QT_MAX_VERSION}
10Libs: -L${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} -ltelepathy-qt${QT_VERSION_MAJOR}
11Cflags: -I${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}
120
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtConfig.cmake.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtConfig.cmake.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtConfig.cmake.in 1970-01-01 00:00:00 +0000
@@ -1,28 +0,0 @@
1# TelepathyQt@QT_VERSION_MAJOR@Config.cmake is generated by CMake from TelepathyQt/TelepathyQtConfig.cmake.in.
2# Any changed value in this file will be overwritten by CMake.
3
4if(NOT TelepathyQt@QT_VERSION_MAJOR@_FOUND)
5 # set the version number
6 set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION_MAJOR @TP_QT_MAJOR_VERSION@)
7 set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION_MINOR @TP_QT_MINOR_VERSION@)
8 set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION_MICRO @TP_QT_MICRO_VERSION@)
9 set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION_NANO @TP_QT_NANO_VERSION@)
10 set(TELEPATHY_QT@QT_VERSION_MAJOR@_VERSION @PACKAGE_VERSION@)
11
12 # set the directories
13 if(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_INSTALL_DIR)
14 set(TELEPATHY_QT@QT_VERSION_MAJOR@_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@")
15 endif(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_INSTALL_DIR)
16
17 set(TELEPATHY_QT@QT_VERSION_MAJOR@_INCLUDE_DIR "@TELEPATHY_QT_INCLUDE_DIR@")
18 set(TELEPATHY_QT@QT_VERSION_MAJOR@_LIB_DIR "@TELEPATHY_QT_LIB_DIR@")
19 set(TELEPATHY_QT@QT_VERSION_MAJOR@_SHARE_DIR "@TELEPATHY_QT_DATA_DIR@")
20
21 # attempt to find the generated TelepathyQt4Targets.cmake in the same directory
22 get_filename_component(_TPQT@QT_VERSION_MAJOR@_CONFIG_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
23 find_file(_TPQT@QT_VERSION_MAJOR@_TARGETS_FILE TelepathyQt@QT_VERSION_MAJOR@Targets.cmake PATHS ${_TPQT@QT_VERSION_MAJOR@_CONFIG_DIR} NO_DEFAULT_PATH)
24
25 # set the TELEPATHY_QT@QT_VERSION_MAJOR@_LIBRARIES variable
26 include(${_TPQT@QT_VERSION_MAJOR@_TARGETS_FILE})
27 set(TELEPATHY_QT@QT_VERSION_MAJOR@_LIBRARIES telepathy-qt@QT_VERSION_MAJOR@)
28endif(NOT TelepathyQt@QT_VERSION_MAJOR@_FOUND)
290
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtService-uninstalled.pc.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtService-uninstalled.pc.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtService-uninstalled.pc.in 1970-01-01 00:00:00 +0000
@@ -1,11 +0,0 @@
1prefix=/nonexistent
2exec_prefix=/nonexistent
3abs_top_builddir=${CMAKE_BINARY_DIR}
4abs_top_srcdir=${CMAKE_SOURCE_DIR}
5
6Name: TelepathyQt${QT_VERSION_MAJOR}Service (uninstalled copy)
7Description: Qt Telepathy Service side bindings
8Version: ${PACKAGE_VERSION}
9Requires.private: QtCore >= ${QT_MIN_VERSION}, QtCore < ${QT_MAX_VERSION}, QtDBus >= ${QT_MIN_VERSION}, QtDBus < ${QT_MAX_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION}
10Libs: ${CMAKE_BINARY_DIR}/TelepathyQt/Farsight/libtelepathy-qt${QT_VERSION_MAJOR}-service.so
11Cflags: -I${CMAKE_SOURCE_DIR} -I${CMAKE_BINARY_DIR}
120
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtService.pc.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtService.pc.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtService.pc.in 1970-01-01 00:00:00 +0000
@@ -1,11 +0,0 @@
1prefix=${CMAKE_INSTALL_PREFIX}
2exec_prefix=${CMAKE_INSTALL_PREFIX}
3libdir=${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}
4includedir=${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}
5
6Name: TelepathyQt${QT_VERSION_MAJOR}Service
7Description: Qt Telepathy Service side bindings
8Version: ${PACKAGE_VERSION}
9Requires.private: QtCore >= ${QT_MIN_VERSION}, QtCore < ${QT_MAX_VERSION}, QtDBus >= ${QT_MIN_VERSION}, QtDBus < ${QT_MAX_VERSION}, TelepathyQt${QT_VERSION_MAJOR} = ${PACKAGE_VERSION}
10Libs: -L${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR} -ltelepathy-qt${QT_VERSION_MAJOR}-service
11Cflags: -I${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR}/telepathy-qt${QT_VERSION_MAJOR}
120
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtServiceConfig.cmake.in'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtServiceConfig.cmake.in 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/TelepathyQtServiceConfig.cmake.in 1970-01-01 00:00:00 +0000
@@ -1,22 +0,0 @@
1# TelepathyQt@QT_VERSION_MAJOR@ServiceConfig.cmake is generated by CMake from TelepathyQt/TelepathyQtServiceConfig.cmake.in.
2# Any changed value in this file will be overwritten by CMake.
3
4# set the version number
5set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION_MAJOR @TP_QT_MAJOR_VERSION@)
6set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION_MINOR @TP_QT_MINOR_VERSION@)
7set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION_MICRO @TP_QT_MICRO_VERSION@)
8set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION_NANO @TP_QT_NANO_VERSION@)
9set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_VERSION @PACKAGE_VERSION@)
10
11# set the directories
12if(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_INSTALL_DIR)
13 set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@")
14endif(NOT TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_INSTALL_DIR)
15
16set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_INCLUDE_DIR "@TELEPATHY_QT_INCLUDE_DIR@")
17set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_LIB_DIR "@TELEPATHY_QT_LIB_DIR@")
18set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_SHARE_DIR "@TELEPATHY_QT_DATA_DIR@")
19
20find_package(TelepathyQt@QT_VERSION_MAJOR@ REQUIRED)
21
22set(TELEPATHY_QT@QT_VERSION_MAJOR@_SERVICE_LIBRARIES telepathy-qt@QT_VERSION_MAJOR@-service)
230
=== removed file '.pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/account.cpp'
--- .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/account.cpp 2013-06-06 04:56:14 +0000
+++ .pc/02-adapt_to_work_with_q5_final.patch/TelepathyQt/account.cpp 1970-01-01 00:00:00 +0000
@@ -1,4858 +0,0 @@
1/**
2 * This file is part of TelepathyQt
3 *
4 * @copyright Copyright (C) 2008-2012 Collabora Ltd. <http://www.collabora.co.uk/>
5 * @copyright Copyright (C) 2008 Nokia Corporation
6 * @license LGPL 2.1
7 *
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#include <TelepathyQt/Account>
24
25#include "TelepathyQt/_gen/account.moc.hpp"
26#include "TelepathyQt/_gen/cli-account.moc.hpp"
27#include "TelepathyQt/_gen/cli-account-body.hpp"
28
29#include "TelepathyQt/debug-internal.h"
30
31#include "TelepathyQt/connection-internal.h"
32
33#include <TelepathyQt/AccountManager>
34#include <TelepathyQt/Channel>
35#include <TelepathyQt/ChannelDispatcherInterface>
36#include <TelepathyQt/ConnectionCapabilities>
37#include <TelepathyQt/ConnectionLowlevel>
38#include <TelepathyQt/ConnectionManager>
39#include <TelepathyQt/PendingChannel>
40#include <TelepathyQt/PendingChannelRequest>
41#include <TelepathyQt/PendingFailure>
42#include <TelepathyQt/PendingReady>
43#include <TelepathyQt/PendingStringList>
44#include <TelepathyQt/PendingVariant>
45#include <TelepathyQt/PendingVoid>
46#include <TelepathyQt/Profile>
47#include <TelepathyQt/ReferencedHandles>
48#include <TelepathyQt/Constants>
49#include <TelepathyQt/Debug>
50
51#include <QQueue>
52#include <QRegExp>
53#include <QSharedPointer>
54#include <QTimer>
55#include <QWeakPointer>
56
57#include <string.h>
58
59namespace Tp
60{
61
62namespace
63{
64
65struct PresenceStatusInfo
66{
67 QString name;
68 Tp::SimpleStatusSpec spec;
69};
70
71Tp::ConnectionPresenceType presenceTypeForStatus(const QString &status, bool &maySetOnSelf)
72{
73 static PresenceStatusInfo statuses[] = {
74 { QLatin1String("available"), { Tp::ConnectionPresenceTypeAvailable, true, true } },
75 { QLatin1String("chat"), { Tp::ConnectionPresenceTypeAvailable, true, true } },
76 { QLatin1String("chatty"), { Tp::ConnectionPresenceTypeAvailable, true, true } },
77 { QLatin1String("away"), { Tp::ConnectionPresenceTypeAway, true, true } },
78 { QLatin1String("brb"), { Tp::ConnectionPresenceTypeAway, true, true } },
79 { QLatin1String("out-to-lunch"), { Tp::ConnectionPresenceTypeAway, true, true } },
80 { QLatin1String("xa"), { Tp::ConnectionPresenceTypeExtendedAway, true, true } },
81 { QLatin1String("hidden"), { Tp::ConnectionPresenceTypeHidden, true, true } },
82 { QLatin1String("invisible"), { Tp::ConnectionPresenceTypeHidden, true, true } },
83 { QLatin1String("offline"), { Tp::ConnectionPresenceTypeOffline, true, false } },
84 { QLatin1String("unknown"), { Tp::ConnectionPresenceTypeUnknown, false, false } },
85 { QLatin1String("error"), { Tp::ConnectionPresenceTypeError, false, false } }
86 };
87
88 for (uint i = 0; i < sizeof(statuses) / sizeof(PresenceStatusInfo); ++i) {
89 if (status == statuses[i].name) {
90 maySetOnSelf = statuses[i].spec.maySetOnSelf;
91 return (Tp::ConnectionPresenceType) statuses[i].spec.type;
92 }
93 }
94
95 // fallback to type away if we don't know status
96 maySetOnSelf = true;
97 return Tp::ConnectionPresenceTypeAway;
98}
99
100Tp::PresenceSpec presenceSpecForStatus(const QString &status, bool canHaveStatusMessage)
101{
102 Tp::SimpleStatusSpec spec;
103 spec.type = presenceTypeForStatus(status, spec.maySetOnSelf);
104 spec.canHaveMessage = canHaveStatusMessage;
105 return Tp::PresenceSpec(status, spec);
106}
107
108QVariantMap textChatCommonRequest()
109{
110 QVariantMap request;
111 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
112 TP_QT_IFACE_CHANNEL_TYPE_TEXT);
113 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"),
114 (uint) Tp::HandleTypeContact);
115 return request;
116}
117
118QVariantMap textChatRequest(const QString &contactIdentifier)
119{
120 QVariantMap request = textChatCommonRequest();
121 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"),
122 contactIdentifier);
123 return request;
124}
125
126QVariantMap textChatRequest(const Tp::ContactPtr &contact)
127{
128 QVariantMap request = textChatCommonRequest();
129 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"),
130 contact ? contact->handle().at(0) : (uint) 0);
131 return request;
132}
133
134QVariantMap textChatroomRequest(const QString &roomName)
135{
136 QVariantMap request;
137 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
138 TP_QT_IFACE_CHANNEL_TYPE_TEXT);
139 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"),
140 (uint) Tp::HandleTypeRoom);
141 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"),
142 roomName);
143 return request;
144}
145
146QVariantMap callCommonRequest(bool withAudio, const QString &audioName,
147 bool withVideo, const QString &videoName)
148{
149 QVariantMap request;
150 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
151 TP_QT_IFACE_CHANNEL_TYPE_CALL);
152 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"),
153 (uint) Tp::HandleTypeContact);
154
155 if (withAudio) {
156 request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudio"),
157 true);
158 if (!audioName.isEmpty()) {
159 request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialAudioName"),
160 audioName);
161 }
162 }
163
164 if (withVideo) {
165 request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideo"),
166 true);
167 if (!videoName.isEmpty()) {
168 request.insert(TP_QT_IFACE_CHANNEL_TYPE_CALL + QLatin1String(".InitialVideoName"),
169 videoName);
170 }
171 }
172
173 return request;
174}
175
176QVariantMap audioCallRequest(const QString &contactIdentifier, const QString &contentName)
177{
178 QVariantMap request = callCommonRequest(true, contentName, false, QString());
179 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"),
180 contactIdentifier);
181 return request;
182}
183
184QVariantMap audioCallRequest(const Tp::ContactPtr &contact, const QString &contentName)
185{
186 QVariantMap request = callCommonRequest(true, contentName, false, QString());
187 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"),
188 contact ? contact->handle().at(0) : (uint) 0);
189 return request;
190}
191
192QVariantMap videoCallRequest(const QString &contactIdentifier, const QString &contentName)
193{
194 QVariantMap request = callCommonRequest(false, QString(), true, contentName);
195 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"),
196 contactIdentifier);
197 return request;
198}
199
200QVariantMap videoCallRequest(const Tp::ContactPtr &contact, const QString &contentName)
201{
202 QVariantMap request = callCommonRequest(false, QString(), true, contentName);
203 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"),
204 contact ? contact->handle().at(0) : (uint) 0);
205 return request;
206}
207
208QVariantMap audioVideoCallRequest(const QString &contactIdentifier,
209 const QString &audioName,
210 const QString &videoName)
211{
212 QVariantMap request = callCommonRequest(true, audioName, true, videoName);
213 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"),
214 contactIdentifier);
215 return request;
216}
217
218QVariantMap audioVideoCallRequest(const Tp::ContactPtr &contact,
219 const QString &audioName,
220 const QString &videoName)
221{
222 QVariantMap request = callCommonRequest(true, audioName, true, videoName);
223 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"),
224 contact ? contact->handle().at(0) : (uint) 0);
225 return request;
226}
227
228QVariantMap streamedMediaCallCommonRequest()
229{
230 QVariantMap request;
231 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
232 TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA);
233 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"),
234 (uint) Tp::HandleTypeContact);
235 return request;
236}
237
238QVariantMap streamedMediaCallRequest(const QString &contactIdentifier)
239{
240 QVariantMap request = streamedMediaCallCommonRequest();
241 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"),
242 contactIdentifier);
243 return request;
244}
245
246QVariantMap streamedMediaCallRequest(const Tp::ContactPtr &contact)
247{
248 QVariantMap request = streamedMediaCallCommonRequest();
249 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"),
250 contact ? contact->handle().at(0) : (uint) 0);
251 return request;
252}
253
254QVariantMap streamedMediaAudioCallRequest(const QString &contactIdentifier)
255{
256 QVariantMap request = streamedMediaCallRequest(contactIdentifier);
257 request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"),
258 true);
259 return request;
260}
261
262QVariantMap streamedMediaAudioCallRequest(const Tp::ContactPtr &contact)
263{
264 QVariantMap request = streamedMediaCallRequest(contact);
265 request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"),
266 true);
267 return request;
268}
269
270QVariantMap streamedMediaVideoCallRequest(const QString &contactIdentifier, bool withAudio)
271{
272 QVariantMap request = streamedMediaCallRequest(contactIdentifier);
273 request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo"),
274 true);
275 if (withAudio) {
276 request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"),
277 true);
278 }
279 return request;
280}
281
282QVariantMap streamedMediaVideoCallRequest(const Tp::ContactPtr &contact, bool withAudio)
283{
284 QVariantMap request = streamedMediaCallRequest(contact);
285 request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialVideo"),
286 true);
287 if (withAudio) {
288 request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA + QLatin1String(".InitialAudio"),
289 true);
290 }
291 return request;
292}
293
294QVariantMap fileTransferCommonRequest(const Tp::FileTransferChannelCreationProperties &properties)
295{
296 if (!properties.isValid()) {
297 warning() << "Invalid file transfer creation properties";
298 return QVariantMap();
299 }
300
301 QVariantMap request;
302 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
303 TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER);
304 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"),
305 (uint) Tp::HandleTypeContact);
306
307 request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".Filename"),
308 properties.suggestedFileName());
309 request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".ContentType"),
310 properties.contentType());
311 request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".Size"),
312 properties.size());
313
314 if (properties.hasContentHash()) {
315 request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".ContentHashType"),
316 (uint) properties.contentHashType());
317 request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".ContentHash"),
318 properties.contentHash());
319 }
320
321 if (properties.hasDescription()) {
322 request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".Description"),
323 properties.description());
324 }
325
326 if (properties.hasLastModificationTime()) {
327 request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".Date"),
328 (qulonglong) properties.lastModificationTime().toTime_t());
329 }
330
331 if (properties.hasUri()) {
332 request.insert(TP_QT_IFACE_CHANNEL_TYPE_FILE_TRANSFER + QLatin1String(".URI"),
333 properties.uri());
334 }
335
336 return request;
337}
338
339QVariantMap fileTransferRequest(const QString &contactIdentifier,
340 const Tp::FileTransferChannelCreationProperties &properties)
341{
342 QVariantMap request = fileTransferCommonRequest(properties);
343
344 if (!request.isEmpty()) {
345 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"),
346 contactIdentifier);
347 }
348
349 return request;
350}
351
352QVariantMap fileTransferRequest(const Tp::ContactPtr &contact,
353 const Tp::FileTransferChannelCreationProperties &properties)
354{
355 QVariantMap request = fileTransferCommonRequest(properties);
356
357 if (!request.isEmpty()) {
358 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"),
359 contact ? contact->handle().at(0) : (uint) 0);
360 }
361
362 return request;
363}
364
365QVariantMap streamTubeCommonRequest(const QString &service)
366{
367 QVariantMap request;
368 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
369 TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE);
370 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"),
371 (uint) Tp::HandleTypeContact);
372 request.insert(TP_QT_IFACE_CHANNEL_TYPE_STREAM_TUBE + QLatin1String(".Service"),
373 service);
374 return request;
375}
376
377QVariantMap streamTubeRequest(const QString &contactIdentifier, const QString &service)
378{
379 QVariantMap request = streamTubeCommonRequest(service);
380 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"),
381 contactIdentifier);
382 return request;
383}
384
385QVariantMap streamTubeRequest(const Tp::ContactPtr &contact, const QString &service)
386{
387 QVariantMap request = streamTubeCommonRequest(service);
388 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"),
389 contact ? contact->handle().at(0) : (uint) 0);
390 return request;
391}
392
393QVariantMap dbusTubeCommonRequest(const QString &serviceName)
394{
395 QVariantMap request;
396 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
397 TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE);
398 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"),
399 (uint) Tp::HandleTypeContact);
400 request.insert(TP_QT_IFACE_CHANNEL_TYPE_DBUS_TUBE + QLatin1String(".ServiceName"),
401 serviceName);
402 return request;
403}
404
405QVariantMap dbusTubeRequest(const QString &contactIdentifier, const QString &serviceName)
406{
407 QVariantMap request = dbusTubeCommonRequest(serviceName);
408 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"),
409 contactIdentifier);
410 return request;
411}
412
413QVariantMap dbusTubeRequest(const Tp::ContactPtr &contact, const QString &serviceName)
414{
415 QVariantMap request = dbusTubeCommonRequest(serviceName);
416 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandle"),
417 contact ? contact->handle().at(0) : (uint) 0);
418 return request;
419}
420
421QVariantMap conferenceCommonRequest(const QString &channelType, Tp::HandleType targetHandleType,
422 const QList<Tp::ChannelPtr> &channels)
423{
424 QVariantMap request;
425 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
426 channelType);
427 if (targetHandleType != Tp::HandleTypeNone) {
428 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetHandleType"),
429 (uint) targetHandleType);
430 }
431
432 Tp::ObjectPathList objectPaths;
433 foreach (const Tp::ChannelPtr &channel, channels) {
434 objectPaths << QDBusObjectPath(channel->objectPath());
435 }
436
437 request.insert(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialChannels"),
438 qVariantFromValue(objectPaths));
439 return request;
440}
441
442QVariantMap conferenceRequest(const QString &channelType, Tp::HandleType targetHandleType,
443 const QList<Tp::ChannelPtr> &channels, const QStringList &initialInviteeContactsIdentifiers)
444{
445 QVariantMap request = conferenceCommonRequest(channelType, targetHandleType, channels);
446 if (!initialInviteeContactsIdentifiers.isEmpty()) {
447 request.insert(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE + QLatin1String(".InitialInviteeIDs"),
448 initialInviteeContactsIdentifiers);
449 }
450 return request;
451}
452
453QVariantMap conferenceRequest(const QString &channelType, Tp::HandleType targetHandleType,
454 const QList<Tp::ChannelPtr> &channels, const QList<Tp::ContactPtr> &initialInviteeContacts)
455{
456 QVariantMap request = conferenceCommonRequest(channelType, targetHandleType, channels);
457 if (!initialInviteeContacts.isEmpty()) {
458 Tp::UIntList handles;
459 foreach (const Tp::ContactPtr &contact, initialInviteeContacts) {
460 if (!contact) {
461 continue;
462 }
463 handles << contact->handle()[0];
464 }
465 if (!handles.isEmpty()) {
466 request.insert(TP_QT_IFACE_CHANNEL_INTERFACE_CONFERENCE +
467 QLatin1String(".InitialInviteeHandles"), qVariantFromValue(handles));
468 }
469 }
470 return request;
471}
472
473QVariantMap conferenceTextChatRequest(const QList<Tp::ChannelPtr> &channels,
474 const QStringList &initialInviteeContactsIdentifiers)
475{
476 QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_TEXT,
477 Tp::HandleTypeNone, channels, initialInviteeContactsIdentifiers);
478 return request;
479}
480
481QVariantMap conferenceTextChatRequest(const QList<Tp::ChannelPtr> &channels,
482 const QList<Tp::ContactPtr> &initialInviteeContacts)
483{
484 QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_TEXT,
485 Tp::HandleTypeNone, channels, initialInviteeContacts);
486 return request;
487}
488
489QVariantMap conferenceTextChatroomRequest(const QString &roomName,
490 const QList<Tp::ChannelPtr> &channels,
491 const QStringList &initialInviteeContactsIdentifiers)
492{
493 QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_TEXT,
494 Tp::HandleTypeRoom, channels, initialInviteeContactsIdentifiers);
495 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), roomName);
496 return request;
497}
498
499QVariantMap conferenceTextChatroomRequest(const QString &roomName,
500 const QList<Tp::ChannelPtr> &channels,
501 const QList<Tp::ContactPtr> &initialInviteeContacts)
502{
503 QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_TEXT,
504 Tp::HandleTypeRoom, channels, initialInviteeContacts);
505 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".TargetID"), roomName);
506 return request;
507}
508
509QVariantMap conferenceStreamedMediaCallRequest(const QList<Tp::ChannelPtr> &channels,
510 const QStringList &initialInviteeContactsIdentifiers)
511{
512 QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
513 Tp::HandleTypeNone, channels, initialInviteeContactsIdentifiers);
514 return request;
515}
516
517QVariantMap conferenceStreamedMediaCallRequest(const QList<Tp::ChannelPtr> &channels,
518 const QList<Tp::ContactPtr> &initialInviteeContacts)
519{
520 QVariantMap request = conferenceRequest(TP_QT_IFACE_CHANNEL_TYPE_STREAMED_MEDIA,
521 Tp::HandleTypeNone, channels, initialInviteeContacts);
522 return request;
523}
524
525QVariantMap contactSearchRequest(const ConnectionCapabilities &capabilities,
526 const QString &server, uint limit)
527{
528 QVariantMap request;
529 request.insert(TP_QT_IFACE_CHANNEL + QLatin1String(".ChannelType"),
530 TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH);
531 if (capabilities.contactSearchesWithSpecificServer()) {
532 request.insert(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Server"),
533 server);
534 } else if (!server.isEmpty()) {
535 warning() << "Ignoring Server parameter for contact search, since the protocol does not support it.";
536 }
537 if (capabilities.contactSearchesWithLimit()) {
538 request.insert(TP_QT_IFACE_CHANNEL_TYPE_CONTACT_SEARCH + QLatin1String(".Limit"), limit);
539 } else if (limit > 0) {
540 warning() << "Ignoring Limit parameter for contact search, since the protocol does not support it.";
541 }
542 return request;
543}
544
545} // anonymous namespace
546
547struct TP_QT_NO_EXPORT Account::Private
548{
549 Private(Account *parent, const ConnectionFactoryConstPtr &connFactory,
550 const ChannelFactoryConstPtr &chanFactory,
551 const ContactFactoryConstPtr &contactFactory);
552 ~Private();
553
554 void init();
555
556 static void introspectMain(Private *self);
557 static void introspectAvatar(Private *self);
558 static void introspectProtocolInfo(Private *self);
559 static void introspectCapabilities(Private *self);
560
561 void updateProperties(const QVariantMap &props);
562 void retrieveAvatar();
563 bool processConnQueue();
564
565 bool checkCapabilitiesChanged(bool profileChanged);
566
567 QString connectionObjectPath() const;
568
569 // Public object
570 Account *parent;
571
572 // Factories
573 ConnectionFactoryConstPtr connFactory;
574 ChannelFactoryConstPtr chanFactory;
575 ContactFactoryConstPtr contactFactory;
576
577 // Instance of generated interface class
578 Client::AccountInterface *baseInterface;
579
580 // Mandatory properties interface proxy
581 Client::DBus::PropertiesInterface *properties;
582
583 ReadinessHelper *readinessHelper;
584
585 // Introspection
586 QVariantMap parameters;
587 bool valid;
588 bool enabled;
589 bool connectsAutomatically;
590 bool hasBeenOnline;
591 bool changingPresence;
592 QString cmName;
593 QString protocolName;
594 QString serviceName;
595 ProfilePtr profile;
596 QString displayName;
597 QString nickname;
598 QString iconName;
599 QQueue<QString> connObjPathQueue;
600 ConnectionPtr connection;
601 bool mayFinishCore, coreFinished;
602 QString normalizedName;
603 Avatar avatar;
604 ConnectionManagerPtr cm;
605 ConnectionStatus connectionStatus;
606 ConnectionStatusReason connectionStatusReason;
607 QString connectionError;
608 Connection::ErrorDetails connectionErrorDetails;
609 Presence automaticPresence;
610 Presence currentPresence;
611 Presence requestedPresence;
612 bool usingConnectionCaps;
613 ConnectionCapabilities customCaps;
614
615 // The contexts should never be removed from the map, to guarantee O(1) CD introspections per bus
616 struct DispatcherContext;
617 static QHash<QString, QSharedPointer<DispatcherContext> > dispatcherContexts;
618 QSharedPointer<DispatcherContext> dispatcherContext;
619};
620
621struct Account::Private::DispatcherContext
622{
623 DispatcherContext(const QDBusConnection &bus)
624 : iface(new Client::ChannelDispatcherInterface(bus, TP_QT_CHANNEL_DISPATCHER_BUS_NAME, TP_QT_CHANNEL_DISPATCHER_OBJECT_PATH)),
625 introspected(false), supportsHints(false)
626 {
627 }
628
629 ~DispatcherContext()
630 {
631 delete iface;
632 }
633
634 Client::ChannelDispatcherInterface *iface;
635
636 bool introspected, supportsHints;
637 QWeakPointer<PendingVariant> introspectOp;
638
639private:
640 DispatcherContext(const DispatcherContext &);
641 void operator=(const DispatcherContext &);
642};
643
644Account::Private::Private(Account *parent, const ConnectionFactoryConstPtr &connFactory,
645 const ChannelFactoryConstPtr &chanFactory, const ContactFactoryConstPtr &contactFactory)
646 : parent(parent),
647 connFactory(connFactory),
648 chanFactory(chanFactory),
649 contactFactory(contactFactory),
650 baseInterface(new Client::AccountInterface(parent)),
651 properties(parent->interface<Client::DBus::PropertiesInterface>()),
652 readinessHelper(parent->readinessHelper()),
653 valid(false),
654 enabled(false),
655 connectsAutomatically(false),
656 hasBeenOnline(false),
657 changingPresence(false),
658 mayFinishCore(false),
659 coreFinished(false),
660 connectionStatus(ConnectionStatusDisconnected),
661 connectionStatusReason(ConnectionStatusReasonNoneSpecified),
662 usingConnectionCaps(false),
663 dispatcherContext(dispatcherContexts.value(parent->dbusConnection().name()))
664{
665 // FIXME: QRegExp probably isn't the most efficient possible way to parse
666 // this :-)
667 QRegExp rx(QLatin1String("^") + TP_QT_ACCOUNT_OBJECT_PATH_BASE +
668 QLatin1String("/([_A-Za-z][_A-Za-z0-9]*)" // cap(1) is the CM
669 "/([_A-Za-z][_A-Za-z0-9]*)" // cap(2) is the protocol
670 "/([_A-Za-z][_A-Za-z0-9]*)" // account-specific part
671 ));
672
673 if (rx.exactMatch(parent->objectPath())) {
674 cmName = rx.cap(1);
675 protocolName = rx.cap(2).replace(QLatin1Char('_'), QLatin1Char('-'));
676 } else {
677 warning() << "Account object path is not spec-compliant, "
678 "trying again with a different account-specific part check";
679
680 rx = QRegExp(QLatin1String("^") + TP_QT_ACCOUNT_OBJECT_PATH_BASE +
681 QLatin1String("/([_A-Za-z][_A-Za-z0-9]*)" // cap(1) is the CM
682 "/([_A-Za-z][_A-Za-z0-9]*)" // cap(2) is the protocol
683 "/([_A-Za-z0-9]*)" // account-specific part
684 ));
685 if (rx.exactMatch(parent->objectPath())) {
686 cmName = rx.cap(1);
687 protocolName = rx.cap(2).replace(QLatin1Char('_'), QLatin1Char('-'));
688 } else {
689 warning() << "Not a valid Account object path:" <<
690 parent->objectPath();
691 }
692 }
693
694 ReadinessHelper::Introspectables introspectables;
695
696 // As Account does not have predefined statuses let's simulate one (0)
697 ReadinessHelper::Introspectable introspectableCore(
698 QSet<uint>() << 0, // makesSenseForStatuses
699 Features(), // dependsOnFeatures
700 QStringList(), // dependsOnInterfaces
701 (ReadinessHelper::IntrospectFunc) &Private::introspectMain,
702 this);
703 introspectables[FeatureCore] = introspectableCore;
704
705 ReadinessHelper::Introspectable introspectableAvatar(
706 QSet<uint>() << 0, // makesSenseForStatuses
707 Features() << FeatureCore, // dependsOnFeatures (core)
708 QStringList() << TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR, // dependsOnInterfaces
709 (ReadinessHelper::IntrospectFunc) &Private::introspectAvatar,
710 this);
711 introspectables[FeatureAvatar] = introspectableAvatar;
712
713 ReadinessHelper::Introspectable introspectableProtocolInfo(
714 QSet<uint>() << 0, // makesSenseForStatuses
715 Features() << FeatureCore, // dependsOnFeatures (core)
716 QStringList(), // dependsOnInterfaces
717 (ReadinessHelper::IntrospectFunc) &Private::introspectProtocolInfo,
718 this);
719 introspectables[FeatureProtocolInfo] = introspectableProtocolInfo;
720
721 ReadinessHelper::Introspectable introspectableCapabilities(
722 QSet<uint>() << 0, // makesSenseForStatuses
723 Features() << FeatureCore << FeatureProtocolInfo << FeatureProfile, // dependsOnFeatures
724 QStringList(), // dependsOnInterfaces
725 (ReadinessHelper::IntrospectFunc) &Private::introspectCapabilities,
726 this);
727 introspectables[FeatureCapabilities] = introspectableCapabilities;
728
729 readinessHelper->addIntrospectables(introspectables);
730
731 if (connFactory->dbusConnection().name() != parent->dbusConnection().name()) {
732 warning() << " The D-Bus connection in the conn factory is not the proxy connection for"
733 << parent->objectPath();
734 }
735
736 if (chanFactory->dbusConnection().name() != parent->dbusConnection().name()) {
737 warning() << " The D-Bus connection in the channel factory is not the proxy connection for"
738 << parent->objectPath();
739 }
740
741 if (!dispatcherContext) {
742 dispatcherContext = QSharedPointer<DispatcherContext>(new DispatcherContext(parent->dbusConnection()));
743 dispatcherContexts.insert(parent->dbusConnection().name(), dispatcherContext);
744 }
745
746 init();
747}
748
749Account::Private::~Private()
750{
751}
752
753bool Account::Private::checkCapabilitiesChanged(bool profileChanged)
754{
755 /* when the capabilities changed:
756 *
757 * - We were using the connection caps and now we don't have connection or
758 * the connection we have is not connected (changed to CM caps)
759 * - We were using the CM caps and now we have a connected connection
760 * (changed to new connection caps)
761 */
762 bool changed = false;
763
764 if (usingConnectionCaps &&
765 (parent->connection().isNull() ||
766 connection->status() != ConnectionStatusConnected)) {
767 usingConnectionCaps = false;
768 changed = true;
769 } else if (!usingConnectionCaps &&
770 !parent->connection().isNull() &&
771 connection->status() == ConnectionStatusConnected) {
772 usingConnectionCaps = true;
773 changed = true;
774 } else if (!usingConnectionCaps && profileChanged) {
775 changed = true;
776 }
777
778 if (changed && parent->isReady(FeatureCapabilities)) {
779 emit parent->capabilitiesChanged(parent->capabilities());
780 }
781
782 return changed;
783}
784
785QString Account::Private::connectionObjectPath() const
786{
787 return !connection.isNull() ? connection->objectPath() : QString();
788}
789
790QHash<QString, QSharedPointer<Account::Private::DispatcherContext> > Account::Private::dispatcherContexts;
791
792/**
793 * \class Account
794 * \ingroup clientaccount
795 * \headerfile TelepathyQt/account.h <TelepathyQt/Account>
796 *
797 * \brief The Account class represents a Telepathy account.
798 *
799 * The remote object accessor functions on this object (isValidAccount(),
800 * isEnabled(), and so on) don't make any D-Bus calls; instead, they return/use
801 * values cached from a previous introspection run. The introspection process
802 * populates their values in the most efficient way possible based on what the
803 * service implements.
804 *
805 * To avoid unnecessary D-Bus traffic, some accessors only return valid
806 * information after specific features have been enabled.
807 * For instance, to retrieve the account protocol information, it is necessary to
808 * enable the feature Account::FeatureProtocolInfo.
809 * See the individual methods descriptions for more details.
810 *
811 * Account features can be enabled by constructing an AccountFactory and enabling
812 * the desired features, and passing it to AccountManager or ClientRegistrar
813 * when creating them as appropriate. However, if a particular
814 * feature is only ever used in a specific circumstance, such as an user opening
815 * some settings dialog separate from the general view of the application,
816 * features can be later enabled as needed by calling becomeReady() with the additional
817 * features, and waiting for the resulting PendingOperation to finish.
818 *
819 * As an addition to accessors, signals are emitted to indicate that properties have
820 * changed, for example displayNameChanged(), iconNameChanged(), etc.
821 *
822 * Convenience methods to create channels using the channel dispatcher such as
823 * ensureTextChat(), createFileTransfer() are also provided.
824 *
825 * If the account is deleted from the AccountManager, this object
826 * will not be deleted automatically; however, it will emit invalidated()
827 * with error code #TP_QT_ERROR_OBJECT_REMOVED and will cease to
828 * be useful.
829 *
830 * \section account_usage_sec Usage
831 *
832 * \subsection account_create_sec Creating an account object
833 *
834 * The easiest way to create account objects is through AccountManager. One can
835 * just use the AccountManager convenience methods such as
836 * AccountManager::validAccounts() to get a list of account objects representing
837 * valid accounts.
838 *
839 * If you already know the object path, you can just call create().
840 * For example:
841 *
842 * \code AccountPtr acc = Account::create(busName, objectPath); \endcode
843 *
844 * An AccountPtr object is returned, which will automatically keep
845 * track of object lifetime.
846 *
847 * You can also provide a D-Bus connection as a QDBusConnection:
848 *
849 * \code
850 *
851 * AccountPtr acc = Account::create(QDBusConnection::sessionBus(),
852 * busName, objectPath);
853 *
854 * \endcode
855 *
856 * \subsection account_ready_sec Making account ready to use
857 *
858 * An Account object needs to become ready before usage, meaning that the
859 * introspection process finished and the object accessors can be used.
860 *
861 * To make the object ready, use becomeReady() and wait for the
862 * PendingOperation::finished() signal to be emitted.
863 *
864 * \code
865 *
866 * class MyClass : public QObject
867 * {
868 * QOBJECT
869 *
870 * public:
871 * MyClass(QObject *parent = 0);
872 * ~MyClass() { }
873 *
874 * private Q_SLOTS:
875 * void onAccountReady(Tp::PendingOperation*);
876 *
877 * private:
878 * AccountPtr acc;
879 * };
880 *
881 * MyClass::MyClass(const QString &busName, const QString &objectPath,
882 * QObject *parent)
883 * : QObject(parent)
884 * acc(Account::create(busName, objectPath))
885 * {
886 * connect(acc->becomeReady(),
887 * SIGNAL(finished(Tp::PendingOperation*)),
888 * SLOT(onAccountReady(Tp::PendingOperation*)));
889 * }
890 *
891 * void MyClass::onAccountReady(Tp::PendingOperation *op)
892 * {
893 * if (op->isError()) {
894 * qWarning() << "Account cannot become ready:" <<
895 * op->errorName() << "-" << op->errorMessage();
896 * return;
897 * }
898 *
899 * // Account is now ready
900 * qDebug() << "Display name:" << acc->displayName();
901 * }
902 *
903 * \endcode
904 *
905 * See \ref async_model, \ref shared_ptr
906 */
907
908/**
909 * Feature representing the core that needs to become ready to make the Account
910 * object usable.
911 *
912 * Note that this feature must be enabled in order to use most Account methods.
913 * See specific methods documentation for more details.
914 *
915 * When calling isReady(), becomeReady(), this feature is implicitly added
916 * to the requested features.
917 */
918const Feature Account::FeatureCore = Feature(QLatin1String(Account::staticMetaObject.className()), 0, true);
919
920/**
921 * Feature used in order to access account avatar info.
922 *
923 * See avatar specific methods' documentation for more details.
924 *
925 * \sa avatar(), avatarChanged()
926 */
927const Feature Account::FeatureAvatar = Feature(QLatin1String(Account::staticMetaObject.className()), 1);
928
929/**
930 * Feature used in order to access account protocol info.
931 *
932 * See protocol info specific methods' documentation for more details.
933 *
934 * \sa protocolInfo()
935 */
936const Feature Account::FeatureProtocolInfo = Feature(QLatin1String(Account::staticMetaObject.className()), 2);
937
938/**
939 * Feature used in order to access account capabilities.
940 *
941 * Enabling this feature will also enable FeatureProtocolInfo and FeatureProfile.
942 *
943 * See capabilities specific methods' documentation for more details.
944 *
945 * \sa capabilities(), capabilitiesChanged()
946 */
947const Feature Account::FeatureCapabilities = Feature(QLatin1String(Account::staticMetaObject.className()), 3);
948
949/**
950 * Feature used in order to access account profile info.
951 *
952 * See profile specific methods' documentation for more details.
953 *
954 * \sa profile(), profileChanged()
955 */
956const Feature Account::FeatureProfile = FeatureProtocolInfo;
957// FeatureProfile is the same as FeatureProtocolInfo for now, as it only needs
958// the protocol info, cm name and protocol name to build a fake profile. Make it
959// a full-featured feature if needed later.
960
961/**
962 * Create a new Account object using QDBusConnection::sessionBus() and the given factories.
963 *
964 * A warning is printed if the factories are not for QDBusConnection::sessionBus().
965 *
966 * \param busName The account well-known bus name (sometimes called a "service
967 * name"). This is usually the same as the account manager
968 * bus name #TP_QT_ACCOUNT_MANAGER_BUS_NAME.
969 * \param objectPath The account object path.
970 * \param connectionFactory The connection factory to use.
971 * \param channelFactory The channel factory to use.
972 * \param contactFactory The contact factory to use.
973 * \return An AccountPtr object pointing to the newly created Account object.
974 */
975AccountPtr Account::create(const QString &busName, const QString &objectPath,
976 const ConnectionFactoryConstPtr &connectionFactory,
977 const ChannelFactoryConstPtr &channelFactory,
978 const ContactFactoryConstPtr &contactFactory)
979{
980 return AccountPtr(new Account(QDBusConnection::sessionBus(), busName, objectPath,
981 connectionFactory, channelFactory, contactFactory, Account::FeatureCore));
982}
983
984/**
985 * Create a new Account object using the given \a bus and the given factories.
986 *
987 * A warning is printed if the factories are not for \a bus.
988 *
989 * \param bus QDBusConnection to use.
990 * \param busName The account well-known bus name (sometimes called a "service
991 * name"). This is usually the same as the account manager
992 * bus name #TP_QT_ACCOUNT_MANAGER_BUS_NAME.
993 * \param objectPath The account object path.
994 * \param connectionFactory The connection factory to use.
995 * \param channelFactory The channel factory to use.
996 * \param contactFactory The contact factory to use.
997 * \return An AccountPtr object pointing to the newly created Account object.
998 */
999AccountPtr Account::create(const QDBusConnection &bus,
1000 const QString &busName, const QString &objectPath,
1001 const ConnectionFactoryConstPtr &connectionFactory,
1002 const ChannelFactoryConstPtr &channelFactory,
1003 const ContactFactoryConstPtr &contactFactory)
1004{
1005 return AccountPtr(new Account(bus, busName, objectPath, connectionFactory, channelFactory,
1006 contactFactory, Account::FeatureCore));
1007}
1008
1009/**
1010 * Construct a new Account object using the given \a bus and the given factories.
1011 *
1012 * A warning is printed if the factories are not for \a bus.
1013 *
1014 * \param bus QDBusConnection to use.
1015 * \param busName The account well-known bus name (sometimes called a "service
1016 * name"). This is usually the same as the account manager
1017 * bus name #TP_QT_ACCOUNT_MANAGER_BUS_NAME.
1018 * \param objectPath The account object path.
1019 * \param connectionFactory The connection factory to use.
1020 * \param channelFactory The channel factory to use.
1021 * \param contactFactory The contact factory to use.
1022 * \param coreFeature The core feature of the Account subclass. The corresponding introspectable
1023 * should depend on Account::FeatureCore.
1024 */
1025Account::Account(const QDBusConnection &bus,
1026 const QString &busName, const QString &objectPath,
1027 const ConnectionFactoryConstPtr &connectionFactory,
1028 const ChannelFactoryConstPtr &channelFactory,
1029 const ContactFactoryConstPtr &contactFactory,
1030 const Feature &coreFeature)
1031 : StatelessDBusProxy(bus, busName, objectPath, coreFeature),
1032 OptionalInterfaceFactory<Account>(this),
1033 mPriv(new Private(this, connectionFactory, channelFactory, contactFactory))
1034{
1035}
1036
1037/**
1038 * Class destructor.
1039 */
1040Account::~Account()
1041{
1042 delete mPriv;
1043}
1044
1045/**
1046 * Return the connection factory used by this account.
1047 *
1048 * Only read access is provided. This allows constructing object instances and examining the object
1049 * construction settings, but not changing settings. Allowing changes would lead to tricky
1050 * situations where objects constructed at different times by the account would have unpredictably
1051 * different construction settings (eg. subclass).
1052 *
1053 * \return A read-only pointer to the ConnectionFactory object.
1054 */
1055ConnectionFactoryConstPtr Account::connectionFactory() const
1056{
1057 return mPriv->connFactory;
1058}
1059
1060/**
1061 * Return the channel factory used by this account.
1062 *
1063 * Only read access is provided. This allows constructing object instances and examining the object
1064 * construction settings, but not changing settings. Allowing changes would lead to tricky
1065 * situations where objects constructed at different times by the account would have unpredictably
1066 * different construction settings (eg. subclass).
1067 *
1068 * \return A read-only pointer to the ChannelFactory object.
1069 */
1070ChannelFactoryConstPtr Account::channelFactory() const
1071{
1072 return mPriv->chanFactory;
1073}
1074
1075/**
1076 * Return the contact factory used by this account.
1077 *
1078 * Only read access is provided. This allows constructing object instances and examining the object
1079 * construction settings, but not changing settings. Allowing changes would lead to tricky
1080 * situations where objects constructed at different times by the account would have unpredictably
1081 * different construction settings (eg. subclass).
1082 *
1083 * \return A read-only pointer to the ContactFactory object.
1084 */
1085ContactFactoryConstPtr Account::contactFactory() const
1086{
1087 return mPriv->contactFactory;
1088}
1089
1090/**
1091 * Return whether this account is valid.
1092 *
1093 * If \c true, this account is considered by the account manager to be complete
1094 * and usable. If \c false, user action is required to make it usable, and it will
1095 * never attempt to connect. For instance, this might be caused by the absence
1096 * or misconfiguration of a required parameter, in which case updateParameters()
1097 * may be used to properly set the parameters values.
1098 *
1099 * Change notification is via the validityChanged() signal.
1100 *
1101 * This method requires Account::FeatureCore to be ready.
1102 *
1103 * \return \c true if valid, \c false otherwise.
1104 * \sa validityChanged(), updateParameters()
1105 */
1106bool Account::isValidAccount() const
1107{
1108 return mPriv->valid;
1109}
1110
1111/**
1112 * Return whether this account is enabled.
1113 *
1114 * Change notification is via the stateChanged() signal.
1115 *
1116 * This method requires Account::FeatureCore to be ready.
1117 *
1118 * \return \c true if enabled, \c false otherwise.
1119 * \sa stateChanged(), setEnabled()
1120 */
1121bool Account::isEnabled() const
1122{
1123 return mPriv->enabled;
1124}
1125
1126/**
1127 * Set whether this account should be enabled or disabled.
1128 *
1129 * This gives users the possibility to prevent an account from
1130 * being used.
1131 *
1132 * Note that changing this property won't change the validity of the account.
1133 *
1134 * \param value Whether this account should be enabled or disabled.
1135 * \return A PendingOperation which will emit PendingOperation::finished
1136 * when the request has been made.
1137 * \sa stateChanged(), isEnabled()
1138 */
1139PendingOperation *Account::setEnabled(bool value)
1140{
1141 return new PendingVoid(
1142 mPriv->properties->Set(
1143 TP_QT_IFACE_ACCOUNT,
1144 QLatin1String("Enabled"),
1145 QDBusVariant(value)),
1146 AccountPtr(this));
1147}
1148
1149/**
1150 * Return the connection manager name of this account.
1151 *
1152 * \return The connection manager name.
1153 */
1154QString Account::cmName() const
1155{
1156 return mPriv->cmName;
1157}
1158
1159/**
1160 * Return the protocol name of this account.
1161 *
1162 * \return The protocol name.
1163 */
1164QString Account::protocolName() const
1165{
1166 return mPriv->protocolName;
1167}
1168
1169/**
1170 * Return the service name of this account.
1171 *
1172 * Note that this method will fallback to protocolName() if service name
1173 * is not known.
1174 *
1175 * Change notification is via the serviceNameChanged() signal.
1176 *
1177 * This method requires Account::FeatureCore to be ready.
1178 *
1179 * \return The service name.
1180 * \sa serviceNameChanged(), setServiceName(), protocolName()
1181 */
1182QString Account::serviceName() const
1183{
1184 if (mPriv->serviceName.isEmpty()) {
1185 return mPriv->protocolName;
1186 }
1187 return mPriv->serviceName;
1188}
1189
1190/**
1191 * Set the service name of this account.
1192 *
1193 * Some protocols, like XMPP and SIP, are used by various different user-recognised brands,
1194 * such as Google Talk. On accounts for such services, this method can be used
1195 * to set the name describing the service, which must consist only of ASCII letters, numbers and
1196 * hyphen/minus signs, and start with a letter.
1197 * For the jabber protocol, one of the following service names should be used if possible:
1198 *
1199 * google-talk (for Google's IM service)
1200 * facebook (for Facebook's IM service)
1201 * lj-talk (for LiveJournal's IM service)
1202 *
1203 * The service name may also be set, if appropriate, when creating the account. See
1204 * AccountManager::createAccount() for more details.
1205 *
1206 * Note that changing this property may also change the profile() used by this account,
1207 * in which case profileChanged() will be emitted in addition to serviceNameChanged(), if
1208 * Account::FeatureProfile is enabled.
1209 *
1210 * \param value The service name of this account.
1211 * \return A PendingOperation which will emit PendingOperation::finished
1212 * when the request has been made.
1213 * \sa serviceNameChanged(), serviceName()
1214 */
1215PendingOperation *Account::setServiceName(const QString &value)
1216{
1217 return new PendingVoid(
1218 mPriv->properties->Set(
1219 TP_QT_IFACE_ACCOUNT,
1220 QLatin1String("Service"),
1221 QDBusVariant(value)),
1222 AccountPtr(this));
1223}
1224
1225/**
1226 * Return the profile used by this account.
1227 *
1228 * Profiles are intended to describe variants of the basic protocols supported by Telepathy
1229 * connection managers.
1230 * An example of this would be Google Talk vs Facebook chat vs Jabber/XMPP. Google Talk is a
1231 * specific case of XMPP with well-known capabilities, quirks and settings, and Facebook chat is
1232 * a subset of the standard XMPP offering.
1233 *
1234 * This method will return the profile for this account based on the service used by it.
1235 *
1236 * Note that if a profile for serviceName() is not available, a fake profile
1237 * (Profile::isFake() is \c true) will be returned in case protocolInfo() is valid.
1238 *
1239 * The fake profile will contain the following info:
1240 * - Profile::type() will return "IM"
1241 * - Profile::provider() will return an empty string
1242 * - Profile::serviceName() will return "cmName()-serviceName()"
1243 * - Profile::name() and Profile::protocolName() will return protocolName()
1244 * - Profile::iconName() will return "im-protocolName()"
1245 * - Profile::cmName() will return cmName()
1246 * - Profile::parameters() will return a list matching CM default parameters for protocol with name
1247 * protocolName()
1248 * - Profile::presences() will return an empty list and
1249 * Profile::allowOtherPresences() will return \c true, meaning that CM
1250 * presences should be used
1251 * - Profile::unsupportedChannelClassSpecs() will return an empty list
1252 *
1253 * Change notification is via the profileChanged() signal.
1254 *
1255 * This method requires Account::FeatureProfile to be ready.
1256 *
1257 * \return A pointer to the Profile object.
1258 * \sa profileChanged(), serviceName()
1259 */
1260ProfilePtr Account::profile() const
1261{
1262 if (!isReady(FeatureProfile)) {
1263 warning() << "Account::profile() requires Account::FeatureProfile to be ready";
1264 return ProfilePtr();
1265 }
1266
1267 if (!mPriv->profile) {
1268 mPriv->profile = Profile::createForServiceName(serviceName());
1269 if (!mPriv->profile->isValid()) {
1270 if (protocolInfo().isValid()) {
1271 mPriv->profile = ProfilePtr(new Profile(
1272 QString(QLatin1String("%1-%2")).arg(mPriv->cmName).arg(serviceName()),
1273 mPriv->cmName,
1274 mPriv->protocolName,
1275 protocolInfo()));
1276 } else {
1277 warning() << "Cannot create profile as neither a .profile is installed for service" <<
1278 serviceName() << "nor protocol info can be retrieved";
1279 }
1280 }
1281 }
1282 return mPriv->profile;
1283}
1284
1285/**
1286 * Return the display name of this account.
1287 *
1288 * Change notification is via the displayNameChanged() signal.
1289 *
1290 * This method requires Account::FeatureCore to be ready.
1291 *
1292 * \return The display name.
1293 * \sa displayNameChanged(), setDisplayName()
1294 */
1295QString Account::displayName() const
1296{
1297 return mPriv->displayName;
1298}
1299
1300/**
1301 * Set the display name of this account.
1302 *
1303 * The display name is the user-visible name of this account.
1304 * This is usually chosen by the user at account creation time.
1305 * See AccountManager::createAccount() for more details.
1306 *
1307 * \param value The display name of this account.
1308 * \return A PendingOperation which will emit PendingOperation::finished
1309 * when the request has been made.
1310 * \sa displayNameChanged(), displayName()
1311 */
1312PendingOperation *Account::setDisplayName(const QString &value)
1313{
1314 return new PendingVoid(
1315 mPriv->properties->Set(
1316 TP_QT_IFACE_ACCOUNT,
1317 QLatin1String("DisplayName"),
1318 QDBusVariant(value)),
1319 AccountPtr(this));
1320}
1321
1322/**
1323 * Return the icon name of this account.
1324 *
1325 * If the account has no icon, and Account::FeatureProfile is enabled, the icon from the result of
1326 * profile() will be used.
1327 *
1328 * If neither the account nor the profile has an icon, and Account::FeatureProtocolInfo is
1329 * enabled, the icon from protocolInfo() will be used if set.
1330 *
1331 * As a last resort, "im-" + protocolName() will be returned.
1332 *
1333 * This matches the fallbacks recommended by the \telepathy_spec.
1334 *
1335 * Change notification is via the iconNameChanged() signal.
1336 *
1337 * This method requires Account::FeatureCore to be ready.
1338 *
1339 * \return The icon name.
1340 * \sa iconNameChanged(), setIconName()
1341 */
1342QString Account::iconName() const
1343{
1344 if (mPriv->iconName.isEmpty()) {
1345 if (isReady(FeatureProfile)) {
1346 ProfilePtr pr = profile();
1347 if (pr && pr->isValid()) {
1348 QString iconName = pr->iconName();
1349 if (!iconName.isEmpty()) {
1350 return iconName;
1351 }
1352 }
1353 }
1354
1355 if (isReady(FeatureProtocolInfo) && protocolInfo().isValid()) {
1356 return protocolInfo().iconName();
1357 }
1358
1359 return QString(QLatin1String("im-%1")).arg(protocolName());
1360 }
1361
1362 return mPriv->iconName;
1363}
1364
1365/**
1366 * Set the icon name of this account.
1367 *
1368 * \param value The icon name of this account.
1369 * \return A PendingOperation which will emit PendingOperation::finished
1370 * when the request has been made.
1371 * \sa iconNameChanged(), iconName()
1372 */
1373PendingOperation *Account::setIconName(const QString &value)
1374{
1375 return new PendingVoid(
1376 mPriv->properties->Set(
1377 TP_QT_IFACE_ACCOUNT,
1378 QLatin1String("Icon"),
1379 QDBusVariant(value)),
1380 AccountPtr(this));
1381}
1382
1383/**
1384 * Return the nickname of this account.
1385 *
1386 * Change notification is via the nicknameChanged() signal.
1387 *
1388 * This method requires Account::FeatureCore to be ready.
1389 *
1390 * \return The nickname.
1391 * \sa nicknameChanged(), setNickname()
1392 */
1393QString Account::nickname() const
1394{
1395 return mPriv->nickname;
1396}
1397
1398/**
1399 * Set the nickname of this account as seen to other contacts.
1400 *
1401 * \param value The nickname of this account.
1402 * \return A PendingOperation which will emit PendingOperation::finished
1403 * when the request has been made.
1404 * \sa nicknameChanged(), nickname()
1405 */
1406PendingOperation *Account::setNickname(const QString &value)
1407{
1408 return new PendingVoid(
1409 mPriv->properties->Set(
1410 TP_QT_IFACE_ACCOUNT,
1411 QLatin1String("Nickname"),
1412 QDBusVariant(value)),
1413 AccountPtr(this));
1414}
1415
1416/**
1417 * Return the avatar requirements (size limits, supported MIME types, etc)
1418 * for avatars passed to setAvatar() on this account.
1419 *
1420 * For now this method will only return the avatar requirements found in protocolInfo() if
1421 * Account::FeatureProtocolInfo is ready, otherwise an invalid AvatarSpec instance is returned.
1422 *
1423 * \return The requirements as an AvatarSpec object.
1424 * \sa avatar(), setAvatar()
1425 */
1426AvatarSpec Account::avatarRequirements() const
1427{
1428 // TODO Once connection has support for avatar requirements use it if the connection is usable
1429 ProtocolInfo pi = protocolInfo();
1430 if (pi.isValid()) {
1431 return pi.avatarRequirements();
1432 }
1433 return AvatarSpec();
1434}
1435
1436/**
1437 * Return the avatar of this account.
1438 *
1439 * Change notification is via the avatarChanged() signal.
1440 *
1441 * This method requires Account::FeatureAvatar to be ready.
1442 *
1443 * \return The avatar as an Avatar object.
1444 * \sa avatarChanged(), setAvatar()
1445 */
1446const Avatar &Account::avatar() const
1447{
1448 if (!isReady(Features() << FeatureAvatar)) {
1449 warning() << "Trying to retrieve avatar from account, but "
1450 "avatar is not supported or was not requested. "
1451 "Use becomeReady(FeatureAvatar)";
1452 }
1453
1454 return mPriv->avatar;
1455}
1456
1457/**
1458 * Set avatar of this account as seen to other contacts.
1459 *
1460 * Note that \a avatar must match the requirements as returned by avatarRequirements().
1461 *
1462 * \param avatar The avatar of this account.
1463 * \return A PendingOperation which will emit PendingOperation::finished
1464 * when the request has been made.
1465 * \sa avatarChanged(), avatar(), avatarRequirements()
1466 */
1467PendingOperation *Account::setAvatar(const Avatar &avatar)
1468{
1469 if (!interfaces().contains(TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR)) {
1470 return new PendingFailure(
1471 TP_QT_ERROR_NOT_IMPLEMENTED,
1472 QLatin1String("Account does not support Avatar"),
1473 AccountPtr(this));
1474 }
1475
1476 return new PendingVoid(
1477 mPriv->properties->Set(
1478 TP_QT_IFACE_ACCOUNT_INTERFACE_AVATAR,
1479 QLatin1String("Avatar"),
1480 QDBusVariant(QVariant::fromValue(avatar))),
1481 AccountPtr(this));
1482}
1483
1484/**
1485 * Return the parameters of this account.
1486 *
1487 * The account parameters are represented as a map from connection manager parameter names
1488 * to their values.
1489 *
1490 * Change notification is via the parametersChanged() signal.
1491 *
1492 * This method requires Account::FeatureCore to be ready.
1493 *
1494 * \return The parameters as QVariantMap.
1495 * \sa parametersChanged(), updateParameters()
1496 */
1497QVariantMap Account::parameters() const
1498{
1499 return mPriv->parameters;
1500}
1501
1502/**
1503 * Update this account parameters.
1504 *
1505 * On success, the PendingOperation returned by this method will produce a
1506 * list of strings, which are the names of parameters whose changes will not
1507 * take effect until the account is disconnected and reconnected (for instance
1508 * by calling reconnect()).
1509 *
1510 * \param set Parameters to set.
1511 * \param unset Parameters to unset.
1512 * \return A PendingStringList which will emit PendingStringList::finished
1513 * when the request has been made
1514 * \sa parametersChanged(), parameters(), reconnect()
1515 */
1516PendingStringList *Account::updateParameters(const QVariantMap &set,
1517 const QStringList &unset)
1518{
1519 return new PendingStringList(
1520 baseInterface()->UpdateParameters(set, unset),
1521 AccountPtr(this));
1522}
1523
1524/**
1525 * Return the protocol info of this account protocol.
1526 *
1527 * This method requires Account::FeatureProtocolInfo to be ready.
1528 *
1529 * \return The protocol info as a ProtocolInfo object.
1530 */
1531ProtocolInfo Account::protocolInfo() const
1532{
1533 if (!isReady(Features() << FeatureProtocolInfo)) {
1534 warning() << "Trying to retrieve protocol info from account, but "
1535 "protocol info is not supported or was not requested. "
1536 "Use becomeReady(FeatureProtocolInfo)";
1537 return ProtocolInfo();
1538 }
1539
1540 return mPriv->cm->protocol(mPriv->protocolName);
1541}
1542
1543/**
1544 * Return the capabilities for this account.
1545 *
1546 * Note that this method will return the connection() capabilities if the
1547 * account is online and ready. If the account is disconnected, it will fallback
1548 * to return the subtraction of the protocolInfo() capabilities and the profile() unsupported
1549 * capabilities.
1550 *
1551 * Change notification is via the capabilitiesChanged() signal.
1552 *
1553 * This method requires Account::FeatureCapabilities to be ready.
1554 *
1555 * \return The capabilities as a ConnectionCapabilities object.
1556 * \sa capabilitiesChanged(), protocolInfo(), profile()
1557 */
1558ConnectionCapabilities Account::capabilities() const
1559{
1560 if (!isReady(FeatureCapabilities)) {
1561 warning() << "Trying to retrieve capabilities from account, but "
1562 "FeatureCapabilities was not requested. "
1563 "Use becomeReady(FeatureCapabilities)";
1564 return ConnectionCapabilities();
1565 }
1566
1567 // if the connection is online and ready use its caps
1568 if (mPriv->connection &&
1569 mPriv->connection->status() == ConnectionStatusConnected) {
1570 return mPriv->connection->capabilities();
1571 }
1572
1573 // if we are here it means FeatureProtocolInfo and FeatureProfile are ready, as
1574 // FeatureCapabilities depend on them, so let's use the subtraction of protocol info caps rccs
1575 // and profile unsupported rccs.
1576 //
1577 // However, if we failed to introspect the CM (eg. this is a test), then let's not try to use
1578 // the protocolInfo because it'll be NULL! Profile may also be NULL in case a .profile for
1579 // serviceName() is not present and protocolInfo is NULL.
1580 ProtocolInfo pi = protocolInfo();
1581 if (!pi.isValid()) {
1582 return ConnectionCapabilities();
1583 }
1584 ProfilePtr pr;
1585 if (isReady(FeatureProfile)) {
1586 pr = profile();
1587 }
1588 if (!pr || !pr->isValid()) {
1589 return pi.capabilities();
1590 }
1591
1592 RequestableChannelClassSpecList piClassSpecs = pi.capabilities().allClassSpecs();
1593 RequestableChannelClassSpecList prUnsupportedClassSpecs = pr->unsupportedChannelClassSpecs();
1594 RequestableChannelClassSpecList classSpecs;
1595 bool unsupported;
1596 foreach (const RequestableChannelClassSpec &piClassSpec, piClassSpecs) {
1597 unsupported = false;
1598 foreach (const RequestableChannelClassSpec &prUnsuportedClassSpec, prUnsupportedClassSpecs) {
1599 // Here we check the following:
1600 // - If the unsupported spec has no allowed property it means it does not support any
1601 // class whose fixed properties match.
1602 // E.g: Doesn't support any media calls, be it audio or video.
1603 // - If the unsupported spec has allowed properties it means it does not support a
1604 // specific class whose fixed properties and allowed properties should match.
1605 // E.g: Doesn't support video calls but does support audio calls.
1606 if (prUnsuportedClassSpec.allowedProperties().isEmpty()) {
1607 if (piClassSpec.fixedProperties() == prUnsuportedClassSpec.fixedProperties()) {
1608 unsupported = true;
1609 break;
1610 }
1611 } else {
1612 if (piClassSpec == prUnsuportedClassSpec) {
1613 unsupported = true;
1614 break;
1615 }
1616 }
1617 }
1618 if (!unsupported) {
1619 classSpecs.append(piClassSpec);
1620 }
1621 }
1622 mPriv->customCaps = ConnectionCapabilities(classSpecs);
1623 return mPriv->customCaps;
1624}
1625
1626/**
1627 * Return whether this account should be put online automatically whenever
1628 * possible.
1629 *
1630 * Change notification is via the connectsAutomaticallyPropertyChanged() signal.
1631 *
1632 * This method requires Account::FeatureCore to be ready.
1633 *
1634 * \return \c true if it should try to connect automatically, \c false
1635 * otherwise.
1636 * \sa connectsAutomaticallyPropertyChanged(), setConnectsAutomatically()
1637 */
1638bool Account::connectsAutomatically() const
1639{
1640 return mPriv->connectsAutomatically;
1641}
1642
1643/**
1644 * Set whether this account should be put online automatically whenever
1645 * possible.
1646 *
1647 * \param value Value indicating if this account should be put online whenever
1648 * possible.
1649 * \return A PendingOperation which will emit PendingOperation::finished
1650 * when the request has been made.
1651 * \sa connectsAutomaticallyPropertyChanged(), connectsAutomatically()
1652 */
1653PendingOperation *Account::setConnectsAutomatically(bool value)
1654{
1655 return new PendingVoid(
1656 mPriv->properties->Set(
1657 TP_QT_IFACE_ACCOUNT,
1658 QLatin1String("ConnectAutomatically"),
1659 QDBusVariant(value)),
1660 AccountPtr(this));
1661}
1662
1663/**
1664 * Return whether this account has ever been put online successfully.
1665 *
1666 * This property cannot change from \c true to \c false, only from \c false to \c true.
1667 * When the account successfully goes online for the first time, or when it
1668 * is detected that this has already happened, the firstOnline() signal is
1669 * emitted.
1670 *
1671 * This method requires Account::FeatureCore to be ready.
1672 *
1673 * \return \c true if ever been online, \c false otherwise.
1674 */
1675bool Account::hasBeenOnline() const
1676{
1677 return mPriv->hasBeenOnline;
1678}
1679
1680/**
1681 * Return the status of this account connection.
1682 *
1683 * Note that this method may return a different value from the one returned by Connection::status()
1684 * on this account connection. This happens because this value will change whenever the connection
1685 * status of this account connection changes and won't consider the Connection introspection
1686 * process. The same rationale also applies to connectionStatusReason() and
1687 * connectionErrorDetails().
1688 *
1689 * A valid use case for this is for account creation UIs that wish to display the accounts
1690 * connection status and nothing else on the connections (e.g. retrieve the contact list).
1691 *
1692 * Change notification is via the connectionStatusChanged() signal.
1693 *
1694 * This method requires Account::FeatureCore to be ready.
1695 *
1696 * \return The connection status as #ConnectionStatus.
1697 * \sa connectionStatusChanged(), connectionStatusReason(), connectionError(),
1698 * connectionErrorDetails()
1699 */
1700ConnectionStatus Account::connectionStatus() const
1701{
1702 return mPriv->connectionStatus;
1703}
1704
1705/**
1706 * Return the reason for this account connection status.
1707 *
1708 * This represents the reason for the last change to connectionStatus().
1709 *
1710 * Note that this method may return a different value from the one returned by
1711 * Connection::statusReason() on this account connection.
1712 * See connectionStatus() for more details.
1713 *
1714 * This method requires Account::FeatureCore to be ready.
1715 *
1716 * \return The connection status reason as #ConnectionStatusReason.
1717 * \sa connectionStatusChanged(), connectionStatus(), connectionError(), connectionErrorDetails()
1718 */
1719ConnectionStatusReason Account::connectionStatusReason() const
1720{
1721 return mPriv->connectionStatusReason;
1722}
1723
1724/**
1725 * Return the D-Bus error name for the last disconnection or connection failure,
1726 * (in particular, #TP_QT_ERROR_CANCELLED if it was disconnected by user
1727 * request), or an empty string if the account is connected.
1728 *
1729 * This method requires Account::FeatureCore to be ready.
1730 *
1731 * \return The D-Bus error name for the last disconnection or connection failure.
1732 * \sa connectionErrorDetails(), connectionStatus(), connectionStatusReason(),
1733 * connectionStatusChanged()
1734 */
1735QString Account::connectionError() const
1736{
1737 return mPriv->connectionError;
1738}
1739
1740/**
1741 * Return detailed information related to connectionError().
1742 *
1743 * Note that this method may return a different value from the one returned by
1744 * Connection::errorDetails() on this account connection.
1745 * See connectionStatus() for more details.
1746 *
1747 * This method requires Account::FeatureCore to be ready.
1748 *
1749 * \return The connection error details as a Connection::ErrorDetails object.
1750 * \sa connectionError(), connectionStatus(), connectionStatusReason(), connectionStatusChanged(),
1751 * Connection::ErrorDetails.
1752 */
1753Connection::ErrorDetails Account::connectionErrorDetails() const
1754{
1755 return mPriv->connectionErrorDetails;
1756}
1757
1758/**
1759 * Return the object representing the connection of this account.
1760 *
1761 * Note that the Connection object returned by this method will have the
1762 * features set in the connectionFactory() used by this account ready.
1763 *
1764 * Change notification is via the connectionChanged() signal.
1765 *
1766 * This method requires Account::FeatureCore to be ready.
1767 *
1768 * \return A pointer to the Connection object, or a null ConnectionPtr if
1769 * there is no connection currently or if an error occurred.
1770 * \sa connectionChanged()
1771 */
1772ConnectionPtr Account::connection() const
1773{
1774 return mPriv->connection;
1775}
1776
1777/**
1778 * Return whether this account connection is changing presence.
1779 *
1780 * Change notification is via the changingPresence() signal.
1781 *
1782 * This method requires Account::FeatureCore to be ready.
1783 *
1784 * \return \c true if changing presence, \c false otherwise.
1785 * \sa changingPresence(), currentPresenceChanged(), setRequestedPresence()
1786 */
1787bool Account::isChangingPresence() const
1788{
1789 return mPriv->changingPresence;
1790}
1791
1792/**
1793 * Return a list of presences allowed by a connection to this account.
1794 *
1795 * In particular, for the statuses reported here it can be assumed that setting them as the
1796 * requested presence via setRequestedPresence() will eventually result in currentPresence()
1797 * changing to exactly said presence. Other statuses are only guaranteed to be matched as closely as
1798 * possible.
1799 *
1800 * The statuses can be also used for the automatic presence, as set by setAutomaticPresence(), with
1801 * the exception of any status specifications for which Presence::type() is
1802 * Tp::ConnectionPresenceTypeOffline for the Presence returned by PresenceSpec::presence().
1803 *
1804 * However, the optional parameter can be used to allow reporting also other possible presence
1805 * statuses on this protocol besides the others that can be set on yourself. These are purely
1806 * informatory, for e.g. adjusting an UI to allow all possible remote contact statuses to be
1807 * displayed.
1808 *
1809 * An offline presence status is always included, because it's always valid to make an account
1810 * offline by setting the requested presence to an offline status.
1811 *
1812 * Full functionality requires Account::FeatureProtocolInfo and Account::FeatureProfile to be ready
1813 * as well as connection with Connection::FeatureSimplePresence enabled. If the connection is online
1814 * and Connection::FeatureSimplePresence is enabled, it will return the connection allowed statuses,
1815 * otherwise it will return a list os statuses based on profile() and protocolInfo() information
1816 * if the corresponding features are enabled.
1817 *
1818 * If there's a mismatch between the presence status info provided in the .profile file and/or the
1819 * .manager file and what an online Connection actually reports (for example, the said data files
1820 * are missing or too old to include presence information), the returned value can change, in
1821 * particular when connectionChanged() is emitted with a connection for which Connection::status()
1822 * is Tp::ConnectionStatusConnected.
1823 *
1824 * This method requires Account::FeatureCore to be ready.
1825 *
1826 * \param includeAllStatuses Whether the returned list will include all statuses or just the ones
1827 * that can be settable using setRequestedPresence().
1828 * \return The allowed statuses as a list of PresenceSpec objects.
1829 */
1830PresenceSpecList Account::allowedPresenceStatuses(bool includeAllStatuses) const
1831{
1832 QHash<QString, PresenceSpec> specMap;
1833
1834 // if the connection is online and ready use it
1835 if (mPriv->connection &&
1836 mPriv->connection->status() == ConnectionStatusConnected &&
1837 mPriv->connection->actualFeatures().contains(Connection::FeatureSimplePresence)) {
1838 SimpleStatusSpecMap connectionAllowedPresences =
1839 mPriv->connection->lowlevel()->allowedPresenceStatuses();
1840 SimpleStatusSpecMap::const_iterator i = connectionAllowedPresences.constBegin();
1841 SimpleStatusSpecMap::const_iterator end = connectionAllowedPresences.constEnd();
1842 for (; i != end; ++i) {
1843 PresenceSpec presence = PresenceSpec(i.key(), i.value());
1844 specMap.insert(i.key(), presence);
1845 }
1846 } else {
1847 ProtocolInfo pi = protocolInfo();
1848 if (pi.isValid()) {
1849 // add all ProtocolInfo presences to the returned map
1850 foreach (const PresenceSpec &piPresence, pi.allowedPresenceStatuses()) {
1851 QString piStatus = piPresence.presence().status();
1852 specMap.insert(piStatus, piPresence);
1853 }
1854 }
1855
1856 ProfilePtr pr;
1857 if (isReady(FeatureProfile)) {
1858 pr = profile();
1859 }
1860 if (pr && pr->isValid()) {
1861 // add all Profile presences to the returned map
1862 foreach (const Profile::Presence &prPresence, pr->presences()) {
1863 QString prStatus = prPresence.id();
1864 if (specMap.contains(prStatus)) {
1865 // we already got the presence from ProtocolInfo, just update
1866 // canHaveStatusMessage if needed
1867 PresenceSpec presence = specMap.value(prStatus);
1868 if (presence.canHaveStatusMessage() != prPresence.canHaveStatusMessage()) {
1869 SimpleStatusSpec spec;
1870 spec.type = presence.presence().type();
1871 spec.maySetOnSelf = presence.maySetOnSelf();
1872 spec.canHaveMessage = prPresence.canHaveStatusMessage();
1873 specMap.insert(prStatus, PresenceSpec(prStatus, spec));
1874 }
1875 } else {
1876 // presence not found in ProtocolInfo, adding it
1877 specMap.insert(prStatus, presenceSpecForStatus(prStatus,
1878 prPresence.canHaveStatusMessage()));
1879 }
1880 }
1881
1882 // now remove all presences that are not in the Profile, if it does
1883 // not allow other presences, and the ones that are disabled
1884 QHash<QString, PresenceSpec>::iterator i = specMap.begin();
1885 QHash<QString, PresenceSpec>::iterator end = specMap.end();
1886 while (i != end) {
1887 PresenceSpec presence = i.value();
1888 QString status = presence.presence().status();
1889 bool hasPresence = pr->hasPresence(status);
1890 Profile::Presence prPresence = pr->presence(status);
1891 if ((!hasPresence && !pr->allowOtherPresences()) || (hasPresence && prPresence.isDisabled())) {
1892 i = specMap.erase(i);
1893 } else {
1894 ++i;
1895 }
1896 }
1897 }
1898 }
1899
1900 // filter out presences that may not be set on self if includeAllStatuses is false
1901 if (!includeAllStatuses) {
1902 QHash<QString, PresenceSpec>::iterator i = specMap.begin();
1903 QHash<QString, PresenceSpec>::iterator end = specMap.end();
1904 while (i != end) {
1905 PresenceSpec presence = i.value();
1906 if (!presence.maySetOnSelf()) {
1907 i = specMap.erase(i);
1908 } else {
1909 ++i;
1910 }
1911 }
1912 }
1913
1914 if (!specMap.size()) {
1915 // If we didn't discover any statuses, either the protocol doesn't really support presence,
1916 // or we lack information (e.g. features not enabled or info not provided in the .manager or
1917 // .profile files). "available" - just the fact that you're online in the first place, is at
1918 // least a valid option for any protocol, so we'll include it as a fallback.
1919
1920 specMap.insert(QLatin1String("available"),
1921 presenceSpecForStatus(QLatin1String("available"), false));
1922 }
1923
1924 // We'll always include "offline". It is always valid to make an account offline via
1925 // setRequestedPresence().
1926 if (!specMap.contains(QLatin1String("offline"))) {
1927 specMap.insert(QLatin1String("offline"),
1928 presenceSpecForStatus(QLatin1String("offline"), false));
1929 }
1930
1931 return specMap.values();
1932}
1933
1934/**
1935 * Return the maximum length for a presence status message.
1936 *
1937 * If a status message set using setRequestedPresence() (or setAutomaticPresence()) is longer than
1938 * the maximum length allowed, the message will be truncated and
1939 * currentPresenceChanged() will be emitted (if setting the presence worked)
1940 * with the truncated message.
1941 *
1942 * Full functionality requires Connection with Connection::FeatureSimplePresence
1943 * enabled. If the connection is online and Connection::FeatureSimplePresence is
1944 * enabled, it will return the connection maximum status message length,
1945 * otherwise it will return 0.
1946 *
1947 * This method requires Account::FeatureCore to be ready.
1948 *
1949 * \return The maximum length, or 0 if there is no limit.
1950 */
1951uint Account::maxPresenceStatusMessageLength() const
1952{
1953 // if the connection is online and ready use it
1954 if (mPriv->connection &&
1955 mPriv->connection->status() == ConnectionStatusConnected &&
1956 mPriv->connection->actualFeatures().contains(Connection::FeatureSimplePresence)) {
1957 return mPriv->connection->lowlevel()->maxPresenceStatusMessageLength();
1958 }
1959
1960 return 0;
1961}
1962
1963/**
1964 * Return the presence status that this account will have set on it by the
1965 * account manager if it brings it online automatically.
1966 *
1967 * Change notification is via the automaticPresenceChanged() signal.
1968 *
1969 * This method requires Account::FeatureCore to be ready.
1970 *
1971 * \return The automatic presence as a Presence object.
1972 * \sa automaticPresenceChanged(), setAutomaticPresence()
1973 */
1974Presence Account::automaticPresence() const
1975{
1976 return mPriv->automaticPresence;
1977}
1978
1979/**
1980 * Set the presence status that this account should have if it is brought
1981 * online automatically by the account manager.
1982 *
1983 * Note that changing this property won't actually change the account's status
1984 * until the next time it is (re)connected for some reason.
1985 *
1986 * The value of this property must be one that would be acceptable for setRequestedPresence(),
1987 * as returned by allowedPresenceStatuses(), with the additional restriction that the offline
1988 * presence cannot be used.
1989 *
1990 * \param presence The presence to set when this account is brought
1991 * online automatically by the account manager.
1992 * \return A PendingOperation which will emit PendingOperation::finished
1993 * when the request has been made.
1994 * \sa automaticPresenceChanged(), automaticPresence(), setRequestedPresence()
1995 */
1996PendingOperation *Account::setAutomaticPresence(const Presence &presence)
1997{
1998 return new PendingVoid(
1999 mPriv->properties->Set(
2000 TP_QT_IFACE_ACCOUNT,
2001 QLatin1String("AutomaticPresence"),
2002 QDBusVariant(QVariant::fromValue(presence.barePresence()))),
2003 AccountPtr(this));
2004}
2005
2006/**
2007 * Return the actual presence of this account.
2008 *
2009 * Change notification is via the currentPresenceChanged() signal.
2010 *
2011 * This method requires Account::FeatureCore to be ready.
2012 *
2013 * \return The current presence as a Presence object.
2014 * \sa currentPresenceChanged(), setRequestedPresence(), requestedPresence(), automaticPresence()
2015 */
2016Presence Account::currentPresence() const
2017{
2018 return mPriv->currentPresence;
2019}
2020
2021/**
2022 * Return the requested presence of this account.
2023 *
2024 * Change notification is via the requestedPresenceChanged() signal.
2025 *
2026 * This method requires Account::FeatureCore to be ready.
2027 *
2028 * \return The requested presence as a Presence object.
2029 * \sa requestedPresenceChanged(), setRequestedPresence(), currentPresence(), automaticPresence()
2030 */
2031Presence Account::requestedPresence() const
2032{
2033 return mPriv->requestedPresence;
2034}
2035
2036/**
2037 * Set the requested presence of this account.
2038 *
2039 * When the requested presence is changed, the account manager will attempt to
2040 * manipulate the connection to make currentPresence() match requestedPresence()
2041 * as closely as possible.
2042 *
2043 * \param presence The requested presence.
2044 * \return A PendingOperation which will emit PendingOperation::finished
2045 * when the request has been made.
2046 * \sa requestedPresenceChanged(), currentPresence(), automaticPresence(), setAutomaticPresence()
2047 */
2048PendingOperation *Account::setRequestedPresence(const Presence &presence)
2049{
2050 return new PendingVoid(
2051 mPriv->properties->Set(
2052 TP_QT_IFACE_ACCOUNT,
2053 QLatin1String("RequestedPresence"),
2054 QDBusVariant(QVariant::fromValue(presence.barePresence()))),
2055 AccountPtr(this));
2056}
2057
2058/**
2059 * Return whether this account is online.
2060 *
2061 * Change notification is via the onlinenessChanged() signal.
2062 *
2063 * This method requires Account::FeatureCore to be ready.
2064 *
2065 * \return \c true if online, otherwise \c false.
2066 * \sa onlinenessChanged()
2067 */
2068bool Account::isOnline() const
2069{
2070 return mPriv->currentPresence.type() != ConnectionPresenceTypeOffline;
2071}
2072
2073/**
2074 * Return the unique identifier of this account.
2075 *
2076 * \return The unique identifier.
2077 */
2078QString Account::uniqueIdentifier() const
2079{
2080 QString path = objectPath();
2081 return path.right(path.length() -
2082 strlen("/org/freedesktop/Telepathy/Account/"));
2083}
2084
2085/**
2086 * Return the normalized user ID of the local user of this account.
2087 *
2088 * It is unspecified whether this user ID is globally unique.
2089 *
2090 * As currently implemented, IRC user IDs are only unique within the same
2091 * IRCnet. On some saner protocols, the user ID includes a DNS name which
2092 * provides global uniqueness.
2093 *
2094 * If this value is not known yet (which will always be the case for accounts
2095 * that have never been online), it will be an empty string.
2096 *
2097 * It is possible that this value will change if the connection manager's
2098 * normalization algorithm changes.
2099 *
2100 * This method requires Account::FeatureCore to be ready.
2101 *
2102 * \return The normalized user ID of the local user.
2103 * \sa normalizedNameChanged()
2104 */
2105QString Account::normalizedName() const
2106{
2107 return mPriv->normalizedName;
2108}
2109
2110/**
2111 * If this account is currently connected, disconnect and reconnect it. If it
2112 * is currently trying to connect, cancel the attempt to connect and start
2113 * another. If it is currently disconnected, do nothing.
2114 *
2115 * \return A PendingOperation which will emit PendingOperation::finished
2116 * when the request has been made.
2117 */
2118PendingOperation *Account::reconnect()
2119{
2120 return new PendingVoid(baseInterface()->Reconnect(), AccountPtr(this));
2121}
2122
2123/**
2124 * Delete this account.
2125 *
2126 * \return A PendingOperation which will emit PendingOperation::finished
2127 * when the request has been made.
2128 * \sa removed()
2129 */
2130PendingOperation *Account::remove()
2131{
2132 return new PendingVoid(baseInterface()->Remove(), AccountPtr(this));
2133}
2134
2135/**
2136 * Return whether passing hints on channel requests on this account is known to be supported.
2137 *
2138 * This method requires Account::FeatureCore to be ready.
2139 *
2140 * \return \c true if supported, \c false otherwise.
2141 */
2142bool Account::supportsRequestHints() const
2143{
2144 return mPriv->dispatcherContext->supportsHints;
2145}
2146
2147/**
2148 * Return whether the ChannelRequest::succeeded(const Tp::ChannelPtr &channel) signal is expected to
2149 * be emitted with a non-NULL channel parameter for requests made using this account.
2150 *
2151 * This can be used as a run-time check for the Channel Dispatcher implementation being new enough.
2152 * In particular, similarly old Channel Dispatchers don't support request hints either, so the
2153 * return value for this function and Account::supportsRequestHints() will bet he same.
2154 *
2155 * This method requires Account::FeatureCore to be ready.
2156 *
2157 * \return \c true if supported, \c false otherwise.
2158 */
2159bool Account::requestsSucceedWithChannel() const
2160{
2161 return supportsRequestHints();
2162}
2163
2164/**
2165 * Start a request to ensure that a text channel with the given
2166 * contact \a contactIdentifier exists, creating it if necessary.
2167 *
2168 * See ensureChannel() for more details.
2169 *
2170 * \param contactIdentifier The identifier of the contact to chat with.
2171 * \param userActionTime The time at which user action occurred, or QDateTime()
2172 * if this channel request is for some reason not
2173 * involving user action.
2174 * \param preferredHandler Either the well-known bus name (starting with
2175 * org.freedesktop.Telepathy.Client.) of the preferred
2176 * handler for this channel, or an empty string to
2177 * indicate that any handler would be acceptable.
2178 * \param hints Arbitrary metadata which will be relayed to the handler if supported,
2179 * as indicated by supportsRequestHints().
2180 * \return A PendingChannelRequest which will emit PendingChannelRequest::finished
2181 * when the request has been made.
2182 * \sa ensureChannel(), createChannel()
2183 */
2184PendingChannelRequest *Account::ensureTextChat(
2185 const QString &contactIdentifier,
2186 const QDateTime &userActionTime,
2187 const QString &preferredHandler,
2188 const ChannelRequestHints &hints)
2189{
2190 QVariantMap request = textChatRequest(contactIdentifier);
2191
2192 return new PendingChannelRequest(AccountPtr(this), request, userActionTime,
2193 preferredHandler, false, hints);
2194}
2195
2196/**
2197 * Start a request to ensure that a text channel with the given
2198 * contact \a contact exists, creating it if necessary.
2199 *
2200 * See ensureChannel() for more details.
2201 *
2202 * \param contact The contact to chat with.
2203 * \param userActionTime The time at which user action occurred, or QDateTime()
2204 * if this channel request is for some reason not
2205 * involving user action.
2206 * \param preferredHandler Either the well-known bus name (starting with
2207 * org.freedesktop.Telepathy.Client.) of the preferred
2208 * handler for this channel, or an empty string to
2209 * indicate that any handler would be acceptable.
2210 * \param hints Arbitrary metadata which will be relayed to the handler if supported,
2211 * as indicated by supportsRequestHints().
2212 * \return A PendingChannelRequest which will emit PendingChannelRequest::finished
2213 * when the request has been made.
2214 * \sa ensureChannel(), createChannel()
2215 */
2216PendingChannelRequest *Account::ensureTextChat(
2217 const ContactPtr &contact,
2218 const QDateTime &userActionTime,
2219 const QString &preferredHandler,
2220 const ChannelRequestHints &hints)
2221{
2222 QVariantMap request = textChatRequest(contact);
2223
2224 return new PendingChannelRequest(AccountPtr(this), request, userActionTime,
2225 preferredHandler, false, hints);
2226}
2227
2228/**
2229 * Start a request to ensure that a text chat room with the given
2230 * room name \a roomName exists, creating it if necessary.
2231 *
2232 * See ensureChannel() for more details.
2233 *
2234 * \param roomName The name of the chat room.
2235 * \param userActionTime The time at which user action occurred, or QDateTime()
2236 * if this channel request is for some reason not
2237 * involving user action.
2238 * \param preferredHandler Either the well-known bus name (starting with
2239 * org.freedesktop.Telepathy.Client.) of the preferred
2240 * handler for this channel, or an empty string to
2241 * indicate that any handler would be acceptable.
2242 * \param hints Arbitrary metadata which will be relayed to the handler if supported,
2243 * as indicated by supportsRequestHints().
2244 * \return A PendingChannelRequest which will emit PendingChannelRequest::finished
2245 * when the request has been made.
2246 * \sa ensureChannel(), createChannel()
2247 */
2248PendingChannelRequest *Account::ensureTextChatroom(
2249 const QString &roomName,
2250 const QDateTime &userActionTime,
2251 const QString &preferredHandler,
2252 const ChannelRequestHints &hints)
2253{
2254 QVariantMap request = textChatroomRequest(roomName);
2255
2256 return new PendingChannelRequest(AccountPtr(this), request, userActionTime,
2257 preferredHandler, false, hints);
2258}
2259
2260/**
2261 * Start a request to ensure that an audio call channel with the given
2262 * contact \a contactIdentifier exists, creating it if necessary.
2263 *
2264 * See ensureChannel() for more details.
2265 *
2266 * \param contactIdentifier The identifier of the contact to call.
2267 * \param initialAudioContentName The name of the initial CallContent that will
2268 * be automatically added on the channel.
2269 * \param userActionTime The time at which user action occurred, or QDateTime()
2270 * if this channel request is for some reason not
2271 * involving user action.
2272 * \param preferredHandler Either the well-known bus name (starting with
2273 * org.freedesktop.Telepathy.Client.) of the preferred
2274 * handler for this channel, or an empty string to
2275 * indicate that any handler would be acceptable.
2276 * \param hints Arbitrary metadata which will be relayed to the handler if supported,
2277 * as indicated by supportsRequestHints().
2278 * \return A PendingChannelRequest which will emit PendingChannelRequest::finished
2279 * when the request has been made.
2280 * \sa ensureChannel(), createChannel()
2281 */
2282PendingChannelRequest *Account::ensureAudioCall(
2283 const QString &contactIdentifier,
2284 const QString &initialAudioContentName,
2285 const QDateTime &userActionTime,
2286 const QString &preferredHandler,
2287 const ChannelRequestHints &hints)
2288{
2289 QVariantMap request = audioCallRequest(contactIdentifier, initialAudioContentName);
2290
2291 return new PendingChannelRequest(AccountPtr(this), request, userActionTime,
2292 preferredHandler, false, hints);
2293}
2294
2295/**
2296 * Start a request to ensure that an audio call channel with the given
2297 * contact \a contact exists, creating it if necessary.
2298 *
2299 * See ensureChannel() for more details.
2300 *
2301 * \param contact The contact to call.
2302 * \param initialAudioContentName The name of the initial audio CallContent that
2303 * will be automatically added on the channel.
2304 * \param userActionTime The time at which user action occurred, or QDateTime()
2305 * if this channel request is for some reason not
2306 * involving user action.
2307 * \param preferredHandler Either the well-known bus name (starting with
2308 * org.freedesktop.Telepathy.Client.) of the preferred
2309 * handler for this channel, or an empty string to
2310 * indicate that any handler would be acceptable.
2311 * \param hints Arbitrary metadata which will be relayed to the handler if supported,
2312 * as indicated by supportsRequestHints().
2313 * \return A PendingChannelRequest which will emit PendingChannelRequest::finished
2314 * when the request has been made.
2315 * \sa ensureChannel(), createChannel()
2316 */
2317PendingChannelRequest* Account::ensureAudioCall(
2318 const ContactPtr &contact,
2319 const QString &initialAudioContentName,
2320 const QDateTime &userActionTime,
2321 const QString &preferredHandler,
2322 const ChannelRequestHints &hints)
2323{
2324 QVariantMap request = audioCallRequest(contact, initialAudioContentName);
2325
2326 return new PendingChannelRequest(AccountPtr(this), request, userActionTime,
2327 preferredHandler, false, hints);
2328}
2329
2330/**
2331 * Start a request to ensure that a video call channel with the given
2332 * contact \a contactIdentifier exists, creating it if necessary.
2333 *
2334 * See ensureChannel() for more details.
2335 *
2336 * \param contactIdentifier The identifier of the contact to call.
2337 * \param initialVideoContentName The name of the initial video CallContent that
2338 * will be automatically added on the channel.
2339 * \param userActionTime The time at which user action occurred, or QDateTime()
2340 * if this channel request is for some reason not
2341 * involving user action.
2342 * \param preferredHandler Either the well-known bus name (starting with
2343 * org.freedesktop.Telepathy.Client.) of the preferred
2344 * handler for this channel, or an empty string to
2345 * indicate that any handler would be acceptable.
2346 * \param hints Arbitrary metadata which will be relayed to the handler if supported,
2347 * as indicated by supportsRequestHints().
2348 * \return A PendingChannelRequest which will emit PendingChannelRequest::finished
2349 * when the request has been made.
2350 * \sa ensureChannel(), createChannel()
2351 */
2352PendingChannelRequest *Account::ensureVideoCall(
2353 const QString &contactIdentifier,
2354 const QString &initialVideoContentName,
2355 const QDateTime &userActionTime,
2356 const QString &preferredHandler,
2357 const ChannelRequestHints &hints)
2358{
2359 QVariantMap request = videoCallRequest(contactIdentifier, initialVideoContentName);
2360
2361 return new PendingChannelRequest(AccountPtr(this), request, userActionTime,
2362 preferredHandler, false, hints);
2363}
2364
2365/**
2366 * Start a request to ensure that a video call channel with the given
2367 * contact \a contact exists, creating it if necessary.
2368 *
2369 * See ensureChannel() for more details.
2370 *
2371 * \param contact The contact to call.
2372 * \param initialVideoContentName The name of the initial video CallContent that
2373 * will be automatically added on the channel.
2374 * \param userActionTime The time at which user action occurred, or QDateTime()
2375 * if this channel request is for some reason not
2376 * involving user action.
2377 * \param preferredHandler Either the well-known bus name (starting with
2378 * org.freedesktop.Telepathy.Client.) of the preferred
2379 * handler for this channel, or an empty string to
2380 * indicate that any handler would be acceptable.
2381 * \param hints Arbitrary metadata which will be relayed to the handler if supported,
2382 * as indicated by supportsRequestHints().
2383 * \return A PendingChannelRequest which will emit PendingChannelRequest::finished
2384 * when the request has been made.
2385 * \sa ensureChannel(), createChannel()
2386 */
2387PendingChannelRequest *Account::ensureVideoCall(
2388 const ContactPtr &contact,
2389 const QString &initialVideoContentName,
2390 const QDateTime &userActionTime,
2391 const QString &preferredHandler,
2392 const ChannelRequestHints &hints)
2393{
2394 QVariantMap request = videoCallRequest(contact, initialVideoContentName);
2395
2396 return new PendingChannelRequest(AccountPtr(this), request, userActionTime,
2397 preferredHandler, false, hints);
2398}
2399
2400/**
2401 * Start a request to ensure that an audio/video call channel with the given
2402 * contact \a contactIdentifier exists, creating it if necessary.
2403 *
2404 * See ensureChannel() for more details.
2405 *
2406 * \param contactIdentifier The identifier of the contact to call.
2407 * \param initialAudioContentName The name of the initial audio CallContent that
2408 * will be automatically added on the channel.
2409 * \param initialVideoContentName The name of the initial video CallContent that
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches