Hi, I had a look at the current state of the integration clone.
TrojitaPluginJob.h - autoDelete() and isRunning() should be const and normal public method (not slots). - I am not sure calling stop() in the destructor is a good idea. It calls doStop() but at that stage the subclass has already been destroyed (its destructor ran already). === Plugins I take it name() is used as an identifier and not displayed to the user? === KDE AddressBook - using deprecated KABC API parts, e.g. KABC::AddressBook. Should use Akonadi API instead - calling KAddressBook for adding/editing is probably not a good idea either. There is a contact editor widget and related UI components in kdepimlibs === EnvelopeView.cpp - contains a rather hackish nested event loop in htmlizeAddresses(). nested event loops are evil, source of tons of hard to fix crashes in old KDE apps - I think the best way forward is to run the jobs before calling headerText(). for that you need to save the model index as a QPersistantModelIndex. Then you create a list of email addresses to lookup and start processing them. each lookup is stored in a hash, e.g. QHash<QString, QStringList> (email -> names). once the list has been processed, you call headerText() and htmlizeAddresses() looks into the hash instead of running jobs. When setText() has been called, you can clear the hash. Cheers, Kevin -- Kevin Krammer, KDE developer, xdg-utils developer KDE user support, developer mentoring
signature.asc
Description: This is a digitally signed message part.
