240 CleanupStack::PopAndDestroy(query); |
240 CleanupStack::PopAndDestroy(query); |
241 } |
241 } |
242 |
242 |
243 // ----------------------------------------------------------------------------- |
243 // ----------------------------------------------------------------------------- |
244 /** |
244 /** |
245 * Register new activity |
|
246 * @param appId - application id |
|
247 * @param actId - activity id |
|
248 * @param flags - activity flags |
|
249 * @param imgSrc - activity thumbnail source |
|
250 * @param privateData - activity private data |
|
251 * @param publicData - activity public data |
|
252 */ |
|
253 void CAfStorage::AddActivityL(CAfEntry& entry) |
|
254 { |
|
255 //verify if row already exists |
|
256 TInt errNo(KErrNone); |
|
257 RDbView view; |
|
258 CleanupClosePushL(view); |
|
259 TRAP( errNo, GetActivityForUpdateL(view, entry.ApplicationId(), entry.ActivityId())); |
|
260 if( KErrNone == errNo ) |
|
261 { |
|
262 User::Leave(KErrAlreadyExists); |
|
263 } |
|
264 CleanupStack::PopAndDestroy(&view); |
|
265 |
|
266 //write table |
|
267 RDbTable table; |
|
268 CleanupClosePushL(table); |
|
269 User::LeaveIfError(table.Open(iActDb, KActivityTableName, table.EUpdatable)); |
|
270 CDbColSet *row = table.ColSetL(); |
|
271 CleanupStack::PushL(row); |
|
272 |
|
273 TTime time; |
|
274 time.UniversalTime(); |
|
275 |
|
276 table.InsertL(); |
|
277 TRAP(errNo, |
|
278 table.SetColL(row->ColNo(KApplicationColumnName), TInt64(entry.ApplicationId())); |
|
279 table.SetColL(row->ColNo(KActivityColumnName), entry.ActivityId()); |
|
280 table.SetColL(row->ColNo(KCustomNameColumnName), entry.CustomActivityName()); |
|
281 table.SetColL(row->ColNo(KFlagsColumnName), entry.Flags()); |
|
282 table.SetColL(row->ColNo(KTimestampColumnName), time.DateTime()); |
|
283 ExternalizeDataL(table, entry, row->ColNo(KDataColumnName) ); |
|
284 |
|
285 table.PutL();) |
|
286 if( KErrNone != errNo ) |
|
287 { |
|
288 table.Cancel(); |
|
289 User::Leave(errNo); |
|
290 } |
|
291 CleanupStack::PopAndDestroy(row); |
|
292 CleanupStack::PopAndDestroy(&table); |
|
293 } |
|
294 |
|
295 // ----------------------------------------------------------------------------- |
|
296 /** |
|
297 * Update activity |
|
298 * @param entry - activity data |
|
299 */ |
|
300 void CAfStorage::UpdateActivityL(CAfEntry& entry) |
|
301 { |
|
302 TTime time; |
|
303 time.UniversalTime(); |
|
304 RDbView view; |
|
305 CleanupClosePushL(view); |
|
306 GetActivityForUpdateL(view, entry.ApplicationId(), entry.ActivityId()); |
|
307 view.UpdateL(); |
|
308 TRAPD(errNo, |
|
309 CDbColSet* colSet = view.ColSetL(); |
|
310 CleanupStack::PushL(colSet); |
|
311 |
|
312 view.SetColL(colSet->ColNo(KFlagsColumnName), entry.Flags()); |
|
313 view.SetColL(colSet->ColNo(KTimestampColumnName), time.DateTime()); |
|
314 view.SetColL(colSet->ColNo(KCustomNameColumnName), entry.CustomActivityName()); |
|
315 ExternalizeDataL(view, entry, colSet->ColNo(KDataColumnName)); |
|
316 |
|
317 view.PutL(); |
|
318 CleanupStack::PopAndDestroy(colSet);) |
|
319 |
|
320 if(KErrNone != errNo) |
|
321 { |
|
322 view.Cancel(); |
|
323 User::Leave(errNo); |
|
324 } |
|
325 CleanupStack::PopAndDestroy(&view); |
|
326 } |
|
327 |
|
328 // ----------------------------------------------------------------------------- |
|
329 /** |
|
330 * Save activity |
245 * Save activity |
331 * @param entry - activity data |
246 * @param entry - activity data |
332 */ |
247 */ |
333 void CAfStorage::SaveActivityL(CAfEntry &entry) |
248 void CAfStorage::SaveActivityL(CAfEntry &entry) |
334 { |
249 { |
335 TTime time; |
|
336 time.UniversalTime(); |
|
337 // @todo check if this can be tidied up |
250 // @todo check if this can be tidied up |
338 //verify if row already exists |
251 //verify if row already exists |
339 TInt errNo(KErrNone); |
252 TInt errNo(KErrNone); |
340 RDbView view; |
253 RDbView view; |
341 CleanupClosePushL(view); |
254 CleanupClosePushL(view); |
347 TRAPD(errNo, |
260 TRAPD(errNo, |
348 CDbColSet* colSet = view.ColSetL(); |
261 CDbColSet* colSet = view.ColSetL(); |
349 CleanupStack::PushL(colSet); |
262 CleanupStack::PushL(colSet); |
350 |
263 |
351 view.SetColL(colSet->ColNo(KFlagsColumnName), entry.Flags()); |
264 view.SetColL(colSet->ColNo(KFlagsColumnName), entry.Flags()); |
352 view.SetColL(colSet->ColNo(KTimestampColumnName), time.DateTime()); |
265 view.SetColL(colSet->ColNo(KTimestampColumnName), entry.Timestamp()); |
353 view.SetColL(colSet->ColNo(KCustomNameColumnName), entry.CustomActivityName()); |
266 view.SetColL(colSet->ColNo(KCustomNameColumnName), entry.CustomActivityName()); |
354 ExternalizeDataL(view, entry, colSet->ColNo(KDataColumnName)); |
267 ExternalizeDataL(view, entry, colSet->ColNo(KDataColumnName)); |
355 |
268 |
356 view.PutL(); |
269 view.PutL(); |
357 CleanupStack::PopAndDestroy(colSet);) |
270 CleanupStack::PopAndDestroy(colSet);) |
377 TRAP(errNo, |
290 TRAP(errNo, |
378 table.SetColL(row->ColNo(KApplicationColumnName), TInt64(entry.ApplicationId())); |
291 table.SetColL(row->ColNo(KApplicationColumnName), TInt64(entry.ApplicationId())); |
379 table.SetColL(row->ColNo(KActivityColumnName), entry.ActivityId()); |
292 table.SetColL(row->ColNo(KActivityColumnName), entry.ActivityId()); |
380 table.SetColL(row->ColNo(KCustomNameColumnName), entry.CustomActivityName()); |
293 table.SetColL(row->ColNo(KCustomNameColumnName), entry.CustomActivityName()); |
381 table.SetColL(row->ColNo(KFlagsColumnName), entry.Flags()); |
294 table.SetColL(row->ColNo(KFlagsColumnName), entry.Flags()); |
382 table.SetColL(row->ColNo(KTimestampColumnName), time.DateTime()); |
295 table.SetColL(row->ColNo(KTimestampColumnName), entry.Timestamp()); |
383 ExternalizeDataL(table, entry, row->ColNo(KDataColumnName)); |
296 ExternalizeDataL(table, entry, row->ColNo(KDataColumnName)); |
384 table.PutL();) |
297 table.PutL();) |
385 if (KErrNone != errNo) { |
298 if (KErrNone != errNo) { |
386 table.Cancel(); |
299 table.Cancel(); |
387 User::Leave(errNo); |
300 User::Leave(errNo); |
584 |
497 |
585 const TInt flagsOffset(row->ColNo(KFlagsColumnName)), |
498 const TInt flagsOffset(row->ColNo(KFlagsColumnName)), |
586 applicationOffset(row->ColNo(KApplicationColumnName)), |
499 applicationOffset(row->ColNo(KApplicationColumnName)), |
587 activityOffset(row->ColNo(KActivityColumnName)), |
500 activityOffset(row->ColNo(KActivityColumnName)), |
588 customNameOffset(row->ColNo(KCustomNameColumnName)), |
501 customNameOffset(row->ColNo(KCustomNameColumnName)), |
589 dataOffset(row->ColNo(KDataColumnName)); |
502 dataOffset(row->ColNo(KDataColumnName)), |
|
503 timestampOffset(row->ColNo(KTimestampColumnName)); |
590 |
504 |
591 RBuf activityName; |
505 RBuf activityName; |
592 CleanupClosePushL(activityName); |
506 CleanupClosePushL(activityName); |
593 |
507 |
594 RBuf customName; |
508 RBuf customName; |