Issue 97
10th February 2008 by Danny AllenThis Week...
In April, several of us will be coming together in Milano, Italy, for a four day Plasma developer sprint codenamed "Tokamak" (continuing the tradition of bad high energy physics puns in the project ;).
We've also gotten the necessary permission from the translation teams to backport some of the more requested features from 4.1 into the 4.0 branch, so a number of features that impact the panel and other parts of the Plasma workspace have made their way into svn for 4.0.2. Over 80 commits have been backported thus far, and we'll be doing another batch of backports for 4.0.3 next month.
Plasma itself has continued to be refined with numerous bugs being squashed and configuration for things such as SVG Plasma themes appearing in the user interface. Speaking of SVG themes, the theme system now adapts automatically to non-composited environments as well as low color displays. This is driven in part by people starting to use Plasma in both thin client as well as mobile device systems.
Not to be left out, KRunner is also being improved. A number of performance improvements were checked in this week, and work is underway to improve the user experience including better ranking of matches, the ability for users to discover the syntax offered by the various runners (e.g. "spell <word>" checks spelling via Sonnet, but who knows that?) and an improved interface display.
As an interesting aside, with just two lines of code (one using Solid and the other Threadweaver), the number of threads used by krunner to perform matches with now scales along with the number of CPU cores available on the machine (with the abiity to set a hard upper limit on it via the configuration). This shows just how powerful and useful the new frameworks in KDE4 are.
Except for Jeffrey, we are relatively new to Linux. We've all chosen KDE because it was already widely spread in our environment and while programming with Qt and kdelibs, I saw yet again that it was the right decision. Some years ago (in the Windows era of my life), I've worked with some Microsoft libraries. Compared to kdelibs, what I got there was quite uncomfortable and data-centric while the design of kdelibs is more based on what a developer actually needs. If you have some basic C++ skills, I really recommend you to try kdelibs for your next program.
KDiamond is a Bejeweled clone or, more generically, a three-in-a-row game.
KDiamond is available from KDE SVN in playground/games since last Friday, and has evolved quickly: Like most other games in KDE, it is now based on QGraphicsView, and includes some basic animations. It was imported to KDE SVN after its first release (with many help from the friendly guys at the #kdegames channel). What you're seeing here is not the mentioned classic theme, but the new default theme created by Eugene Trounev:
To make the list of contributors complete, many thanks to Dmitry Suzdalev, Albert Astals Cid, Riccardo Iaconelli, and Pino Toscano for their help on improving the code. Also, as I learned to develop with kdelibs by reading code from others, I think this is the right place to thank the developers of Klipper, KLines, KMines, and KNetwalk for your clean and readable code. Now the contributors' list is really complete!
If you always have wanted to play a Bejeweled game on your KDE desktop, this is your chance to contribute: the gameplay of KDiamond needs balancing, so tell me about your impressions of the difficulty of the different levels: Was the game too easy or too hard, and what about the difficulty levels? (Bug reports are also welcome!).
Send your reports to my email address, which you can find in KDiamond's about dialog.
I look forward to reading (and then publishing!) your introductions - send them to me!
Statistics
Commits | 2830 by 245 developers, 6750 lines modified, 1558 new files |
Open Bugs | 15952 |
Open Wishes | 13629 |
Bugs Opened | 355 in the last 7 days |
Bugs Closed | 239 in the last 7 days |
Commit Summary
Module | Commits |
/trunk/KDE |
731
|
/trunk/l10n-kde4 |
595
|
/branches/stable |
270
|
/trunk/extragear |
238
|
/trunk/playground |
222
|
/branches/KDE |
159
|
/trunk/www |
121
|
/trunk/kdesupport |
108
|
/trunk/koffice |
98
|
/branches/extragear |
71
|
Lines | Developer | Commits |
267
|
Gilles Caulier |
114
|
343
|
Volker Krause |
83
|
178
|
Laurent Montel |
81
|
71
|
Chusslove Illich |
71
|
66
|
Thanomsub Noppaburana |
60
|
144
|
Aaron J. Seigo |
58
|
187
|
Albert Astals Cid |
58
|
131
|
Allen Winter |
53
|
108
|
David Faure |
48
|
62
|
Patrick Spendrin |
48
|
Internationalization (i18n) Status
Language | Percentage Complete |
Portuguese (pt) |
98%
|
Greek (el) |
97%
|
Swedish (sv) |
96%
|
Japanese (ja) |
93%
|
German (de) |
87%
|
Estonian (et) |
87%
|
Spanish (es) |
86%
|
Polish (pl) |
86%
|
French (fr) |
86%
|
Dutch (nl) |
85%
|
Bug Killers and Buzz
Person | Bugs Closed |
Matt Rogers |
58
|
Thomas McGuire |
24
|
Pino Toscano |
17
|
Luboš Luňák |
13
|
Leonardo Finetti |
10
|
Peter Penz |
8
|
Tommi Tervo |
8
|
Riccardo Iaconelli |
6
|
Gilles Caulier |
6
|
Joris Guisson |
6
|
Program | Buzz |
Amarok |
13060
|
KMail |
4585
|
K3B |
4115
|
Kopete |
3582
|
Solid |
3180
|
Plasma |
3149
|
KDevelop |
2945
|
Kate |
2776
|
Phonon |
2536
|
Marble |
1932
|
Person | Buzz |
Tobias Hunger |
4070
|
Aaron J. Seigo |
2828
|
David Faure |
2495
|
Stephan Kulow |
1786
|
Torsten Rahn |
1232
|
Laurent Montel |
1089
|
Jonathan Riddell |
1059
|
Adriaan de Groot |
812
|
Stephan Binner |
804
|
Thiago Macieira |
700
|
Commit Countries
Commit Demographics
Sex
Age
Contents
Bug Fixes | Features | Optimization | Security | Other | |
---|---|---|---|---|---|
Accessibility | |||||
Development Tools | [] | [] | |||
Educational | [] | [] | |||
Graphics | [] | [] | [] | ||
KDE Base | [] | [] | [] | [] | |
KDE-PIM | [] | [] | |||
Office | [] | [] | |||
Konqueror | |||||
Multimedia | [] | [] | [] | ||
Networking Tools | [] | [] | |||
User Interface | [] | [] | [] | ||
Utilities | [] | [] | |||
Games | [] | [] | [] | ||
Other | [] |
There are 137 selections this week
Bug Fixes
Educational
Hopefully fix the crash in goHome in the qt only version. Unfortunately untested on the qt-only version, where there used to be a crash.
There is a hurry because tackat need this for his train ride and I don't have time to build a qt only version before the train leaves.
Fix all zoom issues.
The split of MarbleWidget into MarbleWidget and MarbleMap is now DONE!
Step 3 is fixing some issues in the API.
Graphics
Update the bookmark menu whenever bookmarks have been renamed in the sidebar
KDE Base
Set the size to 1 instead of asserting and crashing.
Aaron, as this is controversial, I'll let you decide if this fix is ok. (read the bugreport to know more)
Fix a huge bug in deepgrep. deepgrep has been broken since version 0.5.2. In this version, deepgrep used an IndexManager that provides the IndexWriter, instead of using the GrepIndexWriter directly.
The manager returned a dummy writer instead of the required GrepIndexWriter.
Now the right IndexWriter is returned.
while getting the size wrong is bad, flickering like crazy is even worse =)
resize after the contents have been set to get a rational size out of the widget.
Add fixed version of Yaml highlighter
User Interface
Apply patch by David Benjamin fixing LTR layout of QToolBox he gave me two options and i chose the one that mirrored the sloping divider.
It also fixes icons from appearing twice in QToolBox
Thanks David
Games
Additional fix for bug 157531.
Remove the top bar resizing issue : now, instead of having a disappearing line edit (and a lot of resizes because of this), we use setEnabled(true/false) on the line edit.
It means much improved performances, no more bad looking resizes/repaints... Only good things.
Features
Development Tools
Educational
Change the way grades are handled fundamentally.
Too bad, I didn't have the idea long ago.
Much simpler:
* One grade for each word, no longer the fromTranslation.
So whenever the user gets abc right, abc gets it's grade increased.
* Translation inherits from the new Text class.
* The new class KEduVocText will be used instead of QString in many places to for ex allow grades for individual conjugation forms etc.
* Add initial unittests for translation class.
Added support for cubic-line intersection in case two of the three intersection points are already present.
Author: Francesca Gatti
Graphics
kipi-plugins from trunk (KDE4): digiKam has a new tool to edit a GPS track list using googlemaps!
More than one point can be edited over the ma at the same time...
A fresh screenshot of the tool in action is available here: <a href="/issues/2008-02-10/files/gpstracklisteditor.png">http://digikam3rdparty.free.fr/Screenshots/gpstracklisteditor.png</a>
KDE Base
enable dragging from desktop to panel
note: there's no visual feedback before you release the mouse button, and there's no way to drag back to the desktop.
add RSS feed for Wikimedia Commons Featured Pics
this is a quite massive change to the comic applet, yeah i know quite hard to review sorry for that.
the main changes are:
- i've added a provider to <a href="http://www.osnews.com/comic">http://www.osnews.com/comic</a> (got permission from them) it uses a rss feed so only last 15 will be available but i think is enough
- now the applet can be resized (option that can be disabled if you want to see the comic as is)
- the dataengine now gives more data that can also be cached at the moment it has only the url of the comic of the day, but i plan to use it also to pass the date of the previous and the next comic (useful for comics that don't have a strip every day)
- the url of the comic is displayed at the bottom of the applet and clicking on it it opens a web browser on that page (useful if the comic is scaled down and some (osnews) explicitly asks it)
Improve goya for letting line edits blink when they have the focus.
Improve line edits to see if we can make them being editable
More real line edits, the cursor indicator moves with right and left arrows
add KFadeWidgetEffect as discussed on core-devel
Animates changes fading the new UI over the old look.
add new helpers to handle the backend interfaces.
The idea is that when a backend interface needs a new virtual function the old interface is renamed but the Q_DECLARE_INTERFACE is kept (with the changed interface name).
That way implementations from backends compiled against older libphonon can still be casted to that renamed interface. A new interface is added with the name the old interface had before and a new Q_DECLARE_INTERFACE statement is added. That way backends automatically get source incompatible (kind of) which helps to find the places where new implementations are needed.
To make it easier on the frontend side to access the backend I added template magic structs/functions that will return either 0 or the correctly casted pointer.
Now I'm praying that all compilers we need to support can handle this code.
Add support for using a borderless svg in the panel by adding a hint-no-border-padding element to the svg
make Theme react to compositing changes
Configuration dialog for CIA.vc applet
Simple spacer to be used on a panel for separating groups of applets.
Added configuration support.
KDE-PIM
Extend the interface used for account storage integration:
* Add openStorage/closeStorage method.
* Add signal to show whether the storage is available.
Use this functionality in the account manager.
* Add an dataReset signal to the accountmanager to efficiently make a disappearing storage visible in the GUI.
Update accountmodel (in addons/kcm_accountmanager) to evaluate the new dataReset signal.
Ingo's patch to make cached imap local subscription work for top-level folders.
"while checking whether GMail can be used as lightweight groupware server. I noticed that local subscription only works for non-top-level folders, i.e. all top-level folders were shown unconditionally and KMail started to sync my kde-commits folder (very bad idea!).
The reason for this problem is that setHonorLocalSubscription( true ) is only called for the ListJobs of subfolders, but not when listing the top-level folders in the namespaces."
Add XSL script to convert a KConfigXT file into a D-Bus interface description. This can be used to make application settings available (and changeable) over D-Bus.
It's mostly a proof of concept for now to see if it helps us with configuring Akonadi resource agents with external applications.
o Use of Qt style sheets to define appearance of month view cells
o Month have now alternating colors (computed automatically from the colors defined in the configuration). This makes it easier to see what's going on while scrolling.
o The month view is now scrollable. Four buttons are provided to go back and forward one week or one month. The mouse wheel works too. Going back and forward one month using PgUp and PgDown works too.
o Added an option in the configuration to turn on/off the display of icons in the month view (can save some space, if the icon is not so important).
o Some optimizations, mainly related to scrolling the month view.
- removed the hash mDateToCell. It is about 3 times faster to compute the index in the mCells array using the start date and the date we want to get cell from. getCell() does this now.
o ToDo's with only a due date (but no due-time) were not displayed (because KDateTime is invalid in such a case, altough KDateTime::date() returns a valid date). This is fixed now.
o When clicking on the background of a month view cell, the cell was not selected. This is fixed now.
Office
Implement undo/redo of add/remove text range.
Add a command for font style changes. There is still something wrong with updating the config widgets after undo/redo though.
Multimedia
Networking Tools
New feature for KGet: Webinterface.
The webinterface lets you control your downloads over network and KGet.
Based on QTcpServer. Browser part based on Ajax and JSON (with JavaScript framework MooTools).
This is just initial work; at the moment you are able to list your current downloads and add new ones.
Add support to start, stop and remove transfers from webinterface.
User Interface
Utilities
- implemented display of number of downloaded files and number of currently downloaded files for gui installer
Patch from Matej Laitl
* kmilo generic plugin is now configurable (no gui yet, one have to use kwriteconfig) - one can set which kmix channels to mute and set volume on (separately - needed for Intel HDA soundcards) and one can now fine-tune "slow" and "fast" volume steps (bugs 149183, 92730)
* when channels are not configured, query kmix for master channel
* some cleanups (removal of dupe code) and new volume computation algo changed
a bit (see comments is patch)
* unregister global shortcuts in destructor (bug 75169)
* support for controlling an extra channel, for people with surround sound
* README extended to contain relevant information
Games
Implemented pause, as suggested by Albert.
Introduce support for themeable border around the game field.
Idea belongs to (guess who) Eugene. He already adjusted current default theme to include border for me to play with while implementing this feature. Not sure if it's the final one :)
Ah, and older themes still will work - KLines will figure out whether theme has a border element and act accordingly.
Waiting for new themes to come up! ;)
Lay foundations for KGamePopupItem: remove Greeter, block any input to Game after finishing.
There are also some smaller items:
* remove Debug headers
* fix time measurement in Game
* fix visibility of selection markers when resuming the Game after a pause
* fix behavior of selection markers in mouse events* make "Quit" action functional
Optimization
KDE Base
* set the palette on theme changes only
* don't grab the data until actually shown
* show the right size and position when we are showing the tip
* allow the tooltip to figure out it's size with the help of the widget (it knows when to do this, the widget only knows how)
* don't show the tip on every item's mouse over, respect the small timeout
* only create a ToolTipData struct for those items that actually use it (memory savings as well as makes the check for showing the tip a lot simpler)
Multimedia
replace cairo_push_group by own backing store, improves large area update dramatically (though doesn't help with tearing effect, which I was trying to attack)
Other
Development Tools
* Regenerated KDE classes from the 4.0 headers
* Added kimono runtime
* Only added classes from core, gui and sonnet. KIO classes won't compile at the moment due to a bug in gmcs. As the other modules like DOM and KParts have dependencies on KIO they can't be included, too.
Maybe the gmcs crash can somehow be avoided.
* Added Kimono example app. Install Qyoto & Kimono and compile it with
gmcs -r:qt-dotnet,kde-dotnet test.cs
* When looking up a type by it's name in the Qyoto runtime, scan through all referenced and used assemblies.
* Don't try to call virtual methods and don't do anything in qyoto_event_notify if the application has already terminated. Fixes some segfaults on application quit.
* Install all qyoto headers.
* Use partial classes all over the place and nested classes instead of namespaces when generating the C# sources.
Add a start of a design document
Graphics
continue with javaScript documentation
KDE Base
Allow more violations of HTML 4 because these violations are required for the Acid 3 test.
Sets on Applet::constraintsUpdated() the maximum content width for horizontal panels and the maximum content height for vertical panels as IconSize(KIconLoader::Panel) this makes vertical larger panels actually usable.
Some notes:
- it works only for applets that aren't forced to square
- in horizontal panels only for applets that don't have expandingDirections()=Qt::Horizontal
- in vertical panels only for applets that don't have expandingDirections()=Qt::Vertical
On other news the kickoff applets are modified to use this new feature
Make Plasma's pager applet use kcolorscheme and the font from the taskbar. Also make Plasma's colorscheme use colors from the Oxygen palette.
With this patch, the pager should be nicely themable.
Review: <a href="http://matt.rogers.name/r/51">http://matt.rogers.name/r/51</a>
This code is _very_ old (it's a leftover from the first KDEMM prototype for KDE3) and I can't find a reason why it's still needed.
To the contrary I think it made VideoPlayer behave different than described in the docs. (I.e. it would start playing even if you called only load())
Injects the containment's context menu into the widget's. This allows, e.g. "Configure Panel" to show up in the context menu.
i think mice should die. what can i say, it's the cat in me.
* add ContentAtOrigin for panel / dialogs; masively broken atm, will work on that next
* it's not an Svg::ImageSet
* don't hold on to so many value that are only ever used during
* various formatting issues
bottom line: it now works for the applet case and works nicely. have tested in plasma as well. next: panels and dialogs htne into libplasma and porting the code over to it
Some comics are jpeg (the earliest ones, the Choice series, and #288), so extract the full filename. This hopes that xkcd won't ever change to jpeg or tiff.
tired of the "expect crashes" output all the time, i just fixed it properly by deleting the existing layout. since the layout makes itself the parent of the child layout and already deletes it in the dtor, this only makes sense. hello greater safety and goodbye scary console output ;)
use SvgPanel. massive code reduction and centralization of this code == goodness.
Disable animation if there is only one window.
This patch adds two items to the dataengine: "Next identifier suffix" and "Previous identifier suffix" that says where to search the previous and next comics (if any) so now it's not tied to a date and to the concept of having one update a day.
and this fixes the xkcd comic (bug 153872) that uses integer identifiers instead of dates for the comic so now the logic to where search the next/previous is delegated to the comicprovider, and if there is no suffix the dataengine simply loads the today's comic.
the cache still works, but is disabled for today's comic, because it can become stale if it was actually an old comic and a new one is published today, and of course today it won't have a "Next identifier suffix" but tomorrow will.
Use fade effect for title widget in all paged dialogs.
Probably we could also use it for the whole page, but I'm not sure if there would be any performance problems for very big pages (e.g Konqueror config dialog) on slow systems.
Anyway, it would just need two more lines.
automatic rate limiting of runners: mark ill performing runners as slow, but let speed runners marked as slow back into the main thread pool.
Change the tasks applet to use flowlayout. I think this provides a much cleaner panel.
KDE-PIM
Thomas McGuire took over maintainership of KMail.
Rename "Create Task" to "Create To-do".
In kdepim we use "to-do'.
I see other "Task" strings in KMail, mostly referring to groupware folder types. Not sure if I'm allowed to change those.
But I'd like to if permitted.
Remove per-account identities for pop, maildir and local accounts.
It made no sense at all, as a maildir folder can not be associated with an account (and kmfolder*imap is the only subclass of FolderStorage which actually reimplements account()).
Moving Akonadi->KResource bridges to kdepim
Office
Tag KOffice 1.9.95.2
Multimedia
For now, as we are using a hard coded opml podcast url, use the noadult version as the adult podcasts feature very prominently at the top of the podcast list otherwise.
The plan is to make this service configurable so people can add whatever directory they wish, so this is just what we considder a more sensible default for now...
make the settings dialog less tall by relayouting the general settings.
It will not fit on an eee PC just yet, but this should make it usable on an 1280x800 screen
Networking Tools
Create a branch to integrate the msnp2p lib done by Gregg Edghill for KDE3 in msn plugin for KDE 4.0 and KDE 4.1.
I guanrantee nothing but I'm really tired of not getting avatars, file, emoticons using Kopete 0.50.50+
New class WirelessNetwork which groups multiple APs with the same settings together
- Switch to NodeLayout in plasma applet
- Show some more stuff on applet
User Interface
Disable bevels on holes, as discussed on #oxygen. This looks "sharper", but may be a bit much on dark schemes; for now I'm leaning toward making it an option, hence adding a 'return' to just skip the code rather than actually removing code.
Utilities
Move the limitation of the key id length out of the main model
This is just a display thing so it belongs into the proxy models. As a benefit the complete key id is now displayed as tooltip in the keysmanager.
Games
New border stolen from Plasma :) Looks cool :P
Todo list for KDiamond; includes port to QGV and removal of greeter.
Small theme redesign. Both crystal, and default themes received small changes. Please comment.
most mod3 games are winnable - if you can tell me if game number 33 is winnable, I'll be glad to hear
Clean up a bit the drawing code, but it's impossible to fix bug 157531...
Other
Less code, less ifdefs, should compile on Solaris.
I knocked out Win 9x support on the way since it simplified things, and, well, I don't care about supporting Windows releases that have been outdated for 7 years.