Fix for deletion of folders with subfolders: those need to be removed first
(thanks Carsten for the hint). This is simply achieved by adding the imap paths
of all subfolders to the account's mDeletedFolders list, and at sync time,
asking the server to delete all those at the same time - in reverse order.
Till, Carsten: ok for backport?
svn path=/trunk/kdepim/; revision=395800
Yeah! Make sure the name of the folder is used, not that of the Folder-
Storage, otherwise random things happen.
BUG: 97223
svn path=/trunk/kdepim/; revision=381259
convert CR/LF to LF when downloading the message from IMAP.
This ensures that it's always \r\n on server, \n on client (both in memory and on disk).
Before that, it was \r\n in kmail's memory, until restarting it, since KMFolderMailDir
would then turn it into \n !
svn path=/trunk/kdepim/; revision=348182
user chooses Continue, don't do anything relating to the messages, since it
will wipe them out (probably due to writeUidCache()), skip directly to doing
the acl stuff, then the subdirs.
svn path=/trunk/kdepim/; revision=322436
the renaming happens in the foldertree immediately, but is stored in the account
(with persistence in kconfig) and done on the server at the next sync.
If that fails, the server is renamed back locally.
svn path=/trunk/kdepim/; revision=319628
and Subject of the message, so that it's possible to know which one it's about.
CCMAIL: 60384-done@bugs.kde.org, 81309@bugs.kde.org
svn path=/trunk/kdepim/; revision=310391
instead of "on exit" (which made it non-working in kontact, with session management etc.)
GUI: removed the "Warn before expiring messages" and "On Exit: Expire old messages" options.
Tasks are filed with the jobscheduler, and the job for that task is started
only if the folder isn't opened - so this needed some special handling of search
folder (asking them to try releasing a given folder) and some fixes relative to
open() and close() calls, in kmfoldercachedimap and kmfoldersearch in particular.
Don: please check the kmfoldersearch.cpp changes, in particular the added close()
CCMAIL: sanders@kde.org
svn path=/trunk/kdepim/; revision=310272
actually being done. If some operations are not being performed the % doesn't
increase, but instead the "get new messages" step will use as much span as it can.
Also added per-message progress info while uploading messages.
svn path=/trunk/kdepim/; revision=307343
and there's no systray icon. This allows KMail to actually exit when closing it,
instead of getting stuck forever on a server that doesn't answer...
Compared to the kmail-devel patch I changed the code in KMMainWin to ensure
it's called even when secondary windows are left opened, and to enable mail
checks again when re-creating a KMMainWin.
I found out that the dimap progress dialog is broken with multiple kmmainwins,
but that's an independent issue, which will go away when porting it to Till's
progress dialog anyway.
svn path=/trunk/kdepim/; revision=307314
as the first argument and then calls a virtual protected
handleJobErrorInternal with the job->error and job->errorText as arguments.
Port all users of handleJobError.
Agreed upon with David.
svn path=/trunk/kdepim/; revision=306219
* Wait for completion of the "upload status flags" before continuing (as discussed with Till)
Maybe this was the reason for some status-flags bugs, like coolo's? Would be lucky though.
* Use a CachedImapJob for listing messages, so that handleJobError works in both cases
(continue/cancel)
* Replaced all showErrorDialog()s with handleJobError in CachedImapJob
* Moved slotSlaveError to ImapAccountBase (but deprecated it), calls new virtual handleJobError
* More fixes for sync aborted in subfolders
All tested with a "list permissions only" folder, to trigger all sorts of errors.
svn path=/trunk/kdepim/; revision=305740
* when a subfolder shows an error and the user chooses to abort, really abort,
don't half-continue with sibling folders (this led to strange items in the progress
diaog, and temporary signal/slot connections not disconnected...)
* show folder name in error box when creating the folder on the server fails.
* ifdef'ed out ImapAccountBase::slotSlaveError since both subclasses reimplement
it anyway (and made it pure virtual... it was inconsistent, with some jobs calling
one and some jobs calling the other)
svn path=/trunk/kdepim/; revision=305655
Give the user the choice, for non-critical errors.
Currently only done for get/delete/expunge/put, more code should be ported
to handleJobError().
Added error() and signal result() to FolderJob to allow KMFolderCachedImap
to skip the expunge step if deleting failed.
Earlier versions of this patch were posted to kmail-devel, but Till told me
to go ahead :-)
svn path=/trunk/kdepim/; revision=305206
That avoids all of them staying in memory which has a tendency to fill
up all available RAM if you sync larger folders. Doh.
Brought to you as part of the ongoing series:
"George and Till - Making dimap usable at last"
svn path=/trunk/kdepim/; revision=295985
o Enable the expiry settings in the folder properties for imap and dimap
folders.
o Add some folderjob infrastructure to imapjob and cachedimapjob along the
way.
o Fix a few folderstorage crashes waiting to happen.
Only manual expiry of imap/dimap folders is hooked in, but we could just
as well hook the imap and dimap foldermanagers into the autoexpiry on
shutdown thingie. For dimap that should be as safe or unsafe as for maildir
and for imap it's as save or unsafe as deleting a bunch of messages and
immediately closing KMail. Opinions?
This commit is dedicated to the hardest working man in show business,
S. Kulow whose birthday it is today.
Let's give it up for the man:
o/` For he's a jolly good RD, for he's a jolly good RD, for he's a jolly
good RD ... which nobody can't deny .. o|`
CCMAIL: 48189-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=290404
o remove duplicate in KMFolderCachedImap
o use the one from KMFolderImap everywhere
o add const to parameters as we go
Rinse, lather, repeat.
svn path=/trunk/kdepim/; revision=289324
o move a bunch of places from KMMessage to KMMsgBase, we no longer need to
look at the whole message
o if the server supports the uidplus extension, listen when it tells us the
uid of an uploaded message and set the msg uid to that, thereby avoiding
redownload of the mail we just uploaded
Together that speeds up dimap by a factor of 10 to 20, according to trust-
worthy sources.
svn path=/trunk/kdepim/; revision=289295
You don't need getMsg anymore for the UID and LOD can check the size without loading the header.
I updated the online imap folder but dimap should also use the new code.
svn path=/trunk/kdepim/; revision=288206
- We used to give a list of pointers of messages to upload to the server,
which is really bad, since the user could delete one before the job would
get around to upload it. Now it works on serial numbers instead and
there are no more crashes in this area
- We had two QDicts: IMAP UID -> KMail index and index -> UID. This was
not good because the maps would get out of sync and result in rebuilding
way too many times, plus the map from index to UID was not necessary.
Now the redundant map is gone, and a dirty flag was introduced to only
rebuild when necessary. This was one of the more serious reasons we
had dIMAP do 100% cpu time because it ended up in a very time consuming
O(n^2) remap method
- For stability reasons, we need to save the highest UID number we have
downloaded from the server fairly often. We took this seriously and
saved on every message. Another of the reasons it was incredibly slow.
Now it's timed, so there will only be a save a minute
- Don't write a uid cache file when we don't have any info for it
- Delete the uid cache file from the dimap cache directory
- Don't rebuild the remaining uid map all the time
- Fix bug 68587 - delete the relevant folders from the folder tree when
the account is removed
Patch reviewed by Till.
Bo.
svn path=/trunk/kdepim/; revision=276112
signals from being emitted.
This should fix the sent folder count updating bug. If it does not for
you, please reopen.
Patch Ok'ed by Till (Don also agreed that quiet() can be removed).
CCMAIL: 63670-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=260199
#define kernel KMKernel::self()
to
#define kmkernel KMKernel::self()
because 'kernel' was a much to general term. We really shouldn't repeat the mistakes of the X developers.
I noticed this problem when I played around with KImageEffects. kimageeffects.h contains 'kernel' as parameter of some methods and so the compilation had to fail. We won't need KImageEffects in the near future, but at least we are now prepared and a clash with another 'kernel' can't happen anymore.
svn path=/trunk/kdepim/; revision=252621
dded KMMessage::fromByteArray(). Uses less memory (no intermediate QCString built) and fixes the off-by-one error in a central place.
svn path=/trunk/kdepim/; revision=226543