KIO split (from the Job side)

Kevin Ottens ervin at
Mon Apr 17 17:47:48 BST 2006

Hello list,

I'd like to propose some refactoring in the KIO::Job area. It's in my opinion 
particularly needed for the following reasons:
1) KIO::Jobs are tied to the UI and this depend could be removed
2) Other areas than KIO are starting to use Jobs (namely Akonadi and Solid), 
so it's a good target for factoring

My current plan is the following:

1) Factor out a KJob class that will go in kdecore (find in attachment).
I already have a first version of this class. It provides the necessary 
interface to implement a job and track its progress, but doesn't enforce any 
scheduling policy.
The major drawback is that some signals signature changed which means quite 
some changes in the user code. I already have modified the whole kdelibs to 
use the new signals (I didn't attach the patch since it's big around 160KB). 
kdebase requires a similar search and replace work.
Of course there's several advantages, KJob is UI free and we'll have a common 
job interface accross whole KDE.

Note that currently KJob doesn't support subjobs, I kept this in KIO::Job but 
it could be moved if necessary.

2) Factor out the UI parts of KIO::Job.
That's the natural second step for such a refactoring... KJob being UI free we 
need to reuse the UI features of KIO::Job.
The showErrorDialog(), and window()/setWindow() methods would be removed from 
KIO::Job and go in a kdeui counterpart of KJob.
The KIO::Observer class would move to kdeui after removing the KIO specific 
bits and putting them in convenience classes.
In the end it means that we'll be able to use the uiserver for any job inside 
of KDE.

If no one objects I'll commit KJob and the necessary kdelibs modification on 
wednesday. In the mean time I'll start working on porting kdebase to the new 
KJob signal signatures.

Of course, opinions and comments are welcome.

Kévin 'ervin' Ottens,
"Ni le maître sans disciple, Ni le disciple sans maître,
Ne font reculer l'ignorance."
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kjob.cpp
Type: text/x-c++src
Size: 3624 bytes
Desc: not available
URL: <>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kjob.h
Type: text/x-c++hdr
Size: 8601 bytes
Desc: not available
URL: <>

More information about the kde-core-devel mailing list