Akonadi Google Resource, part III

It’s been more then two weeks since my last update about progress on Akonadi Google Resource, so here we go. Many bugs in calendar were fixed, resource now supports creating and editing events and Contacts resource can fetch contact photos.

So let’s start with the contacts. I’ve implemented fetching photos from Google Contacts, so now you can see all your contacts smiling at you from your address book. Updating/removing photos is on to-do, but there are more important things to be implemented/fixed first.

Now to calendar resource: you can now finally create and edit events from KOrganizer. I’ve also fixed some issues with timezones, recurrence and reminders, so it really seems to work pretty good now. What has to be done are timezones in recurrence. I’ve also implemented removing of events, but there seems to be some hidden problem somewhere, because Akonadi refuses to invoke itemRemoved() signal, thus informing the resource, that event was removed and the resource can’t send deletion request to Google Calendar….I hope I’ll get to look into this this week. Of course, if you feel you can do something about it, just send patches Smilie: ;)

Known bugs: except for the broken deleting of events there is a problem with authentication. Google only remembers the last authentication token it has issued, so when you have two Calendar resources for example, Google will accept requests only from the one you added as second. When you re-authenticate the first calendar, Google will forget access token of the second calendar and vice versa. Using KWallet to store the access token would be probably the best way how to share a single token among multiple resources and of course it would increase security a lot, but I need to learn how to do it first Smilie: :).

And finally, about future of this project…I was in contact with developer of the original Akonadi GData resource (now called Akonadi GCalendar & Contacts resources) and we agreed that it would be nice to have a C++/Qt library for full support of GData API (including other services, not just calendars and contacts). I will be slowly moving all the GData-related code from resources to a separate library. My idea is to provide a pure-Qt library with optional KDE extensions (like conversion to KABC or KCalCore objects), which could be enabled during build-time, so that the library could be KDE-(in)dependent, depending on developers’ needs. But this will be content of an another blog post, maybe later when things will begin to move. Now is my priority to improve the resource, because the Akonadi-related code is minimum compared to GData-related code which can be later dragged into the library.

So, that would be all for now, please test the resource and give me some feedback Smilie: :)

Cheers,

Dan

Category(s): Akonadi Google, KDE
Tags: , , ,

14 Responses to Akonadi Google Resource, part III

  1. Wow awesome that both projects are working closely. Dan, I am experiencing token issues with just one calendar, google forgets the token after a machine reboot, is this repeatable on your side?
    Thanks for this project .
    Cheers!
    Venky

    • Hi, I can confirm this issue.

      • I’m working on a complete refactorization of the code, moving all the google-code to libkgoogle. This particular issue should be fixed by that.

        I’m now in last phase of testing before committing the changes and pushing it to repo. That’s so just that you know that I didn’t abandon this project, though I haven’t been much active lately Smilie: :)

  2. Hello, great to see another try for a google akonadi ressource Smilie: ;)

    Missing feature here is contact birthday sync with google contacts.

    And like with akonadi-googledata ressources, removing events/contacts from web ui do not always sync in Akonadi.

    • Hi,
      check latest git, I just added support for birthday fetch/update to Contacts resource.
      I’ll look on the second problem later Smilie: ;)

      Thanks for reporting this!

    Tiago Cerqueira says:

    Thanks for your hard work! I’m an android user, so you can see that this is a must on my computer.
    I’ve done a quick search on google, as I’m interested in helping this project, but I don’t know if I have the required skills to do so(I’m a first year informatics engineer student, with some knowledge of java and OOP)

    • Hi,
      it’s C++/Qt/KDE project, so at least basic knowledge of these is recommended, but it’s also a great way how to learn them. So clone sources, start KDevelop and get to work Smilie: :)
      If you don’t feel for programming, you can always help by creating translations, finding & reporting bugs and spreading word about this project. Any form of help is welcomed Smilie: :)
      Thanks for your interest!

        Tiago Cerqueira says:

        C++ is also something I am interested in, as I’m going to have a subject on that next year.
        Right now I’m busy with exams, but I promise to take a look at the sources when I finish them.

  3. Again, Thanks! this was a long needed thing, can’t wait to get my new Android device and use this resource.

    Thanks thanks thanks!

    Anonymous says:

    That’s great, keep up the good job!

  4. Your work is awesome ! and I really need it ! Thanks Smilie: :)

  5. Hi, thanks for all the great work!

    I just wanted to let you know, that akonadi-google fails to compile with latest KDE trunk, I’m not exactly sure why, so I’m posting here the build log (will expire in a month) — http://paste.kde.org/90661/

    Also, are you on IRC?

    Cheers!
    Marty

  6. Hi, Thanks for your work.

    I think I found a few bugs:
    If I create an event from google-calendar, korganicer not updated althougth I force it (F5..)
    If I modify an event from korganicer, google-calendar is not updated
    I have some graphic glitch with the imported calendar, but these glitches do not appear with new events.

    Thanks for everything

    pd: I use arch 64b, kde 4.7, and the git of akanodi-google

One Response in another blog/article

  1. [...] libKGoogle provides unified authentication  framework and stores the tokens in KWallet. For now, you can only use one account per service (means that you can’t have two calendars from two different Google accounts), but this is on my TODO as well. The framework is also able to automatically refresh the tokens when they expire, so that should fix the problem with “resources forgeting the authentication“. [...]