--- a/harvester/harvesterplugins/AudioPlugin/src/harvesteraudioplugin.cpp Mon Mar 15 12:42:24 2010 +0200
+++ b/harvester/harvesterplugins/AudioPlugin/src/harvesteraudioplugin.cpp Wed Mar 31 22:19:07 2010 +0300
@@ -22,6 +22,7 @@
#include <mdeobjectdef.h>
#include <mdeobject.h>
#include <centralrepository.h>
+#include <caf/caf.h>
#include "harvestercommon.h"
#include "harvesteraudioplugin.h"
@@ -34,6 +35,8 @@
const TUid KHarvesterRepoUid = { 0x200009FE };
const TUint32 KEnableAlbumArtHarvest = 0x00090001;
+_LIT( KExtensionWma, "wma" );
+
CHarvesterAudioPluginPropertyDefs::CHarvesterAudioPluginPropertyDefs() : CBase()
{
}
@@ -61,6 +64,7 @@
iTrackPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KTrackProperty );
iThumbnailPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KThumbnailPresentProperty );
iDatePropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KReleaseDateProperty );
+ iDrmPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KDRMProperty );
// Audio property definitions
CMdEObjectDef& audioDef = nsDef.GetObjectDefL( MdeConstants::Audio::KAudioObject );
@@ -127,6 +131,7 @@
WRITELOG( "CHarvesterAudioPlugin::ConstructL()" );
CRepository* rep = CRepository::NewLC( KHarvesterRepoUid );
+ // If data could not be fetched, default to non-album art mode
rep->Get( KEnableAlbumArtHarvest, iHarvestAlbumArt );
CleanupStack::PopAndDestroy( rep );
@@ -332,6 +337,31 @@
CMdEObject& mdeObject = aHD->MdeObject();
const TDesC& uri = mdeObject.Uri();
+
+ if( !iPropDefs )
+ {
+ CMdEObjectDef& audioObjectDef = mdeObject.Def();
+ iPropDefs = CHarvesterAudioPluginPropertyDefs::NewL( audioObjectDef );
+ }
+
+ TPtrC ext;
+ MdsUtils::GetExt( uri, ext );
+
+ // Check for possibly protected content
+ if( ext.CompareF( KExtensionWma ) == 0 )
+ {
+ ContentAccess::CContent* content = ContentAccess::CContent::NewLC( uri );
+ ContentAccess::CData* data = content->OpenContentLC( ContentAccess::EPeek );
+
+ TBool protectedContent( EFalse );
+ TInt err = data->GetAttribute( ContentAccess::EIsProtected, protectedContent );
+ if( err == KErrNone && protectedContent )
+ {
+ CMdeObjectWrapper::HandleObjectPropertyL( mdeObject,
+ *iPropDefs->iDrmPropertyDef, &protectedContent, aIsAdd );
+ }
+ CleanupStack::PopAndDestroy( 2 ); // content, data
+ }
TBool parsed( EFalse );
TRAPD( parseError, parsed = iAudioParser->ParseL( uri ) );
@@ -352,16 +382,10 @@
TPtrC orgArtist = iAudioParser->MetaDataFieldL( CAudioMDParser::EAudioMDFieldOriginalArtist );
TPtrC track = iAudioParser->MetaDataFieldL( CAudioMDParser::EAudioMDFieldTrack );
TPtrC duration = iAudioParser->MetaDataFieldL( CAudioMDParser::EAudioMDFieldDuration );
- TPtrC copyright = iAudioParser->MetaDataFieldL( CAudioMDParser::EAudioMDFieldCopyright);
+ TPtrC copyright = iAudioParser->MetaDataFieldL( CAudioMDParser::EAudioMDFieldCopyright );
TPtrC date = iAudioParser->MetaDataFieldL( CAudioMDParser::EAudioMDFieldDate );
TPtrC8 jpeg = iAudioParser->MetaDataField8L( CAudioMDParser::EAudioMDFieldJpeg );
-
- if( !iPropDefs )
- {
- CMdEObjectDef& audioObjectDef = mdeObject.Def();
- iPropDefs = CHarvesterAudioPluginPropertyDefs::NewL( audioObjectDef );
- }
// Time offset
TTimeIntervalSeconds timeOffsetSeconds = User::UTCOffset();