CVS commit by sanders: Enhance the Kmail filtering system so that filters can be applied to incoming messages from IMAP accounts, that is messages that are delivered into an IMAP inbox folder. Sundry details: I've modified these files: kmfilterdlg.h kmfilterdlg.cpp To add the advanced tab that allows per account filters kmfilter.h kmfilter.cpp I've added some new functions to KMFilter setApplicability( AccountType ) AccountType applicability() setApplyOnAccount( uint id, bool aApply ) bool applyOnAccount( uint id ) and an enum enum AccountType { All, ButImap, Checked } kmfiltermgr.h kmfiltermgr.cpp I modified KMFilterMgr::process to take two optional parameters bool account = false uint accountId = 0 and changed the implementation so that when these params are set per account filtering is applied. kmaccount.cpp Trivially to use the new per account filtering. kmacctimap.h kmacctimap.cpp For 3 main reasons 1) In the case (it checks) that a filter applies to this imap account, then incoming mails headers are downloaded when mail checking occurs. Rather than waiting until the folder is selected in the GUI. Because it's really silly to have to select the inbox folder to manually force filtering to kick in. 2) To load/save a list of unfiltered messages in the constructor/destructor respectively. 3) To filter messages (I've sort of duplicated a little code from kmheaders.cpp for this, my apologies). kmfolderimap.cpp 1) To tell mAccount to filter new mail as the headers arrive. This is basically the patch I've sent to bug:50997 several times and has been available for testing for some time. I'll now focus on allowing IMAP folders to be the target of the Move Into Folder filter action, and less blocking filtering (useful for piping into a spam tool). CCMAIL:73758-done@bugs.kde.org M +1 -1 kmaccount.cpp 1.123 M +123 -1 kmacctimap.cpp 1.194 M +14 -0 kmacctimap.h 1.93 M +65 -2 kmfilter.cpp 1.73 M +44 -0 kmfilter.h 1.35 M +154 -28 kmfilterdlg.cpp 1.122 M +12 -2 kmfilterdlg.h 1.42 M +6 -3 kmfiltermgr.cpp 1.76 M +5 -1 kmfiltermgr.h 1.34 M +5 -0 kmfolderimap.cpp 1.258