220 CleanupStack::PopAndDestroy(uri); |
221 CleanupStack::PopAndDestroy(uri); |
221 } |
222 } |
222 } |
223 } |
223 |
224 |
224 // ---------------------------------------------------------------------------- |
225 // ---------------------------------------------------------------------------- |
|
226 // Remove abstractalbums which have no songs associated. |
|
227 // ---------------------------------------------------------------------------- |
|
228 // |
|
229 void CMPXDbAbstractAlbum::RemoveAbstractAlbumsWithNoSongL() |
|
230 { |
|
231 MPX_FUNC("CMPXDbAbstractAlbum::RemoveAbstractAlbumsWithNoSongL"); |
|
232 |
|
233 RArray<TUint32> iItemsIds; |
|
234 CleanupClosePushL(iItemsIds); |
|
235 |
|
236 //get all abstractalbum with no songs associated. |
|
237 GetAllItemsWithNoSongL(iItemsIds); |
|
238 TInt count = iItemsIds.Count(); |
|
239 TInt err = KErrNone; |
|
240 if (count) |
|
241 { |
|
242 MPX_DEBUG2("CMPXDbAbstractAlbum::RemoveAbstractAlbumsWithNoSongL, abstractalbum count[%d] ", iItemsIds.Count()); |
|
243 CMPXMessageArray* itemChangedMessages = CMPXMediaArray::NewL(); |
|
244 CleanupStack::PushL(itemChangedMessages); |
|
245 |
|
246 //go through each one to delete |
|
247 for (TInt i=0; i< count; i++) |
|
248 { |
|
249 TRAP(err, RemoveAbstractAlbumL(iItemsIds[i], *itemChangedMessages, EFalse)); |
|
250 if (err != KErrNone) |
|
251 { |
|
252 MPX_DEBUG2("CMPXDbAbstractAlbum::RemoveAbstractAlbumsWithNoSongL, error happens when delete abstractalbum, err ", err); |
|
253 } |
|
254 } |
|
255 CleanupStack::PopAndDestroy(itemChangedMessages); |
|
256 } |
|
257 CleanupStack::PopAndDestroy(&iItemsIds); |
|
258 } |
|
259 |
|
260 // ---------------------------------------------------------------------------- |
|
261 // Remove .alb entry from AbstractAlnum table, TN table if .alb files deleted |
|
262 // from file manager when refresh library |
|
263 // ---------------------------------------------------------------------------- |
|
264 // |
|
265 void CMPXDbAbstractAlbum::AbstractAlbumCleanUpL() |
|
266 { |
|
267 MPX_FUNC("CMPXDbAbstractAlbum::AbstractAlbumCleanUpL"); |
|
268 RArray<TMPXAttribute> attributes; |
|
269 CleanupClosePushL(attributes); |
|
270 attributes.AppendL(KMPXMediaGeneralUri); |
|
271 CMPXMediaArray* mediaArray = CMPXMediaArray::NewL(); |
|
272 CleanupStack::PushL(mediaArray); |
|
273 |
|
274 GetAllCategoryItemsL(attributes.Array(), *mediaArray); |
|
275 |
|
276 TInt count(mediaArray->Count()); |
|
277 if (count) |
|
278 { |
|
279 CMPXMessageArray* itemChangedMessages = CMPXMediaArray::NewL(); |
|
280 CleanupStack::PushL(itemChangedMessages); |
|
281 for (TInt i = 0; i < count; i++) |
|
282 { |
|
283 CMPXMedia* element = mediaArray->AtL(i); |
|
284 const TDesC& uri = element->ValueText(KMPXMediaGeneralUri); |
|
285 |
|
286 //check if the file exists in file system |
|
287 if (!(BaflUtils::FileExists(iFs, uri))) |
|
288 { |
|
289 //generate abstractalbum UID with the Uri |
|
290 TUint32 abstractAlbumId(MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, uri, EFalse)); |
|
291 RemoveAbstractAlbumL(abstractAlbumId, *itemChangedMessages, ETrue); |
|
292 } |
|
293 } |
|
294 CleanupStack::PopAndDestroy(itemChangedMessages); |
|
295 } |
|
296 CleanupStack::PopAndDestroy(mediaArray); |
|
297 CleanupStack::PopAndDestroy(&attributes); |
|
298 } |
|
299 |
|
300 // ---------------------------------------------------------------------------- |
225 // CMPXDbAbstractAlbum::RemoveAbstractAlbumL |
301 // CMPXDbAbstractAlbum::RemoveAbstractAlbumL |
226 // ---------------------------------------------------------------------------- |
302 // ---------------------------------------------------------------------------- |
227 // |
303 // |
228 void CMPXDbAbstractAlbum::RemoveAbstractAlbumL(TUint32 aAbstractAlbumId, |
304 void CMPXDbAbstractAlbum::RemoveAbstractAlbumL(TUint32 aAbstractAlbumId, |
229 CMPXMessageArray& aItemChangedMessages, TBool aFileDeleted) |
305 CMPXMessageArray& aItemChangedMessages, TBool aFileDeleted) |
250 // ---------------------------------------------------------------------------- |
326 // ---------------------------------------------------------------------------- |
251 // CMPXDbAbstractAlbum::HandleTNL |
327 // CMPXDbAbstractAlbum::HandleTNL |
252 // ---------------------------------------------------------------------------- |
328 // ---------------------------------------------------------------------------- |
253 // |
329 // |
254 void CMPXDbAbstractAlbum::HandleTNL( const TDesC& aOldPath, |
330 void CMPXDbAbstractAlbum::HandleTNL( const TDesC& aOldPath, |
255 const TDesC& aNewPath, TInt /*aPriority*/ ) |
331 const TDesC& aNewPath, TInt aPriority ) |
256 { |
332 { |
257 MPX_FUNC("CMPXDbAbstractAlbum::HandleTNL"); |
333 MPX_FUNC("CMPXDbAbstractAlbum::HandleTNL"); |
258 |
334 if (!iTNManager) |
|
335 { |
|
336 CreateTNMSessionL(); |
|
337 } |
259 if (aNewPath.Compare(KNullDesC)==0 && aOldPath.Compare(KNullDesC)!=0) |
338 if (aNewPath.Compare(KNullDesC)==0 && aOldPath.Compare(KNullDesC)!=0) |
260 { |
339 { |
261 // remove from thumbnail database table |
340 // remove from thumbnail database table |
262 MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, delete TN"); |
341 MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, delete TN"); |
263 CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC( |
342 CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC( |
264 aOldPath, KImageFileType ); |
343 aOldPath, KImageFileType ); |
265 iTNManager->DeleteThumbnails( *source ); |
344 iTNManager->DeleteThumbnails( *source ); |
|
345 |
266 CleanupStack::PopAndDestroy( source ); |
346 CleanupStack::PopAndDestroy( source ); |
267 } |
347 } |
268 else if (aNewPath.Compare(KNullDesC)!=0) |
348 else if (aNewPath.Compare(KNullDesC)!=0) |
269 { |
349 { |
270 //rename thumbnail |
350 //rename thumbnail |
271 MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, rename TN"); |
351 MPX_DEBUG1("CMPXDbAbstractAlbum::HandleTNL, rename Thumbnail entry in Thumbnail table"); |
272 // TODO: uncomment when RenameThumbnailsL is supported. |
352 |
273 //iTNManager->RenameThumbnailsL( aOldPath, aNewPath, aPriority ); |
353 iTNManager->RenameThumbnailsL( aOldPath, aNewPath, aPriority ); |
274 //after rename, reset flag |
354 //after rename, reset flag |
275 iRenameTN = EFalse; |
355 iRenameTN = EFalse; |
276 } |
356 } |
277 } |
357 } |
278 |
358 |
571 // --------------------------------------------------------------------------- |
648 // --------------------------------------------------------------------------- |
572 void CMPXDbAbstractAlbum::ThumbnailReady( TInt /*aError*/, |
649 void CMPXDbAbstractAlbum::ThumbnailReady( TInt /*aError*/, |
573 MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ ) |
650 MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ ) |
574 { |
651 { |
575 } |
652 } |
|
653 |
|
654 // --------------------------------------------------------------------------- |
|
655 // CMPXDbAbstractAlbum::CreateTNMSessionL |
|
656 // Create thumbnail session |
|
657 // --------------------------------------------------------------------------- |
|
658 void CMPXDbAbstractAlbum::CreateTNMSessionL() |
|
659 { |
|
660 if(!iTNManager) |
|
661 { |
|
662 iTNManager = CThumbnailManager::NewL( *this ); |
|
663 } |
|
664 } |
576 // End of File |
665 // End of File |