Status:

As you know we decided to release kdepim kf5 in 15.08. (We have 2 months yet).

I use kdepim kf5 by default now on my main computer. Of course when I started to use it all apps crashed, or there was some part of code which was not ported to kf5 yet.

I tried to fix all crash that I found, I fixed a lot of bugs, and I finished some features (as Gravatar support, rewrite the kmail composer, reimplement text to speech etc.)

Now all applications work fine (no direct crash when I launch them). But of course it’s not perfect. I can’t use all application all the time. So I need some help to find bugs.

Test plan:

There is a lot of application in kdepim:

  • KMail
  • KAddressBook
  • KNotes
  • Kontact
  • KOrganizer
  • SieveEditor
  • AccountWizard
  • ImportWizard
  • etc. (Some others minor applications)

So I decided to focus each week on an application.

I will not work at 100% on a specific application, but I will use it a lot during this period and I will try to fix each bug that I will find.

As I worked a lot on KMail, I will not focus on it next week.

I will focus on Akregator, so if you can test it and you can report me bugs. I will not fix all bugs about akregator but I will try to for all porting bugs. I don’t have time to debug all akregator bugs ;)

How to test it ?

It’s better to use last version from git because I fix a lot of bugs each week. (I don’t know if distro provides snapshots).

I will increase version of kdepim each week so we will be sure that bug is against last version.

Limitation:

KDEPIM uses a lot of resource as Dav, Openxchange, etc. I don’t have access to them. So I can’t debug so it will good if some people will able to test them.

Thanks for your help.

History:

I started porting of kdepim to KF5 1 year ago (in may 2014). When I started it I thought that it should be easy. But it was not easy because firstly KF5 was not release and it was not stable, there was some bugs. Secondary kdepim is not just KMail, it contains the kdepim libs + akonadi + kdepim runtime + kdepim apps (as korganizer, kmail, etc.).

The first step was to adapt cmake files to new framework environment.

I removed some applications which were not ported to pure kde4 (depended to kde3support), or some unmaintained applications (as ktimertracker) etc.

The second step was to split kdepimlibs as frameworks (for the moment just one lib is released).

The last step was removing kdelibs4support (it’s still in progress). This step is very long because we need to port each kdepimlibs library (The big problem is the KLocale porting… It’s complicated and there is not Howto for it…).

Status:

Last week I decided to use kdepim kf5 as default on my computer.

It was not an easy decision because I use KMail for my work.

But before to do it, I implemented a class for migrating data applications, because now we use XDG path and not .kde path for config/apps data etc. as it was in kde4

First impression:

I am impressed because KMail works fine :) I can send/receive emails !

KAddressBook was totally broken but I fixed it last week end.

KOrganizer worked correctly.

SieveEditor works very fine.

For other applications they are working fine but I didn’t have time to evaluate them correctly.

Dead line:

We decided to release kdepim with kf5-15.08, so in 2 months.

Is it possible to do it ?

I hope :) But it will hard to fix all bugs without some helps.

kdepim-4.14 ?

I never stopped to work on kdepim-4.14, but indeed now that I switch to kf5 I will reduce the time that I took to debug it.

But I will continue to backport the fixes on kdepim-4.14 until we release kf5, because I am not sure at 100% that new version will kf5 version.

Future:

I will continue to debug all applications, I will finish some new features until we release it.

How to help ?

Just take an application, use it as usual and report all bugs that you find.

Before to increase version to 1.0 I moved it from kdereview to kdeutils.

I added new features of course :)

Now you can import/export settings directly.

You can create a category file and it will load in kdebugsettings.

It’s very useful for big project as kdepim for example when I add a new logging categories for each module, but I don’t want to wait a new release.

So you need to create a “.categories” file and install it as “install( FILES kdepim.categories DESTINATION ${KDE_INSTALL_CONFDIR} )”

Future:

No idea :) If you have so wishlist send me a bug :)

KDAB works on a lot of projects based on qml.
But sometime for specific applications it’s not safe to store directly qml file on file system.
As you know the QML files are plain text files.

For example if an user can have access to qml files he can change the logic of the application.
This is not critical for a application as  “Clock” but it can be critical in other domains.

So there is two methods to avoid it:

  • Using the Qt Resource for embedding the QML files (This blog will explain how to do).
  • Using the qtquickcompiler to generate a precompiled QML file (But a commercial license is needed)

The Qt Resource system allows to store a lot of data/binary files in executable directly.
Data can be an icon, a translation file, etc. and of course a QML file.

This blog will explain how to use it in a QML plugins implemented based on a QMLExtensionPlugins class.

For a standard application which uses some QML files this is very easy. We put them in a qrc file and we can access to it directly with a line as “view.setSource(QUrl(QStringLiteral(“qrc:/plugins.qml”)));”

We will see how to do it on a example based on qmlextensionplugins.

We adapted a qt qmlextensionplugins example (It’s the Clock example that you can find in qt source code) to create an little application.
Source code can be download here

It will display a clock.
The pro files were adapted to allow to install apps in “install” directory.
(qmake && make && make install).

When you look at install folder you can see all these files.

./plugins.qml
./extensionpluginsapps
./TimeExample/hour.png
./TimeExample/minute.png
./TimeExample/clock.png
./TimeExample/qmldir
./TimeExample/center.png
./TimeExample/libqmlqtimeexampleplugin.so
./TimeExample/Clock.qml
./TimeExample

=> As you see the QML files are stored on filesystem.

Now what we need to change for using Qt Resource ?

We will create a Qt Resouce file which will embed all qml files and icons.


<RCC>
<qresource prefix=”/clock”>
<file>Clock.qml</file>
<file>center.png</file>
<file>clock.png</file>
<file>hour.png</file>
<file>minute.png</file>
</qresource>
</RCC>

There is not a specific prefix.
And you just need to adapt qmldir for using a specific QtResource path (use qrc:///<path>)


module TimeExample
Clock 1.0 qrc:///clock/Clock.qml
plugin qmlqtimeexampleplugin

Of course the file qmldir can’t be stored in Qt Resource file otherwise  the application will not be able to  find plugin.

As you see now the list of files in install directory is limited to:

./extensionpluginsapps
./TimeExample/qmldir
./TimeExample/libqmlqtimeexampleplugin.so
./TimeExample

(of course I stored plugins.qml in another qrc file).

So the application is more safe now.

You can get source code here

I improved kdebugsettings (and increased version to 0.3).

What’s new:

  • I added an Apply button so now we can test rules directly
  • We can customize kdeapplication rules, before we could just enable/disable them, now you can specify that you want to show just Debug/Critical/All (as for custom rules)
  • There is a new tab which shows rules which are stored in QT_LOGGING_RULES environment variable.
  • I added a warning when a rules starts by “*” which can override all others rules.
  • I added an Help button which show Qt qloggingcategory page

Future:

I will add a button to export/import rules.

I will ask to move it in kdereview. I think that it can move in official package.

Screenshots:

Warning about "*" rules

Customize kdeapplication rules

Customize rule