I told @leinir I'd look into this.
So far I can tell the following is needed.
KJob has suspend, resume and kill functions. These call doSuspend, doResume and doKill, which need to be implemented by the classes that extend KJob.
Within KNewStuff, we have download and copy jobs.
For copy jobs, we will need to handle suspend/resume/kill in FileCopyWorker::run(), and then have the virtual overides in FileCopyJob. The source object in FileCopyWorker is a QIODevice, so we can tell it to either skip or seek to the appropriate point when resuming.
For download jobs, the suspend/resume/kill needs be handled in HTTPWorker::handleReadyRead(). Here the object is a QNetworkReply, which is also a QIODevice, but if we're gonna handle a resume, we'll need to use skip(), as sequential QIODevices like QNetworkReply don't handle seek.
The virtual overrides here need to go into both HTTPJob and DownloadJob.
It'll take a bit of puzzling to get the functions working, but I think it should be possible. I am not sure how to connect this to the gui though, and given the fact we don't have a progress bar yet, I am pretty sure noone else really knows either? :D