Hi,<br><br>For simplifying the code on kio/kio/jobuidelegate.h and kio/kio/jobuidelegate.cpp, I have seen that internalAppName and appName are not needed methods. The Observer will read those values and send them to the UI Server. So on monday I will commit the attached patch if no objections.
<br><br>Some changes have been done:<br><br>* In order of painting icons nicely we don't have to pass through dbus to the ui server the full icon path. We will just send the icon name, and then the UI Server will try to load it from the svg icon as the height requested by the delegate. So we can't force it on the jobuidelegate to any size, because the delegate will be the one that will request this or that height in runtime.
<br><br>To understand this, you can visit <a href="http://www.ereslibre.es/kdedev/screenshot2.png">http://www.ereslibre.es/kdedev/screenshot2.png</a><br><br>* I'm adding new code to the observer. Right now *ALL* things added to the observer are *REAL* KIO::Jobs. Now I am extending this to let apps that don't throw real jobs show some progresses on the UI Server. That is being done with a new method on 
observer.h/cpp (basically, but extended for lots more slots, for setting data):<br><br>  /**<br>   * Called by the job constructor, to signal its presence to the<br>   * UI Server.<br>   * @param job the new job<br>   * @param showProgress true to show progress, false otherwise
<br>   * @return the progress ID assigned by the UI Server to the Job.<br>   */<br>  int newJob( KIO::Job * job, bool showProgress );<br><br>  /**<br>   * If you don't have a KIO::Job, but want to show some kind of<br>
   * progress into the UI Server, you have to call this method.<br>   * @param icon the icon to be shown on the UI Server<br>   * @return the progress ID assigned by the UI Server<br>   */<br>  int newJob( const QString &icon = QString() );
<br><br>And then, you only will have to call the *NEW* slots, that are of this form:<br><br>void slotInfoMessage( int jobId, const QString & msg );<br>.<br>.<br>.<br><br>With the int that newJob returned (that is the jobId). So now, you can set percent... and so on for "virtual" jobs, jobs that aren't KIO::Jobs, but jobs your application. This way you can call it:
<br><br>int thisNewJob = Observer::self()->newJob("receivingmail"); // if we had a svg icon file "receivingmail.svgz" that lets us retrieve the icon with the height we want (automatically on UI Server)
<br><br>or<br><br>int thisOtherNewJob = Observer::self()->newJob();<br><br>and then for example:<br><br>Observer::self->slotInfoMessage( thisOtherNewJob, i18n("Retrieving mail from server...") );<br><br>Then on your code (where you are progressing), you can be updating Observer::self->slotPercent( thisOtherNewJob, myPercent );
<br><br>so it is updated on the UI Server.<br><br>Any comments ?<br><br>Bye,<br>Rafael Fernández López.<br>