harvester/harvesterplugins/OMADRMPlugin/src/harvesteromadrmplugin.cpp
branchRCL_3
changeset 63 e538444823de
parent 53 29d87345eaeb
equal deleted inserted replaced
57:2872ae438bf7 63:e538444823de
    46 _LIT( KSvgMime, "image/svg+xml" );
    46 _LIT( KSvgMime, "image/svg+xml" );
    47 _LIT( KRingingToneMime, "application/vnd.nokia.ringing-tone" );
    47 _LIT( KRingingToneMime, "application/vnd.nokia.ringing-tone" );
    48 
    48 
    49 _LIT(KInUse, "InUse");
    49 _LIT(KInUse, "InUse");
    50 
    50 
    51 CHarvesterOmaDrmPluginPropertyDefs::CHarvesterOmaDrmPluginPropertyDefs() : CBase(),
    51 CHarvesterOmaDrmPluginPropertyDefs::CHarvesterOmaDrmPluginPropertyDefs() : CBase()
    52     iCreationDatePropertyDef( NULL )
    52 	{
    53 	{
    53 	}
    54 	}
    54 
    55 
    55 void CHarvesterOmaDrmPluginPropertyDefs::ConstructL(CMdEObjectDef& aObjectDef)
    56 void CHarvesterOmaDrmPluginPropertyDefs::ConstructL( CMdEObjectDef& aObjectDef )
       
    57     {
       
    58     SetByObjectDefL( aObjectDef );
       
    59     }
       
    60 
       
    61 CHarvesterOmaDrmPluginPropertyDefs* CHarvesterOmaDrmPluginPropertyDefs::NewL()
       
    62     {
       
    63     CHarvesterOmaDrmPluginPropertyDefs* self = 
       
    64         new (ELeave) CHarvesterOmaDrmPluginPropertyDefs();
       
    65     return self;
       
    66     }
       
    67 
       
    68 void CHarvesterOmaDrmPluginPropertyDefs::SetByObjectDefL( CMdEObjectDef& aObjectDef )
       
    69 	{
    56 	{
    70 	CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef();
    57 	CMdENamespaceDef& nsDef = aObjectDef.NamespaceDef();
    71 	
    58 	
    72 	// Common property definitions
    59 	// Common property definitions
    73 	CMdEObjectDef& objectDef = nsDef.GetObjectDefL( MdeConstants::Object::KBaseObject );
    60 	CMdEObjectDef& objectDef = nsDef.GetObjectDefL( MdeConstants::Object::KBaseObject );
    92 	iBitsPerSamplePropertyDef = &imageDef.GetPropertyDefL( MdeConstants::Image::KBitsPerSampleProperty );
    79 	iBitsPerSamplePropertyDef = &imageDef.GetPropertyDefL( MdeConstants::Image::KBitsPerSampleProperty );
    93 	iFrameCountPropertyDef = &imageDef.GetPropertyDefL( MdeConstants::Image::KFrameCountProperty );
    80 	iFrameCountPropertyDef = &imageDef.GetPropertyDefL( MdeConstants::Image::KFrameCountProperty );
    94 	iGenrePropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KGenreProperty );
    81 	iGenrePropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KGenreProperty );
    95 	}
    82 	}
    96 
    83 
       
    84 CHarvesterOmaDrmPluginPropertyDefs* CHarvesterOmaDrmPluginPropertyDefs::NewL(CMdEObjectDef& aObjectDef)
       
    85 	{
       
    86 	CHarvesterOmaDrmPluginPropertyDefs* self = 
       
    87 		new (ELeave) CHarvesterOmaDrmPluginPropertyDefs();
       
    88 	CleanupStack::PushL( self );
       
    89 	self->ConstructL( aObjectDef );
       
    90 	CleanupStack::Pop( self );
       
    91 	return self;
       
    92 	}
       
    93 
    97 /**
    94 /**
    98 * Default constructor
    95 * Default constructor
    99 */
    96 */
   100 CHarvesterOMADRMPlugin::CHarvesterOMADRMPlugin() : CHarvesterPlugin()
    97 CHarvesterOMADRMPlugin::CHarvesterOMADRMPlugin() : CHarvesterPlugin()
   101 	{
    98 	{
   141     
   138     
   142     delete iPhoneSoundsPath;
   139     delete iPhoneSoundsPath;
   143     iPhoneSoundsPath = NULL;
   140     iPhoneSoundsPath = NULL;
   144     delete iMmcSoundsPath;
   141     delete iMmcSoundsPath;
   145     iMmcSoundsPath = NULL;
   142     iMmcSoundsPath = NULL;
       
   143 	
       
   144 	delete iPropDefs;
       
   145 	iPropDefs = NULL;
   146 	}
   146 	}
   147 
   147 
   148 /**
   148 /**
   149 * 2nd phase constructor
   149 * 2nd phase constructor
   150 */
   150 */
   153 	WRITELOG( "CHarvesterOMADRMPlugin::ConstructL()" );
   153 	WRITELOG( "CHarvesterOMADRMPlugin::ConstructL()" );
   154     SetPriority( KHarvesterPriorityHarvestingPlugin - 1 );	
   154     SetPriority( KHarvesterPriorityHarvestingPlugin - 1 );	
   155     
   155     
   156     User::LeaveIfError( iFs.Connect() );
   156     User::LeaveIfError( iFs.Connect() );
   157 	
   157 	
   158     iPropDefs = CHarvesterOmaDrmPluginPropertyDefs::NewL();
       
   159     
       
   160 	TFileName phoneRoot = PathInfo::PhoneMemoryRootPath();
   158 	TFileName phoneRoot = PathInfo::PhoneMemoryRootPath();
   161 	TFileName mmcRoot = PathInfo::MemoryCardRootPath();
   159 	TFileName mmcRoot = PathInfo::MemoryCardRootPath();
   162 	
   160 	
   163 	TFileName images = PathInfo::ImagesPath();
   161 	TFileName images = PathInfo::ImagesPath();
   164 	
   162 	
   191     iMmcSoundsPath = mmcSoundPath.Right( mmcSoundPath.Length() - 1 ).AllocL();
   189     iMmcSoundsPath = mmcSoundPath.Right( mmcSoundPath.Length() - 1 ).AllocL();
   192 	}
   190 	}
   193 
   191 
   194 void CHarvesterOMADRMPlugin::HarvestL( CHarvesterData* aHarvesterData )
   192 void CHarvesterOMADRMPlugin::HarvestL( CHarvesterData* aHarvesterData )
   195 	{
   193 	{
   196 	WRITELOG( "CHarvesterOMADRMPlugin::HarvestL()" );
   194 	WRITELOG( "CHarvesterImagePlugin::HarvestL()" );
   197     CMdEObject& mdeObject = aHarvesterData->MdeObject();
   195     CMdEObject& mdeObject = aHarvesterData->MdeObject();
   198 	CDRMHarvestData* drmHarvestData = CDRMHarvestData::NewL();
   196 	CDRMHarvestData* drmHarvestData = CDRMHarvestData::NewL();
   199 	CleanupStack::PushL( drmHarvestData );
   197 	CleanupStack::PushL( drmHarvestData );
   200 	
   198 	
   201     CFileData* fileData = CFileData::NewL();
   199     CFileData* fileData = CFileData::NewL();
   239 // ---------------------------------------------------------------------------
   237 // ---------------------------------------------------------------------------
   240 // GatherDataL
   238 // GatherDataL
   241 // ---------------------------------------------------------------------------
   239 // ---------------------------------------------------------------------------
   242 //
   240 //
   243 TInt CHarvesterOMADRMPlugin::GatherDataL( CMdEObject& aMetadataObject, CDRMHarvestData& aDRMharvestData, 
   241 TInt CHarvesterOMADRMPlugin::GatherDataL( CMdEObject& aMetadataObject, CDRMHarvestData& aDRMharvestData, 
   244         CFileData& aFileData, CHarvestData& /*aHarvestData*/ )
   242         CFileData& aFileData, CHarvestData& aHarvestData )
   245     {
   243     {
   246     WRITELOG( "CHarvesterOMADRMPlugin::GatherDataL" );
   244     WRITELOG( "CHarvesterOMADRMPlugin::GatherDataL" );
   247     
   245     
   248     TEntry* entry = new (ELeave) TEntry();
   246     TEntry* entry = new (ELeave) TEntry();
   249     CleanupStack::PushL( entry );
   247     CleanupStack::PushL( entry );
   328     if ( err != KErrNone)
   326     if ( err != KErrNone)
   329         {
   327         {
   330         WRITELOG1( "CHarvesterOMADRMPlugin::GatherDataL - ERROR: getting protection info failed %d", err );
   328         WRITELOG1( "CHarvesterOMADRMPlugin::GatherDataL - ERROR: getting protection info failed %d", err );
   331         }
   329         }
   332       
   330       
   333     if( aMetadataObject.Def().Name() == MdeConstants::Image::KImageObject )
   331     CImageDecoder* decoder = NULL;
   334         {
   332 
   335         CImageDecoder* decoder = NULL;
   333     TRAP( err, decoder = CImageDecoder::FileNewL( iFs, uri, ContentAccess::EPeek, 
   336 
   334             ( CImageDecoder::TOptions )( CImageDecoder::EPreferFastDecode )));
   337         TRAP( err, decoder = CImageDecoder::FileNewL( iFs, uri, ContentAccess::EPeek, 
   335 
   338                 ( CImageDecoder::TOptions )( CImageDecoder::EPreferFastDecode )));
   336     CleanupStack::PushL( decoder );
   339 
   337     
   340         CleanupStack::PushL( decoder );
   338     if(decoder && !err)
   341     
   339         {
   342         if(decoder && !err)
   340         WRITELOG( "CHarvesterImagePlugin::GatherData() - Image decoder has opened the file." );        
   343             {
   341         // Get image width, frame count, height and bits per pixel from image decoder.
   344             WRITELOG( "CHarvesterImagePlugin::GatherData() - Image decoder has opened the file." );        
   342         const TFrameInfo info = decoder->FrameInfo( 0 );
   345             // Get image width, frame count, height and bits per pixel from image decoder.
   343         const TSize imageSize = info.iOverallSizeInPixels;
   346             const TFrameInfo info = decoder->FrameInfo( 0 );
   344         const TInt framecount = decoder->FrameCount();
   347             const TSize imageSize = info.iOverallSizeInPixels;
   345         aFileData.iFrameCount = framecount;
   348             const TInt framecount = decoder->FrameCount();
   346         aFileData.iImageWidth = imageSize.iWidth;
   349             aFileData.iFrameCount = framecount;
   347         aFileData.iImageHeight = imageSize.iHeight;
   350             aFileData.iImageWidth = imageSize.iWidth;
   348         aFileData.iBitsPerPixel = info.iBitsPerPixel;
   351             aFileData.iImageHeight = imageSize.iHeight;
   349         }
   352             aFileData.iBitsPerPixel = info.iBitsPerPixel;
   350     else
   353             }
   351         {
   354         else
   352         WRITELOG1( "CHarvesterImagePlugin::GatherData() - ERROR: decoder %d", err );
   355             {
   353         }
   356             WRITELOG1( "CHarvesterImagePlugin::GatherData() - ERROR: decoder %d", err );
   354 
   357             }    
   355     CleanupStack::PopAndDestroy( 4 ); // content, data, attrSet, imagedecoder
   358         CleanupStack::PopAndDestroy( decoder );
       
   359         }
       
   360 
       
   361 
       
   362     CleanupStack::PopAndDestroy( 3 ); // content, data, attrSet
       
   363     return KErrNone;
   356     return KErrNone;
   364     }
   357     }
   365 
   358 
   366 // ---------------------------------------------------------------------------
   359 // ---------------------------------------------------------------------------
   367 // HandleObjectPropertiesL
   360 // HandleObjectPropertiesL
   368 // ---------------------------------------------------------------------------
   361 // ---------------------------------------------------------------------------
   369 //
   362 //
   370 void CHarvesterOMADRMPlugin::HandleObjectPropertiesL( CHarvestData& /*aHarvestData*/, CDRMHarvestData& aDRMharvestData, CFileData& aFileData, 
   363 void CHarvesterOMADRMPlugin::HandleObjectPropertiesL( CHarvestData& aHarvestData, CDRMHarvestData& aDRMharvestData, CFileData& aFileData, 
   371         CHarvesterData& aHarvesterData, TBool aIsAdd )
   364         CHarvesterData& aHarvesterData, TBool aIsAdd )
   372     {
   365     {
   373     WRITELOG("CHarvesterOMADRMPlugin - HandleNewObject ");
   366     WRITELOG("CHarvesterOMADRMPlugin - HandleNewObject ");
   374     CMdEObject& mdeObject = aHarvesterData.MdeObject();
   367     CMdEObject& mdeObject = aHarvesterData.MdeObject();
   375 
   368 
   376     InitPropDefsL( mdeObject.Def() );
   369     if( !iPropDefs )
       
   370     	{
       
   371     	CMdEObjectDef& objectDef = mdeObject.Def();
       
   372     	iPropDefs = CHarvesterOmaDrmPluginPropertyDefs::NewL( objectDef );
       
   373     	// Prefetch max text lengt for validity checking
       
   374     	iMaxTextLength = iPropDefs->iGenrePropertyDef->MaxTextLengthL();
       
   375     	}
   377     
   376     
   378     TTimeIntervalSeconds timeOffset = User::UTCOffset();
   377     TTimeIntervalSeconds timeOffset = User::UTCOffset();
   379     
   378     
   380     TPtrC objectDefName( mdeObject.Def().Name());
   379     TPtrC objectDefName( mdeObject.Def().Name());
   381     
   380     
   647         delete content;
   646         delete content;
   648         content = NULL;
   647         content = NULL;
   649         }
   648         }
   650     }
   649     }
   651 
   650 
   652 void CHarvesterOMADRMPlugin::InitPropDefsL( CMdEObjectDef& aObjectDef )
       
   653     {
       
   654     if( !iPropDefs->iCreationDatePropertyDef )
       
   655         {
       
   656         iPropDefs->SetByObjectDefL( aObjectDef );
       
   657         // Prefetch max text lengt for validity checking
       
   658         iMaxTextLength = iPropDefs->iGenrePropertyDef->MaxTextLengthL();
       
   659         }
       
   660     }
       
   661