harvester/harvesterplugins/AudioPlugin/src/harvesteraudioplugin.cpp
branchRCL_3
changeset 17 50de4d668bb6
parent 15 3cebc1a84278
child 19 82c0024438c8
--- 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();