Issue 100

This Week...

Work on WebKit integration, the ability to access Plasma data engines in Plasmoids rendered through WebKit, and a HDDtemp daemon data engine are added to Plasma, plus work on Plasmoid packaging and KRunner. Items can now be dragged from the Kickoff menu to the desktop or the panel. More work on syncing Akregator with online reader services. A GUI for declinations in Parley. Support for DGML tags in Marble. Genuine progress in the KTankBattle game. General improvements and the removal of the Helix engine in Amarok 2. A visual redesign of the KGet "Web Interface", with added translation capabilities. Continued work on KPresenter slide transitions, and KCron. Work on importing and exporting shortcut configurations in KControl. The "three stars per character" password mode returns to KDE 4 (from the KDE 3 series). Various speed optimisations across KDE applications. Ligature moves to "unmaintained" status. KDE 4.0.2 is tagged for release.

Its been little while since I wrote a nice long update about the state of Amarok 2, and we have been getting a few complaints that there is not enough ews being posted, so I will try to remedy that here. And I have a nice pile of screenshots ready for you! :-)

First up though, we have decided to put a feature freeze in effect starting at the end of this month. This is the first small step towards an eventual release of Amarok 2.0, and hopefully it will help us get it ready sooner rather than later. This also means that we are at the point where bug reports actually start to become useful. More on this in the coming weeks I am sure!

So, whats new in the land of Amarok 2. Lots actually. First of all, I have tried my hand at some small but quite visible modifications to our svg theme, and I personally thinks the results are very promising. I just need to figure out what do do about the volume slider...

And of course, the theme still adjusts itself to the system color theme:

At Magnatune.com, we have been adding free OGG streams along side the existing MP3 streams. Of course Amarok should also benefit from this, so I finally got around to implementing a stream selection GUI. This also allows people with slow or unstable internet connections to select the lo-fi MP3 streams:

I think I can reveal, that as an added bonus, people who decide to purchase one of Magnatune.com's upcoming memberships will be able to enjoy OGG streams in a really nice quality :-)

A lot of work has gone into the Last.fm service and integration. The bulk of the Amarok 2 Last.fm service was originally done by Shane King, but this week there has almost been a competition about who could do the most cool things with the Last.fm service. This however also led to a slight case of "interface wars" as we currently cannot decide between buttons and tree views for the different streams, but I am sure we will figure something out eventually :-) Right now the Last.fm service looks (I am warning you, it is not pretty...) like this:

A really nice feature that was implemented by Dan Meltzer (aka. Hydrogen) is the ability to right click any artist in your local collection and add a Last.fm stream of simmilar artists directly to the playlist:

I have spent some time adding capabilities that will allow any track or stream with special actions that only makes sense when that track or stream is playing to make these actions available throughout the interface. Most notably, when listening to a Last.fm stream it adds the "love", "skip" and "ban" actions to a small sub toolbar next to the play controls:

This small toolbar and the background is completely invisible when playing tracks that do not have any special "now playing" actions. The same actions are also added to the tray menu (and when right clicking the currently playing track in the playlist):

Last.fm is becoming really well integrated, but the great thing about the way it is done is that there is almost no Last.fm specific code anywhere but in the Last.fm plugin, which can be completely disabled. This means that any other service can use the same interface elements to achieve simmilar results. Last.fm is simply the first one to use these capabilities. It also means that Amarok 2 is in no way dependent on Last.fm being available. I think that this independence is very important. It allows us to work with many different services and companies without anyone getting control over the core of Amarok.

And this is personally what I see as the main strong point of Amarok 2. We are positioning ourselves to be able to work with and integrate content and services from a multitude of sources without the fear of what happens if one of these services stops existing, turns horrendously evil, or tries to assert undue influence over the direction of Amarok. And with reports coming in from our crew at CeBIT about the huge interest in Amarok, it looks to be a really interesting future.

In case you wonder what I've done this week, I will show you some screenshots of the progress of Mailody this week.

One important thing preventing me to switch Mailody4 was the fact that I could not use attachments yet. In KDE3 times we used KFileIconView to display the attached attachments in the composer. After a rename to K3FileIconView, in the end it needed to be removed from the KDE repository, so I had to comment out the functionality in Mailody. To refresh your mind, this is how it looked in Mailody3:

I requested on IRC what I could use to let it look the same and some advised me to use a QListView with a Flow LeftToRight. I tried that, and after an evening fiddling with settings and adding the needed context menu (open / delete) and hooking it into the composer, it resulted in:

It's almost the same, so the average user will not see the difference, but still it was a couple of hours work. But as it is a proper Model/View, there is now the option to make it all different without much work in the future. I like the column based layout from the old one more then the fuzzy positioning of the new one, but for now this will do. At this stage I'm not prepared to spent hours on it, if I'm even capable of doing that ;-)

The next point was that the pulldown menu's for the identity and mailtransport selection was taking up too much screen estate in the composer. So I made those comboboxes optional. But then you don't have any indication about which identity is being used and you can not change it easily. And then I saw an empty StatusBar ;-). So I added it to the statusbar and made it clickable to be able to switch to another identity or mailtransport. And best of all, it's close to the 'send' button of the composer, so it's natural as well. Here is how it looks:

I know clicking on statusbar items is not really intuitive, but we also have it when viewing messages in the mainwindow, so Mailody users might be familiar. Also that doesn't hide functionality, as the combo boxes are still available. I also know it does not look as slick as the usual Plasma widget, but then again I'm not born for that, so if anyone wants to pimp Mailody, I'm happy to talk to you. Final remark is that the statusbar does not look like a statusbar anymore, no line above it, slightly smaller font, etc. I'll just blame the used style. ;-)

The last feature I implemented this week was a long standing feature request from myself and a co-worker. Simply save all incoming attachments in a certain folder. It's a great feature (first implemented by Eudora as far as I remember), because you don't have to save the attachments from a mail to a certain folder when you need it, it is simply there in a folder (which you can open with your favorite shortcut). Also you might remember after a few months something about a pdf you have received a couple months back. It's simply still there in that folder, while you might not find that e-mail back. I know that folder can grow rapidly in size, but hard-disks are cheap and it is deactivated by default.

The checkbox is really a QGroupBox which is checkable.

Anyhow, that was what I did this week. I'm almost ready to start Mailody4 now, it is going to be the best Mailody release ever for me.

KapmanThis year we experimented with a project starting from scratch, and apparently we had some demand for a copy of an old famous game... hence why we now have Kapman! It's alive and kicking and in a pretty good shape already, so maybe it'll be able to enter the kdegames module for KDE 4.1. Of course, it's all SVG-based, so you can freely resize it (artists wanted!).

KsCDWe also poked the good old KsCD, and our team made quite a lot of improvements. In particular, it is now fully themable using SVG (artists wanted!), and uses MusicBrainz to identify discs. Of course it also got the expected KDE4 refactoring, with porting to Phonon and Solid.

KSirKKSirK is one of those games we have in playground for quite some time. One of our team has been working on it to improve it up to release quality. It's definitely getting there. The team mainly worked on improving its usability, with visible improvements in my opinion. At least now I feel like I could play with it for hours. :-)

KopeteLast but not least, this year we got a team working on Kopete. They did an awesome job: it is harder to demo or to make a screenshot for it, but they mainly focused on integrating support for Universal Plug and Play (UPnP) and for the new Windows Live Messenger protocol. On the UI front it looks less impressive, but I'm very proud of this team: they definitely had the hardest project to work on and learned a lot. Since I have no screenshot to offer, here is a picture of today's "Kopete Gang of Four" who attended the hacking session:

A few words on the hacking sessions...Of course, after the projects of last year, we kept the good habit of having "KDE Hacking Sessions" in Toulouse, and we now have a few people who attend regularly... the community is definitely growing here. And during the student projects we have an unusual amount of my students showing up. ;-)

All of the above features are taken from blog entries syndicated on Planet KDE (Digest-exclusive content will return next week). Despite the slight blog-relatedcommunitycontroversies of the past week, this shows the current strength of our developer community and their free expression of the work which personally excites them. And that excites me.

This is a special issue of the KDE Commit-Digest - not so much for the alternative approach to content, but because the week counter has finally reached triple digits. This is issue 100!

To the few people who have complained that the Digest has recently been "late": I am committed to producing the Digest every week (and have not missed an issue yet, out of 100 consecutive weeks), but I never promised or guaranteed that the Digest would come out on any specific day.

I try to produce the Digest as early as possible, but there are often things (sometimes beyond my control) that prevent this. I will work to my own schedule, which can sometimes be busy. And yes, my exams went fine.

Graphics

libkipi from trunk (KDE4) : image collection selector widget is not supported as well by the library. implementation is delegate to kipi host application to be more adapted to the host model/view used to support image collection.

For digiKam, this is want mean than the new image collection selector support fully the album/tag treeview !

When a grouping per date is done, per default the granularity is one month. This patch increases the granularity for the last month:
- "Weeks" are used for the last 4 weeks excluding the current week.
- "Days" are used for the current week.

Additionally some cleanups of the code has been done, as the method DolphinModel::data() was too long already.

No backport will be done as new strings are introduced. The patch has been reviewed by Rafael Fernández López.

Add Drag and drop of entries from kickoff to desktop or panel (at the moment only to kickoff, traditional menu still to come) done by subclassing the kickoff models and the applications model is now in kickoff namespace as the other models

add the ability to install packages from files. needs a UI review by another pair of usability sensitive hands. there are still issues, such as lack of double click interactions and feeble feedback on error and success. but it works, now we can pollish.

Robert Knight committed changes in /trunk/KDE/kdebase/apps/konsole/src:

Allow selection of the new line character at the end of the last line of the selection. When the cursor goes beyond the end of the text on the last line of the selection, a new line character is added to the text sent to the clipboard.

First shot at importing / exporting Shortcut Configuration. Also known as schemes.

- Barely working. Use on your own risk
- SelectSchemeDialog is my first. Please help me improve
- The added kksrc files are from kde3. They work only in half because some Shortcuts have changed their name. Bad selection for a id.

Finally implement the IrisWipeBase (thanks Thorsten, although I still don't understand why what I did wasn't working), now all other IrisWipe can be implemented just by reimplementing setShape() and drawing the shape around the point (0,0).

Just one issue remains:
how make sure thet the shape is big enough to cover the whole screen without scaling over and over and asking if the whole screen is overlapped, for an example of this problem see the Diamond effect.

Resolved conflicts on svg pictures, added MusicBrainz upload (with direct use of libMusicBrainz, TODO see if libkcddb can improve the management), temporary resolved musicbrainz problems when no connection.

Hi,
adding this Christmas theme is my first commit for kdegames (I have used my KDE svn account only for kst up to now), and I'm actually quite happy about it, as I've been working on that new theme with my 10-year old son. He's quite thrilled to make his first contribution to KDE - not bad at 10 :-)

I hope I haven't broken anything with this commit. The theme was actually ready in December (which would have fitted better for a Christmas theme!) but after some discussion on kdegames-devel it was decided not to include it to avoid upsetting translators. I've asked again recently and it seems it is OK to commit it now, so here it comes.

Some notes:
- I've used a .svgz format because those files can become pretty big otherwise (even though we've always tried to keep objects as simple as possible for performance reasons), and I was wondering whether we shouldn't do this for other themes as well for space/bandwidth reasons
- some things are not rendered as well by Qt as by inkscape, hopefully that gets improved at some point (but even so it is quite OK I think)
- among the recent themes, the pizzeria one seems to suffer from some drawing artefacts (at least here) and is also quite big. I don't know how much of an issue that is and whether it could be fixed easily, though.

Multimedia

Disable Max's optimization workaround. It turns out the with the new extremely simple svgs, actually rendering the svgs is about 30 times faster than resizing the large master image. Except for very first time (where I guess the renderer is initializing itself) but this makes no difference as that would happen when pre-rendering the master image as well.

If the shortcut is advertised as not configurable by the developer, do not allow editing at all.
If the shortcut is not advertised as globalShortcutAllowed by the developer, do not allow setting of a global shortcut.

That breaks a lot of global shortcuts. They are opt in. I will fix them.

And it told me that Kate advertises it's "About Editor Component" as a global shortcut. Thanks for the testcase. But where is the sense in that?

three plugins that work: webkit with plasma APIs (e.g. you can reference data engines directly from your javascript), dashboard (built on top of the webkit plugin) and the dashboard package structure (does install, open from zip, open from directory)

Since no one has objected, let's try this new way of calculating default colors; it should work adequately for both dark and light color schemes (unlike either of the previous attempts that had problems with one or the other).

updates to svn{back,forward}port: more "standard" usage information, more portable/liberal detection of -h/--help, branch specification (backport, optional, default still 4.0) or read-from-actual-url (forwardport), proper argument quoting / use of "$@" (hopefully now safe for files with spaces), be more picky about what is "yes" when asking to commit, other minor stuff...

NOTE: POSIX states that 'test' with more than three arguments is not portable, and it's right; the old code could do something like 'test -z -gt -o -gt = -h -o -gt = --help', which is an error; the correct way (as stated many times on bug-bash) is to use && and ||, not test's -a/-o. Also use '[', as it looks nicer and I'm not aware of any reasonable shell these days that lacks [ as a built-in (even Solaris /bin/sh, which is *not* POSIX-compliant, has it), and have used it in my own must-be-portable scripts for ages.