|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 #include "nmmessage.h" |
|
19 #include "nmmessageenvelope.h" |
|
20 |
|
21 |
|
22 /*! |
|
23 \class NmMessage |
|
24 \brief Data model for mail message |
|
25 */ |
|
26 |
|
27 /*! |
|
28 Constructor |
|
29 */ |
|
30 NmMessage::NmMessage() |
|
31 { |
|
32 } |
|
33 |
|
34 /*! |
|
35 Constructs message with id \a id, parent id and mailbox id is set to null id |
|
36 */ |
|
37 NmMessage::NmMessage(const NmId &id):NmMessagePart(id) |
|
38 { |
|
39 mEnvelope.setId(id); |
|
40 } |
|
41 |
|
42 /*! |
|
43 Constructs message part with id \a id and with parent id \a parentId, |
|
44 mailbox id is set to null id |
|
45 */ |
|
46 NmMessage::NmMessage(const NmId &id, const NmId &parentId) |
|
47 :NmMessagePart(id, parentId) |
|
48 { |
|
49 mEnvelope.setId(id); |
|
50 } |
|
51 |
|
52 /*! |
|
53 Constructs message with id \a id, with parent id \a parentId and |
|
54 with mailbox id \a mailboxId |
|
55 */ |
|
56 NmMessage::NmMessage(const NmId &id, |
|
57 const NmId &parentId, |
|
58 const NmId &mailboxId) |
|
59 :NmMessagePart(id, parentId, mailboxId) |
|
60 { |
|
61 mEnvelope.setId(id); |
|
62 } |
|
63 |
|
64 /*! |
|
65 Constructs message with meta data |
|
66 */ |
|
67 NmMessage::NmMessage(const NmMessageEnvelope &envelope) |
|
68 { |
|
69 mEnvelope = envelope; |
|
70 // set message id same as meta data id |
|
71 this->setId(envelope.id()); |
|
72 } |
|
73 |
|
74 /*! |
|
75 Copy constructor |
|
76 */ |
|
77 NmMessage::NmMessage(const NmMessagePart& message):NmMessagePart(message) |
|
78 { |
|
79 mEnvelope.setId( message.id() ); |
|
80 } |
|
81 |
|
82 NmMessage::NmMessage(const NmMessage& message):NmMessagePart(message) |
|
83 { |
|
84 mEnvelope.setId( message.id() ); |
|
85 } |
|
86 |
|
87 /*! |
|
88 Assignment operator |
|
89 */ |
|
90 NmMessage &NmMessage::operator=(const NmMessage &message) |
|
91 { |
|
92 if (this != &message) { |
|
93 mEnvelope.setId( message.id() ); |
|
94 } |
|
95 return *this; |
|
96 } |
|
97 |
|
98 /*! |
|
99 Destructor |
|
100 */ |
|
101 NmMessage::~NmMessage() |
|
102 { |
|
103 } |
|
104 |
|
105 /*! |
|
106 returns id of envelope |
|
107 */ |
|
108 NmId NmMessage::id() const |
|
109 { |
|
110 return mEnvelope.id(); |
|
111 } |
|
112 |
|
113 |
|
114 /*! |
|
115 Sets id to envelope |
|
116 */ |
|
117 void NmMessage::setId(const NmId &id) |
|
118 { |
|
119 //NmMessagePart::setId(id); |
|
120 mEnvelope.setId(id); |
|
121 } |
|
122 |
|
123 /*! |
|
124 Returns pointer to plain text body, if plain text body is not found |
|
125 returns null pointer. Ownership of message part object is not transferred. |
|
126 Do not delete returned pointer. |
|
127 */ |
|
128 NmMessagePart *NmMessage::plainTextBodyPart() |
|
129 { |
|
130 NmMessagePart *ret = NULL; |
|
131 ret = findContentPart(NmContentTypeTextPlain); |
|
132 return ret; |
|
133 } |
|
134 |
|
135 /*! |
|
136 Returns pointer to html body, if html body is not found |
|
137 returns null pointer. Ownership of message part object is not transferred. |
|
138 Do not delete returned pointer. |
|
139 */ |
|
140 NmMessagePart *NmMessage::htmlBodyPart() |
|
141 { |
|
142 NmMessagePart *ret = NULL; |
|
143 ret = findContentPart(NmContentTypeTextHtml); |
|
144 return ret; |
|
145 } |
|
146 |
|
147 /*! |
|
148 Sets message meta data. If meta data id is different than null id, messages |
|
149 id is set to \a envelope's id |
|
150 */ |
|
151 void NmMessage::setEnvelope(const NmMessageEnvelope &envelope) |
|
152 { |
|
153 mEnvelope = envelope; |
|
154 if (envelope.id() != 0) { |
|
155 this->setId(envelope.id()); |
|
156 } else { |
|
157 mEnvelope.setId(this->id()); |
|
158 } |
|
159 } |
|
160 |
|
161 /*! |
|
162 Returns reference to message envelope |
|
163 */ |
|
164 NmMessageEnvelope &NmMessage::envelope() |
|
165 { |
|
166 return mEnvelope; |
|
167 } |
|
168 |
|
169 /*! |
|
170 Returns reference to message envelope |
|
171 */ |
|
172 const NmMessageEnvelope &NmMessage::envelope() const |
|
173 { |
|
174 return mEnvelope; |
|
175 } |
|
176 |
|
177 /** |
|
178 * Returns a flat list of message parts that can be handled as attachments. |
|
179 * Excludes message parts that are multipart and parts that are considered |
|
180 * plain text or html body. |
|
181 * |
|
182 * @param flat list of attachments to be filled |
|
183 */ |
|
184 void NmMessage::attachmentList(QList<NmMessagePart*> &parts) |
|
185 { |
|
186 parts.clear(); |
|
187 appendAttachments(parts); |
|
188 |
|
189 // special case, if single part content type is not given, |
|
190 // default type is text/plain |
|
191 if ( parts.count() == 1 && parts.at(0)->contentType().length() == 0) { |
|
192 parts.clear(); |
|
193 } |
|
194 else { |
|
195 // find plain text body part from the list |
|
196 NmMessagePart* txtPart = findContentPart(NmContentTypeTextPlain); |
|
197 if ( txtPart ) { |
|
198 // remove plain text body part from attachment list |
|
199 for ( int ii = parts.count() - 1; ii >= 0; --ii ) { |
|
200 if ( parts.at(ii)->id() == txtPart->id() ) { |
|
201 parts.removeAt(ii); |
|
202 break; |
|
203 } |
|
204 } |
|
205 } |
|
206 // find html body part from the list |
|
207 NmMessagePart* htmlPart = findContentPart(NmContentTypeTextHtml); |
|
208 if ( htmlPart ) { |
|
209 // remove html body part from attachment list |
|
210 for ( int ii = parts.count() - 1; ii >= 0; --ii ) { |
|
211 if ( parts.at(ii)->id() == htmlPart->id() ) { |
|
212 parts.removeAt(ii); |
|
213 break; |
|
214 } |
|
215 } |
|
216 } |
|
217 } |
|
218 } |