- maintain a UID-serial number map during runtime to find messages fast
- use this map in the searchjob to speedup imap searches by a magnitude. You only get the speedup when the map is already build of course.
- use a progress item when messages need to be downloaded. The progress is currently not canceled when the search is stopped, I still have to implement that.
General search changes:
- include a matches bool in the searchDone signal and use that to check changed messages. This fixes the problem that status changes did not update the search.
BUGS:76181
svn path=/trunk/kdepim/; revision=409056
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
svn path=/trunk/kdepim/; revision=408531
noContent folders are detected beforehand and therefore this error can only occur
if the folder is restricted with acls. I do not want to check this before the folder
is selected as this would take more time so we do a "lazy init" and just wait for the error.
BUGS:91428
svn path=/trunk/kdepim/; revision=392448
For several messages the progress shows only the overall status but this can only
be changed in the progressmanager api which is probably a past-3.4 task.
CCMAIL: 97920@bugs.kde.org
svn path=/trunk/kdepim/; revision=391417
dialog and include it in the RMB menu of the foldertree. To make the check if the menu
should be shown a bit easier the folderstorage got a new "isMoveable()" function.
I noticed that moving of imap folders crashes again when the messages are moved (sigh)
but this is not related so I'll fix it afterwards.
svn path=/trunk/kdepim/; revision=385541
folder was get'ed for every single mail. Now the folderstorage has an
addMsg( QPtrList<KMMessage> ) method and the imapjob can handle put operations
with a msgList. And the thingy has a nice progressitem now.
svn path=/trunk/kdepim/; revision=385105
can only be moved when they have no children.
Along the way fix Bug 94125 and add the FolderRequester to the expire settings
in the folder dialog.
BUG: 94125
svn path=/trunk/kdepim/; revision=371419
the MessageProperty cache is in sync with the serial number in the
KMMsgDict.
Actually it looks like new KMMessage's are no longer assigned a serial
number (which is a good change i think) so this change is purely defensive,
but better safe than sorry/fragile.
svn path=/trunk/kdepim/; revision=366034
- the search folder should of course also check added messages correctly
- finish the progressitem when the move to an imap folder fails
svn path=/trunk/kdepim/; revision=358300
and clear it after a timeout, so all waiting folders are stopped, and a
new mailcheck can try again.
This is based on a patch by Waldo with most bits moved to online imap only
since they don't make sense for dimap and some debug changes of very little
consequence. Thanks, dude.
svn path=/trunk/kdepim/; revision=351625
UW bug (yet another one) which Matt and I tracked down. It sends empty
IMAPDIGEST entries. Thanks, Matt.
CCMAIL: 90254-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=349371
not only expunging (in the imap sense) but also setting the \DELETED flag
of all messages in the folder because otherwise (imap) expunge does
nothing and only the local cache is removed. Confusion between the KMail
and the IMAP meaning of "expunge", I guess.
svn path=/trunk/kdepim/; revision=336842
end of the mail check is signaled, otherwise things are not reentrant and
can crash with multiple mail checks in rapid succession.
CCMAIL: 86244-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=334690
the FolderStorage one, which necessitates some constification and
iteratorification (is that a word?) in a few places. Without this
KMFolderImap::removeMsg on lists was never called as the different
signature makes it an overload. Instead folderstorage deleted them one
by one using the removeMsg(msg) version.
Reduces server roundtrips when deleting n messages from n to 1, which is
especially noticable when expiring large amounts of mail. Way faster,
obviously.
svn path=/trunk/kdepim/; revision=333751
KMMainWidget where the corresponding close was recently added by our man
Burghardt. Makes folder ref counting problems a lot easier to trace. Also
make sure the close comes after the folderSelected so we don't close before
that one can do its open.
svn path=/trunk/kdepim/; revision=333010
o assume the current number of folders in the account + 5% as the total
number of items, and tick them off as they come in, better than jumping
to 100% immediately and should be good enough for the common case of the
account folder listing not changing much
o add ImapAccountBase::folderCount() for convenience and constify some
stuff on the way
svn path=/trunk/kdepim/; revision=331842
while there is no connected slave yet are stored in a list and created
once the slave signals that it is connected. Fixes creation of missing
imap resource folders with online imap.
svn path=/trunk/kdepim/; revision=330332
a retry once the account reports it is up. This is the same mechanism used
by the ListJob in this situation.
This fixes an IMAP startup folder appearing empty on KMail start because the
slave is not available yet.
svn path=/trunk/kdepim/; revision=329088
instead of getting the msg as string and then manually grepping for X-UID.
That should speed up listing large folders some. Add comments explaining
what goes on, since I've now at least for the third time spent 20 minutes
fully grokking (sp?) it. Coding style fixes on the way.
svn path=/trunk/kdepim/; revision=322840
- Fix bug 76659: this changes the logic for imap folder selection.
First load all headers and then display them and do not mix and match.
- Fix some smaller bugs and crashes that I stumpled over.
CCMAIL: 76659-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=321536