29th October 2006by Danny Allen
The first program, Data Sources, is a tool for configuring ODBC drivers and data sources. Users of similar tools on other platforms will be pleased to see how similar this tool looks, feels and operates. Data Sources makes things even simpler, with auto-detection of missing ODBC drivers and wizard-based configuration. It also shows users only the options needed to configure a data source, whilst advanced configuration options are still accessbile. At the moment, the program is a fully working Qt 4.2-based application and I intend to move it into a KCM module. (Currently located at trunk/playground/base/datasources, screenshot)
SQL Query, as the name suggests, is a tool for querying databases. It allows a user to open ODBC data sources, or use the Qt database drivers. Users can browse databases, execute SQL statements or run SQL scripts. I plan to add many more features to this program, including importing and exporting database data. This program is currently Qt 4-based and I intend to make use of the KDE 4 libraries, add syntax highlighing to the SQL editor and add other important functionality. (Currently in trunk/playground/office/sqlquery, screenshot)
The last tool, ODBC Statistics, is a small tool for monitoring ODBC connections. (Currently in trunk/playground/sysadmin/odbcstats)
To gauge the scale of the existing bug mountain, there are approximately 2600 open bugs registered against KMail, with a further 700 outstanding in KOrganizer. With the bug-crushing effort on Saturday, Will Stephenson reports that there were over 40 people in the co-ordinating IRC channel (#kde-bugs) at the peak of the bug-fixing zeal, with many non-programmers using their talents with good effect.
With two successful events now completed, we will surely see a fresh announcement and challenge within a few weeks - which part of KDE should fear the wrath of the KDE Bug Squad next?
|Commits||1991 by 194 developers, 4576 lines modified, 1053 new files|
|Bugs Opened||254 in the last 7 days|
|Bugs Closed||345 in the last 7 days|
Internationalization (i18n) Status
Bug Killers and Buzz
|Alexandre Pereira de Oliveira||
|Allan Sandfeld Jensen||
|Adriaan de Groot||
|Aaron J. Seigo||
There are 85 selections this week
Patch from Modestas Vainius to fix Bug 122020 (kdesvnd action menu issues)
He said, and I agree:
Do not time out when waiting for the reply for the X-KDE-GetActionMenu DCOP call. DCOP protocol is synchronouos by design and a reply for the timed out call (i.e. garbage) still arrives and might be falsely returned as a valid reply for the subsequent DCOP call on the same connection. The application currently known to be badly hurt by this is kdesvn and its konqueror service menu integration. Its X-KDE-GetActionMenu might take longer than current 100 milisecond timeout to complete. As a result then, a late reply will "pollute" a main DCOP connection of the client application (e.g. konqueror) causing further DCOP failures.
Prevent crash-inducing recursion of detach due to blur events
happening when widgets with focus get destroyed, by quietly shifting
the focus to the view...(#135384, probably #124342 --- best I can tell given
imperfect information); also affects some bugs which I separately closed as
non-reproducible, but which involved such a sequence
Also fixes freezing in #92497, as we no longer try to find something
to focus when nothing is focusable..
fix up various typos in kdebase docs. Natalie, I suspect that the go menu missing is a Kubuntu customisation since it is here in my vanilla 3.5 branch. Thanks for filing such great bugreports so faithfully.
when the track (and thus the lyrics) changes, reset scrollbar position of lyrics tab to the top
make playlist context menu tall enough for the side pixmap by always showing the 'stop playing after this track' entry
Hide passwords from recent site list in quick connect dialog.
More ruby parser improvements:
- recognize comments
- recognize scoped names (ala Foo::Bar ) as proper module names
- recognize ruby symbols
- recognize if/unless/while/until statement modifiers
- two consecutive method calls without parens are no longer parsed as one statement
Now the parser understands pretty sophisticated ruby programs!
Implementing non-colliding text labels in kdeeduplot, based on kmplot code.
It works, but it could probably be faster. You don't need to know anything about it to use the feature, it all happens behind the scenes. Just add some items with labels and enjoy the magic.
However, in the interest of inspiring optimization, here's a brief description of how it works.
KPlotWidget now has a private array of floats: PlotMask. This is a rough division of the content of the plot into a 100x100 grid. Where the plot is empty, the array is zero, where it has content, it is >0. When items are added to the plot (points, lines, bars, or labels), the corresponding positions in PlotMask are incremented by an amount that can vary for different kinds of items (for example, right now Bars don't increment as much as points or lines).
The function KPlotWidget::placeLabel() is responsible for positioning item labels. It attempts to place the label close to the point to which it belongs, while minimizing the label's overlap with masked regions of the plot. Ideally, it won't overlap with masked regions at all. This is done in a rather brute-force way: it tests label positions in a 40x40 grid around the position of the point, and determines the "cost" for placing the label at each position. Higher cost is incurred for (a) overlapping with a masked region, (b) being further from the point position, and (c) extending beyond the bounds of the plot. The position that has the lowest "cost" is then adopted, and the label is drawn at that position.
You can get an idea of the CPU impact of this cost-analysis using the test suite I added to kdeeduplot. Display the "Points, lines and bars" plot, and then resize the window. Note the smoothness of the redraws. Now display "Points, lines and bars with labels" and resize the window. The redraws take much longer in this case.
Show a 'keep password' checkbox when using a wallet so the user can decide if he wants the password saved in the wallet.
New template goodies from Dmitry:
1. Conversion phrases into templates
2. Per-identity templates
3. Templates are used also with multi-message forward (was missed)
4. C-style correction of templatesconfigurationimpl.cpp
5. Minimal and default sizes of templates configuration widget diminished a
little; folder properties are not so huge now.
6. Several commands added: %CCADDR, %CCNAME, %CCFNAME, %CCLNAME, %OCCADDR, %OCCNAME, %OCCFNAME, %OCCLNAME
Please continue testing templates.
Great work Dmitry! Glad to have you helping with KMail.
Now we need to get some code from Johnathan :)
Monur's KMail Message Tagging
as found on <a href="http://www.kde-apps.org/content/show.php?content=36322">http://www.kde-apps.org/content/show.php?content=36322</a>
Cleaned-up just a bit by me.
Monur, didn't you want to do more with this feature, like adding colors?
from the todo list:
- dont close composer without warning when there is data
- check for duplicate addresses in the composer
- sort indicators in the composer missing
- reworked the listviews, so the delete column is always visible and column 1 always takes as much space as possible.
- context menu with delete is not needed now in those lists
- renamed 'file' to 'attachment' in composer
- add a space between organisation and emailaddress
Improved templates support from Dmitry:
1. Coding style fixes.
2. Little refactoring.
3. Custom reply/forward templates added (David Faure ask for them on list)
4. Various bug fixes, including major one -- wrong charset on %TEXT command
Improve communication with KAddressBook:
- addressbook is now loaded asynchronous, so the composer opens instantly and addressess follow later.
- delete from addressbook and open address from the addressbook sidebar
- add an address to the addressbook from the addresslist.
When hitting escape during dragging a point the drag will be canceled
When dragging a point more than 15 pixels outside the widget the point
is deleted (unless you drag it back inside)
hitting exacpe while dragging outside will probably crash at the moment
Can't test it as krita is not working at the moment
* Kexi Query Designer supports parameter queries *
- New: Added support for parameter queries in design and SQL view.
User is asked for entering value of a parameter in a dialog window.
Paramers can be of any type except Object.
Implemented thumbnail painting for shape containers
(see <a href="/issues/2006-10-29/files/karbon_hidden_rect3.png">http://www.gfai.de/~jaham/karbon/karbon_hidden_rect3.png</a>)
we need a better way to do progress notification for various actions.
A simple usecase is a user action or filter that can be split into multiple
subactions which each have their independent progress indication.
We want to show the total progress in a progressBar.
This new class does that and all of the following features:
* be able to handle more than one concurrent action
* be safe
* be cancelable
* be fast
* be really easy to use
Improve layout of organize files dialog a bit.
When the script can't find lyrics, provide a link for a web search.
* WARNING: APPLICATION NOT RELIABLE AT THIS POINT! DO NOT USE FOR PRODUCTION!
* More work on MultiTarget configuration
* Make new Target Configuration handling work
* Import old setting in localhost, on upgrade
* Lots of code cleanup & small fixes
* Update Version String to 1.1.0 - to much changes and new features -> name it so
Optimizations of the Thumbnail list.
We now only create thumbnail widgets for thumbnails that are really visible in the viewport. That means we need to create only a very small number of widgets, and not one widget per page as before.
This gives a huge performance boost for all operations, expecially loading and closing of documents, and rotating the view, since the creation and especially deletion of QWidgets is quite slow.
The performance gain is only noticable for very large documents with 1000 or more pages.
There are still a few little regressions, which I will fix later.
After a lot of preparation, finally removed full redraw at every tile addition and removal. There is still some room for optimization, but at 800x600 play area the game is now using less than 1% of a 2GHz cpu, with minimal redrawings.
Unfortunately, this change is for KDE4 only and can not be backported to 3.5.x series.
Use a slightly more intelligent way of detecting whether the D-Bus daemon is running: instead of trying to kill -0 it, try to connect to its address (using qdbus).
This has the added benefit that it works with the autolaunch method that was introduced with D-Bus 0.94. If you're using 0.94, you no longer need to run "eval `dbus-launch --auto-syntax`" before starting your KDE4 applications (this is valid for individual applications, not just startkde).
Note: this requires qdbus to be in your $PATH. But everyone has Qt 4.2's bindir there, right?
- first step of refactoring the configuration of the filter system (more on a mail later), the configuration isn't anymore created in the filter but in the widget
- disable most of the filters, as the change need more work on libraries
Import KDChart 1.1.4.
I had to disable support for QSA, since it didn't compile. If you
want to reenable it, then remove the # in Makefile.am and remove #if 0
In KDChartVectorTable.cpp, I had to disable the destructor since it
was defined in both the .h file and the .cpp file. Apparently, the
author works with gcc version 3.x. :-)
Dump dependency on QtGui by not using Qt::escape. This makes libpatternist link to about half as many libraries.
Some things are, pardon my french, hard to understand in Qt, in my eyes. Qt::escape(), a practical little helper function for escaping text, is placed in the Qt namespace but then in the QTextDocument header, as opposed to QtGlobal. Implicitly, a function that has nothing to do with GUI, is placed in QtGui, creating a dependency on a whole new library for only that function.
Same goes for QAbstractProxyModel. The item/view framework provides a nice separation between content and presentation, but by placing QAbstractProxyModel, a class that operates on the data level independently of display details (right?), in QtGui, one again prevents modularization.
The argument I've heard is that QtCore is supposed to stay small, but I wonder if such optimizations(can Qt::escape() and QAbstractProxyModel really be considered big?) are more worth than proper engineering.