make folder readonly if locking failed.
The old code was broken because isReadOnly would return true if the folder
wasn't open (so no locking was attempted yet). The new code doesn't do that anymore.
svn path=/trunk/kdepim/; revision=320493
* When the user requests compaction of a folder from the RMB, always compact
(even if !needsCompaction), and ensure the final statusbar message shows up
(due to kmheaders polluting it, I had to save/restore it in 2 places).
* When compacting outbox after sending mails, don't tell the user.
This made me stumble upon strange code in kmsender.cpp: if count<0, expunge.
Ingo and I agree that this was meant to be if count==0, expunge.
svn path=/trunk/kdepim/; revision=319419
mbox and maildir folders in the background.
This fixes compaction not happening in kontact at all, and not happening
either for cached imap folders in kmail. It also makes kmail exit faster.
svn path=/trunk/kdepim/; revision=314475
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
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
This is done by using a stricter message seperator regular expression.
Additionally to this bug, "From " escaping was defunct which is a pretty grave bug because it can easily lead to corrupt mboxes if the index of an mbox has to be regenerated.
Both patches by Andreas Pfaller.
svn path=/trunk/kdepim/; revision=283979
/usr/local/kde/include/knotifyclient.h:138: error: conflicting types for `None'
kmglobal.h:27: error: previous declaration as `LockType None'
Both enums were in the global namespace (huh).
Fixed by renaming None to lock_none (to look like the others there)
svn path=/trunk/kdepim/; revision=276446
compaction of notoriously non-compactible mboxes.
Don't reset the needCompacting flag until the compaction has actually
suceeded.
CCMAIL: 39290-done@bugs.kde.org
CCMAIL: 43773-done@bugs.kde.org
One cookie my way, please.
svn path=/trunk/kdepim/; revision=275119
active readerwindow to ask that for the attachmentstrategy but pass it
along with the folder job, so it is available when the mime structure
comes in with load on demand. Remove unused KMKernel::activeReaderWindow
which doesn't work in kontact anyhow.
CCMAIL: 67644-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=268877
CCMAIL: 66373-done@bugs.kde.org, kmail@kde.org
The old code did s/\n>From/\nFrom/g (and vice versa). Correct would be
s/(\n|^)(>*)>From /\1\2From /g.
This is what this change implements, excpet that it ignores From or >From
that start the string (just as the old code did). That's probably necessary
for now, since messages from mbox folders still contain the From spearator
line in msg->asString()...
Problem now is old mbox'es: KMail buggyly left ^>From_ alone in escaping
(leading to #66373) and ignored ^>>From_ in unescaping. The latter isn't
much of a problem, but the fact that ^FromFrom was also escaped, is. We
won't unescape that one anymore. But that's life, I guess.
svn path=/trunk/kdepim/; revision=263297
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
-> Porting all of KMMsgList to uint, plus a few callers.
Also remove the FooInherited #defines and all KMMsgList virtuals (why virtual methods in a QMemArray<>-derived and never futher derived class?
svn path=/trunk/kdepim/; revision=258280
- Use KMFolderMbox::unescapeFrom and KMFolder::crlf2lf after reading a message from an mbox file.
- Simplify readMsg by making use of getDwString. This also reduces some madness in readMsg where we first put the message into a QCString and then (deep)copied it to a DwString.
svn path=/trunk/kdepim/; revision=256250
command up to the target folder's msgAdded signals and ticking off each
serial number as it comes in. To make that possible, use the metaDataMap
for imap folders to restore serial numbers after the move (along with
status). Also connect to the folderCompleted(bool) signal of imap folders
to make sure we notice if not all messages make it to the other side.
Connect kmheaders to the abortRequested signal and make sure cancelling
moves behaves somewhat more gracefully and restores the state of messages
remaining in the folder, making them selectable and setting their transfer
status to false so they can be downloaded or moved again.
svn path=/trunk/kdepim/; revision=252676
#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
- create new imap account
- kernel does cleanupImapFolders
- which creates the account folder and sets it to noContent
- it then closes the folder
- close in kmfoldermbox calls unlock
- that does assert(stream), there is no stream, because there is no content
- BOOM
svn path=/trunk/kdepim/; revision=240056
comment on kde-cvs to this commit a while back. Filenames should always use
this method rather than local8bit(), but atm it doesn't really matter (hint:
look at the static method's implementation ;)
svn path=/trunk/kdepim/; revision=239207
Especially protocol() == "imap". Note that using ssl completely breaks those
checks then as the protocol is then "imaps". Also the string compares
are suboptimal there - use folderType() == KMFolderTypeSomeType.
svn path=/trunk/kdepim/; revision=238868
don't overwrite the symlink, but overwrite the target it points to
(the real mbox) with the compacted file.
CCMAIL: 60834-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=238668
1) Remove the limitation that a message can have only one status at a time.
2) Implement watch/ignore thread via message status flags.
ad 1:
- Message status is now kept as a bitfield, which means a message can now be
for example replied and forwarded as well as important at the same time.
- To keep the index format backward compatible and make the transition
painless, I've added a new index entry and added code to transfer the old
into the new format. That means that upgrading users should not notice
anything.
- I've tried to keep as much behavior as possible unchanged with regard to
what flag disables what other flag etc. There are two groups of flags:
read/unread/new/old influence each other, which means a message cannot be
new and read at the same time, for example, while the second group, namely
important, sent, queued, replied, and forwarded are toggled individually.
- Toggling a thread sets the messages status to the inverse of that of the
parent, which means that if you have a thread with some mails marked as
important and some not, the status is set according to that of the parent.
- Status is now kept when moving mails between folders in the same imap
account as well as between imap accounts.
ad 2:
- Watch and ignore are mutually exclusive, which means ignoring a thread
unsets its watched flag and the other way around.
- When sorting by status watched threads are at the top, ignored at the
bottom.
- Watch and ignore propagate via threading, which means that if a message
is threaded below a watched one, it becomes watched. Same for ignore.
- Moving a single mail out of a watched thread results in a new watched
thread of size 1 :)
- Similarly watch and ignore are possible on individual mail (threads
to be).
- Watching a thread does not currently mark new mails as important, nor
does ignoring delete new mails in the thread. These are possible
extensions, though, if we think them sensible.
svn path=/trunk/kdepim/; revision=235595
The problem was that the index generation code assumed that the colon after the header field name is followed by a space. Although this is usually the case the space is not required by RFC 2822 (it's not even mentioned by RFC 2822). So I removed the code that checks for the space and made KMail interpret everything after the colon as part of the header field body. Of course this leads to a superfluous leading space. I remove this with QCString::stripWhiteSpace() which of course removes all leading and trailing whitespace. I don't think that this is a problem.
Furthermore I moved the code which looks at the Message-Id, In-Reply-To and References headers to make sure that this code works on the complete header field body and not only at the first line. Especially the References header is very often folded.
svn path=/trunk/kdepim/; revision=227878
Ouch. fcntl interprets the third parameter as struct flock * if it's called with the F_SETLK command. So much for 'function overloading' with plain C.
svn path=/trunk/kdepim/; revision=223508