Issue 151
22nd February 2009 by Danny AllenThis Week...
The good news is that last week has seen an amazing amount of work on loading and saving. Thorsten Zachmann has moved a mountain to finally make loading and saving shapes work in KWord. He also gave me the golden tip that finished loading and saving of nearly all shapes in Krita, and then Sven Langkamp finished up with a fix for the last remaining shape that didn't load in Krita, the Chart shape. That done, Tomas Mecir started working on KSpread's shape loading and saving, with lots of results.
The patience-trying bit is a direct consquence of this work: we decided to postpone the next beta release for a week, so we could have a Beta 7 with all the saving-and-loading goodness. And, hopefully, this will be the last beta. Next month, we're going to look at our list of release-blocking issues, and decide whether to call that month's release a Release Candidate, or Beta 8.
We're also happy to welcome a new hacker to KOffice: Dmitry Kazakov. He is working on the color curves filter in Krita, and on the curve widget itself. This widget was originally cloned from Digikam, but got morphed to fit better with Krita. Dmitry has already submitted about 70kb of patches.
And that brings me to the final bit of news I wanted to share with you all: KOffice has started using reviewboard.kde.org. Apart from some glitches with the web application, some that make it not work with KHTML from KDE 3.5 (though it works perfectly well with KHTML from KDE 4.2), and the problem that the diffs are too wide for my 1024x768 screen, we all love the application and we had half a dozen review requests dealt within 24 hours of opening the group. It's a truly wonderful tool!
So, there you have it: we're busy like nobody's business and making good progress towards that elysium of a 2.0 release that will finally be our fixed point from which we confidently expect to be able to move the earth.
- get/add/edit/delete;
- dialog for user account;
- store user password in KWallet;
- fields: name, email, telephone, job title, organization, address, notes, photo.
You can grab it in playground (http://websvn.kde.org/trunk/playground/pim/googledata/) and will need libgcal (git://repo.or.cz/libgcal.git) installed to compile it.
There are some features missing:
- calendar
- more contact fields (i.e. multiple addresses, telephones, etc)
- and some other TODOS in the source code
Any comments, please feel free to contact me (cavalcantii-at-gmail-dot-com) or on IRC (Savago).
Statistics
Commits | 3445 by 289 developers, 9110 lines modified, 1871 new files |
Open Bugs | 17186 |
Open Wishes | 15064 |
Bugs Opened | 752 in the last 7 days |
Bugs Closed | 639 in the last 7 days |
Commit Summary
Module | Commits |
/trunk/l10n-kde4 |
730
|
/trunk/KDE |
729
|
/trunk/playground |
540
|
/trunk/extragear |
346
|
/branches/stable |
211
|
/branches/KDE |
162
|
/branches/work |
137
|
/branches/extragear |
129
|
/trunk/koffice |
104
|
/branches/kdepim |
79
|
Lines | Developer | Commits |
188
|
Thomas McGuire |
162
|
437
|
Artur Duque de Souza |
142
|
529
|
Laurent Montel |
113
|
185
|
Gilles Caulier |
82
|
269
|
Allen Winter |
79
|
154
|
Andi Clemens |
75
|
180
|
David Faure |
69
|
59
|
Kevin Patrick Scannell |
59
|
50
|
Chusslove Illich |
48
|
118
|
Pino Toscano |
48
|
Internationalization (i18n) Status
Language | Percentage Complete |
Ukrainian (uk) |
100%
|
Portuguese (pt) |
100%
|
Swedish (sv) |
99%
|
Low Saxon (nds) |
98%
|
Galician (gl) |
96%
|
Greek (el) |
94%
|
Estonian (et) |
93%
|
Brazilian Portuguese (pt_BR) |
93%
|
Dutch (nl) |
92%
|
French (fr) |
91%
|
Bug Killers and Buzz
Person | Bugs Closed |
Darío Andrés |
160
|
Peter Penz |
48
|
Beat Wolf |
46
|
Maks Orlovich |
35
|
David Faure |
27
|
Pino Toscano |
27
|
Milian Wolff |
19
|
Gilles Caulier |
14
|
Sergio Luis Martins |
14
|
Leonardo Finetti |
14
|
Program | Buzz |
Amarok |
4705
|
Kate |
3932
|
KMail |
2934
|
K3B |
2882
|
Ark |
2624
|
Codeine |
2356
|
Kopete |
2348
|
KTorrent |
2206
|
KDevelop |
1534
|
Kontact |
1436
|
Person | Buzz |
Sebastian Kügler |
427
|
Stephan Kulow |
385
|
Matthias Kretz |
327
|
Adriaan de Groot |
315
|
Allen Winter |
314
|
Riccardo Iaconelli |
190
|
Aaron J. Seigo |
182
|
Boudewijn Rempt |
170
|
Thomas Zander |
156
|
Jonathan Riddell |
153
|
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 125 selections this week
Bug Fixes
Development Tools
Actually give a QWidget* wehn asked for one and not cast a QObject* to a QWidget*, that does not work...
Most likely fixed as well due to removing the "delete this" which is pure evil
A missing KGlobal::deref() seems to have caused kompare to stay around without visible windows.
Same for this one, due to the missing deref kompare never fully quit and the session was saved and restored on next login.
Many many cleanups and many dialog created on the heap are not created on the stack whereever possible.
Updated most headers with the updated copyright year and a new email address.
Next time i'll try to split it up in seperate commits.
Educational
- Fix for junior job by bholst:
Category MEDIUM:: Currently Marble only tries to fetch tiles once.
If the server doesn't reply Marble won't retry until Marble gets restarted.
Find a solution that will reschedule the tile up to 3x in case of failure.
Between the attempts Marble should wait 1 min. before the job gets rescheduled.
Relevant classes for this job are marble/src/lib/HttpDownloadManager.{cpp;h} and marble/src/lib/HttpFetchFile.{cpp;h}
KDE Base
Remove some paranoia about file widgets being hidden:
1. Legitimate websites like to do it
2. The user can see everything being submitted in the file list
3. There were ways around it anyway.
Fixes the rapidshare.com uploader, and perhaps others.
KDE-PIM
This fixes a crash when an event on the pc ends at midnight. In this case a record on the handheld is created which also ends at 00:00 but on the same date as it starts in stead of the next day.
I don't close the bug yet because the behavior of pc events running from day 1 10:00pm to day 2 9:00 am is not fixed by this commit. (Although I wonder if we will be able to actually fix this.)
Multimedia
Beginnings of SmartPointerList class:
A QList for storing pointers to QObjects, that automatically removes the pointers when objects are deleted.
The evil scheme behind this idea is to fix many of our crashes that result from storing (caching) QLists of pointers to QActions in various places in Amarok. The problem is that sometimes these QActions get deleted, and we end up with dangling pointers in these lists. That's causing crashes like in BR 184630, when we dereference these dangling pointers.
Now my class does have a few drawbacks still, which may be fixable with more tweaking, or maybe not:
* Does not work with Qt's foreach(), as it subclasses QObject. You need to iterate over the list in traditional ways.
* Casting of pointers is sometimes needed
For testing, I did start to port some of our QList<QAction*> to SmartPointerList, but not all of them.
You be the judge if this class is a good idea and a viable path.
I'm requesting code review and discussion.
Features
Development Tools
Change imports to use unzipped version of java source.
KDevelop now happily parses many java headers, in a very short amount of time (java.util.* and java.net.* ~10s on my pc).
Still need to change the configuration module to reflect that the java source must be unzipped (for now).
Also fix a crash when parsing java files where methods have no body, and reduce verbosity ++
-implement framework for having project-specific scripts. lokalize requires kdelibs trunk from now on
-make restoring from autosave more natural: changed entries are now actually shown as such.
-add tag insertion on via mouse click
-fix few mistakes in xliff editing
-add icons for config pages, country flags
-move some project options to advanced page
-introduce 'kinds' of projects
-add Editor scripting object
-support xliff2odf w/o need of saving the files first.
-also xliff2odf now expects <file origin=""> to be filled -- but this requires the translate-toolkit patch be applied: <a href="http://bugs.locamotion.org/show_bug.cgi?id=851">http://bugs.locamotion.org/show_bug.cgi?id=851</a>
-continue writing new project wizard (in python).
added option "export-formats", which prints out a list of all supported export formats to stderr
The list gives the answer for bug 180031 - pdf isn't a supported export format
Integrate documentation system on the duchain navigation tooltip.
Rudimentary printing support implemented, currently the only thing printed is what is visible in kompare.
No support yet for multiple pages and for printing info that is off-screen.
Since I can't predict how good things look off-screen (as in how far the connecting hunks (multiple pages apart even if there was a huge insert in between) this seems illogical to implement anyway.
Graphics
seeking during video playback is now working.
zooming in the video viewer is now working.
introduce a SearchLineWidget, which is a SearchLineEdit + AnimatedWidget
this small widget is useful for providing a search line edit with an animated widget next to it, with the latter shown while the search is in progress currently, the animation is slightly delayed, so we avoid very quick results (ie the next occurrence is on the same page) to show the animation for a very short time
KDE Base
Added new effect: Snap Helper.
This effect is useful for those perfectionist people that want to move a window to the exact center of the screen but can never get close enough to it for the automatic snapping to trigger.
OpenGL-only for now, gave up on XRender, if anyone can get it to work go for it.
Promised theme for bubblemon.
For some reason bubbles won't show on my build :(
Let me know how you like it
Improved window movement around struts.
Windows can be moved anywhere where the titlebar is still clickable even if it is outside the normal work area.
When struts are added or removed only move the windows that cover the same area, leave all others untouched.
If a strut is removed on a xinerama screen that is not on the edge of the full desktop area prevent the windows from being moved offscreen.
Prevent struts/panels from interfering with the movement of windows on other xinerama screens.
* Use Nepomuk for getting the meta data instead of KFileMetaInfo.
* Use a QScrollArea widget to embedd the meta data, as Nepomuk provides so much meta information that it might not fit into the panel.
Open issues:
* Add the possibility to configure which kind of meta information should be shown.
* Check whether the receiving of the meta data for one file also might block the UI like when using KFileMetaInfo in combination with strigi.
Add new "sheet" effect based on fade.
This effect animates appearing and disappearing of modal dialogs.
Inspired by a Compiz Fusion effect (<a href="http://smspillaz.wordpress.com/2008/12/23/they-say-when-you-start-something/">http://smspillaz.wordpress.com/2008/12/23/they-say-when-you-start-something/</a>) and seems to be a Mac OS X animation as well.
Add simple notification to kwalletd: If kwalletd requests a password but the password dialog isn't visible (minimized, other desktop), show a notification with a button to raise the password dialog (or rather its parent window) to front.
Improved body decoding, support for HTML emails
Part of this is taken from Tom Albers Mailody, adapted to my limited needs.
Display of HTML emails is rather wonky, since some of these abortions assume a white background.
Something for Air to look out.
This needs to be configurable.
Adding windows overlapping edges to cube slide animation.
Overlapping windows from target desktop are faded in and windows from source desktop are faded out.
This looks really good for slow animation speed but for normal speed it's kind of flashy.
So perhaps I'll add an option to turn it off...
-extend kross::plugin to be multiinstantiable even more.
-add a 'searchingpath' feature to kross::action.
this way we can use relative urls in scripts.rc scripts will be looked in system, home, or custom-specified (when using new c'tor) location. i needed this as Lokalize allows projects to be relocatable and be shared among several people
-implement scripts.rc saving in plugin d'tor (only if file already existed).
this is the first step in implementing GUI-based scripts.rc editing.
-optimize the model a bit.
use font size from konqueror's settings
Allow to enable indexing of specific hidden folders. In contrast to other folders hidden folders are disabled by default.
I am not sure if this is a perfect solution but it fits the most common use-case: only enabling the indexing of a single hidden folder.
Since this introduces a new string it sadly cannot be backported to KDE 4.2.
implement the first part of the recent files functionality.
now we read and write them on disk
- Add support for querying the available APIs of each type.
This seems to work ok.
The next step is to rewrite this whole class to use the metadata member as its main store so we can remove all the hacks in here that will make the i18n team cry.
Integrate previewer in the main window
Now previewer got integrated in main window and we just need to add and remove applets from it in order to have a really useful previewer.
Support for generic-icon fallbacks when loading mimetype icons.
For instance "application-x-fluid" isn't available but "x-office-document" is used instead as specified in shared-mime-info xml (see /usr/share/mime/generic-icons for a full list), while when loading "image-whatever" it falls back to "image-x-generic" as specified in the shared-mime-info spec (since this one has no entry in the generic-icons file).
Add "Windows go below" panel visibility mode.
Identical in all ways to the default mode except doesn't set a strut.
Useful if the user wants the panel to always be visible but not take up window maximization space.
Add support to the NowPlaying data engine for the recent addition of JuK artwork over DBus.
Can now drag and drop keyboard layouts between the two views.
Also, in the process elminated the bug of being able to add the same layout twice.
Added EffectFrame, a helper class that creates, manages and caches a Plasma frame object.
There are two ways to use this class: The first is in "static" mode which gives the frame a set geometry and will not change, the second is an automatic mode that creates the smallest possible frame around the specified contents.
Contents can either be normal text and/or a QPixmap, useful for displaying the caption and icon of the currently highlighed window.
Known:
- Does not detect Plasma theme changes, known to be in the Plasma library.
- Slight graphical glitches, known to be in Qt 4.5.0 RC1.
Untested:
- What happens when there is no Plasma theme installed.
Implement QStyle#standardIconImplementation in KStyle to return KDE icons.
At the moment I have only added dialog button icons; others can be added later easily.
Also enable icons on buttons (respecting settings).
This way at least the print dialog looks much more KDE-ish.
Multiple collections support
It's still lacking in some place (saving config, setting all fields correctly, filtering new emails into the correct extender, ...), but the basics for having more than one extender, and thus showing more than one collections at the same time are there.
Now it needs a lot of polishing...
KDE-PIM
Add a "Maintenance" tab to the folder properties dialogue.
This gives some information about the folder, its file and index locations and sizes, and the content and messages.
For mbox folders, the compaction state and a button to do it is here (still also in the folder context menu).
A folder can be compacted (at the user's own risk) even if it was previously marked "unsafe".
Other dangerous operations ("Rebuild Index" and "Rebuild IMAP Cache") have been moved from the context/menubar menus to here.
Moved the "mark_all_as_read" action back to the top of the folder popup menu, as suggested by aseigo.
Added some hooks (KMFolderDialog::setPage() and KMMainWidget::PropsPage enum) to embed the other folder properties into this dialogue, if there can ever be agreement on the usability of this.
So it's not a fix for bug 115611, but it's a start...
Implementing missing contact fields: telephone, address, company, etc.
Office
Shape saving in KSpread now works.
... sort of.
Some shapes do not save themselves correctly, and I do not know why.
The text shape saves well, as do the simple ones (apart from having coordinates shifted, but that'll be an easy change).
The picture shape doesn't save the actual picture.
But at least the basics are all done.
Multimedia
Add a nice little animated loading page to InfoParserBase.cpp.
This can be shown at any time that a subclass is loading info from a remote source.
Currently used by the Magnatune service when loading the frontpage or artist info and the OPML service uses it when loading podcast info.
Networking Tools
Improve tab behavior:
* Close tabs with mouse middle-click (option)
* Option to disable close buttons on tabs
* Option to set position of tab bar (top, bottom, left, right)
* Context menu on tabs (Close and bookmark action)
* Option options dialog on tab double click for current connection
User Interface
Improve theme detection in preview
* tries subdirectories in theme directory
* handles version 1 theme files
* handles wrong theme directory names (Deco & Buttons instead of deco & buttons)
These improvements have not yet been made to the client, but selecting in the new theme selector does not work anyway :)
new icons for koffice in 16x16 32x32 of office-chart-bar-stacked
more tomorrow going to bed now....
Thanks to the recent improvements in kdelibs' icon loader, now the x-generic icons for mimetypes work.
This means we can finally get rid of the copies of image-x-generic.png and video-x-generic.png.
Specialized icons for image and video mimetypes are left.
Utilities
Added support for file existing output from the cli process.
Games
Add kdesnake command (redirects to ktron --snake)
The ball moves!!! (Actually, it moved all the time, but the graphics view was not updated correctly.)
Optimization
Development Tools
Completely workover the m_chainsMutex locking, moving the locks around so all the expensive I/O operations happen without the central mutex locked.
This significantly reduces the amount of UI lockups caused by background-parsing or missing-include completion.
KDE Base
major refactoring of things:
* consistent naming of member variables
* rely on QGraphicsItem to do the caching for us and make paintInterface a naive painter
* make the SlideShow tell the outside world when there is a new image to show
* let the SlideShow handle potd dataengine updates
* don't hold onto the source image in memory for longer than needed
so now the SlideShow handles all the image loading and the Applet just paints whenever it's told to.
the performance increase is impressive and instantly recognizable: try rotating or dragging an image frame around the desktop.
Speed up panel resize by eliminating extra calls to PanelView::updateStruts().
Added a one shot timer.
When resizing stops long enough for it to timeout, then updateStruts() is called.
Speed up deletion of deep directories by speeding up the slow part of it: the recursive listing
- no need to stat() before opendir(), we can use the error codes from opendir to handle "it's a file" and "it doesn't exist"
- no need to stat() every file in this particular case of recursive-listing-for-deletion, we just need to know if file/dir/symlink, which opendir tells us.
The testcase from bug 174144 (5000 subdirs) went from 20+ seconds to 13 seconds here.
Better but not perfect, since this testcase should ideally take about 3 seconds.
Implement recursive deletion inside kio_file.
Brings down the 13-seconds testcase to 2 seconds, although it kills progress information completely for the case of "deleting one directory with stuff in it".
Rewrite the implementation of ArchiveReader
The new implementation is more effient in listing contents of directories.
Now single directory entries can be returned without the need for reading the entire archive of which the directory is a part.
This is very useful for GUI applications which want to interactively list the contents of archives.
The implementation is rather tricky and has spent quite a long time in a local git repository.
It is now good enough for addition to the Strigi trunk.
Other
Development Tools
Mass backport of Kompare bugfixes for KDE 4.2.1 (should not touch any translatable strings): backport revisions 913308, 913309, 922431 (Kompare only), 924527, 924539, 924540, 924880, 924959, 924960, 925266, 926028, 926131, 926143, 926225, 928082 (minus i18n string changes), 928141, 928146 from trunk.
Bump Kompare version from 3.5.2 to 3.5.3 (trunk is 4.0.0).
Tested on Fedora 9 i386, KDE 4.2.0.
Note: skipped revision 926198 because it introduces a string and #124121 is more a user error than a bug anyway.
Educational
add a first readme text on geodata internals (thx to Deutsche Bahn for working time)
Graphics
now that we have a small "progress" animation next to the search line edit in the find bar, there's no need for the "searching for ..." dialog
feedback about this new "notification" is much welcome
branching for experimentation with recording presentations
KDE Base
Implement kdedglobalaccel as a standalone demon.
The decision was made because beeing a kded module made it subject to the problems of all other kded modules.
If some module froze kded it could happen that the X frooze completely for some seconds or it seems like the alt-key is stuck.
Rename everything kdedglobal* to kglobal* for convenience.
This commit requires a recompile of at least kdelibs too. You will loose global shortcut on your next session login or kded/application restart.
If you want kcmshell4 keys to work again please recompile kdebase-workspace too.
This cmake code is supposed to delete the two files remaining from kglobalaccel being a kded moudle from your installation area.
If you encounter problems after recompilation please check if they were successfully removed.
Reduce the length of the "do you want to store this password?" dialog by hiding all but the important information in an expandable details part.
Inherit our emailwidget from Plasma::Frame
This way we get our email grouped visually in LionMail, making it less of a visual mess.
Increased the minimum size for the shortcuts dialog (used by all applications) to 640x480 from 500x400.
That must be enough for this dialog.
dfaure fixed a bug preventing the dialog from remembering it's size.
Now if you resize it once it will always reopen with that size.
add mock
Sigh, nobody ran the unit tests since plasma was renamed to plasma-desktop.
Not even me...
Rotate windows on all desktops by default.
Keeping them in place brakes the stacking order during animation.
Put "Import configuration", "export configuration" and "cleanup" into one menu on the same row as the component combo box.
I'm open for wording suggestions for
- the text on this menu button (currently "File")
- the text in the confirmation dialog after "Revise Component".
The idea behind "Revise Component" is to remove stale global shortcuts registrations because
a) The complete application was deinstalled.
b) The application was renamed or otherwise lost track of some of it's registrations. Happened to plasma and amarok.
So we just remove all registrations for currently not active global shortcuts. If nothing is left the complete component / application is removed too.
This does no harm because an application on startup reregisters everything we just deleted.
Now could someone please reformat this description into something suitable for the dialog.
I'm a much better at programming than at wording in this cases.
And that says more about my wording skills than my programming skills :-)
Activate weather(forecast) applet.
Green flag from spstarr
KDE-PIM
Admit defeat for today, cleanly fixing this bug requires some larger refactoring in the server which showed even more issues that need to be addressed first.
Add File->Save Icon Usage Log, which we'll ship for the next two releases or so, and then bury again.
Helps to determine which of the myriad of KDE icons we're actually using.
Office
Inital import of Tellico
Corresponds to revision 3429 of trunk from
<a href="https://forgesvn1.novell.com/svn/tellico/trunk">https://forgesvn1.novell.com/svn/tellico/trunk</a>
== Forms Refactoring ==
First phase of Kexi Forms Module refactoring.
The main reason is to simplify the codebase and prepare it to future enchancements like subforms, reports integration, and tabbed main window design.
Detailed reasons for refactoring:
--The process of instantiating a form (the Form class) is very complicated now what makes it very hard to properly implement subforms
--The code full of interdependencies and thus is fragile when adding new functionality or fixing bugs
--The FormManager class centralizes a number of operations that shall belong to Form itself
--The naming of methods and classes can be improved, e.g. Form -> FormController
--The ObjectTree* classes introduce redundancy as we already have QWidget hierarchy, and extensible property system; this complicates the code
See Also:
<a href="http://wiki.koffice.org/index.php?title=Kexi/Porting#Forms_Refactoring">http://wiki.koffice.org/index.php?title=Kexi/Porting#Forms_Refactoring</a>
Multimedia
Port of mountpointmanager/massstoragedevice.
NFS and smb drives are not dynamic collection enabled at this point and Delete the Medium class, it's no longer needed.
Also various cleanups in mountpoint manager.
Collections should no longer disappear when disconnecting an external harddrive.
Work is still necessary to make files in the collectionbrowser only be shown when the medium is connected, but this is a start.
This may require a full "rescan collection" to make everything work hunky dorily.
fastscale is not needed anymore.
Qt4 has nice and fast scaling included
User Interface
Dont waste so much space around toolbars.
Thanks to Roland Leißa for the patch.