diff -r a12246c97fcc -r cb96c29156b2 mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbhandler.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbhandler.cpp Wed Jun 09 09:38:28 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbhandler.cpp Mon Jun 21 15:37:19 2010 +0300 @@ -1537,6 +1537,8 @@ iOutOfDisk = ETrue; } + User::LeaveIfError( err ); + if(!iOutOfDisk) { MPX_TRAP(err,CheckDiskSpaceOnDrivesL()); @@ -1561,26 +1563,28 @@ void CMPXDbHandler::RefreshEndL() { MPX_FUNC("CMPXDbHandler::RefreshEndL"); - iRefresh = EFalse; - EndTransactionL(KErrNone); - if (!iOutOfDisk) - { - // Write last refreshed time as current time - // This also sets corrupt = 0 - TTime curTime; - curTime.HomeTime(); - SetLastRefreshedTimeL(curTime); - } + if ( iRefresh ) + { + iRefresh = EFalse; + EndTransactionL(KErrNone); + if (!iOutOfDisk) + { + // Write last refreshed time as current time + // This also sets corrupt = 0 + TTime curTime; + curTime.HomeTime(); + SetLastRefreshedTimeL(curTime); + } #ifdef ABSTRACTAUDIOALBUM_INCLUDED //for AbstractAlbum garbage collection - //can not leave - TRAP_IGNORE( AbstractAlbumCleanUpL() ); + TRAP_IGNORE( iDbAbstractAlbum->AbstractAlbumCleanUpL() ); #endif #ifdef __RAMDISK_PERF_ENABLE - iDbManager->CopyDBsFromRamL(); + iDbManager->CopyDBsFromRamL(); #endif //__RAMDISK_PERF_ENABLE + } } // ---------------------------------------------------------------------------- @@ -1605,6 +1609,12 @@ iDbManager->BeginL(); } +//create Thumbnail manager session for cleanup for abstractalbum when MTP end. +//because when MTP end comes, in case of mode switching, we need to do it as fast as possible, +//hence we don’t want the delay happens on that time. +#ifdef RD_MPX_TNM_INTEGRATION + iDbAbstractAlbum->CreateTNMSessionL(); +#endif //RD_MPX_TNM_INTEGRATION MPX_DEBUG1("<--CMPXDbHandler::MtpStartL"); } @@ -1630,11 +1640,13 @@ #endif //__RAMDISK_PERF_ENABLE #ifdef ABSTRACTAUDIOALBUM_INCLUDED - TRAP(err, RemoveAbstractAlbumsWithNoSongL()); + BeginTransactionL(); + TRAP(err, iDbAbstractAlbum->RemoveAbstractAlbumsWithNoSongL()); if ( err != KErrNone ) { MPX_DEBUG2("CMPXDbHandler::MtpEndL error happened when cleanup albstractalbum with no songs association[%d]", err); } + EndTransactionL(err); #endif MPX_DEBUG1("<--CMPXDbHandler::MtpEndL"); } @@ -2366,83 +2378,6 @@ EMPXSong, KDBPluginUid); } -#ifdef ABSTRACTAUDIOALBUM_INCLUDED -// ---------------------------------------------------------------------------- -// Remove abstractalbums which have no songs associated. -// ---------------------------------------------------------------------------- -// -void CMPXDbHandler::RemoveAbstractAlbumsWithNoSongL() - { - MPX_FUNC("CMPXDbHandler::RemoveAbstractAlbumsWithNoSongL"); - - BeginTransactionL(); - RArray iItemsIds; - CleanupClosePushL(iItemsIds); - //get all abstractalbum with no songs associated. - iDbAbstractAlbum->GetAllItemsWithNoSongL(iItemsIds); - TInt count = iItemsIds.Count(); - TInt err = KErrNone; - if (count) - { - MPX_DEBUG2("CMPXDbHandler::RemoveAbstractAlbumsWithNoSongL, abstractalbum count[%d] ", iItemsIds.Count()); - CMPXMessageArray* itemChangedMessages = CMPXMediaArray::NewL(); - CleanupStack::PushL(itemChangedMessages); - - //go through each one to delete - for (TInt i=0; i< count; i++) - { - TRAP(err, RemoveAbstractAlbumL(iItemsIds[i], *itemChangedMessages, EFalse)); - if (err != KErrNone) - { - MPX_DEBUG2("CMPXDbHandler::RemoveAbstractAlbumsWithNoSongL, error happens when delete abstractalbum, err ", err); - } - } - CleanupStack::PopAndDestroy(itemChangedMessages); - } - CleanupStack::PopAndDestroy(&iItemsIds); - EndTransactionL(err); - } - -// ---------------------------------------------------------------------------- -// Remove .alb entry from AbstractAlnum table, TN table if .alb files deleted -// from file manager when refresh library -// ---------------------------------------------------------------------------- -// -void CMPXDbHandler::AbstractAlbumCleanUpL() - { - MPX_FUNC("CMPXDbHandler::AbstractAlbumCleanUpL"); - RArray attributes; - CleanupClosePushL(attributes); - attributes.AppendL(KMPXMediaGeneralUri); - CMPXMediaArray* mediaArray = CMPXMediaArray::NewL(); - CleanupStack::PushL(mediaArray); - - iDbAbstractAlbum->GetAllCategoryItemsL(attributes.Array(), *mediaArray); - - TInt count(mediaArray->Count()); - if (count) - { - CMPXMessageArray* itemChangedMessages = CMPXMediaArray::NewL(); - CleanupStack::PushL(itemChangedMessages); - for (TInt i = 0; i < count; i++) - { - CMPXMedia* element = mediaArray->AtL(i); - const TDesC& uri = element->ValueText(KMPXMediaGeneralUri); - - //check if the file exists in file system - if (!(BaflUtils::FileExists(iFs, uri))) - { - //generate abstractalbum UID with the Uri - TUint32 abstractAlbumId(MPXDbCommonUtil::GenerateUniqueIdL(iFs, EMPXAbstractAlbum, uri, EFalse)); - RemoveAbstractAlbumL(abstractAlbumId, *itemChangedMessages, ETrue); - } - } - CleanupStack::PopAndDestroy(itemChangedMessages); - } - CleanupStack::PopAndDestroy(mediaArray); - CleanupStack::PopAndDestroy(&attributes); - } -#endif //ABSTRACTAUDIOALBUM_INCLUDED // ---------------------------------------------------------------------------- // CMPXDbHandler::DoCleanupDeletedRecordsL @@ -2894,22 +2829,6 @@ // append the drive to the drive list iDbDrives.AppendL(driveUnit); - - // make sure the folder is created - TVolumeInfo info; - if (iFs.Volume(info, driveUnit) == KErrNone) - { - if (!BaflUtils::PathExists(iFs, folder)) - { - // create music folder if necessary - TInt err(iFs.MkDirAll(folder)); - MPX_DEBUG3("Try to create music folder %S return code %d", &folder, err); - if (err != KErrAlreadyExists) - { - User::LeaveIfError(err); - } - } - } } } @@ -3185,7 +3104,7 @@ TUint32 CMPXDbHandler::AddCategoryItemL( TMPXGeneralCategory aCategory, const TDesC& aName, - TUint32 aArtist, + const TDesC& aArtistName, const TDesC& aArt, TInt aDriveId, CMPXMessageArray* aItemChangedMessages, @@ -3198,9 +3117,9 @@ TBool newRecord(EFalse); TUint32 id = 0; - if ( aArtist ) + if(aCategory == EMPXAlbum) { - id = iDbAlbum->AddItemL(aName, aArtist, aArt, aDriveId, newRecord, (aCategory != EMPXGenre)); + id = iDbAlbum->AddItemL(aName, aArtistName, aArt, aDriveId, newRecord, (aCategory != EMPXGenre)); } else { @@ -3362,9 +3281,12 @@ // CMPXDbHandler::HandleArtistForAlbumL // --------------------------------------------------------------------------- // -TUint32 CMPXDbHandler::HandleArtistForAlbumL(const TUint32 aAlbumId) +HBufC* CMPXDbHandler::HandleArtistForAlbumL(const TUint32 aAlbumId) { - return iDbMusic->ArtistForAlbumL(aAlbumId); + + TUint32 artistId = iDbMusic->ArtistForAlbumL(aAlbumId); + HBufC* artistname = GetNameMatchingIdL(artistId); + return artistname; } // ---------------------------------------------------------------------------