Issue 117
29th June 2008 by Danny AllenThis Week...
The first task was to get things to load - for this I have automated the OpenDocument Format Alliance test suite. We have around 62 tests up and running - these involve character, paragraph, lists, headers. Support for tables has been left out for KWord 2.0 since tables are a complex beast. Currently, these tests only check the internal data structure that result in loading and not the visuals of the loaded document. Though, comparing the visuals is in theory very possible, it just requires a stable KWord.
We have now made the 62 loading tests also test the saving process. When I first started, saving of ODF was in a pretty poor state. I am happy to say ODF documents with simple paragraphs and text save flawlessly now!
One of the strategies we followed with writing tests is to test a feature completely (manually) before automating it. If need be, we would add features and fix bugs on the way. Though the task of writing automated tests seems boring, what it actually involves is a thorough understanding of the code and the specification. We also do fixes to the UI as needed.
On a technical note, the design of ODF in KWord is simply super. The big problem is since there were no tests at all, it was impossible to tell what you are breaking. Indeed, when I look into the first few commits I made, it was just total crap :). I believe the tests we have now will go a long way in helping new comers (like me).
What next? In the immediate future, I am now working on lists+headers loading and saving. Lists and headers in ODF are similar but complex beasts. We are hoping to make it before KOffice 2.0 (middle of September).
Problems? Lots. Though ODF support is now in an OK state, we have the bigger task of beefing up KWord itself. Many fundamental features need to be completed. Thomas Zander's style manager is one of the basic missing components that we need immediately. The cursor in KWord doesn't even blink! So, there is *lots* of stuff to work on, but too few hands. KWord itself is worked on only by a couple of major contributors and almost every part of KWord requires some love and attention. So, if you are interested, just drop by irc.freenode.net, #koffice!
For those that do not already know, Basket is a rather advanced note taking program. It comes with the slogan "Taking care of your ideas", which says a lot about its philosophy and the intended use for this program. As far as I am concerned, it is the best note taking program I have found on Linux (and in the future, perhaps all platforms? :)). Either way, the author of the program, Sébastien Laoût, had other matters to attend to, and could not find the time to continue this project; it was too sad to see such a project die, so I stepped in, and started porting the thing to KDE 4. Since then, I have taken up porting and maintaining Basket. Sébastien still pops by now and again to share his insights and experiences, though.
Right now, we are at a point where we have finally (after a fair amount of pain, but a fair amount of help :)) gotten a compiled version up and running under KDE 4. I have been informed by Peter Zhou (who is working on Amarok) that it also compiles and runs on OS X straight up. I think Windows will need a bit of tweaking though (I do know a few instances where we still rely on unistd.h...) but here's a few screenshots of the current master branch:
Note: in the second image above, this is a screenshot of Plasmoids in the Basket window, not native Plasmoids! |
My #1 priority is to have a minimal regression, straight port into KDE 4, with all of the basic functionality. I think Basket is almost at a point where I can finally start to actually use it to start using it to store and edit all of my notes (although I'd advise against any non-developers to do the same; there are still *many* showstopping bugs, but I will squash the main ones as soon as I can; I also do not want to be liable for the loss of your entire album of baby pictures you only keep one copy of in Basket :)).
Reading over our mailing lists archives, wiki, and usability surveys, it seems that there was quite a bit of ideas that were being planned for the future, and there was even a complete rewrite that had been worked on, but that eventually fizzled out, and with the lack of momentum, it had come to a standstill. What I had in mind was to at least get Basket running in Qt/KDE 4 before completely breaking it apart and refactoring it. Some of the code is a mess, but ultimately, I think that we will be taking much less of a risk by porting / refactoring rather than doing a complete rewrite. All the cool ideas that everyone has can be implemented parallel to this (such as QGraphicsView and Akonadi support, as well as Server/Client support). After this port, there is so much we can leverage and do thanks to the new KDE framework. It also makes it a lot easier to maintain as I am far more familiar with KDE/Qt 4 than I am with 3.
One day, I would like BasKet to be integrated with the KDE system; I think it will have to happen after the KDE guys switch to some type of distributed source control management tool, though. Right now, Basket is hosted in Git(Hub), and it is hard to go back to centralised version control the same way after you have been spoiled with the workflows they permit, especially for (but not limited to!) open source work.
Anyways, there is a fair amount more work to do, the potential for this program is endless. If anyone is interested in helping out, drop me a line on the development mailing lists, or just straight up clone the repository and start hacking (includes all branches, including the KDE 3 ones) and sending in the patches:
git clone git://github.com/kelvie/basket.git
While I would prefer that the discussion would be related to actual KDE development (and it's certainly disappointing to see most of the comments be about the "lateness" of the recent Digests), seeing the complaining camp battled by the defenders brought a strange smile to my face.
It's a fine line, but at least I know I have passionate readers, and that could never make me unhappy...
p.s. This doesn't excuse the comments, and I don't want this to be a regular outcome: the Digest will catch up in the near future. Seriously.
Statistics
Commits | 2807 by 249 developers, 8841 lines modified, 2048 new files |
Open Bugs | 16428 |
Open Wishes | 14212 |
Bugs Opened | 544 in the last 7 days |
Bugs Closed | 612 in the last 7 days |
Commit Summary
Module | Commits |
/trunk/KDE |
821
|
/trunk/l10n-kde4 |
752
|
/trunk/extragear |
336
|
/trunk/playground |
153
|
/branches/work |
151
|
/trunk/koffice |
131
|
/branches/stable |
90
|
/branches/extragear |
65
|
/trunk/www |
61
|
/trunk/kdesupport |
58
|
Lines | Developer | Commits |
1140
|
Marc Mutz |
229
|
113
|
Chusslove Illich |
106
|
164
|
David Faure |
103
|
170
|
Aaron J. Seigo |
78
|
138
|
Laurent Montel |
68
|
133
|
Gilles Caulier |
61
|
58
|
Karl Ove Hufthammer |
58
|
141
|
Pino Toscano |
56
|
39
|
Frank Osterfeld |
55
|
260
|
Jarosław Staniek |
49
|
Internationalization (i18n) Status
Language | Percentage Complete |
Ukrainian (uk) |
100%
|
Portuguese (pt) |
100%
|
Greek (el) |
99%
|
Swedish (sv) |
97%
|
Estonian (et) |
95%
|
Galician (gl) |
90%
|
Japanese (ja) |
90%
|
German (de) |
88%
|
French (fr) |
87%
|
Dutch (nl) |
87%
|
Bug Killers and Buzz
Person | Bugs Closed |
Andreas Pakulat |
88
|
Matt Rogers |
49
|
Thomas McGuire |
42
|
Christophe Giboudeaux |
31
|
Aaron J. Seigo |
29
|
A. Spehr |
25
|
Mark Kretschmann |
24
|
Dennis Nienhüser |
19
|
Pino Toscano |
18
|
Josh Berry |
16
|
Program | Buzz |
Amarok |
9815
|
K3B |
4875
|
KMail |
4840
|
Kopete |
3320
|
KDevelop |
2595
|
Plasma |
2489
|
Kaffeine |
2037
|
Kate |
2001
|
Solid |
1873
|
Kontact |
1790
|
Person | Buzz |
David Faure |
2110
|
Stephan Kulow |
1749
|
Aaron J. Seigo |
1390
|
Torsten Rahn |
1367
|
Jonathan Riddell |
1132
|
Laurent Montel |
1030
|
Stephan Binner |
782
|
Thiago Macieira |
668
|
Zack Rusin |
638
|
Adriaan de Groot |
631
|
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 129 selections this week
Bug Fixes
KDE Base
Using a queued connection fixes a problem when using kfilewidget and the url navigator is in editable mode:
- Open kwrite. Open a folder with lots of files, open a file that is at the left more or less.
- Now reopen the open/save dialog, if the url navigator is on edit mode, the view moves to the end, while if it is on breadcrumb mode, it works fine.
Also some other cosmetic changes.
- Fix detail after configure.
- Use plasma text color in cpu graph.
- Background svg removed, more consistent with other themes.- swap in/out in network stacked graph.
Fix crash when aborting download of a too big favicon.
<a href="http://planet-soc.com/favicon.ico">http://planet-soc.com/favicon.ico</a> is a strange file indeed, can't figure out its format :)
KDE-PIM
If the user has specified autostarting in their korgacrc file, then
we assume they have already specified if they want korgac autostarted;
probably by selecting "Start Reminder daemon at login" from the context menu.
Under this condition, if the user tries to quit we no longer nag about
autostarting.. we simply ask if they really want to quit and faithfully obey.
Sorry, fixing this bug does introduce a new string.
Multimedia
Fix layout of tag dialog; also made it less tall (think Eee!).
Other
- the human coverity still works best: do not segfault if only one parameter given
Features
Development Tools
Educational
Added large zoom steps to unfrozen branch.
The change in zoom due to the mouse wheel or "-" and "=" keys is now 2.0
instead of the previous 1.1. This reduces the number of key presses or
wheel clicks to change to to a given zoom by roughly a factor of eight.
The Shift and Control keys reduce the zoom step by factors of 2 and 4
respectively. Combined, they reduce it by a factor of 8 which is close
to (but not equal to) the original factor of 1.1.
Also increased MINZOOM from 200 to 250, which I think roughly compensates
for the change caused when we converted SkyMap::fov() to reporting the
diagonal of the screen instead of the minimum of the height and width.
The change in fov() was made to provide a radius for the SkyMesh::aperture()
call.
Can now adjust the magnitude limit using mouse wheel or "-" and "=" keys by
using the Alt key modifier. The Ctrl and Shift modifiers work in a similar
fashion to what they do with zooming.
The default mag step is 1.0.
The Shift modifier reduces the step to 0.5.
The Ctrl modifier reduces it to 0.2.
Combined, they reduce it to 0.1.
Also changed the factor in the maglim formula from 4.444 to 3.5 to match
the summer branch.
The memory usage slider now actually works.
+ Fixing type of Options::memUsage() to double
+ Changing default value of slider to 8
+ Making sure that settings apply correctly in slotApply()
+ Using Options::memUsage() in the maglim formula in StarComponent. I
cooked up the formula ad-hoc, but it seems to work pretty well. The
typical memory usage at small zoom levels with the slider at value
'2' is about 50K (total) and is about 90K with the slider at value
'10'. I found that 8 gives a good star density, to my satisfaction.
KDE Base
new 4.1 wallpappers
new 4.1 wallpappers
new 4.1 wallpappers
Implement support for the KDE-wide single-click behaviour on itemviews.
Now the activated() signal on itemviews is emitted according to the
single/double-click setting.
some more work on kio based network implementation
Show ok icon similar to device notifier when text copied to clipboard.
'Stay always on top' menu action
finally KIO based networking works basically :)
still disabled by
Implement support for auto-restarting unique-applications after a crash. Inspired by the non-working handler in kded and the working handler in plasma, but fixing segv handling in the restarted-application (thanks to mornfall and SadEagle for their input).
Also fixed handling of KDE_DEBUG=1 and --nocrashhandler: they both mean "no drkonqi please", even if we set up a crashhandler to handle "emergency save" and "autorestart" functionality.
I'll port plasmaapp.cpp and krunner to KCrash::AutoRestart on Monday.
Also allow to use the selection toggle when double click is used. This allows to select/deselect files without CTRL key.
KDE-PIM
Support for export in OPML v2 (not enabled yet)
- Support holiday entries in the new month view, and lay foundation for displaying recurring incidences correctly.
- Loads of simplifications and refactoring
- Several bug fixes
- Removed the "Highlight color" option. It's nowhere used.
And propably some other changes I currently don't think of. Sorry for the big change in one commit.
Allow to set signing and encryption policies. Now we have three different ways to represent the same concept :/
Allow to pass --openpgp or --cms (basically, just interesting for --sign, for which it is, unfortunately, currently ignored)
Support alignment in KJots. No reason not to I suppose.
Also, use icons only in the toolbar by default. All toolbar actions are standard anyway, so I think tooltips are enough.
Office
Now the map theme can be changed using the UI.
Add support for loading and saving footnotes/endnotes.
Currently, only raw text footnotes/endnotes are supported, no text formatting in the notes...
This must be fixed, but I didn't look at it right now.
(I sincerely apologize for the long delay since my last SVN activity, I was busy with the school ending soon and lot of other real life stuff.)
Full support for Kexi Web Forms on Windows
- use renmed kexi_shttpd
- make kwebforms NOGUI app
I draw lines! It is cool :) You can comment 795 line in stroke.cpp to see DDA line in action. Now there is Gupta-Sproul in action. That lines are little slow ...
Allow tools to have more than one option widget.
Basically you just reimplement createOptionWidgets() which return a
QMap of (title,widget)
you can still have the old createOptionWidget() if your tool only
have one widget.
Nothing visually should change with this commit
Export Images and Charts to HTML (CSS atm)
Multimedia
Add support for the Locker Load API to libmp3tunes and the c++ wrapper. This feature lets URLs be loaded directly to the locker.
Uploading preview tracks from Magnatune to Mp3tunes now works, as long as you are not logged in to magnatune as a member, in which case the sideloading chokes on the needed username/password. This
should be fixable on the Magnatune side, but this leads to a bit of a tricky question about how comfortable Magnatune is with this, so this is something I will have to clear. Also, at least if you
are a download member, it would make much more sense to upload the higher quality version that you can freely download, the only issue is that these are zipped and would need to be cached locally....
questions, question....
Multiple containments added to the CV.
Zooming enabled ( ctrl + wheel ).
There are still some issues in resizing and placement but will be fixed soon (I hope). It's also not possible to add applets to others containments yet.
now storing statistics in nepomuk. but song switching is slow with it (nepomuk needs about 0.7 seconds for it). Have to move it into an extra thread
scripting interface++. now we can add menus and use the KAction class in the script
Statusbar bindings for qtscript. Now all it needs is to do something useful :)
Networking Tools
* @iris : Jingle tasks created (only the first session initiation stanza is implemented)
* @iris : Jingle session class created. JingleSession get all needed informations and then create a Jingle Task to start the Jingle Session
* Added Jingle actions (one for Video, one for Audio) and create and start a Jingle session when clicked.
First slightly hackish implementation of storing contact data in akonadi.
Merge branch 'akonadi-contactconnector'
Expand dbus interface significantly (this isn't finished yet, more will follow)
User Interface
Beginning of cube rotating. Working for four desktops.
Utilities
Games
Other
add experimental code for sparse matrix:
- uses the common "Compressed Column Storage" scheme
- supports every unary and binary operators with xpr template
assuming binaryOp(0,0) == 0 and unaryOp(0) = 0 (otherwise a sparse
matrix doesnot make sense)
- this is the first commit, so of course, there are still several shorcommings !
Optimization
Development Tools
Major speedup in cmake project parsing - don't retrieve all files in a project (hereby called using an "elephant swat") in order to see if the file/folder is in the current folder (hereby called the "fly")
KCachegrind says this took 70% of the execution time...
KDE Base
Since they're all pretty simple (except the spill code..) merge in a bunch of performance improvements from the FrostByte branch,
for an about 15% speedup w/g++-4.3, and abour 10% or so with g++-4.2. The more aggressive
stuff on my TODO list will probably have to wait till FrostByte -42, though.
- Tweak inlining setup to work better with g++-4.3
- Tweak the generated VP dispatch/decode loop to have smaller & faster code, and to have
less unneeded specializations
- Avoid some can-fit checks when boxing things we know can't be smallint'd
- Streamline/simplify the function call code somewhat.
- Specialized < op for comparisons with numberic upper bound
- Do the string value -> string object conversion directly when legal
- Make the string [] accessor share substring data, avoding some allocations
- Remove a double-lookup in hashtable due to ReadOnly check in JSObject::put
- Do tearoffs deferred only
Implement sizeHintForColumn with a trivial function that just returns the current column width.
This is needed because QTreeView sometimes triggers automatic resizing of the columns in the background, without allowing that behavior to be configured. With a very long completion list and complex data() functions like in KDevelop, such an automatic resizing was extremely slow, and nearly felt like a crash.
This patch makes the icon being updated with the selection, so we have a more responsive open/save dialog (kfilewidget). It also uses a new way of handling the last entry of history:
1) If there is an item selected, the history combo contains the number of entry histories + 1 (the first one is the selected item).
2) If there is no item selected, the history combo only contains the history entries.
Now there is a tricky thing on my TODO. Set the icon when the result has been autocompleted.
Performance improvement when showing previews inside directories having several 1000 items: temporary block the expensive layouting inside QListView until a block of previews has been applied.
KDE-PIM
Speed up the folderselector to bare-able performance again by expanding all
folders in one go at the end of a reload, instead of triggering updates
after every folder that is added and by disabling sorting, the order
should be that of the main folder tree anyhow, and given the quick search,
the ability to sort adds nothing, it just slows things down on initial load.
Multimedia
now using threads for writing statistics. track switching is fast again
User Interface
exam is written - so back to business:
removal of GLRenderTarget. Cube is now painted directly without painting to textures and then mapping the textures on to a cube.New solution is much faster, does not require GL_EXT_FRAMEBUFFER_OBJECT and currently has some regressions (mapping of windows around the edges does not work any more, desktop on the left is painted the wrong way).
Games
little massage to make the first 10 games winnable in 30MB
Other
Development Tools
countries_rainbow.svgz countries_standard.svgz diffs.txt discussion discussions.txt files moreinfo selected_revisions selections selections_raw selections_sorted selections.txt statistics.txt tmp Added Phonon bindings for the version of Phonon which will be included in KDE 4.1.
Port to kdev4 context menu extension system
Port the system for providing a "debug in kdevelop" button on drkonqi to qdbus
(Committed from within kdevelop4, it's starting to get really easy to use :)
Educational
Presto, chango!
The statusbar now has a (non-functional) KLed on its
right side. If you want it on the left, move the new
lines to the top of initStatusBar().
The public accessor is KLed* KStars::diskLED()
The relevant functions to call are diskLED()->on() and
diskLed()->off() (or diskLED()->toggle()).
(BTW, FYI: this is going to be used to indicate when the
disk is being accessed to dynamically load more stars.
It will probably be configured to only show up for debug
builds, or at least will be hidden by default)
General cleanup
Pruning of #includes in ParleyPracticeMainWindow
Seperation of mode specific construction from the generic construction -- this will make new mode creation easier
Renaming of some poorly named signals/functions
Slight change of design -- the window now keeps pointers to the non-GUI-dependent/integral classes, which aided the ctor seperation.
At this point, my plan for implementing multiple modes is to add a setup<ModeName>() function, and call the appropriate one based on prefs.
Another option is subclassing ParleyPracticeMainWindow for each mode, but I think that would be more effort than it is worth.
Resolving an inconsistency between toolbar actions and
the configuration window: the view toolbar provides an
action to toggle all deep-sky objects on/off, but in the
configuration window, there were only controls for
individual catalogs (Messier, NGC, IC, etc).
I added a Checkbox to the configuration window to toggle
all deep-sky objects. Unchecking this box will disable
all deep-sky related widgets in the window, like the
"Hipparcos star catalog" checkbox does for stars. The
checkbox and the toolbar button are properly synced with
each other.
No new string was added, but there will be a fuzzy: I
adopted the "Deep-Sky Catalogs" string which was used as
a group-box title. The group box now has no title. For
consistency, I also removed the (redundant anyway) "Star
catalog" title from the stars group box. So that string
has disappeared.
disable declensions in the gui for 4.1 as they are not fully done and ugly atm
Graphics
remove sqlite3. we don't need this code for KDE4
KDE Base
Skeeter Hawk and Colorado farm have are gone, obviously.
Doesn't this break existing setups? (i.e. those that have these
wallpapers set and upgrade, then wallpapers are gone?)
re-enable ClockApplet. great idea, really; the idea of porting is to actually port things; little dissapointing when things are simply disabled.
this is the wrong place for options such as "use background". putting it in each applet is absolutely insane. it also leads to rather annoying comments in bug reports which i really can't argue with because the user is being led to believe that this behaviour is sane. well, it isn't.
branch kdelibs and kdebase for my kde/plasma on small-form-factor high-dpi touchscreen-only devices summer of code project
Updated tasks, systemtray and pager to remove dark background.
Approved by Nuno and Marco.
Disable irritating bell sound by default.
Workaround a certain popular plugin's version 10 beta's inability
to figure out that 13 < 16.
(AKA, stub out some ABI r16 methods that get called despite us claiming only ABI r13 support.
I could perhaps do more than stuff, but I can't find any docs!)
KStyle now respects the single click vs. double click setting, which had the sideeffect that clicking on a place with the middle mouse button resulted in opening of 2 equal tabs in Dolphin, as the urlChanged() signal had been emitted 2 times.
Don't check for "kompare" each time 2 items are selected (thanks to Andreas Scherf). As Albert Astals Cid pointed out it might be nicer to use a menu plugin instead of hardcoding "kompare" (> KDE 4.1).
Plasma::Theme::wallpaperPath(const QSize&)
a nice improvement that fixes a small handful of packaging bugs and nuisances.
it allows us to do away with harcoding the wallpaper in multiple places (previously 3 places) in application code. as an extra bonus is also allows:
* the theme to define the default wallpaper
* the theme to ship with a default wallpaper (perhaps later on we can load wallpapers shipped with a theme in the config dialog?)
* the default wallpaper to defined in the plasmarc file (so downstream doesn't have to hack the code to change it)
KDE-PIM
Don't clutter the view with two much gradients (the ones for events spanning on multiple rows). It's better looking not to draw the border for these ones.
Add a little vertical gradient to the items, so that they look more like the agenda view ones.
"Revert <a href="<a href="http://websvn.kde.org/?rev=813156">r813156">http://websvn.kde.org/?rev=813156">r813156</a></a> - topquoting by default is good for KDAB's windows
migratees but just going to wind up longtime kmail users and *nix
people. For 4.2 consider adding a checkbox "Reply above quoted message"
that alters the value of defaultReply() and defaultReplyAll(). Anyone
wanting brownie points can implement this now using a hidden config
setting that defaults to false"
Office
This again is a commit with various changes I didn't get to commit separately. Note to myself: Need local git repository to be able to work on more than one thing at a time.
o Set pie explode factor per dataset
o Update data correctly for two-dimensional data
o Initial work on embedded ODF loading/saving
o Delete member variables in shape destructor
o Use transparent background for circle and ring charts
Multimedia
libmp3tunes: Introducing Harmony, your friendly MP3tunes Synching daemon. This bugger has some intense deps, so I'll leave it commented out of the cmake file for now.
Important change: I made it so that you can now start multiple Amarok 2 instances at the same time. This is meant as a convenience hack for us devs, so that we can continue listening to music while hacking on Amarok.
We must remember to remove this hack before the release!
debug++
Turns out that Phonon cannot yet seek over http :( Winamp can do this, so I'm hoping Phonon will get this ability sometime as well.
disabling trackForUrl() when slow redland backend is used.
that way amarok startup isn't slowed down anymore because of nepomuk (when tracks in playlist at start)
ugly way of doing it, but it is no final solution
User Interface
Initial checkin of PopupDropper into playground, where it will be developed from now on.
Little documentation so far, but that will come eventually, once features are more or less complete and the interfaces have stabilized a bit more.
Utilities
Add support to knetworkconf for Debian Lenny 5.0.
When the platform is not recognised it will be set by default to "testing".
Games
KTron theme by Eugene updated
New default skin by Eugene Trounev
I can't hear her saying "I just won and he said I would loose"
anymore - eat this!
- Don't clamp color values, e.g. when generating mipmaps. This results in much better bloom.- Misc hdr fixes and optimizations.