Hi Matúš, On Saturday, 2012-07-14 19:49:29 +0200, Matúš Kukan wrote:
This may be a little longer because it's still not clear how the telepathy framework should work.
If you have detailed questions I suggest you /join #telepathy on freenode.
I've pushed 10 more patches, all because I wanted to do the last one - inviting people into MUC. What's new: - Registering client handlers is executed with Listen button in Collaborate dialog. Then current document can accept new channel and receive files. (was LIBO_TUBES=slave)
So the LIBO_TUBES variable isn't needed at all anymore, at least I didn't find it referenced in the code anymore. That's good.
- ScDocFuncSend owns TeleConference (the channel) instead of TeleManager and can directly communicate. Thus each document can collaborate with different contact.
Sounds good.
- Inviting contacts is possible. This seem to work. I also played with .service and .client files mentioned in tubes/README. And it works! I was able to invite a contact and after accepting in VM in empathy, Channel Dispatcher has executed .../soffice --calc as told in org.freedesktop.Telepathy.Client.LibreOffice.service. I was thinking that it could run .../soffice --accept-tube, so we know why Libreoffice is started and do something clever ;-) But this needs more work and ideas as mentioned later below.
Do things work in any way now when the .client files are not installed?
Note: that by pressing Collaborate button we are now starting MUC session. 'saveme' (sending a file) for example does not work then. You can change that in contacts.cxx [3]. Maybe I should add another button but.. Also, what's not intuitive is that, when you select a contact and press Collaborate, the account to which the contact belongs to is connecting to liboroom@conference.jabber.org. So not the contact you see in the dialog. Check in terminal.
We'll need the MUC be configurable and not hardwired anyway. And both, 1-to-1 and MUC collaboration, should be possible. So extending the dialog for MUCs will be inevitable ;) With the current setup it is impossible to run against a local jabberd that is not connected to the outer world.. in fact I pulled the changes and now can't test anything. Btw, the contacts list when opened is not populated until the Listen button is clicked once and the contacts dialog opened again.
What's wrong: - TeleManager is never destroyed. Because I don't know where.
I think ScDocFuncSend and/or ScDocFuncRecv could hold a pointer they obtained from TubeContacts and call TeleManager::unref() when destroyed. Make sure TubeContacts passes the pointer by calling TeleManager::get() to increment the reference count and unrefs any instance it obtained via get() itself.
And also where we want the code which is called after signaling from tubes/ (when we receive a file or a new channel) ? Or more importantly: what should happen ? - when someone wants to start a session with us, he sends us file and then we can start collaborating on it ?
Yes. Though in practice it should be an invitation and the file sent only if the receiver accepted.
There is no other case when someone sends us file ?
Currently not. Maybe we could distinguish between a "send file" and "send file for collaboration" later.
I am not sure how to do this. Some class alive as the whole ./soffice is running could help.
But that did already work with the "saveme" hack, or do I lose track here?
But still, after receiving new channel [4], I need to accept it, receive the file and then bind the channel to that file ?
Yes. But also that (except accepting) worked already, if I'm not mistaken.
- Also unit test is broken
Hum.. why that? It didn't break here, or is it the slowcheck subsequenttest?
Should I start working on side-bar widget we can dock ? Any hints? But I think that we need to improve receiving channels and files, handle TeleManager properly and everything related.
Please work on the channels and file receiving internals first, widget eye candy can be added later.
Hope you can parse this, I am loosing myself,
Seemed to do ;-) Eike -- LibreOffice Calc developer. Number formatter stricken i18n transpositionizer. GnuPG key 0x293C05FD : 997A 4C60 CE41 0149 0DB3 9E96 2F1A D073 293C 05FD
Attachment:
pgpV7TrZHlhUm.pgp
Description: PGP signature