1st July 2007by Danny Allen
The talk about Sonnet was interesting, but I was a bit frustrated about the lack of in-depth information. That said it's completely understandable, Zack being back on business on this library only recently.
The second keynote by Mark Shuttleworth was interesting, but obviously raised some controversy about release processes. Apparently he'd like to see all Free Software projects release in sync every six months. That looks very optimistic to think it could be even done. And even if we suppose for a second we could apply this to the whole community (good luck!), I'm not impressed at all. Doing this to such a scale looks like the best way to kill innovation in my humble opinion.
The talk about Akonadi was pretty informative, and it's nice to see code running. In particular, demoing a Plasmoid giving the state of your mailbox in real time was a very good example. If you add to that the fact that'll be an unified and semantic rich way to get all your PIM information... nice features are coming.
Then I attended Zack talk on graphics, and his new framework named Quasar... well, it was a talk made by Zack, enough said. It rocked, and it even gave me some motivation to do crazy graphics stuff.
The KDEGames panel was a very very good idea. It gave a pretty good overview of the kdegames maintainer team, on the state of the module, where it's going on, etc. I'd love to see more of such panels, for other modules too.
Lars Knoll had another talk, but this time about WebKit and KDE. I think he gave a pretty good picture of the current situation and of the advantages to use WebKit now. And the best of it, is that it's not science-fiction, we already have a KPart for Konqueror which use Webkit (it's in playground right now, and completely working).
Then we got the "beautiful features" talk by our renowned serial-hugger: Aaron Seigo. As usual, great talk, he's speaking really well... a real born speaker. He gave quite some clues on the direction we should follow to make our UIs more appealing.
And last but not least I attended Inge's talk about large installation and thin client settings. That's nice to see KDE works quite well overall in such setups, but I have to admit I share his concerns about Kiosktool. It could become one of our best assets, but right now it's really suboptimal and probably needs rethinking.
On the evening we got our first social event. We went to a bar, got nice food and drinks. The place was really nice, and I've been able to chat with many people. Very good stuff... except for the music. It was overall too loud for my taste, in particular when one of the DJ played us some experimental music^Hnoise. It was extremely loud, and unfortunately it made quite some people leave. That's really unfortunate, the place was very well chosen otherwise, but you can't control everything.
- Best Application
Sebastian Trueg for K3b.
- Best KDE Contribution
Matthias Kretz for Phonon.
- Jury's Award
Danny Allen for the KDE Commit-Digest.
I was completely entranced at the time, and with a microphone suddenly thrust upon me, I could only utter an extremely short acceptance speech! However, if I was in a normal state of mind, I would have expressed my thanks to Derek Kite, the original producer of the Digest, and who was the natural inspiration for the current effort.
I've already made some progress, e.g. at startup of apps KIconLoader ctor (which is called for pretty much every app) takes 500 ms less with cold caches, 30 ms less with hot caches. And the loading times of individual icons will be improved as well. As a result, I'd like to discuss a possibility of including the cache in 4.0 (instead of 4.1 as originally planned).
The code can be found in /branches/soc-iconcache/
API changes to kdelibs would consist of one added method to KIconTheme (internalName()) and the addition of the KIconCache class.
KIconCache's public API is pretty much complete (at least for 4.0). The most important methods are find() and insert() plus static deleteCache(). There is also possibility for apps to use their own caches, e.g. for saving pixmaps rendered from SVGs (at least kdeedu and kdegames might want to use this). A small app demonstrating this can be found in /branches/soc-iconcache/kic_demo The internals are not finished yet (and some of the code is quite messy), but I can finish that before the feature freeze.
There will also be some buildsystem changes (I think these should go into 4.0 even if the cache itself won't). Whenever new icons are installed, the icon theme dir's (e.g. share/icons/oxygen/) mtime has to be updated, then the icon cache will pick up the changes. There's already the kde4_install_icons() cmake function which can easily be modified to do that. But another function will need to be introduced for installing icons into app's data dir (i.e. share/appname/...). It would install the icons and then update mtime of hicolor icon directory. What about adding something like kde4_install_app_icons() for that?
So what do you think? Should it go into kdelibs for 4.0? If yes, I can do the merge before or on 25th (libs freeze).
And any API improvement suggestions are of course also welcome :-)
|Commits||2508 by 243 developers, 5323 lines modified, 1605 new files|
|Bugs Opened||213 in the last 7 days|
|Bugs Closed||169 in the last 7 days|
Internationalization (i18n) Status
Bug Killers and Buzz
|Adriaan de Groot||
|Aaron J. Seigo||
There are 163 selections this week
Fix the odd usecase when we start in RTL mode which swaps the ordering of the buttons and thus makes the align-left and align-right ones be weirdly ordered.
This fixes it so align-left is always to the left of align-right for KOffice.
NJB devices could get corrupted ID3 tags if they contained Unicode characters. Patch by Kun Xi.
Patch by Tuomas that keeps the moodbar shown when cycling through ratings, _without breaking anything(?)_ this time.
Add a completion-context system that connects the editor with the expression-parser, type-conversion, etc.
Implement great features like context-matching, completion and call-tips for overloaded binary operators, an arbitrary count of recursive function-calltips, resolution of the best fitting overloaded functions, and more.
The result of the system yet needs to be connected to the user-interface(content of container-class shown in list etc.)
Added line and polygon clipping against the celestial horizon. Also disabled the labels in LineListComponent because they were causing crashes. To see the clipping effect, zoom out all of the way and then drag the celestial sphere around and look the celestial horizon.
Experimental Automatic Tile Downloading
This still has got some issues, that need to be resolved:
- Directories of levels that don't exist yet shouldn't be created if there aren't any valid files to download.
- We need to deal with expired/aborted tile download jobs.
- Fetch the server list from a tiny file from edu.kde.org/marble/server.txt and get the data elsewhere.
- the scale up algorithm seems to have an issue at high zoomlevels. I'll look into this shortly.
And most important:
- provide more data ( Right now it's just a small version of Blue Marble as a proof of concept )
Support PEF, a raw format from Pentax' DSLRs. Thanks to Erhard Schultchen for providing sample file.
imagwindow.cpp ==> compile, but some part have been commented for that and need to be review later to be ported properlly.
Marcel, Laurent, feel free to take a look about KDE4PORT tags in source code to complete the job...
Note: now, just showfoto.cpp need to be ported to give the first part of digiKam available under KDE4. We will really test the code!
Provide horizontal scrollbar in table of contents sidebar instead of cropping the entries. This improves usability esp. for deeply nested TOCs.
Add KStatusBarOfflineIndicator, an elusive little widget that only comes out to play when the network is offline. Specimens have been observed nesting in KMainWindow status bars as far afield as kmail, kopete, konversation, akregator and ktorrent. Also extend the test client and disable older test client.
fixed most of the KIO issues but messy out of order execution etc.
== from my 26 June 2007 update on kde-print-devel ==
Realised the error of my ways after the ONE LINE PATCH I received yesterday. Thanks again!
Mainly fighting with KIO and not checking the source tree with the handy design doc today. My issue was that there is no longer any result(KIO::Job*) signal coming from KIO::TransferJob and pals. Nowadays, you just check for the QByteArray (from the data signal) having zero size().
Downloading is now no longer an issue and tomorrow will be cleaning the awful mess that XmlQueryJob and MainWidget have become.
I have checked in this awful code tonight also.
Resize color name column to fit contents in color scheme editor. Draw a translucent version of the selection marker around the profile's current color scheme when it is not selected. The distinction between the color scheme being used by a profile and a color scheme selected so that it can be edited, removed or copied remains, though I am worried it might not be intuitive.
A stab at an engine for a batterymonitor plasmoid.
The engine reads data from Solid and provides it to a battery applet.
I'm not very proficient in the art of writing C++ code yet, so please be kind with me (and consider that *before* you start compiling it)..
Next part of the battery plasmoid, the visualisation part.
On *my* machine, this renders a good-looking battery (thank to Ken's mad Inkscape skills) on the desktop. There's a README briefly explaining how to manipulate the looks. This applet is using the Battery DataEngine, but might be ported to the solidengine (I have to have a look at it, it's quite new).
Bugs and crashes: I'm a n00b, but willing to learn.
New Engine for Plasma. This engine parses chemical data (currently provided if you install kdeedu (libkdeedu to be precise (elements.xml)). The file is loaded and parser. 116 objects of the type "Element" are created, each representing one chemical element.
Now the user can search for 22 and will get the data of Titanium (Ti is element 22).
Now I need to figure out how to use that in the Plasmoid...
Lots of changes to the framework - most of it playing with KIO and familiarising myself with _everything_
NOTE: This doesn't actually compile. There is a const issue (I hate those) which I don't understand yet
I do feel like the code should be up and perhaps reviewed
* startElementAnimation -> animateElement
* animate -> animateItem
* frames -> framesPerSecond
* use the curve shape as provided by the animator
* get rid of the use of QTimeLine
* this cuts down on the number of objects and timer events dramatically in the case of multiple simultaneous animations
* all animations now update on the same tick
* simplifies the management code a -lot- though now i need to do a lot more of the math
TODO: implement interval updating based on the curve shape; otherwise, works pretty well =)
- Modified the SQDs, data proxies are initialized by the class implementing RecordConduit
- Implemented "COM - INIT" (See SQD) in record RecordConduit.
- Added most classes to the build, but they are not implemented yet.
- Did some code formatting.
- Added copyright declarations.
Change the internals of the Identity class. Instead of a separate member var for each setting, use a QHash<QString,QVariant> to store them.
This system opens up the possibility to store random settings for Identities (property()/setProperty()), which is needed for other applications than KMail to use this library.
Also remove the HAVE_GPGME compile time check, so this library does no longer depend on kdepim/kleo/any GPL application and thus making this library LGPL.
Adding a first error handling draft.
The idea is to define an error hierarchy by subclassing Error. To keep error handling simple, we should agree on a small list of error types and how to build the hierarchy.
To test the new error handler, just write "ErrorHandler::instance()->addError( new Error( __FILE__, __LINE__ ) );"
Floating-point values are now stored using the Number class, not doubles.
Only minimal changes were done to make everything work, all computations are still done using ValueCalc.
This is one of the steps on the way towards having high-precision computing support in KSpread. And faster formula evaluation too.
There is a temporary function in the code, called numToDouble. All places that now call this function (mostly places that convert numbers to strings and such) must be converted somehow - until this is done, high-precision support won't be implementable.
I hope this commit doesn't break things ... too much.
Make there be one group total and let it be the full size of the widget.
Also re-layout all the icons when the size changed.
This makes the widget behave nicer so we always see all the icons, and when I am ready to do some more hacking and provide multiple folders, then most of the code is there already.
Show OSD when changing song rating via shortcut. Patch by Tuomas Nurmi.
1) Clean up: Consolidate Views and MixDeviceWidgets, so that there is less work and more common functionality.
2) Implement a program-generated default profile (neccesary for backends who ship without XML profiles, and for users with broken installations, or for some other unlikely case).
3) Remove error state for some parts of KMix: That is is not an error state any longer, but instead waiting for newly plugged devices.
4) Put sensible defaults in ALSA.default.xml and OSS.default.xml for KDE4 alpha 2.
5) Open issues: All popup functionality is currently heavily broken, due to neccesary Action(Collection) rework.
big commit, with lots of changes/features. here is a summary:
* created new items/ directory for ContextView items and related classes
* added Observer pattern for use with ContextView items. items now connect as observers to the ContextView.
it is important that items do *not* directly connect to EngineController because ContextView must be run before any items.
* added Context Item Manager, available from the Tools menu. it is now possible to enable/disable context items (changes come into effect on next track
change). it will soon be possible to control the "order" of items on the CV in the manager.
* items are no longer singletons ( except LyricsItem, needed for dbus handler )
* CloudBox is now a member of LastFmItem (more logical place for it).
* i think thats it.
Implement new host preferences:
* hosts configuration file is now xml based
* it is separated between a core and the different protocols
* default configuration for each protocol is configurable in the configuration dialog
RDP configuration is not fully implemented yet.
Added several patches from MoDaX :
- Compile fix for FreeBSD
- Skip generation of Makefiles for utests directory. Makes 'maintainer-clean' target fully clean the source after build and not leave garbage around
- Security fix for CVE-2007-3154 (<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-3154">http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-3154</a>) The patch is based on wz_tolltip.js from eGroupWare 1.4.001
- Add support for the --enable-system-geoip configure parameter. It makes ktorrent build against system-wide GeoIP library (libgeoip1) and use libgeoip1 default GeoIP Country database.
- Add support for the --disable-builtin-country-flags configure parameter. It allows to skip installation of ktorrent builtin country flags. In addition, the patch adds support for the "flag database" that lets ktorrent get country flag images from more than one filesystem source transparently and caches images in memory. It also adds additional (and the only for the debian package) source - flag images shipped with kdebase. (Patch from Modax)
- Cache peer address in Socket, to avoid to many calls to getpeername
- Replaced several calls to Now() by GetCurrentTime(), the last one is cached so this avoids calls to gettimeofday
* implement host preferences for RDP
* change the constructor of the remoteviews: pass a full url instead of only host and port
* fix layout of vnchostpreferences dialog* add support for all new keyboard layouts of rdesktop (Korean, Hebrew, Faroese, American Dvorak)
* Improve automatic window resizing:
* if a remote view is bigger than the desktop, automatically maximize the window (not resize it to the remote view seize as before; the window was not usable anymore)
* not use hardcoded values for tab borders; calculate them (the values are style dependant)
* use the last used protocol in the KUrlNaviagor protocol combo* cleanup RDP remote view
Since this is a new feature I couldn't put it in Qt 4.3 and since some people wanted it anyway, I'm adding to qt-copy (with much love).
This makes Qt pick ARGB visuals by default when available (and fixes some wonkiness that was visible with it before). Funky semi-transparent apps are a go with this patch.
SkyLine now stores a QList of SkyPoints, rather than a single line segment. This should make LineLIstComponents faster, because under the old method, each vertex along a series of connected lines was represented twice (as the EndPoint of one segment, and as the StartPoint of the next).
This caused a cascade of changes, mostly in the sky components.
Add hasContent() to decouple this concept from having a pixmap.
Text selections historically always had pixmaps so were considered to always have content. With this new method, we will slowly be able to migrate away from this and support creating text selections that are only borders (contain no text and will not mutate document-is-modified state) i.e. you will be able to drag out text boxes and cancel them without affecting the document-is-modified flag.
Change on-the-wire selection mimetype so that we can break the on-the-wire selection format, compared to KDE 3.
If you are cutting and pasting selections between KolourPaint/KDE3 and KolourPaint/KDE4, bad luck - it will simply copy them as images now. This is not a common use case and Qt changes their QDataStream format regularly anyway.
Register DImg as queued signal type:
Showfoto for KDE4 can now load images!
(Registering meta types needs to be done once per app startup. The LoadingCache constructor is for now a good place, it is constructed in DigikamApp and Showfoto constructor. We can think about moving it to a more dedicated place)
Big rework of the public api for Sonnet.
Instead of :
Loader::Ptr loader = Loader::openLoader();
Speller *speller = loader->createSpeller();
if (speller && speller->isMisspelled("word"))
// do something
which makes babies giggle, women flutter eyebrows and zacks (highly elite set of one) rub their nipples.
Better short directory names in tab titles. Where common dir names are encountered at the end of the path, they are abbreviated to their first letter, and the search continues until a name not found in the set of common dir names is found. eg. '/path/to/konsole/src' and '/path/to/kate/src' are now abbreviated as 'konsole/s' and 'kate/s' respectively, instead of just 'src' in both cases.
Initial import of openprinting.org driver download code from GSoC project
Project page: <a href="http://techbase.kde.org/Projects/Summer_of_Code/2007/Projects/KDEPrint_--_add_support_for_LinuxPrinting%27s_on-line_drivers_query">http://techbase.kde.org/Projects/Summer_of_Code/2007/
Me hack try get to this ready for KDE 4.0, break
likely things many. All fix later them me.
(see? that's why i want/need a linguistic framework somewhat ready for KDE 4. this commit removes deprecated code, cleans up the classes and puts all in Sonnet namespace instead
of non-existing KSpell2)
Okay, I was having major problems with adding/removing context boxes because of the GraphicsItemFader class. I'll need to review this with special care, as we need to take many cases into consideration. We also need to delete the faders as soon as the animation is completed otherwise they linger around for no use.
Make Metadata/ compile mostly on windows.
* Explicity qualify all namespaces.. Use TagLib::uint instead of uint, RealMedia::UINT32 instead of UINT32.
* Include stdint.h where necessary.
Please make sure I didn't break windows builds.
Removing the old PopupDropper implementation. I think we can safely assume that this approach wasn't going anywhere. At least we've learned something from it, and trial-and-error is still the best way to learn ;)
Let's try the approach suggested in the qtcentre.org forum: Drawing the PopupDropper in the context view itself, simply using different Z values.
Kombination didn't build anymore due to the changes in Sonnet / KSpell2 in the revision 680241.
See also: http://websvn.kde.org/*checkout*/trunk/KDE/kdelibs/KDE4PORTING.html?revision=680475#kspell
I adapted the code as needed everywhere except in the class Kombination where I added some "FIXME" tags. Problem is how to get the list of the languages now with Sonnet like before with KSpell2::Loader::Ptr->languages() ?... Any idea?
Anyway, playground/games is now building again. :)