diff -r a12246c97fcc -r cb96c29156b2 mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbalbum.cpp --- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbalbum.cpp Wed Jun 09 09:38:28 2010 +0300 +++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbhgplugin/src/mpxdbalbum.cpp Mon Jun 21 15:37:19 2010 +0300 @@ -112,7 +112,7 @@ // TUint32 CMPXDbAlbum::AddItemL( const TDesC& aName, - TUint32 aArtist, + const TDesC& aArtistName, const TDesC& aArt, TInt aDriveId, TBool& aNewRecord, @@ -130,11 +130,13 @@ // insert new HBufC* query = PreProcessStringLC(KQueryAlbumInsert); HBufC* name = MPXDbCommonUtil::ProcessSingleQuotesLC(aName); + HBufC* artistname = MPXDbCommonUtil::ProcessSingleQuotesLC(aArtistName); HBufC* art = MPXDbCommonUtil::ProcessSingleQuotesLC(aArt); - iDbManager.ExecuteQueryL(aDriveId, *query, rowId, name, 1, aArtist, art); + iDbManager.ExecuteQueryL(aDriveId, *query, rowId, artistname, name, 1, art); CleanupStack::PopAndDestroy(art); + CleanupStack::PopAndDestroy(artistname); CleanupStack::PopAndDestroy(name); CleanupStack::PopAndDestroy(query); } @@ -154,17 +156,23 @@ } // Artist - TUint32 artistId = recordset.ColumnInt64(EAlbumArtist); + TPtrC artistname(KNullDesC); + artistname.Set(MPXDbCommonUtil::GetColumnTextL(recordset, EAlbumArtistName)); + // the current one is Unknown and the new one is Not Unknown. - if ( IsUnknownArtistL( artistId ) && !IsUnknownArtistL( aArtist ) ) + if ( artistname == KNullDesC && aArtistName!= KNullDesC ) { - _LIT( KFormatArtistId, "Artist=%d" ); - HBufC* setStr = HBufC::NewLC(KFormatArtistId().Length() + KMCIntegerLen); - setStr->Des().Format( KFormatArtistId, aArtist ); - + HBufC* artistnameReplaceSingleQuote = + MPXDbCommonUtil::ProcessSingleQuotesLC( aArtistName ); + TPtrC criteria(KCriterionArtistName); + HBufC* setStr = HBufC::NewLC(criteria.Length() + artistnameReplaceSingleQuote->Length()); + setStr->Des().Format( KCriterionArtistName, artistnameReplaceSingleQuote ); + iDbManager.ExecuteQueryL(aDriveId, KQueryAlbumUpdate, setStr, rowId); CleanupStack::PopAndDestroy(setStr); + CleanupStack::PopAndDestroy(artistnameReplaceSingleQuote); + } // Album Art @@ -176,9 +184,10 @@ { HBufC* artReplaceSingleQuote = MPXDbCommonUtil::ProcessSingleQuotesLC( aArt ); - _LIT( KFormatArt, "Art=\'%S\'" ); - HBufC* setStr = HBufC::NewLC(256); - setStr->Des().Format( KFormatArt, artReplaceSingleQuote ); + + TPtrC criteria(KCriterionArt); + HBufC* setStr = HBufC::NewLC(criteria.Length() + artReplaceSingleQuote->Length()); + setStr->Des().Format( KCriterionArt, artReplaceSingleQuote ); iDbManager.ExecuteQueryL(aDriveId, KQueryAlbumUpdate, setStr, rowId); CleanupStack::PopAndDestroy(setStr); @@ -240,24 +249,31 @@ User::Leave(KErrNotFound); } - TUint32 artistId = recordset.ColumnInt64(EAlbumArtist); TBool itemModified = EFalse; + TPtrC artistname(MPXDbCommonUtil::GetColumnTextL(recordset, EAlbumArtistName)); + TUint32 artistId = MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), EMPXArtist, + artistname, ETrue); // the current artist is equal to deleted song's artist if ( artistId == aArtist ) { - TUint32 newArtistId = ArtistForAlbumL(aId); - if ( artistId != newArtistId ) - { - _LIT( KFormatArtistId, "Artist=%d" ); - HBufC* setStr = HBufC::NewLC(KFormatArtistId().Length() + KMCIntegerLen); - setStr->Des().Format(KFormatArtistId, newArtistId); + HBufC* newArtistname = ArtistForAlbumL(aId); + + CleanupStack::PushL(newArtistname); + if (newArtistname && newArtistname->CompareF(artistname)!=0) + { + HBufC* artistnameReplaceSingleQuote = MPXDbCommonUtil::ProcessSingleQuotesLC( *newArtistname ); + TPtrC criteria(KCriterionArtistName); + HBufC* setStr = HBufC::NewLC(criteria.Length() + artistnameReplaceSingleQuote->Length()); + setStr->Des().Format( KCriterionArtistName, artistnameReplaceSingleQuote ); iDbManager.ExecuteQueryL(aDriveId, KQueryAlbumUpdate, setStr, aId); CleanupStack::PopAndDestroy(setStr); + CleanupStack::PopAndDestroy(artistnameReplaceSingleQuote); itemModified = ETrue; } - } + CleanupStack::PopAndDestroy(newArtistname); + } #ifdef ABSTRACTAUDIOALBUM_INCLUDED TBool nonEmbeddedArt = EFalse; @@ -290,9 +306,9 @@ { MPX_DEBUG1("CMPXDbAlbum::DecrementSongsForCategoryL, get newArt"); HBufC* artReplaceSingleQuote = MPXDbCommonUtil::ProcessSingleQuotesLC( *newArt ); - _LIT( KFormatArt, "Art=\'%S\'" ); - HBufC* setStr = HBufC::NewLC(256); - setStr->Des().Format( KFormatArt, artReplaceSingleQuote ); + TPtrC criteria(KCriterionArt); + HBufC* setStr = HBufC::NewLC(criteria.Length() + artReplaceSingleQuote->Length()); + setStr->Des().Format( KCriterionArt, artReplaceSingleQuote ); iDbManager.ExecuteQueryL(aDriveId, KQueryAlbumUpdate, setStr, aId); CleanupStack::PopAndDestroy(setStr); @@ -535,9 +551,7 @@ if (aMedia.IsSupported(KMPXMediaMusicArtist)) { const TDesC& artistName = aMedia.ValueText(KMPXMediaMusicArtist).Left(KMCMaxTextLen); - TUint32 artistId = MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), EMPXArtist, - artistName, ETrue); - MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicArtist, artistId); + MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCAlbumArtistName, artistName); } } @@ -554,7 +568,7 @@ // CMPXDbAlbum::ArtistForAlbumL // ---------------------------------------------------------------------------- // -TUint32 CMPXDbAlbum::ArtistForAlbumL(const TUint32 aId) +HBufC* CMPXDbAlbum::ArtistForAlbumL(const TUint32 aId) { return iObserver.HandleArtistForAlbumL(aId); }