freesoftware, Kde, Planet

Digikam Code Sprint @ Genova + Telepathy KIPI Plugin

This post was supposed to be published yesterday January 18th 2012, but I’m delaying it of 24 hours in support of SOPA STRIKE

Last weekend the Digikam Code Sprint was held in Genoa (Italy). Yes, I’m not a Digikam developer, but I live in Genoa and this was a very good occasion to implement something that I’ve being planning to implement for a long time: A KIPI Plugin for Telepathy. So before saying anything else, here is the mandatory screenshot:

Telepathy KIPI Plugin
Telepathy KIPI Plugin

Thanks to this plugin, you will be able to send your pictures and albums from digikam, showfoto and any other application using KIPI plugins. Most of all I wanted this feature in KSnapshot, and yes this is now possible.

This is something I already implemented in the past [1] but I must admit that having all the contacts in a menu was a bad idea, so I gave up at the time… So this time we have a widget instead that takes shows only the person that are online, that can accept a file transfer and there is a bar to filter by name (actually most of this is widget is “borrowed” from Telepathy Send File, written by David, so credits for that go to him). I think this solution is much better than the menu, but comments are very welcome.

Unfortunately the widget won’t be in KDE Telepathy 0.3 so you will have to wait for the 0.4 release, and then you will have to wait for the kipi-plugin to be reviewed by the digikam developers… Meanwhile it will reside in my clone repositories (I will update this post with the links as soon as the code is available)


P.S. Thanks to ALID (especially to Angelo, Stefano and Claudio) and KDE e.V. for hosting, organizing and supporting the event and to all the Digikam developers.

freesoftware, GSoC, Kde, Planet

GSoC Project Summary: Telepathy Tubes and File Transfer in KDE

First of all an important note: KTelepathy is still in active development and there is still a huge amount of tasks to finish before the first real “preview release” [1] (any help is welcome). A telepathy sprint [2] is planned for september, so we’ll probably see a lot of progress soon!
The classes I wrote for GSoC are still pending for testing, review, and subject to sudden changes, that’s why I focussed on the library itself leaving the applications for later.

I started the GSoC writing a few jobs for SteamTubes, DBusTubes and file transfer channels:

  • Jobs to start a channel: The channel is started and handled in the same job and some result (if needed) is returned, for example a dbus connection for a dbus-tube. This is not exactly the best thing to do, because the channel should be requested to the channel dispatcher, and handled by the preferred handler.
  • Jobs to accept a channel: The incoming channel is handled and some result (if needed) is returned, exactly like the start channel. That means that a lot of code is redundant and duplicated.

So after writing a few applications of those jobs (file transfer in Cantor[3], Konqueror[4], and KSnapshot[5]) we decided to do a step backwards and to write some more jobs:

  • Jobs to request a channel: Request a channel to the channel dispatcher. The channel is not handled by the job itself, but must be handled by the default (or preferred) handler.
  • Jobs to handle a channel: This is mostly the same thing as the accept channel jobs, with the main difference that it is not limited to incoming jobs, but can also handle outgoing channels.

All those jobs use Nepomuk resources representing the “contact”. I wrote a couple of abstract classes that do most of the job so, and that are quite easy to subclass to handle new types of channels. I also wrote a job to start a “text chat” and integrated it into “telepathy-contactlist“, so it is now possible to start a chat that is handled by empathy or by “telepathy-chat-handler“.

About the QtDBus peer-to-peer connection patch, required for DBusTubes, I updated the merge request, adding unit tests as requested and fixing a few issues, but I’m still waiting for reviews. I really hope to get it reviewed and merged before Qt 4.8 feature freeze, but it’s not up to me now.

At aKademy, we fixed TelepathyQt4 DBusTube branch, so it really works now and we also wrote a cool “KWhiteboard[6] application to share a canvas over a DBusTube. It’s not really beautiful and yet, but it works!

I also started using DBusTubes in Cantor, but there is nothing really shared on the dbus tube yet, I’m writing some sort of “shared worksheet manager” class so that you can manage more than one worksheet on the same tube and that could be useful also for other applications.

Unluckily I wasn’t able to do any work on Plasma widget sharing. The protocol used now is not that simple as I thought, so getting widget shared over telepathy is not possible just using a StreamTube as planned and will take a lot more time than I expected when I proposed the project, and it wasn’t probably worth to work on it yet, as the library is quite unstable. Anyway this is still in my todo list!

Ok, that’s not all what I did during this summer, but this is the most important part of it. You can find some beautiful screenshots im my previous blog posts[3][4][5][6]

[1]https://bugs.kde.org/showdependencytree.cgi?id=232378&hide_resolved=1
[2]http://community.kde.org/Telepathy/Events/TelepathySprint1
[3]http://blogs.fsfe.org/drdanz/?p=273
[4]http://blogs.fsfe.org/drdanz/?p=276
[5]http://blogs.fsfe.org/drdanz/?p=292
[6]http://blogs.fsfe.org/drdanz/?p=260

P.S. Many thanks to Google, to my mentor George, to all #kde-telepathy people! It was definitely a very funny summer!

freesoftware, Kde, Planet

Telepathy File Transfer in KSnapshot

This wasn’t in my project, but I thought it would be useful…
When I’m chatting with someone, I often need to send him screenshots, so the “standard procedure” is to hit printscreen (KSnapshot pops up), save the file, open Kopete, find contact, right click, send file, locate the file on my file system… That’s boring! What about a “Send to…” menu in KSnapshot?

Easy done using KTelepathy 😉

"Send to..." button in KSnapshot

"Send to.." menu in KSnapshot