On Friday, 28 June 2013 11:43:32 CEST, Pali Rohár wrote:
Here is git repository (branch master) with my gsoc code: http://quickgit.kde.org/?p=clones/trojita/pali/trojita.git
Hi Pali, wow, looks like you've been busy in the meanwhile -- I'm happy to see that. It would be even cooler if you let us know that you were working; this way I was needlessly worrying why you were slacking off. A couple comments on the code: - Please respect the coding style: do not use "if ( foo )", "qobject_cast <", "QPointer <", put the opening parenthesis of any function on an extra line, etc etc etc -- there's much more than that. - Check that the plugin loading works from within an uninstalled out-of-tree build as well as when installed on the system and that an uninstalled build loads its own plugins, not the systemwide ones. (I have no idea whether it works or not, but it looks fishy to me as it's now.) - No foreach, use Q_FOREACH - What's the point of storing the plugin path in the settings? Check how the localization is loaded to see what I mean with the path discovery. - The signal/slot signatures in connect(...) are not normalized - Could addressbook->requestCompletion ever return 0? You're checking its return values. - Looks like you do a lot of housekeeping before you delete an obsolete completion job. Could you perhaps delegate this to its destructor by any chance? - Not sure whether you need to #include <QPointer>; perhaps a forward declaration is enough (haven't checked, might be wrong) - While common in the existing desktop software, I don't find "Default Trojita Addressbook" to be meaningful description. As a user, I'd like to know that it's accessing an abook-formatted file which can be shared with mutt, not that it happens to be used by trojita by default. - What is the NullAddressbookCompletionJob and why is it returning bogous data? - I prefer to split classes into a .h and a .cpp file even when these classes are not "public" and are instead only used as plugins.
I'm not going to push interfaces to trojita master until plugins will be available, because there could be problem with interface.
A check list of stuff to do/have before you push: - an explicit OK from Thomas/Caspar/Kevin/me - no regressions you're aware of - passing builds under both Qt4 and Qt5 (I'm looking at that extra QT4_GENERATE_MOC invocation (which also happens to use caps)) - A clean git history. I'm all for atomic commits changing individual items, but before you push this into trojita's repos, please rewrite the history so that it's manageable and doesn't contain excess churn. An example with no relation to your actual history because I haven't checked it except the total number of commits: an extra commit for adding the plugin loader is OK, but multiple commits which iteratively improve the build system to ensure that the plugins are installed into a correct place are not OK. That said, separate commits which make a particular component play well with the rest of the system are welcome. Cheers, and please keep up the good work Jan -- Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/