Backport fix google translator
[kdepim.git] / messagecomposer / DESIGN
blob6b299258c9ab44cdeb4e0f26ba3ae586482e882d
1 How the composer works:
2 --------------------------
3 Input data:
5 MessagePart classes represent the data of messages in an abstract way that is very close to
6 the way a GUI composer would see the data.  Thus, the composer takes the folowing input data:
7 * GlobalPart:
8   - The charsets the user prefers.
9   - Whether 8bit encoding is allowed.
10 * InfoPart:
11   - Mode: compose the messages to be sent, or to be saved somewhere locally.
12   - Sender and recipients.
13   - The transport to use.
14 * TextPart:
15   - The plain text and, optionally, the HTML text from an editor.
16 * Zero or more AttachmentParts:
17   - The data and details (such as MIME type, file name) of an attachment.
19 --------------------------
20 Output data:
22 The composer outputs a single KMime::Message containing the assembled message.
24 --------------------------
25 Logic:
26 (NOTE: Based on messagecomposer.cpp in KMail. This does not apply. This is
27 TODO in the crypto composer.)
29 Definitions:
30 * Early attachment -- An attachment that has the same signing / crypto settings as the main
31                       text part, and is joined with the text part before any signing or
32                       encryption.
33 * Late attachment  -- An attachment that has different signing / crypto settings from the main
34                       text part, and is encrypted, signed, and added only after the main part
35                       has been signed and encrypted.
37 Algorithm:
38 1) Take the text content (plain or plain+HTML) and the early attachments, and compose them
39    into contentBeforeCrypto.
40 2) For each recipient of the message, encrypt contentBeforeCrypto, encrypt and add the late
41    attachments, save the recipients address (so that we know whom to send this message to),
42    and save this as one of the final messages.
44 --------------------------