I also removed the local copy of Akonadi we had in Mailody. That means Mailody now depends on kdepim in KDE's SVN. I expect the distributions to ship the resources in a separate package, so it is not a big problem. The Akonadi Server still has a dependency on KDE (KLocalSocket) - as soon as it's replaced by QLocalSocket, that part will move to kdesupport or somewhere else.
While Volker Krause and Tobias Koenig were moving things around, I started working on create a system tray application for controlling Akonadi. Already it can stop and start the Akonadi server and show the status of the server. Soon it will serve as 'host' for displaying errors from the different resources.
We started to review the API of Akonadi, which will probably result in some API changes tomorrow. One change will corrupt all current items in Akonadi, but it just needs to be done. All this has to be completed before the 4.1 release, as from that moment on, we cannot change the API.
Yesterday evening we continued working on Akonadi and Co. Kevin is working on replacing KLocalSocket with the new QLocalSocket, but that's not going that well yet. Thomas is working on the collection model/view/delegate (simple language: the folderlist), to allow it to make the unread count of the top level visible and available. Frode is cleaning up Mailody resources and the KCM, code style, indentation, consistent placement of the * and & signs, etc.
I made the system tray a bit more intelligent by watching DBUS to see if Akonadi is started or stopped. When it notices a change, the menu items are adjusted and the title of the context menu changes. That title of the context menu caused some headaches, because the kdelibs API did not have a way to do it, so I had to draw my own title above the context menu. Urs Wolfer spotted my commit and immediately fixed the kdelibs API and improved to layout of the title. That's awesome. I will change the tray application soon, but I don't want to force everyone to recompile kdelibs trunk and let kdepim depend on that. I assume not everyone has a build cluster like we have here at KDAB currently.
Tobias made some changes to the API just before we left the building, which broke kdepim and playground. We fixed that in the meanwhile. Today, Tobias continued API changes, assisted by Till and Volker. Frode implemented purging of mailboxes for the IMAP resource and I did some fixes here and there, one change made sure Mailody can be used for reading newsgroups from now on.
Today Thomas finished the delegate for the folder list, so folders with unread messages are painted differently and it makes it possible to add the unread count behind the folder name. It's not used right now, because the folder view needs to support selecting of the columns, which is not there out of the box. After that some more renamings happened.
Tobias worked on the 'search' and I heard him cheer a couple of times, so I think he had a basic working implementation. I'll look at it and see how it works, and activate it in Mailody when possible.
Volker fixed a rather important bug in the transaction code we use for MySQL and I found another little bug in the database scheme, a patch is pending review. After that we decided on some organisational issues: we are going to use #akonadi and, reluctantly, we will start using Bugzilla from now on. I've reported a couple of bugs so Volker doesn't forget them. I must say Bugzilla is in worse shape than I thought. I wish we could move on to something better.
After lunch, Volker, Kevin and Tobias started continuing the API review on the beamer. We already have a new list of changes we want to make, which probably break everything again and again. There was a large discussion about error handling, I did not understand the outcome, but I'll just watch the commits and ask again after that, as it needs to communicationg with the new Tray application, which I worked on a bit more today. The alerts it popups via KNotify were appearing up all over the place. So I replaced it with KPassivePopup which is able to determine the correct position. I would still prefer KNotify as that can be configured by the user, but I don't feel like hacking on KNotify right now.
The whole evening was filled with API discussions, we have made comments in the header files, with the changes we want to make and the next weeks we will implement all those changes. In the meanwhile I pimped the Akonadi KCM, by replacing a boring widget with the widget already available in Akonadi, which even shows the status of the different resources. Now it looks like this in Mailody: