kmail

#include <templateparser.h>

Inherits TQObject.

Public Types

enum  Mode { NewMessage , Reply , ReplyAll , Forward }
 

Public Member Functions

 TemplateParser (KMMessage *amsg, const Mode amode)
 
void setSelection (const TQString &selection)
 
void setAllowDecryption (const bool allowDecryption)
 
virtual void process (KMMessage *aorig_msg, KMFolder *afolder=0, bool append=false)
 
virtual void process (const TQString &tmplName, KMMessage *aorig_msg, KMFolder *afolder=0, bool append=false)
 
virtual void processWithTemplate (const TQString &tmpl)
 
virtual TQString findTemplate ()
 
virtual TQString findCustomTemplate (const TQString &tmpl)
 
virtual TQString pipe (const TQString &cmd, const TQString &buf)
 
virtual TQString getFName (const TQString &str)
 
virtual TQString getLName (const TQString &str)
 

Static Public Attributes

static const int PipeTimeout = 15
 

Protected Slots

void onProcessExited (TDEProcess *proc)
 
void onReceivedStdout (TDEProcess *proc, char *buffer, int buflen)
 
void onReceivedStderr (TDEProcess *proc, char *buffer, int buflen)
 
void onWroteStdin (TDEProcess *proc)
 

Protected Member Functions

TQString messageText (bool allowSelectionOnly)
 
partNode * parsedObjectTree ()
 
void addProcessedBodyToMessage (const TQString &body)
 
bool shouldStripSignature () const
 
int parseQuotes (const TQString &prefix, const TQString &str, TQString &quote) const
 

Protected Attributes

Mode mMode
 
KMFoldermFolder
 
uint mIdentity
 
KMMessagemMsg
 
KMMessagemOrigMsg
 
TQString mSelection
 
bool mAllowDecryption
 
int mPipeRc
 
TQString mPipeOut
 
TQString mPipeErr
 
bool mDebug
 
TQString mQuoteString
 
bool mAppend
 
TQString mTo
 
TQString mCC
 
partNode * mOrigRoot
 

Detailed Description

The TemplateParser transforms a message with a given template.

A template contains text and commands, such as QUOTE or ODATE, which will be replaced with the real values in process().

The message given in the constructor is the message that is being transformed. The message text will be replaced by the processed text of the template, but other properties, such as the attachments or the subject, are preserved.

There are two different kind of commands: Those that work on the message that is to be transformed and those that work on an 'original message'. Those that work on the message that is to be transformed have no special prefix, e.g. 'DATE'. Those that work on the original message have an 'O' prefix, for example 'ODATE'. This means that the DATE command will take the date of the message passed in the constructor, the message which is to be transformed, whereas the ODATE command will take the date of the message that is being passed in process(), the original message.

TODO: What is the usecase of the commands that work on the message to be transformed? In general you only use the commands that work on the original message...

Definition at line 54 of file templateparser.h.

Member Function Documentation

◆ addProcessedBodyToMessage()

void TemplateParser::addProcessedBodyToMessage ( const TQString &  body)
protected

Called by processWithTemplate().

This adds the completely processed body to the message.

In append mode, this will simply append the text to the body.

Otherwise, the content of the old message is deleted and replaced with body. Attachments of the original message are also added back to the new message.

Definition at line 893 of file templateparser.cpp.

◆ findCustomTemplate()

TQString TemplateParser::findCustomTemplate ( const TQString &  tmpl)
virtual

Finds the template with the given name.

This also reads the To and CC address of the template

Returns
the contents of the template

Definition at line 982 of file templateparser.cpp.

◆ findTemplate()

TQString TemplateParser::findTemplate ( )
virtual

This finds the template to use.

Either the one from the folder, identity or finally the global template. This also reads the To and CC address of the template

Returns
the contents of the template

Definition at line 995 of file templateparser.cpp.

◆ messageText()

TQString TemplateParser::messageText ( bool  allowSelectionOnly)
protected

If there was a text selection set in the constructor, that will be returned.

Otherwise, returns the plain text of the original message, as in KMMessage::asPlainText(). The only difference is that this uses the cached object tree from parsedObjectTree()

Parameters
allowSelectionOnlyif false, it will always return the complete mail text

Definition at line 872 of file templateparser.cpp.

◆ parsedObjectTree()

partNode * TemplateParser::parsedObjectTree ( )
protected

Returns the parsed object tree of the original message.

The result is cached in mOrigRoot, therefore calling this multiple times will only parse the tree once.

Definition at line 882 of file templateparser.cpp.

◆ setAllowDecryption()

void TemplateParser::setAllowDecryption ( const bool  allowDecryption)

Sets whether the template parser is allowed to decrypt the original message when needing its message text, for example for the QUOTE command.

If true, it will tell the ObjectTreeParser it uses internally to decrypt the message, and that will possibly show a password request dialog to the user.

The default is false.

Definition at line 69 of file templateparser.cpp.

◆ setSelection()

void TemplateParser::setSelection ( const TQString &  selection)

Sets the selection.

If this is set, only the selection will be added to commands such as QUOTE. Otherwise, the whole message is quoted. If this is not called at all, the whole message is quoted as well. Call this before calling process().

Definition at line 64 of file templateparser.cpp.

◆ shouldStripSignature()

bool TemplateParser::shouldStripSignature ( ) const
protected

Determines whether the signature should be stripped when getting the text of the original message, e.g.

for commands such as QUOTE

Definition at line 74 of file templateparser.cpp.


The documentation for this class was generated from the following files: