|
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: Implementation of the MNcsEmailAddressObject |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 // CLASS HEADER |
|
20 #include "emailtrace.h" |
|
21 #include "cesmrncsemailaddressobject.h" |
|
22 |
|
23 // Unnamed namespace for local definitions |
|
24 namespace{ |
|
25 |
|
26 // Extra space needed when generating display name and address |
|
27 const TInt KExtraSpace = 3; |
|
28 _LIT(KEmptySpace, " "); |
|
29 _LIT(KDotAndEmptySpace, ", "); |
|
30 |
|
31 }//namespace |
|
32 |
|
33 // ======== MEMBER FUNCTIONS ======== |
|
34 |
|
35 // --------------------------------------------------------------------------- |
|
36 // CESMRNcsEmailAddressObject::NewL |
|
37 // --------------------------------------------------------------------------- |
|
38 // |
|
39 CESMRNcsEmailAddressObject* CESMRNcsEmailAddressObject::NewL( TBool aUserAdded ) |
|
40 { |
|
41 FUNC_LOG; |
|
42 CESMRNcsEmailAddressObject* self = new( ELeave ) CESMRNcsEmailAddressObject( aUserAdded ); |
|
43 CleanupStack::PushL( self ); |
|
44 self->ConstructL(); |
|
45 CleanupStack::Pop( self ); |
|
46 return self; |
|
47 } |
|
48 |
|
49 // --------------------------------------------------------------------------- |
|
50 // CESMRNcsEmailAddressObject::NewL |
|
51 // --------------------------------------------------------------------------- |
|
52 // |
|
53 CESMRNcsEmailAddressObject* CESMRNcsEmailAddressObject::NewL( |
|
54 const CESMRNcsEmailAddressObject& aAddress ) |
|
55 { |
|
56 FUNC_LOG; |
|
57 CESMRNcsEmailAddressObject* self = new( ELeave ) CESMRNcsEmailAddressObject( ETrue ); |
|
58 CleanupStack::PushL( self ); |
|
59 self->ConstructL( aAddress ); |
|
60 CleanupStack::Pop( self ); |
|
61 return self; |
|
62 } |
|
63 |
|
64 // --------------------------------------------------------------------------- |
|
65 // CESMRNcsEmailAddressObject::NewL |
|
66 // --------------------------------------------------------------------------- |
|
67 // |
|
68 CESMRNcsEmailAddressObject* CESMRNcsEmailAddressObject::NewL( |
|
69 const TDesC& aDisplayName, |
|
70 const TDesC& aEmailAddress ) |
|
71 { |
|
72 FUNC_LOG; |
|
73 CESMRNcsEmailAddressObject* self = new( ELeave ) CESMRNcsEmailAddressObject( ETrue ); |
|
74 CleanupStack::PushL( self ); |
|
75 self->ConstructL( aDisplayName, aEmailAddress ); |
|
76 CleanupStack::Pop( self ); |
|
77 return self; |
|
78 } |
|
79 |
|
80 // --------------------------------------------------------------------------- |
|
81 // CESMRNcsEmailAddressObject::~CESMRNcsEmailAddressObject |
|
82 // --------------------------------------------------------------------------- |
|
83 // |
|
84 CESMRNcsEmailAddressObject::~CESMRNcsEmailAddressObject() |
|
85 { |
|
86 FUNC_LOG; |
|
87 delete iEmailAddress; |
|
88 delete iDisplayName; |
|
89 delete iFormattedAddress; |
|
90 } |
|
91 |
|
92 // --------------------------------------------------------------------------- |
|
93 // CESMRNcsEmailAddressObject::CESMRNcsEmailAddressObject |
|
94 // --------------------------------------------------------------------------- |
|
95 // |
|
96 CESMRNcsEmailAddressObject::CESMRNcsEmailAddressObject( TBool aUserAdded ) |
|
97 : iDirtyFlag( ETrue ), iUserAdded( aUserAdded) |
|
98 { |
|
99 FUNC_LOG; |
|
100 //do nothing |
|
101 } |
|
102 |
|
103 // --------------------------------------------------------------------------- |
|
104 // CESMRNcsEmailAddressObject::NewL |
|
105 // --------------------------------------------------------------------------- |
|
106 // |
|
107 void CESMRNcsEmailAddressObject::ConstructL() |
|
108 { |
|
109 FUNC_LOG; |
|
110 iEmailAddress = HBufC::NewL( 0 ); |
|
111 iDisplayName = HBufC::NewL( 0 ); |
|
112 iFormattedAddress = HBufC::NewL( 0 ); |
|
113 } |
|
114 |
|
115 // --------------------------------------------------------------------------- |
|
116 // CESMRNcsEmailAddressObject::ConstructL |
|
117 // --------------------------------------------------------------------------- |
|
118 // |
|
119 void CESMRNcsEmailAddressObject::ConstructL( |
|
120 const CESMRNcsEmailAddressObject& aAddress ) |
|
121 { |
|
122 FUNC_LOG; |
|
123 ConstructL( aAddress.DisplayName(), aAddress.EmailAddress() ); |
|
124 } |
|
125 |
|
126 // --------------------------------------------------------------------------- |
|
127 // CESMRNcsEmailAddressObject::ConstructL |
|
128 // --------------------------------------------------------------------------- |
|
129 // |
|
130 void CESMRNcsEmailAddressObject::ConstructL( |
|
131 const TDesC& aDisplayName, |
|
132 const TDesC& aEmailAddress ) |
|
133 { |
|
134 FUNC_LOG; |
|
135 iEmailAddress = aEmailAddress.AllocL(); |
|
136 iDisplayName = aDisplayName.AllocL(); |
|
137 iFormattedAddress = HBufC::NewL( 0 ); |
|
138 } |
|
139 |
|
140 // --------------------------------------------------------------------------- |
|
141 // CESMRNcsEmailAddressObject::SetEmailAddressL |
|
142 // --------------------------------------------------------------------------- |
|
143 // |
|
144 void CESMRNcsEmailAddressObject::SetEmailAddressL( const TDesC& aEmailAddress ) |
|
145 { |
|
146 FUNC_LOG; |
|
147 HBufC* buf = aEmailAddress.AllocL(); |
|
148 delete iEmailAddress; |
|
149 iEmailAddress = buf; |
|
150 |
|
151 TPtr ptr = iEmailAddress->Des(); |
|
152 ptr.Trim(); |
|
153 |
|
154 iDirtyFlag = ETrue; |
|
155 } |
|
156 |
|
157 // --------------------------------------------------------------------------- |
|
158 // CESMRNcsEmailAddressObject::SetDisplayNameL |
|
159 // --------------------------------------------------------------------------- |
|
160 // |
|
161 void CESMRNcsEmailAddressObject::SetDisplayNameL( |
|
162 const TDesC& aGivenName, |
|
163 const TDesC& aFamilyName ) |
|
164 { |
|
165 FUNC_LOG; |
|
166 TInt len = aGivenName.Length() + aFamilyName.Length() + KExtraSpace; |
|
167 delete iDisplayName; |
|
168 iDisplayName = NULL; |
|
169 iDisplayName = HBufC::NewL( len ); |
|
170 TPtr ptr = iDisplayName->Des(); |
|
171 ptr.Append( aFamilyName ); |
|
172 ptr.Append( KDotAndEmptySpace ); |
|
173 ptr.Append( aGivenName ); |
|
174 |
|
175 iDirtyFlag = ETrue; |
|
176 } |
|
177 |
|
178 // --------------------------------------------------------------------------- |
|
179 // CESMRNcsEmailAddressObject::SetDisplayNameL |
|
180 // --------------------------------------------------------------------------- |
|
181 // |
|
182 void CESMRNcsEmailAddressObject::SetDisplayNameL( const TDesC& aName ) |
|
183 { |
|
184 FUNC_LOG; |
|
185 HBufC* buf = aName.AllocL(); |
|
186 delete iDisplayName; |
|
187 iDisplayName = buf; |
|
188 |
|
189 TPtr ptr = iEmailAddress->Des(); |
|
190 ptr.Trim(); |
|
191 |
|
192 iDirtyFlag = ETrue; |
|
193 } |
|
194 |
|
195 // --------------------------------------------------------------------------- |
|
196 // CESMRNcsEmailAddressObject::FormattedAddressL |
|
197 // --------------------------------------------------------------------------- |
|
198 // |
|
199 const TDesC& CESMRNcsEmailAddressObject::FormattedAddressL() |
|
200 { |
|
201 FUNC_LOG; |
|
202 if( iDirtyFlag ) |
|
203 { |
|
204 GenerateFormattedAddressL(); //codescanner::leave |
|
205 iDirtyFlag = EFalse; |
|
206 } |
|
207 |
|
208 return *iFormattedAddress; |
|
209 } |
|
210 |
|
211 // --------------------------------------------------------------------------- |
|
212 // CESMRNcsEmailAddressObject::IsIdnaCompliantAddress |
|
213 // --------------------------------------------------------------------------- |
|
214 // |
|
215 TBool CESMRNcsEmailAddressObject::IsIdnaCompliantAddress() |
|
216 { |
|
217 FUNC_LOG; |
|
218 return EFalse; |
|
219 } |
|
220 |
|
221 // --------------------------------------------------------------------------- |
|
222 // CESMRNcsEmailAddressObject::GenerateFormattedAddressL |
|
223 // --------------------------------------------------------------------------- |
|
224 // |
|
225 void CESMRNcsEmailAddressObject::GenerateFormattedAddressL() |
|
226 { |
|
227 FUNC_LOG; |
|
228 TInt length = 0; |
|
229 |
|
230 TInt dispNameLength = iDisplayName->Length(); |
|
231 TInt emailLength = iEmailAddress->Length(); |
|
232 |
|
233 if( dispNameLength > 0 ) |
|
234 { |
|
235 length += dispNameLength; |
|
236 length += KExtraSpace; // for the delimeters -> |
|
237 // format is "Forname Surname <Forname.Surname(at)dot.com>" |
|
238 } |
|
239 |
|
240 length += emailLength; |
|
241 |
|
242 HBufC* buf = HBufC::NewLC( length ); |
|
243 TPtr ptr = buf->Des(); |
|
244 |
|
245 if( dispNameLength > 0 ) |
|
246 { |
|
247 ptr.Append( *iDisplayName ); |
|
248 ptr.Append( KEmptySpace ); // add one white space |
|
249 _LIT(KLeft, "<"); |
|
250 ptr.Append( KLeft ); |
|
251 } |
|
252 |
|
253 ptr.Append( *iEmailAddress ); |
|
254 |
|
255 if( dispNameLength > 0 ) |
|
256 { |
|
257 _LIT(KRight, ">"); |
|
258 ptr.Append( KRight ); |
|
259 } |
|
260 |
|
261 delete iFormattedAddress; |
|
262 iFormattedAddress = buf; |
|
263 |
|
264 CleanupStack::Pop( buf ); |
|
265 } |
|
266 |
|
267 // End of file |
|
268 |