Issue 245

Contributors

This Week...

Improvements in QML shutdown dialog.
KDE-PIM allows toggling full window view mode for Todo and Month views and gets a special character adding feature.
KTouch adds a skeleton for keyboard layout properties widget.
Digikam gets a new tool: filmtool, an automatic whitepoint finder.
In Kooka, the user can now drag and drop in the gallery.
Calligra supports animation motion along a path.
New Amarok's Context View is available.

If the request queue is not empty, signalPixmapRequestDone causes a new
pixmap request to be started, thus overwriting mPixmapGenerationThread's
mCalcBoundingBox before it is read by the if in the next line.

Now signalPixmapRequestDone is called after the bounding box is saved,
so that new requests are started only after all data from
mPixmapGenerationThread have been saved.

Currently while exporting PDF we do not check if we are able to create the file at the location or not. This leads to the
"Export to PDF" action to fail silently. This patch adds check for that and the user is notified of failure.

Though I could not test in the exact environment as mentioned in bug 291925, what I did was that I created a folder with no
write permissions and tried to export PDF to that folder. In my test environment I could see that export failed silently
without this patch.

This fixes loading of draw:image of the type svg in case the mimetype is not provided as in the document
create by LO attached to the bug report. When the mime type is not found we try to guess it by the content
of the file. To do that we read the first 16K data and pass it to KMimeType. After we found out the mime
type we also set it so it is there for later usage.

Multimedia

I'm also working on a Qt4 QUrl fix (using QMutex), and this is already
fixed in Qt5 (the rewrite does no more delayed parsing), but let's make
our software stable as soon as possible, too, by using QThreadStorage
to avoid the race.

Improved interfaces list model to show each interface differently in the QML. It is being treated wired, wireless and modem connections. The status of each one updates in the interface when it changes.

Fixed IP address lookup. First of all, the usage of the WINS server
was removed since it seems that it causes more trouble than it helps.
Second, the lookup was moved to the timerEvent() function, so that
each time a new host is added (d->haveNewHosts is set to true) the
hosts list is traversed and a lookup attempt is made for each server
that does not have an IP address set.

Games

This fixes a bug where a client connects with username A to server, hides
the table list and connects again with username B. But what actually
happened was that the existing table list was reshown, so he was not
really player B as expected but player A.

Features

Educational

Sebastian Gottfried committed changes in [ktouch/next] /:

resource editor: skeleton for keyboard layout properties widget

Provides widgets to set the various properties of the keyboard layout
itself and its keys. Adapts whether currently a key is selected and to
the type of the key. Actual editing function is still missing.

This will enable us to use the regular table setup code also for the n:m
relation helper tables, which so far have their own setup code, causing
duplicated code and a number of inconsistencies in the db schema.

Office

Thorsten Zachmann committed changes in [calligra] /part/animations:

Add support for animateMotion on a path

We read and write out the same data as LO/OO however this is invalid ODF according to the schema.
However that seems to be a bug in the schema.
This also adds support for loading/saving the smil:fill attribute.

Multimedia

Riccardo Iaconelli committed changes in [amarok/qml] /:

Replace Amarok's context view with a QML rewrite

First integration of the mockup, further development will happen here

DIGEST:
The initial work on Amarok's Context View has just been merged. This means a
much improved UI which will eventually lead to the development of Amarok
3.0, or at least a mobile version. The current result is still non
functional and suboptimal, but already shows promising results. A blog
post describing this work will soon follow.

Utilities

- Change action text from "Show ..." to "Open ...",
change icons to "document-open"
- Add enumerables OpenScript == ShowScript, ...
- The actions open a document if not done already,
otherwise they show the opened document

Optimization

Multimedia

Matěj Laitl committed changes in [amarok] /core-impl/meta/stream:

MetaStream: big clean-up, implement play statistics methods

* remove many unused and useless methods such as setTitle() and
friends
* additionally take genre, comment, track number from Engine
Controller's signal
* implement rating, score, first & last play and play count. These are
rather debugging tool for EngineController, but they also give you
nice info on how many songs have played in the stream
* no need to reimplement observer pattern, use MetaBase implementation
* implement length, EngineController will emit length info soon

Security

Networking Tools

fix VPNC group password decryption
The KProcess is not needed here, an instance of it is already created
in line 145. In fact, by setting the ciscoDecrypt to a new KProcess here,
the signals/slots no longer work, so the group password is not added
to the data map.

This feature had been broken for quite some time, so we've decided to
remove it. Due to the big changes at AAVSO site, it might be quite hard
to get it running in the future. Fortunately, we have one person who is
working on it right now.

KDE Base

Improve the concepts of kickoff lists and make the code a lot easier to
understand. Most of the "magic" of the kickoff lists has been removed to
make it more explicit, and easier to understand.

Instead of having one kickOff list for everything. We now have 3 lists -
* One for initialized data. Maps uri -> ResourceData*
* One for nao:identifiers. Maps nao:identifier -> ResourceData*
* One for nie:urls. Maps nie:urls -> ResourceData*

When constructing a ResourceData, the ResourceManager checks the kind
QUrl it has been given - a nepomukuri, a nie:url or nao:identifier.
Based on the results it passes the arguemnts to the ResourceData
constrcutor.

This change was only possible cause with the DMS, we have made it clear
that all resource uri's will be of the form 'nepomuk:/'. This makes the
logic a lot simpler.

Add a static self() method to KateCommands::CoreCommands,
KateCommands::ViCommands, KateCommands::AppCommands,
KateCommands::Character, KateCommands::Date and KateAppCommands.
This allows for easier code reuse among commands. The Singleton
pattern is justified as follows:

1. The Command classes have no state, and the only reason they
are instantiated at all is so they can be passed to the command
system. Therefore, they only need to be instantiated once.
2. Other parts of Kate already provide static access: e.g., the
KateDocManager, KatePluginManager and KateGlobal classes all
have a self() method. So there is some precedent for making
common components easier to access.
3. While the Singleton pattern can turn into an anti-pattern if
different parts of the code modify the object as they would a
global variable, the Command objects are stateless and immutable.
In this regard, they are similar to a constant defined in a
much-included header file.

The Singleton pattern guarantees that only one instance of the class
is ever created, and provides access to this instance with the static
self() method.