|
1 /* |
|
2 * Copyright (c) 2002-2004 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 * data accessor class for imps fields. |
|
16 * |
|
17 */ |
|
18 |
|
19 // INCLUDE FILES |
|
20 #include <e32std.h> |
|
21 #include "impsfields.h" |
|
22 #include "impsconst.h" |
|
23 #include "impskey.h" |
|
24 #include "impserrors.h" |
|
25 #include "impsutils.h" |
|
26 #include "impstdataaccessor.h" |
|
27 #include "impsdatautils.h" |
|
28 |
|
29 // ================= MEMBER FUNCTIONS ======================= |
|
30 |
|
31 // --------------------------------------------------------- |
|
32 // TImpsDataAccessor::TImpsDataAccessor |
|
33 // --------------------------------------------------------- |
|
34 // |
|
35 EXPORT_C TImpsDataAccessor::TImpsDataAccessor() |
|
36 { |
|
37 iImpsFields = NULL; |
|
38 } |
|
39 // --------------------------------------------------------- |
|
40 // TImpsDataAccessor::TImpsDataAccessor |
|
41 // --------------------------------------------------------- |
|
42 // |
|
43 EXPORT_C TImpsDataAccessor::TImpsDataAccessor(CImpsFields* aImpsFields) |
|
44 { |
|
45 iImpsFields = aImpsFields; |
|
46 } |
|
47 // --------------------------------------------------------- |
|
48 // TImpsDataAccessor::SetImpsFields |
|
49 // --------------------------------------------------------- |
|
50 // |
|
51 EXPORT_C void TImpsDataAccessor::SetImpsFields( CImpsFields* aImpsFields ) |
|
52 { |
|
53 iImpsFields = aImpsFields; |
|
54 } |
|
55 |
|
56 // --------------------------------------------------------- |
|
57 // TImpsDataAccessor::GetImpsFields |
|
58 // --------------------------------------------------------- |
|
59 // |
|
60 EXPORT_C CImpsFields* TImpsDataAccessor::GetImpsFields( ) const |
|
61 { |
|
62 return iImpsFields; |
|
63 } |
|
64 |
|
65 // --------------------------------------------------------- |
|
66 // TImpsDataAccessor::~TImpsDataAccessor() |
|
67 // --------------------------------------------------------- |
|
68 // |
|
69 EXPORT_C TImpsDataAccessor::~TImpsDataAccessor() |
|
70 { |
|
71 } |
|
72 |
|
73 // --------------------------------------------------------- |
|
74 // TImpsDataAccessor::NewKeyL |
|
75 // --------------------------------------------------------- |
|
76 // |
|
77 EXPORT_C MImpsKey* TImpsDataAccessor::NewKeyL() |
|
78 { |
|
79 CImpsKey* key = CImpsKey::NewL(); |
|
80 return key; |
|
81 } |
|
82 |
|
83 // --------------------------------------------------------- |
|
84 // TImpsDataAccessor::StoreDescL |
|
85 // mutator for symbian descriptor value |
|
86 // --------------------------------------------------------- |
|
87 // |
|
88 EXPORT_C void TImpsDataAccessor::StoreDescL( MImpsKey* aKey, TPtrC aValue ) |
|
89 { |
|
90 iData.iType = EStringType; |
|
91 iData.iValue.Set( aValue ); |
|
92 |
|
93 DoStoreL( static_cast<CImpsKey*>( aKey ) ); |
|
94 } |
|
95 |
|
96 // --------------------------------------------------------- |
|
97 // TImpsDataAccessor::StoreDescL8 |
|
98 // mutator for symbian 8-bit descriptor value |
|
99 // --------------------------------------------------------- |
|
100 // |
|
101 EXPORT_C void TImpsDataAccessor::StoreDesc8L( MImpsKey* aKey, TPtrC8 aValue) |
|
102 { |
|
103 iData.iType = EString8Type; |
|
104 iData.iValue8.Set( aValue ); |
|
105 |
|
106 DoStoreL( static_cast<CImpsKey*>( aKey ) ); |
|
107 } |
|
108 |
|
109 // --------------------------------------------------------- |
|
110 // TImpsDataAccessor::StoreInteger |
|
111 // mutator for symbian integer value |
|
112 // --------------------------------------------------------- |
|
113 // |
|
114 EXPORT_C void TImpsDataAccessor::StoreIntegerL( MImpsKey* aKey, TInt aValue ) |
|
115 { |
|
116 iData.iType = EIntegerType; |
|
117 iData.iValueInt = aValue; |
|
118 |
|
119 DoStoreL( static_cast<CImpsKey*>( aKey ) ); |
|
120 } |
|
121 |
|
122 // --------------------------------------------------------- |
|
123 // TImpsDataAccessor::StoreBooleanL |
|
124 // mutator for symbian boolean value |
|
125 // --------------------------------------------------------- |
|
126 // |
|
127 EXPORT_C void TImpsDataAccessor::StoreBooleanL( MImpsKey* aKey, TBool aValue ) |
|
128 { |
|
129 iData.iType = EBooleanType; |
|
130 iData.iValueBool = aValue; |
|
131 |
|
132 DoStoreL( static_cast<CImpsKey*>( aKey ) ); |
|
133 } |
|
134 |
|
135 // --------------------------------------------------------- |
|
136 // TImpsDataAccessor::StoreEmptyL |
|
137 // mutator for symbian empty value |
|
138 // --------------------------------------------------------- |
|
139 // |
|
140 EXPORT_C void TImpsDataAccessor::StoreEmptyL( MImpsKey* aKey) |
|
141 { |
|
142 iData.iType = EEmptyType; |
|
143 |
|
144 DoStoreL( static_cast<CImpsKey*>( aKey ) ); |
|
145 } |
|
146 // --------------------------------------------------------- |
|
147 // TImpsDataAccessor::StoreExtL |
|
148 // mutator for extension attribute |
|
149 // --------------------------------------------------------- |
|
150 // |
|
151 EXPORT_C void TImpsDataAccessor::StoreExtL( MImpsKey* /*aKey*/, |
|
152 TPtrC8 /*aName*/, |
|
153 TPtrC8 /*aValue*/) |
|
154 { |
|
155 } |
|
156 //---------------------------------------------------------- |
|
157 // TImpsDataAccessor::RestoreDescL |
|
158 // accessor for symbian descriptor value |
|
159 // --------------------------------------------------------- |
|
160 // |
|
161 |
|
162 EXPORT_C TBool TImpsDataAccessor::RestoreDescL( MImpsKey* aKey, TDesC*& aDes) |
|
163 { |
|
164 iData.iType = EStringType; |
|
165 |
|
166 TBool ret = DoRestoreL( static_cast<CImpsKey*>( aKey ) ); |
|
167 if( ret ) |
|
168 { |
|
169 if( iData.iValuePointer ) |
|
170 { |
|
171 aDes = iData.iValuePointer; |
|
172 } |
|
173 else |
|
174 { |
|
175 aDes = (TDesC*)&KNullDesC; |
|
176 } |
|
177 |
|
178 } |
|
179 return ret; |
|
180 } |
|
181 |
|
182 //---------------------------------------------------------- |
|
183 // TImpsDataAccessor::RestoreDesc8L |
|
184 // accessor for symbian 8-bit descriptor value |
|
185 // --------------------------------------------------------- |
|
186 // |
|
187 |
|
188 EXPORT_C TBool TImpsDataAccessor::RestoreDesc8L( MImpsKey* aKey, |
|
189 TDesC8*& aDes ) |
|
190 { |
|
191 iData.iType = EString8Type; |
|
192 |
|
193 TBool ret = DoRestoreL( static_cast<CImpsKey*>( aKey ) ); |
|
194 if( ret ) |
|
195 { |
|
196 if( iData.iValuePointer8 ) |
|
197 { |
|
198 aDes = iData.iValuePointer8; |
|
199 } |
|
200 else |
|
201 { |
|
202 aDes = (TDesC8*)&KNullDesC8; |
|
203 } |
|
204 |
|
205 } |
|
206 return ret; |
|
207 } |
|
208 |
|
209 //---------------------------------------------------------- |
|
210 // TImpsDataAccessor::RestoreIntegerL |
|
211 // accessor for integer value |
|
212 // (covers also boolean and enum types |
|
213 // --------------------------------------------------------- |
|
214 // |
|
215 |
|
216 EXPORT_C TBool TImpsDataAccessor::RestoreIntegerL( MImpsKey* aKey, TInt& aInt ) |
|
217 { |
|
218 iData.iType = EIntegerType; |
|
219 |
|
220 TBool ret = DoRestoreL( static_cast<CImpsKey*>( aKey ) ); |
|
221 if( ret ) |
|
222 aInt = iData.iValueInt; |
|
223 return ret; |
|
224 } |
|
225 |
|
226 //---------------------------------------------------------- |
|
227 // TImpsDataAccessor::RestoreBooleanL |
|
228 // accessor for integer value |
|
229 // (covers also boolean and enum types |
|
230 // --------------------------------------------------------- |
|
231 // |
|
232 |
|
233 EXPORT_C TBool TImpsDataAccessor::RestoreBooleanL( MImpsKey* aKey, |
|
234 TBool& aBool ) |
|
235 { |
|
236 iData.iType = EBooleanType; |
|
237 |
|
238 TBool ret = DoRestoreL( static_cast<CImpsKey*>( aKey ) ); |
|
239 if( ret ) |
|
240 aBool = iData.iValueBool; |
|
241 return ret; |
|
242 } |
|
243 |
|
244 //---------------------------------------------------------- |
|
245 // TImpsDataAccessor::RestoreEmptyL |
|
246 // accessor for integer value |
|
247 // (covers also boolean and enum types |
|
248 // --------------------------------------------------------- |
|
249 // |
|
250 EXPORT_C TBool TImpsDataAccessor::RestoreEmptyL( MImpsKey* aKey ) |
|
251 { |
|
252 iData.iType = EEmptyType; |
|
253 |
|
254 return DoRestoreL( static_cast<CImpsKey*>( aKey ) ); |
|
255 } |
|
256 |
|
257 //---------------------------------------------------------- |
|
258 // TImpsDataAccessor::RestoreDesc8L |
|
259 // accessor for symbian 8-bit descriptor value |
|
260 // --------------------------------------------------------- |
|
261 // |
|
262 EXPORT_C TBool TImpsDataAccessor::RestoreExtL( MImpsKey* /* aKey */, |
|
263 TDesC8*& /*aName*/, |
|
264 TDesC8*& /*aValue*/) |
|
265 { |
|
266 return EFalse; |
|
267 } |
|
268 |
|
269 // --------------------------------------------------------- |
|
270 // TImpsDataAccessor::KeyTypeL |
|
271 // method returns type of related to given key |
|
272 // --------------------------------------------------------- |
|
273 // |
|
274 EXPORT_C TImpsDataType TImpsDataAccessor::KeyTypeL( MImpsKey* aKey ) |
|
275 { |
|
276 |
|
277 // Just search the last element type ( or ask from data storage?) |
|
278 |
|
279 TInt eCount = aKey->Count(); |
|
280 if ( !eCount ) |
|
281 { |
|
282 User::Leave( KErrArgument ); |
|
283 } |
|
284 |
|
285 TImpsDataType dataType(EImpsDataTypeNotSupported); |
|
286 TImpsKeyType keyType; |
|
287 TInt myVal = aKey->GetElementL( eCount - 1, keyType ); |
|
288 TInt myElem = GET_ENUM( myVal ); |
|
289 if( keyType == EImpsKeyTypePre ) |
|
290 { |
|
291 switch ( myElem ) |
|
292 { |
|
293 case EImpsKeyPRPresenceSubList: |
|
294 case EImpsKeyPRPresenceValue: |
|
295 case EImpsKeyContentType: |
|
296 // CSP 1.2 |
|
297 case EImpsKeyPRText: |
|
298 |
|
299 dataType = EImpsDataTypeDesc; |
|
300 break; |
|
301 |
|
302 // added |
|
303 case EImpsKeyPRDevManufacturer: |
|
304 case EImpsKeyPRClientProducer: |
|
305 case EImpsKeyPRModel: |
|
306 case EImpsKeyPRClientVersion: |
|
307 case EImpsKeyPRLanguage: |
|
308 case EImpsKeyPRZone: |
|
309 case EImpsKeyPRLongitude: |
|
310 case EImpsKeyPRLatitude: |
|
311 case EImpsKeyPRCountry: //ENUM |
|
312 case EImpsKeyPRCity: |
|
313 case EImpsKeyPRStreet: |
|
314 case EImpsKeyPRCrossing1: |
|
315 case EImpsKeyPRCrossing2: |
|
316 case EImpsKeyPRBuilding: |
|
317 case EImpsKeyPRNamedArea: |
|
318 case EImpsKeyPRContact: |
|
319 case EImpsKeyPRNote: |
|
320 case EImpsKeyPRPrefC: //enum |
|
321 case EImpsKeyPRCaddr:// enum |
|
322 case EImpsKeyPRCstatus: //enum |
|
323 case EImpsKeyPRCname: |
|
324 case EImpsKeyPRDirectContent: |
|
325 case EImpsKeyPRReferredContent: |
|
326 case EImpsKeyPRContainedvCard: |
|
327 case EImpsKeyPRReferredvCard: |
|
328 //CSP 1.2 |
|
329 case EImpsKeyPRLink: |
|
330 dataType = EImpsDataTypeDesc8; |
|
331 break; |
|
332 |
|
333 case EImpsKeyPRStatus: |
|
334 case EImpsKeyPRCap: |
|
335 //added |
|
336 case EImpsKeyPRClientType: |
|
337 case EImpsKeyPRAltitude: |
|
338 case EImpsKeyPRAccuracy: |
|
339 case EImpsKeyPRCpriority: |
|
340 dataType = EImpsDataTypeInt; |
|
341 break; |
|
342 |
|
343 case EImpsKeyPRQualifier: |
|
344 dataType = EImpsDataTypeBoolean; |
|
345 break; |
|
346 |
|
347 case EImpsKeyPROnlineStatus: |
|
348 case EImpsKeyPRUserAvailability: |
|
349 case EImpsKeyPRCommCap: |
|
350 case EImpsKeyPRCommC: |
|
351 // added |
|
352 case EImpsKeyPRRegistration: |
|
353 case EImpsKeyPRFreeTextLocation: |
|
354 case EImpsKeyPRPLMN: |
|
355 case EImpsKeyPRPreferredLanguage: |
|
356 case EImpsKeyPRStatusText: |
|
357 case EImpsKeyPRStatusMood: |
|
358 case EImpsKeyPRAlias: |
|
359 case EImpsKeyPRClientInfo: |
|
360 case EImpsKeyPRTimeZone: |
|
361 case EImpsKeyPRGeoLocation: |
|
362 case EImpsKeyPRAddress: |
|
363 case EImpsKeyPRPreferredContacts: |
|
364 case EImpsKeyPRAddrPref: |
|
365 case EImpsKeyPRStatusContent: |
|
366 case EImpsKeyPRContactInfo: |
|
367 case EImpsKeyPRInf_link: |
|
368 case EImpsKeyPRInfoLink: |
|
369 |
|
370 dataType = EImpsDataTypeNone; |
|
371 break; |
|
372 |
|
373 case EImpsKeyPRExt: |
|
374 dataType = EImpsDataTypeExt; |
|
375 default: |
|
376 dataType = EImpsDataTypeNotSupported; |
|
377 break; |
|
378 }; |
|
379 return dataType; |
|
380 } |
|
381 // TImpsContent |
|
382 switch ( myElem ) |
|
383 { |
|
384 // The following ones are enums |
|
385 case EImpsKeySessionType: // cannot contain non-ASCII characters |
|
386 case EImpsKeyTransactionMode: |
|
387 case EImpsKeyDigestSchema: |
|
388 case EImpsKeyClientType: |
|
389 case EImpsKeyInitialDeliveryMethod: |
|
390 case EImpsKeySupportedBearer: |
|
391 case EImpsKeySupportedCIRMethod: |
|
392 case EImpsKeySearchElement: |
|
393 case EImpsKeyInviteType: |
|
394 case EImpsKeyDeliveryMethod: |
|
395 case EImpsKeySubscribeType: |
|
396 case EImpsKeyContentEncoding: |
|
397 case EImpsKeyAcceptedTransferEncoding: |
|
398 // new in CSP 1.2 |
|
399 case EImpsKeyReactiveAuthState: |
|
400 case EImpsKeyWatcherStatus: |
|
401 // Integer values, these are pure integer values |
|
402 case EImpsKeyContentSize: |
|
403 case EImpsKeyAcceptedCharSet: |
|
404 case EImpsKeyAcceptedContentLength: |
|
405 case EImpsKeyMultiTrans: |
|
406 case EImpsKeyParserSize: |
|
407 case EImpsKeyUDPPort: |
|
408 case EImpsKeyTCPPort: |
|
409 case EImpsKeyServerPollMin: |
|
410 case EImpsKeyCode: |
|
411 case EImpsKeySearchLimit: |
|
412 case EImpsKeySearchID: |
|
413 case EImpsKeySearchIndex: |
|
414 case EImpsKeySearchFindings: |
|
415 case EImpsKeyKeepAliveTime: |
|
416 case EImpsKeyTimeToLive: |
|
417 case EImpsKeyValidity: |
|
418 case EImpsKeyMessageCount: |
|
419 // new in CSP 1.2 |
|
420 case EImpsKeyHistoryPeriod: |
|
421 case EImpsKeyMaxWatcherList: |
|
422 dataType = EImpsDataTypeInt; |
|
423 break; |
|
424 |
|
425 // 16-bit unicode |
|
426 case EImpsKeySessionID: |
|
427 case EImpsKeySessionCookie: |
|
428 case EImpsKeyUserID: |
|
429 case EImpsKeyTransactionID: |
|
430 case EImpsKeyTransactionContent: |
|
431 case EImpsKeyDeliveryTime: |
|
432 case EImpsKeyPassword: |
|
433 case EImpsKeyAcceptedContentType: |
|
434 case EImpsKeyTCPAddress: |
|
435 case EImpsKeyDescription: |
|
436 case EImpsKeyGroupID: |
|
437 case EImpsKeyMessageID: |
|
438 case EImpsKeyMessageURI: |
|
439 case EImpsKeyURL: |
|
440 case EImpsKeyMSISDN: |
|
441 case EImpsKeyContactList: |
|
442 case EImpsKeyDefaultContactList: |
|
443 case EImpsKeySearchString: |
|
444 case EImpsKeyInviteID: |
|
445 case EImpsKeyInviteNote: |
|
446 case EImpsKeyResponseNote: |
|
447 case EImpsKeyPresenceSubList: |
|
448 case EImpsKeySName: |
|
449 case EImpsKeyName: |
|
450 case EImpsKeyValue: |
|
451 case EImpsKeyDateTime: |
|
452 case EImpsKeyContentType: |
|
453 case EImpsKeyDefaultLanguage: |
|
454 // new in CSP 1.2 |
|
455 case EImpsKeyExtendedData: |
|
456 case EImpsKeyAPIClient: |
|
457 dataType = EImpsDataTypeDesc; |
|
458 break; |
|
459 |
|
460 // 8-bit data. |
|
461 case EImpsKeyPureData: |
|
462 case EImpsKeyNonce: |
|
463 case EImpsKeyDigestBytes: |
|
464 // new in CSP 1.2 |
|
465 case EImpsKeyPresenceAttributeNSName: |
|
466 case EImpsKeySessionNSName: |
|
467 case EImpsKeyTransactionNSName: |
|
468 case EImpsKeyDomain: |
|
469 dataType = EImpsDataTypeDesc8; |
|
470 break; |
|
471 |
|
472 // Boolean data types |
|
473 case EImpsKeyPoll: |
|
474 case EImpsKeyCompletionFlag: |
|
475 case EImpsKeyJoinGroup: |
|
476 case EImpsKeySubscribeNotification: |
|
477 case EImpsKeyCapabilityRequest: |
|
478 case EImpsKeyAnyContent: |
|
479 case EImpsKeyDefaultList: |
|
480 case EImpsKeyAcceptance: |
|
481 case EImpsKeyDeliveryReport: |
|
482 case EImpsKeyInUse: |
|
483 case EImpsKeyJoinedRequest: |
|
484 case EImpsKeyAllFunctionsRequest: |
|
485 // new in CSP 1.2 |
|
486 case EImpsKeyReceiveList: |
|
487 case EImpsKeyAuto_Subscribe: |
|
488 case EImpsKeyCIR: |
|
489 dataType = EImpsDataTypeBoolean; |
|
490 break; |
|
491 // special case |
|
492 case EImpsKeyContentData: |
|
493 dataType = EImpsDataTypeContentData; |
|
494 break; |
|
495 |
|
496 // Elements not having value |
|
497 case EImpsKeySession: |
|
498 case EImpsKeySessionDescriptor: |
|
499 case EImpsKeyTransaction: |
|
500 case EImpsKeyTransactionDescriptor: |
|
501 case EImpsKeyStatus: |
|
502 case EImpsKeyPolling_Request: |
|
503 case EImpsKeyLogin_Request: |
|
504 case EImpsKeyLogin_Response: |
|
505 case EImpsKeyService_Request: |
|
506 case EImpsKeyService_Response: |
|
507 case EImpsKeyClientCapability_Request: |
|
508 case EImpsKeyClientCapability_Response: |
|
509 case EImpsKeyLogout_Request: |
|
510 case EImpsKeyDisconnect: |
|
511 case EImpsKeyKeepAlive_Request: |
|
512 case EImpsKeyKeepAlive_Response: |
|
513 case EImpsKeyGetSPInfo_Request: |
|
514 case EImpsKeyGetSPInfo_Response: |
|
515 case EImpsKeySearch_Request: |
|
516 case EImpsKeyStopSearch_Request: |
|
517 case EImpsKeySearch_Response: |
|
518 case EImpsKeyInvite_Request: |
|
519 case EImpsKeyInvite_Response: |
|
520 case EImpsKeyInviteUser_Request: |
|
521 case EImpsKeyInviteUser_Response: |
|
522 case EImpsKeyCancelInvite_Request: |
|
523 case EImpsKeyCancelInviteUser_Request: |
|
524 case EImpsKeySubscribePresence_Request: |
|
525 case EImpsKeyUnsubscribePresence_Request: |
|
526 case EImpsKeyPresenceNotification_Request: |
|
527 case EImpsKeyGetWatcherList_Request: |
|
528 case EImpsKeyGetWatcherList_Response: |
|
529 case EImpsKeyGetPresence_Request: |
|
530 case EImpsKeyGetPresence_Response: |
|
531 case EImpsKeyPresenceAuth_Request: |
|
532 case EImpsKeyPresenceAuth_User: |
|
533 case EImpsKeyCancelAuth_Request: |
|
534 case EImpsKeyUpdatePresence_Request: |
|
535 case EImpsKeyGetList_Request: |
|
536 case EImpsKeyGetList_Response: |
|
537 case EImpsKeyCreateList_Request: |
|
538 case EImpsKeyDeleteList_Request: |
|
539 case EImpsKeyListManage_Request: |
|
540 case EImpsKeyListManage_Response: |
|
541 case EImpsKeyCreateAttributeList_Request: |
|
542 case EImpsKeyDeleteAttributeList_Request: |
|
543 case EImpsKeyGetAttributeList_Request: |
|
544 case EImpsKeyGetAttributeList_Response: |
|
545 case EImpsKeySendMessage_Request: |
|
546 case EImpsKeySendMessage_Response: |
|
547 case EImpsKeySetDeliveryMethod_Request: |
|
548 case EImpsKeyGetMessageList_Request: |
|
549 case EImpsKeyGetMessageList_Response: |
|
550 case EImpsKeyRejectMessage_Request: |
|
551 case EImpsKeyMessageNotification: |
|
552 case EImpsKeyGetMessage_Request: |
|
553 case EImpsKeyGetMessage_Response: |
|
554 case EImpsKeyNewMessage: |
|
555 case EImpsKeyMessageDelivered: |
|
556 case EImpsKeyDeliveryReport_Request: |
|
557 case EImpsKeyForwardMessage_Request: |
|
558 case EImpsKeyGetBlockedList_Request: |
|
559 case EImpsKeyGetBlockedList_Response: |
|
560 case EImpsKeyBlockEntity_Request: |
|
561 case EImpsKeyCreateGroup_Request: |
|
562 case EImpsKeyDeleteGroup_Request: |
|
563 case EImpsKeyJoinGroup_Request: |
|
564 case EImpsKeyJoinGroup_Response: |
|
565 case EImpsKeyLeaveGroup_Request: |
|
566 case EImpsKeyLeaveGroup_Response: |
|
567 case EImpsKeyGetGroupMembers_Request: |
|
568 case EImpsKeyGetGroupMembers_Response: |
|
569 case EImpsKeyAddGroupMembers_Request: |
|
570 case EImpsKeyRemoveGroupMembers_Request: |
|
571 case EImpsKeyMemberAccess_Request: |
|
572 case EImpsKeyGetGroupProps_Request: |
|
573 case EImpsKeyGetGroupProps_Response: |
|
574 case EImpsKeySetGroupProps_Request: |
|
575 case EImpsKeyRejectList_Request: |
|
576 case EImpsKeyRejectList_Response: |
|
577 case EImpsKeySubscribeGroupNotice_Request: |
|
578 case EImpsKeySubscribeGroupNotice_Response: |
|
579 case EImpsKeyGroupChangeNotice: |
|
580 case EImpsKeyCapabilityList: |
|
581 case EImpsKeyResult: |
|
582 case EImpsKeyDetailedResult: |
|
583 case EImpsKeySender: |
|
584 case EImpsKeyRecipient: |
|
585 case EImpsKeyUser: |
|
586 case EImpsKeyGroup: |
|
587 case EImpsKeyClientID: |
|
588 case EImpsKeyScreenName: |
|
589 case EImpsKeyNickName: |
|
590 case EImpsKeyURLList: |
|
591 case EImpsKeyGroupList: |
|
592 case EImpsKeyUserList: |
|
593 case EImpsKeyNickList: |
|
594 case EImpsKeyAddNickList: |
|
595 case EImpsKeyRemoveNickList: |
|
596 case EImpsKeySearchPairList: |
|
597 case EImpsKeySearchResult: |
|
598 case EImpsKeyDefaultAttributeList: |
|
599 case EImpsKeyPresence: |
|
600 case EImpsKeyMessageInfo: |
|
601 case EImpsKeyBlockList: |
|
602 case EImpsKeyGrantList: |
|
603 case EImpsKeyEntityList: |
|
604 case EImpsKeyAddList: |
|
605 case EImpsKeyRemoveList: |
|
606 case EImpsKeyContactListProperties: |
|
607 case EImpsKeyGroupProperties: |
|
608 case EImpsKeyOwnProperties: |
|
609 case EImpsKeyProperty: |
|
610 case EImpsKeyWelcomeNote: |
|
611 case EImpsKeyAdmin: |
|
612 case EImpsKeyMod: |
|
613 case EImpsKeyUsers: |
|
614 case EImpsKeyJoined: |
|
615 case EImpsKeyLeft: |
|
616 case EImpsKeyLogo: |
|
617 case EImpsKeyAllFunctions: |
|
618 case EImpsKeyFunctions: |
|
619 case EImpsKeyWVCSPFeat: |
|
620 case EImpsKeyFundamentalFeat: |
|
621 case EImpsKeyPresenceFeat: |
|
622 case EImpsKeyIMFeat: |
|
623 case EImpsKeyGroupFeat: |
|
624 case EImpsKeyServiceFunc: |
|
625 case EImpsKeySearchFunc: |
|
626 case EImpsKeyInviteFunc: |
|
627 case EImpsKeyContListFunc: |
|
628 case EImpsKeyPresenceAuthFunc: |
|
629 case EImpsKeyPresenceDeliverFunc: |
|
630 case EImpsKeyAttListFunc: |
|
631 case EImpsKeyIMSendFunc: |
|
632 case EImpsKeyIMReceiveFunc: |
|
633 case EImpsKeyIMAuthFunc: |
|
634 case EImpsKeyGroupMgmtFunc: |
|
635 case EImpsKeyGroupUseFunc: |
|
636 case EImpsKeyGroupAuthFunc: |
|
637 // new in CSP 1.2 |
|
638 case EImpsKeyExtBlock: |
|
639 case EImpsKeyAgreedCapabilityList: |
|
640 case EImpsKeyExtended_Request: |
|
641 case EImpsKeyExtended_Response: |
|
642 case EImpsKeyOtherServer: |
|
643 case EImpsKeyVerifyID_Request: |
|
644 case EImpsKeyGetReactiveAuthStatus_Request: |
|
645 case EImpsKeyGetReactiveAuthStatus_Response: |
|
646 case EImpsKeyAdminMapList: |
|
647 case EImpsKeyAdminMapping: |
|
648 case EImpsKeyGetJoinedUsers_Request: |
|
649 case EImpsKeyGetJoinedUsers_Respone: |
|
650 case EImpsKeyMapping: |
|
651 case EImpsKeyUserMapList: |
|
652 case EImpsKeyUserMapping: |
|
653 case EImpsKeyVerifyIDFunc: |
|
654 case EImpsKeyIDList: |
|
655 case EImpsKeyReactiveAuthStatus: |
|
656 case EImpsKeyReactiveAuthStatusList: |
|
657 case EImpsKeyWatcher: |
|
658 case EImpsKeyVersionList: |
|
659 dataType = EImpsDataTypeNone; |
|
660 break; |
|
661 |
|
662 case EImpsKeyGETSPI: |
|
663 case EImpsKeySRCH: |
|
664 case EImpsKeySTSRC: |
|
665 case EImpsKeyINVIT: |
|
666 case EImpsKeyCAINV: |
|
667 case EImpsKeyGCLI: |
|
668 case EImpsKeyCCLI: |
|
669 case EImpsKeyDCLI: |
|
670 case EImpsKeyMCLS: |
|
671 case EImpsKeyGETWL: |
|
672 case EImpsKeyREACT: |
|
673 case EImpsKeyCAAUT: |
|
674 case EImpsKeyGETPR: |
|
675 case EImpsKeyUPDPR: |
|
676 case EImpsKeyCALI: |
|
677 case EImpsKeyDALI: |
|
678 case EImpsKeyGALS: |
|
679 case EImpsKeyMDELIV: |
|
680 case EImpsKeyFWMSG: |
|
681 case EImpsKeySETD: |
|
682 case EImpsKeyGETLM: |
|
683 case EImpsKeyGETM: |
|
684 case EImpsKeyREJCM: |
|
685 case EImpsKeyNOTIF: |
|
686 case EImpsKeyNEWM: |
|
687 case EImpsKeyGLBLU: |
|
688 case EImpsKeyBLENT: |
|
689 case EImpsKeyCREAG: |
|
690 case EImpsKeyDELGR: |
|
691 case EImpsKeyGETGP: |
|
692 case EImpsKeySETGP: |
|
693 case EImpsKeySUBGCN: |
|
694 case EImpsKeyGRCHN: |
|
695 case EImpsKeyGETGM: |
|
696 case EImpsKeyADDGM: |
|
697 case EImpsKeyRMVGM: |
|
698 case EImpsKeyMBRAC: |
|
699 case EImpsKeyREJEC: |
|
700 // new in CSP 1.2 |
|
701 case EImpsKeyMF: |
|
702 case EImpsKeyMG: |
|
703 case EImpsKeyMM: |
|
704 case EImpsKeyGETAUT: |
|
705 case EImpsKeyGETJU: |
|
706 case EImpsKeyMP: |
|
707 case EImpsKeyVRID: |
|
708 |
|
709 dataType = EImpsDataTypeNone; |
|
710 break; |
|
711 |
|
712 default: |
|
713 User::Leave( KErrArgument ); |
|
714 |
|
715 }; |
|
716 return dataType; |
|
717 } |
|
718 |
|
719 // --------------------------------------------------------- |
|
720 // TImpsDataAccessor::RestoreAlternativeL |
|
721 // --------------------------------------------------------- |
|
722 // |
|
723 EXPORT_C TBool TImpsDataAccessor::RestoreAlternativeL( const MImpsKey* aKey, |
|
724 TInt& aEnum, |
|
725 TInt& aIndex, |
|
726 TImpsKeyType& aType ) const |
|
727 { |
|
728 const CImpsKey* keyIn = static_cast<const CImpsKey*>( aKey ); |
|
729 const CImpsData* data = iImpsFields->Data( ); |
|
730 aEnum = 0; |
|
731 aIndex = 0; |
|
732 aType = EImpsKeyTypeIM; |
|
733 |
|
734 const CImpsKey* foundkey = data->CheckKey( keyIn, EPartialKeyLonger ); |
|
735 if( foundkey ) |
|
736 { |
|
737 // The found key can be longer than the search key |
|
738 // Since the beginning of the aKey and foundKey are the same |
|
739 // we want the first different element from the key |
|
740 // If the lengths are the same then there is no alternative |
|
741 TInt len1 = foundkey->Count( ); |
|
742 TInt len2 = aKey->Count( ); |
|
743 if( len1 == len2 ) |
|
744 return EFalse; |
|
745 TInt elem = foundkey->GetElementL( len2, aType ); |
|
746 aIndex = GET_INDEX( elem ); |
|
747 aEnum = GET_ENUM( elem ); |
|
748 return ETrue; |
|
749 } |
|
750 return EFalse; |
|
751 } |
|
752 |
|
753 // --------------------------------------------------------- |
|
754 // TImpsDataAccessor::CheckBranchExistenceL |
|
755 // --------------------------------------------------------- |
|
756 // |
|
757 EXPORT_C TBool TImpsDataAccessor::CheckBranchExistenceL( |
|
758 const MImpsKey* aKey ) const |
|
759 { |
|
760 const CImpsKey* keyIn = static_cast<const CImpsKey*>( aKey ); |
|
761 const CImpsData* data = iImpsFields->Data( ); |
|
762 |
|
763 const CImpsKey* foundkey = data->CheckKey( keyIn, EPartialKey ); |
|
764 if( foundkey ) |
|
765 { |
|
766 return ETrue; |
|
767 } |
|
768 return EFalse; |
|
769 } |
|
770 |
|
771 // --------------------------------------------------------- |
|
772 // TImpsDataAccessor::NbrOfTransactionsL |
|
773 // --------------------------------------------------------- |
|
774 // |
|
775 EXPORT_C TInt TImpsDataAccessor::NbrOfTransactionsL( ) const |
|
776 { |
|
777 TInt ret = 0; |
|
778 CImpsKey* myKey = CImpsKey::NewLC(); |
|
779 myKey->AddL( CREATEKEY( EImpsKeySession, 0) ); |
|
780 myKey->AddL( CREATEKEY( EImpsKeyTransaction, 0) ); |
|
781 |
|
782 while( CheckBranchExistenceL( myKey ) ) |
|
783 { |
|
784 ++ret; |
|
785 myKey->ReplaceLastL( CREATEKEY( EImpsKeyTransaction, ret ) ); |
|
786 } |
|
787 CleanupStack::PopAndDestroy(1); |
|
788 return ret; |
|
789 } |
|
790 |
|
791 // --------------------------------------------------------- |
|
792 // TImpsDataAccessor::GetTransactionL |
|
793 // --------------------------------------------------------- |
|
794 // |
|
795 EXPORT_C TBool TImpsDataAccessor::GetTransactionL( |
|
796 TInt aIndex, CImpsFields* aFields ) const |
|
797 { |
|
798 if( !iImpsFields ) |
|
799 return EFalse; |
|
800 if( aFields ) |
|
801 { |
|
802 TBool ret = EFalse; |
|
803 CImpsData* dataDes = aFields->Data( ); |
|
804 CImpsData* dataSrc = iImpsFields->Data( ); |
|
805 |
|
806 CImpsKey* myKey = CImpsKey::NewLC(); |
|
807 myKey->AddL( CREATEKEY( EImpsKeySession, 0) ); |
|
808 myKey->AddL( CREATEKEY( EImpsKeyTransaction, aIndex) ); |
|
809 |
|
810 if( CheckBranchExistenceL( myKey ) ) |
|
811 { |
|
812 // Copy first transaction |
|
813 dataDes->CopyL( myKey,dataSrc ); |
|
814 |
|
815 // Now we have to reset the new transaction id to 0 |
|
816 dataDes->SetKeyIndex( myKey, 0 ); |
|
817 |
|
818 // Copy SessionDescriptor stuff |
|
819 myKey->ReplaceLastL( CREATEKEY( EImpsKeySessionDescriptor, 0) ); |
|
820 dataDes->CopyL( myKey,dataSrc ); |
|
821 |
|
822 aFields->SetStatus( iImpsFields->Status( ) ); |
|
823 |
|
824 CImpsDataAccessor* myAc = CImpsDataAccessor::NewLC( aFields ); |
|
825 aFields->SetMessageType( TImpsDataUtils::GetMessageTypeL( myAc ) ); |
|
826 CleanupStack::PopAndDestroy(1 ); // myAc |
|
827 ret = ETrue; |
|
828 } |
|
829 CleanupStack::PopAndDestroy(1); // myKey |
|
830 return ret; |
|
831 } |
|
832 else |
|
833 { |
|
834 CImpsDataAccessor* myAc = CImpsDataAccessor::NewLC( iImpsFields ); |
|
835 iImpsFields->SetMessageType( TImpsDataUtils::GetMessageTypeL( myAc ) ); |
|
836 CleanupStack::PopAndDestroy( 1 ); // myAc |
|
837 return ETrue; |
|
838 } |
|
839 } |
|
840 |
|
841 // --------------------------------------------------------- |
|
842 // TImpsDataAccessor::CopyDataL |
|
843 // --------------------------------------------------------- |
|
844 // |
|
845 EXPORT_C void TImpsDataAccessor::CopyDataL( |
|
846 MImpsDataAccessor& aSource, |
|
847 MImpsKey* aKey ) |
|
848 { |
|
849 TImpsDataAccessor& iSource = static_cast<TImpsDataAccessor&>(aSource); |
|
850 CImpsKey* iKey = static_cast<CImpsKey*>( aKey ); |
|
851 // source data |
|
852 CImpsData* sp = iSource.iImpsFields->Data(); |
|
853 |
|
854 // destination data |
|
855 CImpsData* dp = iImpsFields->Data(); |
|
856 |
|
857 // Copy data |
|
858 dp->CopyL( iKey, sp ); |
|
859 } |
|
860 |
|
861 // --------------------------------------------------------- |
|
862 // TImpsDataAccessor::DoStoreL |
|
863 // Main storing function |
|
864 // --------------------------------------------------------- |
|
865 // |
|
866 void TImpsDataAccessor::DoStoreL( const CImpsKey* aKey ) |
|
867 { |
|
868 StoreHeadersL( aKey ); |
|
869 } |
|
870 |
|
871 //---------------------------------------------------------- |
|
872 // TImpsDataAccessor::DoRestoreL |
|
873 // Main restoring function |
|
874 // --------------------------------------------------------- |
|
875 // |
|
876 TBool TImpsDataAccessor::DoRestoreL( const CImpsKey* aKey ) |
|
877 { |
|
878 return RestoreHeadersL( aKey ); |
|
879 } |
|
880 |
|
881 //---------------------------------------------------------- |
|
882 // TImpsDataAccessor::StoreHeadersL |
|
883 // --------------------------------------------------------- |
|
884 // |
|
885 void TImpsDataAccessor::StoreHeadersL( const CImpsKey* aKey ) |
|
886 { |
|
887 CImpsData* data = iImpsFields->Data( ); |
|
888 if( iData.iType == EStringType ) |
|
889 { |
|
890 data->StoreStringL( aKey, iData.iValue ); |
|
891 return; |
|
892 } |
|
893 if( iData.iType == EString8Type ) |
|
894 { |
|
895 data->StoreString8L( aKey, iData.iValue8 ); |
|
896 return; |
|
897 } |
|
898 if( iData.iType == EIntegerType ) |
|
899 { |
|
900 data->StoreIntL( aKey, iData.iValueInt ); |
|
901 return; |
|
902 } |
|
903 if( iData.iType == EBooleanType ) |
|
904 { |
|
905 data->StoreBooleanL( aKey, iData.iValueBool ); |
|
906 return; |
|
907 } |
|
908 if( iData.iType == EEmptyType ) |
|
909 { |
|
910 data->StoreEmptyL( aKey ); |
|
911 return; |
|
912 } |
|
913 User::Leave( KErrArgument ); |
|
914 } |
|
915 |
|
916 //---------------------------------------------------------- |
|
917 // TImpsDataAccessor::RestoreHeadersL |
|
918 // --------------------------------------------------------- |
|
919 // |
|
920 TBool TImpsDataAccessor::RestoreHeadersL( const CImpsKey* aKey ) |
|
921 { |
|
922 TBool ret = EFalse; |
|
923 CImpsData* data = iImpsFields->Data( ); |
|
924 if( iData.iType == EStringType ) |
|
925 { |
|
926 TDesC *val; |
|
927 ret = data->RestoreString( aKey, val ); |
|
928 if( ret ) |
|
929 iData.iValuePointer = val; |
|
930 } |
|
931 if( iData.iType == EString8Type ) |
|
932 { |
|
933 TDesC8 *val; |
|
934 ret = data->RestoreString8( aKey, val ); |
|
935 if( ret ) |
|
936 iData.iValuePointer8 = val; |
|
937 } |
|
938 if( iData.iType == EIntegerType ) |
|
939 { |
|
940 ret = data->RestoreInt( aKey, iData.iValueInt ); |
|
941 } |
|
942 if( iData.iType == EBooleanType ) |
|
943 { |
|
944 ret = data->RestoreBoolean( aKey, iData.iValueBool ); |
|
945 } |
|
946 if( iData.iType == EEmptyType ) |
|
947 { |
|
948 ret = data->RestoreEmpty( aKey ); |
|
949 } |
|
950 return ret; |
|
951 } |
|
952 |
|
953 #ifdef _DEBUG |
|
954 //---------------------------------------------------------- |
|
955 // TImpsDataAccessor::DumpToFileL |
|
956 // --------------------------------------------------------- |
|
957 // |
|
958 void TImpsDataAccessor::DumpToFileL(RFs& aFs, const TDesC& aFilename) |
|
959 { |
|
960 iImpsFields->DumpToFileL(aFs, aFilename); |
|
961 } |
|
962 |
|
963 #endif |
|
964 // End of File |