50 const TInt KUnknownAlbumID = 1770790356; |
50 const TInt KUnknownAlbumID = 1770790356; |
51 // UniqueID column in Uris requests |
51 // UniqueID column in Uris requests |
52 const TInt KColUniqueID = 0; |
52 const TInt KColUniqueID = 0; |
53 // URI column in Uris requests |
53 // URI column in Uris requests |
54 const TInt KColUri = 1; |
54 const TInt KColUri = 1; |
|
55 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
56 _LIT( KAbstractAlbumExt, ".alb" ); |
|
57 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
|
58 |
55 |
59 |
56 // ============================ MEMBER FUNCTIONS ============================== |
60 // ============================ MEMBER FUNCTIONS ============================== |
57 |
61 |
58 // ---------------------------------------------------------------------------- |
62 // ---------------------------------------------------------------------------- |
59 // Two-phased constructor. |
63 // Two-phased constructor. |
173 time.HomeTime(); |
177 time.HomeTime(); |
174 HBufC* timeAdded = MPXDbCommonUtil::TTimeToDesLC(time); |
178 HBufC* timeAdded = MPXDbCommonUtil::TTimeToDesLC(time); |
175 MPXDbCommonUtil::AppendValueL(*fields, *values, KMCMusicTimeAdded, *timeAdded); |
179 MPXDbCommonUtil::AppendValueL(*fields, *values, KMCMusicTimeAdded, *timeAdded); |
176 CleanupStack::PopAndDestroy(timeAdded); |
180 CleanupStack::PopAndDestroy(timeAdded); |
177 |
181 |
|
182 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
183 //update ContainEmbeddedArt |
|
184 const TDesC& albumArtFilename = aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Left(KMCMaxTextLen); |
|
185 if (albumArtFilename.Length() > 0) |
|
186 { |
|
187 MPXDbCommonUtil::AppendValueL(*fields, *values, KMCMusicContainEmbeddedArt, 1); |
|
188 } |
|
189 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
178 // process the media parameter and construct the fields and values array |
190 // process the media parameter and construct the fields and values array |
179 TBool visible(GenerateMusicFieldsValuesL(aSongId, aMedia, aItemChangedMessages, |
191 TBool visible(GenerateMusicFieldsValuesL(aSongId, aMedia, aItemChangedMessages, |
180 NULL, *fields, *values, aDrive)); |
192 NULL, *fields, *values, aDrive)); |
181 |
193 |
182 // create the fields and values strings |
194 // create the fields and values strings |
240 recordset.ColumnInt64(EMusicVolumeId))); |
252 recordset.ColumnInt64(EMusicVolumeId))); |
241 visible = DoUpdateSongL(aSongId, aMedia, driveUnit, aItemChangedMessages, |
253 visible = DoUpdateSongL(aSongId, aMedia, driveUnit, aItemChangedMessages, |
242 recordset); |
254 recordset); |
243 |
255 |
244 // Update Album table |
256 // Update Album table |
245 if (aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName) || aMedia.IsSupported(KMPXMediaMusicArtist)) |
257 if (aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName) || aMedia.IsSupported(KMPXMediaMusicArtist)) |
246 { |
258 { |
247 TUint32 albumId = recordset.ColumnInt64(EMusicAlbum); |
259 TUint32 albumId = recordset.ColumnInt64(EMusicAlbum); |
248 iObserver.UpdateCategoryItemL(EMPXAlbum, albumId, aMedia, driveUnit, aItemChangedMessages); |
260 iObserver.UpdateCategoryItemL(EMPXAlbum, albumId, aMedia, driveUnit, aItemChangedMessages); |
249 } |
261 } |
250 |
262 |
251 // Update Artist table |
263 // Update Artist table |
252 if ( aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName) ) |
264 if ( aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName) ) |
253 { |
265 { |
254 TUint32 artistId = recordset.ColumnInt64(EMusicArtist); |
266 TUint32 artistId = recordset.ColumnInt64(EMusicArtist); |
439 recordset.ColumnInt64(EMusicVolumeId)); |
454 recordset.ColumnInt64(EMusicVolumeId)); |
440 aArtistId = recordset.ColumnInt64(EMusicArtist); |
455 aArtistId = recordset.ColumnInt64(EMusicArtist); |
441 aAlbumId = recordset.ColumnInt64(EMusicAlbum); |
456 aAlbumId = recordset.ColumnInt64(EMusicAlbum); |
442 aGenreId = recordset.ColumnInt64(EMusicGenre); |
457 aGenreId = recordset.ColumnInt64(EMusicGenre); |
443 aComposerId = recordset.ColumnInt64(EMusicComposer); |
458 aComposerId = recordset.ColumnInt64(EMusicComposer); |
|
459 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
460 aAbstractAlbumId = recordset.ColumnInt64(EMusicAbstractAlbum); |
|
461 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
444 HBufC* uri = ConstructUriL(recordset); |
462 HBufC* uri = ConstructUriL(recordset); |
445 |
463 |
446 CleanupStack::PopAndDestroy(&recordset); |
464 CleanupStack::PopAndDestroy(&recordset); |
447 |
465 |
448 return uri; |
466 return uri; |
786 ExecuteMediaQueryL(aAttrs, aMediaArray, ExtraFieldsRequired(aAttrs) ? |
804 ExecuteMediaQueryL(aAttrs, aMediaArray, ExtraFieldsRequired(aAttrs) ? |
787 KQueryMusicGetSongsForComposer() : KQueryMusicGetSongsForComposerNoCategories(), |
805 KQueryMusicGetSongsForComposer() : KQueryMusicGetSongsForComposerNoCategories(), |
788 aComposerId); |
806 aComposerId); |
789 } |
807 } |
790 |
808 |
|
809 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
810 // ---------------------------------------------------------------------------- |
|
811 // CMPXDbMusic::GetAllSongsForAbstractAlbumL |
|
812 // ---------------------------------------------------------------------------- |
|
813 // |
|
814 void CMPXDbMusic::GetAllSongsForAbstractAlbumL( |
|
815 TInt aDrive, |
|
816 TInt aAbstractAlbumId, |
|
817 const TArray<TMPXAttribute>& aAttrs, |
|
818 CMPXMediaArray& aMediaArray) |
|
819 { |
|
820 MPX_FUNC("CMPXDbMusic::GetAllSongsL"); |
|
821 ExecuteMediaQueryL(aDrive, aAttrs, aMediaArray, KQueryMusicGetSongsForAbstractAlbum(), aAbstractAlbumId); |
|
822 } |
|
823 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
|
824 |
791 // ---------------------------------------------------------------------------- |
825 // ---------------------------------------------------------------------------- |
792 // CMPXDbMusic::AllSongsDurationL |
826 // CMPXDbMusic::AllSongsDurationL |
793 // ---------------------------------------------------------------------------- |
827 // ---------------------------------------------------------------------------- |
794 // |
828 // |
795 TInt CMPXDbMusic::AllSongsDurationL() |
829 TInt CMPXDbMusic::AllSongsDurationL() |
1129 TInt columnCount(aMusicTable.ColumnCount()); |
1163 TInt columnCount(aMusicTable.ColumnCount()); |
1130 if(columnCount == 37 && aMusicTable.ColumnIndex(_L("PlUId"))==35) |
1164 if(columnCount == 37 && aMusicTable.ColumnIndex(_L("PlUId"))==35) |
1131 { |
1165 { |
1132 TUint32 pListUId(aMusicTable.ColumnInt64(35)); |
1166 TUint32 pListUId(aMusicTable.ColumnInt64(35)); |
1133 aMedia.SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, TMPXItemId(pListUId, songId)); |
1167 aMedia.SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, TMPXItemId(pListUId, songId)); |
1134 } |
1168 } |
1135 else |
1169 else |
1136 { |
1170 { |
1137 aMedia.SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, songId); |
1171 aMedia.SetTObjectValueL<TMPXItemId>(KMPXMediaGeneralId, songId); |
1138 } |
1172 } |
1139 MPX_DEBUG2(" SongId[%d]", songId); |
1173 MPX_DEBUG2(" SongId[%d]", songId); |
1140 } |
1174 } |
1141 // FIX ME temporary always fetch URI |
1175 // FIX ME temporary always fetch URI |
1142 if (aAttrId & EMPXMediaGeneralUri) |
1176 if (aAttrId & EMPXMediaGeneralUri) |
1143 { |
1177 { |
1188 TPtrC title(MPXDbCommonUtil::GetColumnTextL(aMusicTable, EMusicTitle)); |
1222 TPtrC title(MPXDbCommonUtil::GetColumnTextL(aMusicTable, EMusicTitle)); |
1189 aMedia.SetTextValueL(KMPXMediaGeneralTitle, title); |
1223 aMedia.SetTextValueL(KMPXMediaGeneralTitle, title); |
1190 MPX_DEBUG2(" Title[%S]", &title); |
1224 MPX_DEBUG2(" Title[%S]", &title); |
1191 } |
1225 } |
1192 if ( aAttrId & EMPXMediaGeneralDate) |
1226 if ( aAttrId & EMPXMediaGeneralDate) |
1193 { |
1227 { |
1194 MPX_DEBUG1(" EMPXMediaGeneralDate"); |
1228 MPX_DEBUG1(" EMPXMediaGeneralDate"); |
1195 const TDesC& dateStr(MPXDbCommonUtil::GetColumnTextL (aMusicTable, |
1229 const TDesC& dateStr(MPXDbCommonUtil::GetColumnTextL (aMusicTable, |
1196 EMusicTimeAdded)); |
1230 EMusicTimeAdded)); |
1197 if ( dateStr.Compare (KNullDesC)!= 0) |
1231 if ( dateStr.Compare (KNullDesC)!= 0) |
1198 { |
1232 { |
1199 TTime dateTime(MPXDbCommonUtil::DesToTTimeL (dateStr)); |
1233 TTime dateTime(MPXDbCommonUtil::DesToTTimeL (dateStr)); |
1200 aMedia.SetTObjectValueL<TInt64> (KMPXMediaGeneralDate, |
1234 aMedia.SetTObjectValueL<TInt64> (KMPXMediaGeneralDate, |
1201 dateTime.Int64 ()); |
1235 dateTime.Int64 ()); |
1202 } |
1236 } |
1203 MPX_DEBUG2(" Date[%S]", &dateStr); |
1237 MPX_DEBUG2(" Date[%S]", &dateStr); |
1204 } |
1238 } |
1205 if (aAttrId & EMPXMediaGeneralComment) |
1239 if (aAttrId & EMPXMediaGeneralComment) |
1206 { |
1240 { |
1207 MPX_DEBUG1(" EMPXMediaGeneralComment"); |
1241 MPX_DEBUG1(" EMPXMediaGeneralComment"); |
1208 TPtrC comment(MPXDbCommonUtil::GetColumnTextL(aMusicTable, EMusicComment)); |
1242 TPtrC comment(MPXDbCommonUtil::GetColumnTextL(aMusicTable, EMusicComment)); |
1209 aMedia.SetTextValueL(KMPXMediaGeneralComment, comment); |
1243 aMedia.SetTextValueL(KMPXMediaGeneralComment, comment); |
1329 TPtrC album(MPXDbCommonUtil::GetColumnTextL(aMusicTable, EMusicAlbumName)); |
1363 TPtrC album(MPXDbCommonUtil::GetColumnTextL(aMusicTable, EMusicAlbumName)); |
1330 aMedia.SetTextValueL(KMPXMediaMusicAlbum, album); |
1364 aMedia.SetTextValueL(KMPXMediaMusicAlbum, album); |
1331 MPX_DEBUG2(" Album[%S]", &album); |
1365 MPX_DEBUG2(" Album[%S]", &album); |
1332 } |
1366 } |
1333 if ( aAttrId & EMPXMediaMusicYear) |
1367 if ( aAttrId & EMPXMediaMusicYear) |
1334 { |
1368 { |
1335 const TDesC& dateStr(MPXDbCommonUtil::GetColumnTextL (aMusicTable, |
1369 const TDesC& dateStr(MPXDbCommonUtil::GetColumnTextL (aMusicTable, |
1336 EMusicReleaseDate)); |
1370 EMusicReleaseDate)); |
1337 if ( dateStr.Compare (KNullDesC)!= 0) |
1371 if ( dateStr.Compare (KNullDesC)!= 0) |
1338 { |
1372 { |
1339 TTime dateTime(MPXDbCommonUtil::DesToTTimeL (dateStr)); |
1373 TTime dateTime(MPXDbCommonUtil::DesToTTimeL (dateStr)); |
1340 aMedia.SetTObjectValueL<TInt64> (KMPXMediaMusicYear, |
1374 aMedia.SetTObjectValueL<TInt64> (KMPXMediaMusicYear, |
1341 dateTime.Int64 ()); |
1375 dateTime.Int64 ()); |
1342 MPX_DEBUG2(" Year[%d]", dateTime.Int64()); |
1376 MPX_DEBUG2(" Year[%d]", dateTime.Int64()); |
1343 } |
1377 } |
1344 MPX_DEBUG2(" ReleaseDate[%S]", &dateStr); |
1378 MPX_DEBUG2(" ReleaseDate[%S]", &dateStr); |
1345 } |
1379 } |
1346 if (aAttrId & EMPXMediaMusicAlbumTrack) |
1380 if (aAttrId & EMPXMediaMusicAlbumTrack) |
1347 { |
1381 { |
1348 TInt32 track(aMusicTable.ColumnInt(EMusicAlbumTrack)); |
1382 TInt32 track(aMusicTable.ColumnInt(EMusicAlbumTrack)); |
1349 HBufC* hbuf = HBufC::NewLC(KMCIntegerLen); |
1383 HBufC* hbuf = HBufC::NewLC(KMCIntegerLen); |
1350 if (track != KMaxTInt) |
1384 if (track != KMaxTInt) |
1382 if (aAttrId & EMPXMediaMusicOriginalAlbumArtFileName) |
1416 if (aAttrId & EMPXMediaMusicOriginalAlbumArtFileName) |
1383 { |
1417 { |
1384 // Always set original album art to be file path |
1418 // Always set original album art to be file path |
1385 // Maybe add a new column to db for future if services like rhapsody pushes jpgs to us |
1419 // Maybe add a new column to db for future if services like rhapsody pushes jpgs to us |
1386 if (aMedia.IsSupported(KMPXMediaGeneralUri)) |
1420 if (aMedia.IsSupported(KMPXMediaGeneralUri)) |
|
1421 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
1422 { |
|
1423 TUint32 abstractAlbumId(aMusicTable.ColumnInt64(EMusicAbstractAlbum)); |
|
1424 TInt containEmbeddedArt = aMusicTable.ColumnInt( EMusicContainEmbeddedArt); |
|
1425 //embedded with art, no art |
|
1426 if (containEmbeddedArt || (!containEmbeddedArt && !abstractAlbumId)) //embedded with art case, no art |
|
1427 { |
|
1428 const TDesC& art(aMedia.ValueText(KMPXMediaGeneralUri)); |
|
1429 aMedia.SetTextValueL(KMPXMediaMusicOriginalAlbumArtFileName, art); |
|
1430 MPX_DEBUG2(" Music Original Album Art FullPath[%S]", &art); |
|
1431 } |
|
1432 //for abstractalbum case, originalAlbumArt from AbstractAlbum table |
|
1433 else if ( abstractAlbumId ) |
|
1434 { |
|
1435 HBufC* art = iObserver.HandleGetAlbumNameFromIdL(abstractAlbumId); |
|
1436 CleanupStack::PushL(art); |
|
1437 aMedia.SetTextValueL(KMPXMediaMusicOriginalAlbumArtFileName, *art); |
|
1438 MPX_DEBUG2(" Music Original Album Art FullPath[%S]", art); |
|
1439 CleanupStack::PopAndDestroy(art); |
|
1440 } |
|
1441 } |
|
1442 #else |
1387 { |
1443 { |
1388 const TDesC& uri(aMedia.ValueText(KMPXMediaGeneralUri)); |
1444 const TDesC& uri(aMedia.ValueText(KMPXMediaGeneralUri)); |
1389 aMedia.SetTextValueL(KMPXMediaMusicOriginalAlbumArtFileName, uri); |
1445 aMedia.SetTextValueL(KMPXMediaMusicOriginalAlbumArtFileName, uri); |
1390 MPX_DEBUG2(" Music Original Album Art FullPath[%S]", &uri); |
1446 MPX_DEBUG2(" Music Original Album Art FullPath[%S]", &uri); |
1391 } |
1447 } |
1392 else |
1448 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
1393 { |
1449 else |
1394 HBufC* fullPath = ConstructUriL(aMusicTable); |
1450 { |
1395 CleanupStack::PushL(fullPath); |
1451 HBufC* fullPath = ConstructUriL(aMusicTable); |
1396 aMedia.SetTextValueL(KMPXMediaMusicOriginalAlbumArtFileName, *fullPath); |
1452 CleanupStack::PushL(fullPath); |
1397 MPX_DEBUG2(" Music Original Album Art FullPath[%S]", fullPath); |
1453 aMedia.SetTextValueL(KMPXMediaMusicOriginalAlbumArtFileName, *fullPath); |
1398 CleanupStack::PopAndDestroy(fullPath); |
1454 MPX_DEBUG2(" Music Original Album Art FullPath[%S]", fullPath); |
1399 } |
1455 CleanupStack::PopAndDestroy(fullPath); |
1400 } |
1456 } |
|
1457 } |
|
1458 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
1459 if (aAttrId & EMPXMediaMusicAlbumArtist) |
|
1460 { |
|
1461 TPtrC albumartist(MPXDbCommonUtil::GetColumnTextL(aMusicTable, EMusicAlbumArtist)); |
|
1462 aMedia.SetTextValueL(KMPXMediaMusicAlbumArtist, albumartist); |
|
1463 MPX_DEBUG2(" Music AlbumArtist[%S]", &albumartist); |
|
1464 } |
|
1465 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
1401 } |
1466 } |
1402 |
1467 |
1403 // ---------------------------------------------------------------------------- |
1468 // ---------------------------------------------------------------------------- |
1404 // CMPXDbMusic::UpdateMediaAudioL |
1469 // CMPXDbMusic::UpdateMediaAudioL |
1405 // ---------------------------------------------------------------------------- |
1470 // ---------------------------------------------------------------------------- |
1798 MPX_DEBUG2(" Rating[%d]", rating); |
1863 MPX_DEBUG2(" Rating[%d]", rating); |
1799 } |
1864 } |
1800 |
1865 |
1801 if (attributeId & EMPXMediaMusicAlbumArtFileName) |
1866 if (attributeId & EMPXMediaMusicAlbumArtFileName) |
1802 { |
1867 { |
|
1868 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
1869 TInt containEmbeddedArt(0); |
|
1870 if (aMusicTable ) |
|
1871 { |
|
1872 containEmbeddedArt = aMusicTable->ColumnInt(EMusicContainEmbeddedArt); |
|
1873 } |
|
1874 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
1803 const TDesC& albumArtFilename = aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Left(KMCMaxTextLen); |
1875 const TDesC& albumArtFilename = aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Left(KMCMaxTextLen); |
1804 if (!aMusicTable || (albumArtFilename != MPXDbCommonUtil::GetColumnTextL(*aMusicTable, EMusicArt))) |
1876 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
1805 { |
1877 TParsePtrC parse(albumArtFilename); |
1806 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicArt, albumArtFilename); |
1878 TPtrC ext(parse.Ext()); |
|
1879 |
|
1880 if ( ((ext.CompareF(KAbstractAlbumExt)== 0) && !containEmbeddedArt) || (ext.CompareF(KAbstractAlbumExt)!= 0)) |
|
1881 { |
|
1882 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
|
1883 if (!aMusicTable || (albumArtFilename != MPXDbCommonUtil::GetColumnTextL(*aMusicTable, EMusicArt))) |
|
1884 { |
|
1885 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicArt, albumArtFilename); |
|
1886 visibleChange = CMPXDbActiveTask::EAllVisible; |
|
1887 metaDataModified = ETrue; |
|
1888 } |
|
1889 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
1890 } |
|
1891 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
|
1892 MPX_DEBUG2(" Album Art Filename[%S]", &albumArtFilename); |
|
1893 } |
|
1894 |
|
1895 if (attributeId & EMPXMediaMusicURL) |
|
1896 { |
|
1897 const TDesC& url = aMedia.ValueText(KMPXMediaMusicURL).Left(KMCMaxTextLen); |
|
1898 if (!aMusicTable || (url != MPXDbCommonUtil::GetColumnTextL(*aMusicTable, EMusicUrl))) |
|
1899 { |
|
1900 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicUrl, url); |
|
1901 metaDataModified = ETrue; |
|
1902 } |
|
1903 |
|
1904 MPX_DEBUG2(" Music URL[%S]", &url); |
|
1905 } |
|
1906 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
1907 if (attributeId & EMPXMediaMusicAlbumArtist) |
|
1908 { |
|
1909 const TDesC& albumartist = aMedia.ValueText(KMPXMediaMusicAlbumArtist); |
|
1910 TPtrC truncatedAlbumartist(albumartist.Left(KMCMaxTextLen)); |
|
1911 |
|
1912 if (!aMusicTable || (truncatedAlbumartist.Compare(MPXDbCommonUtil::GetColumnTextL(*aMusicTable, EMusicAlbumArtist)) != 0)) |
|
1913 { |
|
1914 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicAlbumArtist, truncatedAlbumartist); |
1807 visibleChange = CMPXDbActiveTask::EAllVisible; |
1915 visibleChange = CMPXDbActiveTask::EAllVisible; |
1808 metaDataModified = ETrue; |
1916 metaDataModified = ETrue; |
1809 } |
1917 } |
1810 |
1918 } |
1811 MPX_DEBUG2(" Album Art Filename[%S]", &albumArtFilename); |
1919 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
1812 } |
|
1813 |
|
1814 if (attributeId & EMPXMediaMusicURL) |
|
1815 { |
|
1816 const TDesC& url = aMedia.ValueText(KMPXMediaMusicURL).Left(KMCMaxTextLen); |
|
1817 if (!aMusicTable || (url != MPXDbCommonUtil::GetColumnTextL(*aMusicTable, EMusicUrl))) |
|
1818 { |
|
1819 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicUrl, url); |
|
1820 metaDataModified = ETrue; |
|
1821 } |
|
1822 |
|
1823 MPX_DEBUG2(" Music URL[%S]", &url); |
|
1824 } |
|
1825 } |
1920 } |
1826 break; |
1921 break; |
1827 |
1922 |
1828 case KMPXMediaIdAudio: |
1923 case KMPXMediaIdAudio: |
1829 { |
1924 { |
1933 // this is required because the recordset may be reused by the code below |
2028 // this is required because the recordset may be reused by the code below |
1934 TUint32 artistId(0); |
2029 TUint32 artistId(0); |
1935 TUint32 albumId(0); |
2030 TUint32 albumId(0); |
1936 TUint32 genreId(0); |
2031 TUint32 genreId(0); |
1937 TUint32 composerId(0); |
2032 TUint32 composerId(0); |
|
2033 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
2034 TUint32 abstractAlbumId(0); |
|
2035 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
1938 if (aMusicTable) |
2036 if (aMusicTable) |
1939 { |
2037 { |
1940 artistId = aMusicTable->ColumnInt64(EMusicArtist); |
2038 artistId = aMusicTable->ColumnInt64(EMusicArtist); |
1941 albumId = aMusicTable->ColumnInt64(EMusicAlbum); |
2039 albumId = aMusicTable->ColumnInt64(EMusicAlbum); |
1942 genreId = aMusicTable->ColumnInt64(EMusicGenre); |
2040 genreId = aMusicTable->ColumnInt64(EMusicGenre); |
1943 composerId = aMusicTable->ColumnInt64(EMusicComposer); |
2041 composerId = aMusicTable->ColumnInt64(EMusicComposer); |
|
2042 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
2043 abstractAlbumId = aMusicTable->ColumnInt64(EMusicAbstractAlbum); |
|
2044 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
1944 } |
2045 } |
1945 |
2046 |
1946 // update the artist field |
2047 // update the artist field |
1947 TUint32 id(0); |
2048 TUint32 id(0); |
1948 TUint32 artistIdForAlbum(artistId); |
2049 TUint32 artistIdForAlbum(artistId); |
1954 visibleChange = CMPXDbActiveTask::EAllVisible; |
2055 visibleChange = CMPXDbActiveTask::EAllVisible; |
1955 artistIdForAlbum = id; |
2056 artistIdForAlbum = id; |
1956 } |
2057 } |
1957 |
2058 |
1958 // update the album field |
2059 // update the album field |
1959 if (UpdateCategoryFieldL(EMPXAlbum, aMedia, KMPXMediaMusicAlbum, albumId, |
2060 if (UpdateCategoryFieldL(EMPXAlbum, aMedia, KMPXMediaMusicAlbum, albumId, |
1960 aDrive, aItemChangedMessages, id, artistIdForAlbum)) |
2061 aDrive, aItemChangedMessages, id, artistIdForAlbum)) |
1961 { |
2062 { |
1962 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicAlbum, id); |
2063 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicAlbum, id); |
1963 metaDataModified = (aMusicTable != NULL); |
2064 metaDataModified = (aMusicTable != NULL); |
1964 visibleChange = CMPXDbActiveTask::EAllVisible; |
2065 visibleChange = CMPXDbActiveTask::EAllVisible; |
1965 |
2066 |
1995 { |
2096 { |
1996 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicComposer, id); |
2097 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicComposer, id); |
1997 metaDataModified = (aMusicTable != NULL); |
2098 metaDataModified = (aMusicTable != NULL); |
1998 visibleChange = CMPXDbActiveTask::EAllVisible; |
2099 visibleChange = CMPXDbActiveTask::EAllVisible; |
1999 } |
2100 } |
2000 |
2101 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
2102 if ( aMedia.IsSupported (KMPXMediaMusicAlbumArtFileName)) |
|
2103 { |
|
2104 const TDesC& albumArtFilename = aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Left(KMCMaxTextLen); |
|
2105 TParsePtrC parse( albumArtFilename ); |
|
2106 TPtrC ext( parse.Ext() ); |
|
2107 if (ext.CompareF(KAbstractAlbumExt)== 0) |
|
2108 { |
|
2109 if (UpdateCategoryFieldL(EMPXAbstractAlbum, aMedia, KMPXMediaMusicAlbumArtFileName, abstractAlbumId, |
|
2110 aDrive, aItemChangedMessages, id)) |
|
2111 { |
|
2112 MPXDbCommonUtil::AppendValueL(aFields, aValues, KMCMusicAbstractAlbum, id); |
|
2113 metaDataModified = (aMusicTable != NULL); |
|
2114 visibleChange = CMPXDbActiveTask::EAllVisible; |
|
2115 } |
|
2116 } |
|
2117 } |
|
2118 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
2001 #if defined (__MTP_PROTOCOL_SUPPORT) |
2119 #if defined (__MTP_PROTOCOL_SUPPORT) |
2002 // Set Mod bit to ETrue if metadata has been updated and caller hasn't explicitly |
2120 // Set Mod bit to ETrue if metadata has been updated and caller hasn't explicitly |
2003 // set/reset it |
2121 // set/reset it |
2004 if (aMusicTable && |
2122 if (aMusicTable && |
2005 !aMedia.IsSupported(KMPXMediaGeneralModified) && |
2123 !aMedia.IsSupported(KMPXMediaGeneralModified) && |
2280 name, (aCategory != EMPXGenre)); |
2398 name, (aCategory != EMPXGenre)); |
2281 if (!aOldId || (aOldId != aItemId)) |
2399 if (!aOldId || (aOldId != aItemId)) |
2282 { |
2400 { |
2283 // only add if the ID changed, |
2401 // only add if the ID changed, |
2284 // otherwise the song was updated but the artist name was not |
2402 // otherwise the song was updated but the artist name was not |
2285 |
2403 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
2286 // ignore the return value |
2404 if(aCategory == EMPXAbstractAlbum) |
2287 iObserver.AddCategoryItemL(aCategory, name, aDriveId, |
2405 { |
2288 aItemChangedMessages, itemAdded); |
2406 if (aMedia.ValueTObjectL<TMPXGeneralCategory>(KMPXMediaGeneralCategory) == EMPXSong ) |
|
2407 { |
|
2408 iObserver.AddCategoryItemL(aCategory, name, aDriveId, |
|
2409 aItemChangedMessages, itemAdded, KNullDesC, KNullDesC); |
|
2410 } |
|
2411 else |
|
2412 { |
|
2413 TPtrC albumartist(aMedia.ValueText(KMPXMediaMusicAlbumArtist).Left(KMCMaxTextLen)); |
|
2414 //get AlbumArt, Genre for AbstractAlbum |
|
2415 MPX_DEBUG2(" Music albumartist[%S]", &albumartist); |
|
2416 TPtrC genre(aMedia.ValueText(KMPXMediaMusicGenre).Left(KMCMaxTextLen)); |
|
2417 MPX_DEBUG2(" Music Genre[%S]", &genre); |
|
2418 |
|
2419 // ignore the return value |
|
2420 iObserver.AddCategoryItemL(aCategory, name, aDriveId, |
|
2421 aItemChangedMessages, itemAdded, albumartist, genre); |
|
2422 } |
|
2423 } |
|
2424 else |
|
2425 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
|
2426 { |
|
2427 // ignore the return value |
|
2428 iObserver.AddCategoryItemL(aCategory, name, aDriveId, |
|
2429 aItemChangedMessages, itemAdded); |
|
2430 } |
2289 updated = ETrue; |
2431 updated = ETrue; |
2290 } |
2432 } |
2291 } |
2433 } |
2292 else |
2434 else |
2293 { |
2435 { |
2294 // only genre is not case sensitive |
2436 // only genre is not case sensitive |
2295 aItemId = MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), aCategory, KNullDesC, |
2437 aItemId = MPXDbCommonUtil::GenerateUniqueIdL(iDbManager.Fs(), aCategory, KNullDesC, |
2296 (aCategory != EMPXGenre)); |
2438 (aCategory != EMPXGenre)); |
2297 if (!aOldId || (aOldId != aItemId)) |
2439 if (!aOldId || (aOldId != aItemId)) |
2298 { |
2440 { |
2299 // ignore the return value |
2441 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
2300 iObserver.AddCategoryItemL(aCategory, KNullDesC, aDriveId, |
2442 if(aCategory == EMPXAbstractAlbum) |
2301 aItemChangedMessages, itemAdded); |
2443 { |
2302 updated = ETrue; |
2444 //get AlbumArt, Genre for AbstractAlbum |
2303 } |
2445 TPtrC albumartist(aMedia.ValueText(KMPXMediaMusicAlbumArtist).Left(KMCMaxTextLen)); |
2304 } |
2446 MPX_DEBUG2(" Music albumartist[%S]", &albumartist); |
2305 |
2447 TPtrC genre(aMedia.ValueText(KMPXMediaMusicGenre).Left(KMCMaxTextLen)); |
2306 if (aOldId && (aOldId != aItemId)) |
2448 MPX_DEBUG2(" Music Genre[%S]", &genre); |
|
2449 |
|
2450 // ignore the return value |
|
2451 iObserver.AddCategoryItemL(aCategory, KNullDesC, aDriveId, |
|
2452 aItemChangedMessages, itemAdded, albumartist, genre); |
|
2453 } |
|
2454 else |
|
2455 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
|
2456 { |
|
2457 // ignore the return value |
|
2458 iObserver.AddCategoryItemL(aCategory, KNullDesC, aDriveId, |
|
2459 aItemChangedMessages, itemAdded); |
|
2460 } |
|
2461 updated = ETrue; |
|
2462 } |
|
2463 } |
|
2464 #ifdef ABSTRACTAUDIOALBUM_INCLUDED |
|
2465 //no need to delete old item for abstractalbum |
|
2466 if (aOldId && (aOldId != aItemId) && (aCategory != EMPXAbstractAlbum)) |
|
2467 #else |
|
2468 if (aOldId && (aOldId != aItemId)) |
|
2469 #endif // ABSTRACTAUDIOALBUM_INCLUDED |
2307 { |
2470 { |
2308 iObserver.DeleteSongForCategoryL(aCategory, aOldId, aDriveId, |
2471 iObserver.DeleteSongForCategoryL(aCategory, aOldId, aDriveId, |
2309 aItemChangedMessages, itemNotRemoved); |
2472 aItemChangedMessages, itemNotRemoved); |
2310 updated = ETrue; |
2473 updated = ETrue; |
2311 } |
2474 } |
2399 name, (aCategory != EMPXGenre)); |
2562 name, (aCategory != EMPXGenre)); |
2400 if (!aOldId || (aOldId != aItemId)) |
2563 if (!aOldId || (aOldId != aItemId)) |
2401 { |
2564 { |
2402 // only add if the ID changed, |
2565 // only add if the ID changed, |
2403 // otherwise the song was updated but the artist name was not |
2566 // otherwise the song was updated but the artist name was not |
2404 TPtrC art(KNullDesC); |
2567 TPtrC art(KNullDesC); |
2405 if (aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName)) |
2568 if (aMedia.IsSupported(KMPXMediaMusicAlbumArtFileName)) |
2406 { |
2569 { |
2407 art.Set(aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Left(KMCMaxTextLen)); |
2570 art.Set(aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Left(KMCMaxTextLen)); |
2408 } |
2571 } |
2409 |
2572 |
2410 iObserver.AddCategoryItemL(aCategory, name, aArtistId, art, aDriveId, aItemChangedMessages, itemAdded); |
2573 iObserver.AddCategoryItemL(aCategory, name, aArtistId, art, aDriveId, aItemChangedMessages, itemAdded); |
2411 updated = ETrue; |
2574 updated = ETrue; |
2412 } |
2575 } |
2413 } |
2576 } |
2414 else |
2577 else |
2415 { |
2578 { |