This should fix a bug with ad hoc filters crashing when they move a message
to a different folder.
And also fix the bug/limitation that the move to folder action has to
come last in the list of filter actions for a filter.
This commit doesn't really use the action scheduler, code to use the
action scheduler in kmheaders and kmcommands is commented out.
I've been testing this code for a few weeks now. The changes to the
assignment operators in the kmmessage and kmmsgbase classes are the
changes I'm most concerned about here.
svn path=/trunk/kdepim/; revision=264912
folders tempOpened by filters are closed prematurely. They are now only
closed when there is no more filter using the filter manager.
svn path=/trunk/kdepim/; revision=262221
tree that is not an attachment, such as an html part. Ask whether that was
a mistake or not instead.
Carsten, ok with you?
CCMAIL: 64388-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=255926
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
command needed to know about the headers to figure out what message to
select once the move is done, but that can and should imho be done in the
headers themselves. There was a ToDo to that effect in there, so I guess
the original author agrees. :)
svn path=/trunk/kdepim/; revision=249824
(I still have to do this for the direct click on the attachment)
- fix saving of one attachment (filename was not displayed because the mimeheader was missing)
save all attachments works as expected but doesn't update the parts in the readerwin, I still need to fix this
svn path=/trunk/kdepim/; revision=249206
o make imapjobs refcount the folders they operate on via open/close instead
of relying on the account to keep track of open folders and close them
in displayProgress()
o keep not only the destination but also the source folder in each imapjob
so they can be closed if need be
o remove tempOpenFolder() itself and all its uses
svn path=/trunk/kdepim/; revision=244918
- Delete messages during transfer
- Minor cleanups
- Do not display headers when you skip over messages
CCMAIL: 62943-done@bugs.kde.org
svn path=/trunk/kdepim/; revision=243659
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
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
of an imap folder while move/delete operations out of it are going on, as
far as I can see. This means a bunch of open()/close() calls I added while
hunting trying to fix them are probably unnessecary. Have to look at the
CopyCommand as well in that regard.
svn path=/trunk/kdepim/; revision=229100
o Add bool deletesItself to KMCommand to remove the need to keep job data
globally in kmkernel.
o Don't suck all messages into memory and then dump into KIO, but handle
them individually, downloading each if necessary first and then appending
it. Improves memory usage brutally. ;)
o Make it work safely in the background so changing the current message or
folder doesn't crash while a save is going, on by using sernums instead of
KMMsgBase pointers.
This relies on changes to kio in head committed today, which make async
putting of data and reporting of sent data in the progress dialog possible.
svn path=/trunk/kdepim/; revision=227839
folder A and 300 messages to folder B instead of clicking undo 500 times you
click undo twice. Basically it's action instead of message based now.
Also, David could you also move kmundostack.{h,cpp} to undostack.{h,cpp} ? :)
CCMAIL: David Faure <faure@kde.org>
svn path=/trunk/kdepim/; revision=227137
- Extract bPopFilter clause into internal processPop() method.
- Extract ad-hoc filter application from ::process(). This was really silly. Instead
of writing a short overloaded ::process( KMMessage*, KMFilter* ) method,
it was crammed into the normal ::process() that iterates over the whole
list of filters. This led to two bugs:
1. The filter was only executed if it was in the filter manager's list.
This makes it impossible to write code like
KMFilter * filter = new FooFilter();
// ...
kernel->filterMgr()->process( msg, filter );
delete filter;
2. The filter was only executed if it was marked as
"execute on manual filtering" by the user. But if the user checks the
box that adds the filter to the Message->Apply Filter submenu, she
probably wants to _not_ have the filter executed on manual filtering.
(Example: report as spam action (<exec command> "spamassassin -r"))
svn path=/trunk/kdepim/; revision=223784
has it's own cursor stack.
I added kcursorsaver, that makes sure that the cursor is restored when the object
gets out of scope (just as KConfigGroupSaver)
Now kmkernel doesn't has to cope with cursors anymore
svn path=/trunk/kdepim/; revision=221747
For some reason fwdMsg->mMsg->Headers().ContentType().Boundary().c_str() returns a null string after the first call. Another non-obvious mimelib peculiarity. Furthermore the closing mime boundary was missing.
svn path=/trunk/kdepim/; revision=219404