Planet maemo: category "feed:8fae9c178c2cf99ef69efe95c1466d06"


Introducing TelepathyQt4

2010-01-25 15:48 UTC  by  andrunko
So this is the beginning of a series of blog posts about TelepathyQt4. I am going to start with a basic introduction: what it is and the ideas behind it.

These blog posts are intended to explain what TelepathyQt4 is, and how to use it to write IM/VoIP/Communication applications. They are not meant to explain what Telepathy is, or what it's intended for. Please check the wiki page for a quick introduction to Telepathy.

- First: what is TelepathyQt4?

TelepathyQt4 is a convenience library, written in Qt4, for those who want to write applications that use the Telepathy framework.
The idea is to have a high-level, but complete, API that hides most underlying D-Bus calls, making it easy to communicate with other applications using Telepathy.

- Why TelepathyQt4?

Up until we started writing it, there were only convenience libraries for Glib and Python, so Qt4 developers were left behind. Those who wanted to use Telepathy had to stick to those libraries or use D-Bus directly. This was limiting the usage of Telepathy across Qt/KDE applications.

- What kind of application can make use of TelepathyQt4?

Right now we have a Kopete branch (implemented as a Kopete protocol plugin) that makes use of TelepathyQt4, and an experimental krdc/krfb branch that enables sharing the desktop among IM contacts.
Other applications that can use TelepathyQt4 include:
* instant messaging programs
* email applications that want to show contacts' presence
* word processors that want to let users collaborate across the internet

- Components:

TelepathyQt4 is divided into 2 parts: the classes that are auto-generated from the spec, and the high-level API that uses the auto-generated classes internally, exposing an easy-to-use API for applications.
We tried to make it as extensible as possible, so adding support for new D-Bus interfaces is quite easy.

We just hit the first milestone with the 0.2 version, which will be API/ABI compatible across the 0.2.x release cycle.
The library is maintained by Collabora and any help is appreciated.

If you have interest in using/collaborating with TelepathyQt4, you can join #telepathy@freenode or #kde-telepathy@freenode for more KDE-specific questions or check the mailing list.
You can also poke me (andrunko - current maintainer) or Simon (smcv - official reviewer).

Development is done in the git repository found here and releases can be found here.

In the next blog posts I will be talking about how to use it, so stay tuned.

New job

2008-12-22 12:29 UTC  by  andrunko
So, for those of you that don't know yet, I left INdT and joined Collabora this month.

I had been working for INdT for almost four years and decided that it was time to try new things. I would like to thank everybody on INdT for all these years and say that it was a pleasure working with all the guys there.

From now on I will be working with Telepathy Qt4 library. It's meant to be a convenience library on top of Telepathy spec. I've spent the last 2 weeks on Cambridge and had a great time there. The whole team seems really motivated to make this library rocks. It's still in its early stages, but things are progressing really fast.

If you are interest in the code, you can check it out from here.

Mamona Rocks!

2008-08-19 23:30 UTC  by  andrunko
So it has been some time since I have blogged as I had a long well deserved vacation. Some time before going on vacation I spend some days with the Manona guys, helping them implement keyboard support, a long missing feature in Mamona, and a quite important one :-)

Happily I found out today that the guys succedeed in adapting my code to their needs. Details is outlined in Aloiso's blog, which can be found here.

Cool work guys, Manona is rocking even more now!

Maemo Keyboard on Qt4 applications

2008-05-05 21:01 UTC  by  andrunko
So, it seems I really like working with Input Methods.

This time I present you the Qt4 input context plugin for Hildon Input Method. So for now all Qt4 applications can make use of the maemo keyboard.

The code is still in its initial stage, but it's working so far. You can grab it from here.

Contributions are really welcome. If you want to help, please consider looking at the FIXME list on qhildoninputcontext.cpp :).

UPDATE: Thanks to Rodarvus to point me out that qhildoninputmethod.cpp didn't exist, changing to qhildoninputcontext.cpp :D

iPhone like keyboard on Canola

2007-11-20 23:34 UTC  by  andrunko
So after creating the framework to allow different input methods for Ecore and added Maemo Keyboard support for it, I decided to try a fancier thing.

It took me a few hours to get the amazing work done by Gustavo, port it to C and create an Ecore Input Method for it.

You can see the result on this video:

I would like to clarify that this video is just to demonstrate how easy is to create your own input method for Ecore. It doesn't mean that Canola will use it.

So that's it, I hope you enjoy.

If you are interested you can download the code from here.

Maemo Keyboard on Ecore applications

2007-11-16 12:01 UTC  by  andrunko
Last week, we at the office were discussing how we should integrate the maemo keyboard with the new Canola. After some time studying how Input Methods work, I decided to implement a framework for pluggable IM on Ecore, called Ecore_IM.

Ecore_IM is based on Gtk/Qt Input Method frameworks and works with pluggable so called immodules. So after writing the API for Ecore_IM I wrote a plugin hildon-input-method for accessing the maemo keyboard.

I already integrated it with Etk, so all Etk applications running on the device will automatically show the keyboard when requested. I intend to implement support for E widgets, so Mamona that is shipping with E can use the maemo keyboard.

If you are interested in using it or integrating it in your application you can grab it from here. The Etk support can be found here.

I hope this get integrated in Ecore really soon, so stay tuned.

N810 maemo submission accepted

2007-11-09 14:04 UTC  by  andrunko
N810 maemo submission accepted

Congratulations! You have been accepted to the N810 maemo device
program. We will send your discount and instructions as soon as the
device is available in your selected shop (soon).
Hooray! I can't wait to put my hands on my new toy!!!

GObject skeleton generator for Vim

2007-09-10 00:36 UTC  by  andrunko
So after reading this blog entry from Gustavo, I found it interesting and decided to do the same for Vim, as I would never use Emacs :D. So I found this script and did some small changes to make it fit better the GTK+ coding style.

To use the script first copy it to ~/.vim/plugin directory, then open a file with vim and run one of the commands:
  • GOBGenerateH
To generate the class definition.
  • GOBGenerateC
To generate the class implementation.
Both commands will use the filename as default for the class name. You can change it, by typing the class name manually. It will replace "-" with "_" and also try to apply Camel Case to the filename. For example a file named test-object.h will generate a class named TestObject.

If you are interested, you can download the updated version of the script from here


2007-09-08 12:12 UTC  by  andrunko
So I decided to start working on getting a GtkCanvas implementation on GTK+.
I believe GTK+ is really missing a good canvas implementation to make it easy to create rich UI applications such as Plasma, Canola, ....

Plasma is using QGraphicsView framework, a really good canvas framework, that enables you to create really nice UIs with nice animations/transitions. As already stated in some blogs [1], Canola will be using Evas for it's next version. So why not have a GtkCanvas? As i said in the previous post, I together with Renato already started creating a GtkTransition class. Together with a Canvas implementation you can create really nice animations really easy. I will be posting a video of an example application soon.

So if you are interested on this topic see this thread on gtk-devel mailing list


Creating transitions with GTK+

2007-09-08 03:30 UTC  by  andrunko
Anyone knows that creating transitions (animations) using GTK+ is not the easiest thing to do. So after some discussions with Renato we came up with a API to make it easier.

So today I sat down and wrote GtkTransition, a class written on top of GtkTimeline [1] that allows you to create transitions as natural as it can be. It's similar to what Flash does to create animations, but with some small differences.

Basically you create a transition with an interval (eg. 2 seconds) and add states for this transition. States work directly on objects properties, so you can say for example, create a state that will complete when the transition reaches 50% that will set the label angle from 0 to 360 degrees. After that create another state that will complete on 100% of the transition that will set the same angle from 360 to 0 degreess and depends on the first state (it will start after the first state has completed).

The code looks something like:

transition = gtk_transition_new (2000);
gtk_timeline_set_loop (GTK_TIMELINE (transition), TRUE);

state1 = gtk_transition_state_new (G_OBJECT (label));
gtk_transition_state_set (state1, "angle", 0.0, 360.0, NULL);
gtk_transition_add_state (transition, state1, NULL, 0.5);

state2 = gtk_transition_state_new (G_OBJECT (label));
gtk_transition_state_set (state2, "angle", 360.0, 0.0, NULL);
gtk_transition_add_state (transition, state2, state1, 1.0);

gtk_timeline_start (GTK_TIMELINE (transition));

The code is not complete yet, but you can grab it with:
$ svn checkout

There is a test1.c that shows the code to rotate the label, and test2.c that translate and resize a GooCanvasItem (you need goocanvas [1] to compile it)

Patches and ideas are welcome!

Hope you enjoy


Edit: updated code snippet

Canola is out!!!

2006-11-30 00:01 UTC  by  andrunko
Wow, we finally released canola. I can't say how happy I am. I want to congrat the whole team for the great work so far. Now for you that can't wait anymore to try it out, do the following:

Add the following repositories to your application catalogue (Application Manager/Tools/Application Catalogue...):

Distribution: scirocco
Components: user

Distribution: scirocco
Components: free non-free

If you are using mistral (2.0), just replace distribution with mistral.

Now, refresh you packages list (Application Manager/Tools/Refresh Package List...), then go to "Install new applications" and select canola.

After installation, reboot your device, and enjoy it :-)

Now it's time to get some food :-P.
Any feedback is welcome

It's coming

2006-11-29 20:26 UTC  by  andrunko
It's 22:13 here in Brazil and we are almost ready. I can't wait to release canola. We received a lot of feedbacks, and we are working really hard to finish the final details. I really hope you will enjoy it.

We have less than 2 hours to finish it, so let me get back to work :-)