Depuis la semaine dernière j’utilise aucune application kde4.

ça veut dire que j’utilise kdepim kf5.

Oui j’ai tenté mais je l’ai pas fait n’importe comment. Déjà j’ai mis en place une vraie migration. (les folders n’étant pas migré ça posait quelques problèmes). De plus j’avais déjà fait un maximum de test à coté.

Mais bien sur ça vaut pas le test en live :) Et là ben… comment dire… des bugs à profusion. Genre kaddressbook ne pouvait pas stocker les nouveaux contacts.

Donc j’ai passé du temps à rendre kdepim utilisable.

Mais maintenant c’est parti pour une longue chasse aux bugs :)

L’objectif c’est 15.08.

Est ce que je crois que ça sera opérationnel ? Heu… bien sur :) Enfin si on est plus que 2 à bosser dessus. Dan est en train d’améliorer Akonadi, et moi je fixe le reste.

Donc forcément ça prend du temps.

Faut en même temps avoir des gens qui testent kf5 :)

Est ce que je vais laisser tomber kde 4.14 ?

Bien sur que non je vais continuer à le fixer sans problème surtout que je suis pas sur que kdepim kf5 sorte vraiment pour la 15.08.

Là aussi j’ai besoin de bugs reports.

Voilà :)

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

History:

Some weeks ago I spoke with David how to configure what debug to show in qt5 (now it uses qloggingcategory)

In kde4 time we had kdebugdialog. It allowed us to define some debug areas.

But we are not able to extend it because it was in kdelibs4support module and it was kdebug specific.

Qt5 doesn’t provide application to do it.

Application:

So I decided to create a new application named “kdebugsettings” (c) David :)

This application worked as old kdebugdialog, we have a file which defines categories.

This file is named kde.categories.

I added debug area that I found in source code. More areas will add in the future.

It will allow to generate qCDebug rule.

In kdebugsettings we have 2 tabs, one for kde applications which are defined in kde.categories and another one which allows to define custom rules (if you want to show warning/debug/all, enable/disable it).

Where to find it ?

It is stored in projects.kde.org, in playground/util module.

You can test it and report bug/feature etc.

Future:

I hope for 15.08 to release it.