diff -r b73a2e62868f -r 6752808b2036 harvester/server/src/harvesterao.cpp --- a/harvester/server/src/harvesterao.cpp Tue Feb 02 00:24:33 2010 +0200 +++ b/harvester/server/src/harvesterao.cpp Fri Feb 19 23:14:48 2010 +0200 @@ -51,8 +51,16 @@ _LIT( KTAGDaemonName, "ThumbAGDaemon" ); _LIT( KTAGDaemonExe, "thumbagdaemon.exe" ); +_LIT(KVideo, "Video"); _LIT(KInUse, "InUse"); +_LIT( KExtensionMp4, "mp4" ); +_LIT( KExtensionMpg4, "mpg4" ); +_LIT( KExtensionMpeg4, "mpeg4" ); +_LIT( KExtension3gp, "3gp" ); +_LIT( KExtension3gpp, "3gpp" ); +_LIT( KExtension3g2, "3g2" ); + CHarvesterAoPropertyDefs::CHarvesterAoPropertyDefs() : CBase() { } @@ -67,6 +75,8 @@ iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KLastModifiedDateProperty ); iSizePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KSizeProperty ); iOriginPropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KOriginProperty ); + iItemTypePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KItemTypeProperty ); + iTitlePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty ); CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MdeConstants::MediaObject::KMediaObject ); iPreinstalledPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KPreinstalledProperty ); @@ -113,7 +123,7 @@ // CHarvesterAO // --------------------------------------------------------------------------- // -CHarvesterAO::CHarvesterAO() : CActive( KHarvesterCustomImportantPriority) +CHarvesterAO::CHarvesterAO() : CActive( KHarvesterCustomImportantPriority ) { WRITELOG( "CHarvesterAO::CHarvesterAO() - begin" ); @@ -186,7 +196,8 @@ iContainerPHArray.ResetAndDestroy(); iContainerPHArray.Close(); - + + delete iHarvesterOomAO; delete iRestoreWatcher; delete iOnDemandAO; delete iMdEHarvesterSession; @@ -197,6 +208,7 @@ delete iUnmountHandlerAO; delete iPropDefs; + delete iCameraExtensionArray; RMediaIdUtil::ReleaseInstance(); @@ -250,6 +262,14 @@ iHarvesterPluginFactory = CHarvesterPluginFactory::NewL(); iHarvesterPluginFactory->SetBlacklist( *iBlacklist ); + + iCameraExtensionArray = new ( ELeave ) CDesCArraySeg( 6 ); + iCameraExtensionArray->InsertIsqL( KExtensionMp4 ); + iCameraExtensionArray->InsertIsqL( KExtensionMpg4 ); + iCameraExtensionArray->InsertIsqL( KExtensionMpeg4 ); + iCameraExtensionArray->InsertIsqL( KExtension3gp ); + iCameraExtensionArray->InsertIsqL( KExtension3gpp ); + iCameraExtensionArray->InsertIsqL( KExtension3g2 ); WRITELOG( "CHarvesterAO::ConstructL() - end" ); } @@ -704,8 +724,12 @@ continue; } TBuf objDefStr; - iHarvesterPluginFactory->GetObjectDefL( *hd, objDefStr ); - + + if( !CheckForCameraItem( hd, objDefStr ) ) + { + iHarvesterPluginFactory->GetObjectDefL( *hd, objDefStr ); + } + if( objDefStr.Length() == 0 || ( objDefStr == KInUse ) ) { @@ -788,7 +812,7 @@ if( !iPropDefs ) { - iPropDefs = CHarvesterAoPropertyDefs::NewL( mdeObjectDef ); + iPropDefs = CHarvesterAoPropertyDefs::NewL( defNS.GetObjectDefL( MdeConstants::Object::KBaseObject ) ); } // set file size @@ -803,7 +827,30 @@ // set origin mdeObject->AddUint8PropertyL( *iPropDefs->iOriginPropertyDef, hd->Origin() ); - + + TBuf mimeType; + iHarvesterPluginFactory->GetMimeType( hd->Uri(), mimeType ); + if( mimeType.Length() > 0 ) + { + mdeObject->AddTextPropertyL( *iPropDefs->iItemTypePropertyDef, mimeType ); + } + else + { + mdeObject->AddTextPropertyL( *iPropDefs->iItemTypePropertyDef, KNullDesC ); + } + + TPtrC name; + TBool nameFound = MdsUtils::GetName( hd->Uri(), name ); + + if ( nameFound ) + { + mdeObject->AddTextPropertyL( *iPropDefs->iTitlePropertyDef, name ); + } + else + { + mdeObject->AddTextPropertyL( *iPropDefs->iTitlePropertyDef, KNullDesC ); + } + CPlaceholderData* ph = NULL; if( hd->TakeSnapshot() ) { @@ -1119,7 +1166,6 @@ delete aHD; aHD = NULL; - return; } else { @@ -1160,14 +1206,14 @@ { WRITELOG( "CHarvesterAO::HandleSessionOpened() - error creating mde harvester session" ); } - - TRAPD( ohTrap, iMdeObjectHandler = CMdeObjectHandler::NewL( *iMdESession ) ); - if ( ohTrap != KErrNone ) + +#ifdef _DEBUG + TRAP( errorTrap, iMdeObjectHandler = CMdeObjectHandler::NewL( *iMdESession ) ); + if ( errorTrap != KErrNone ) { WRITELOG( "CHarvesterAO::HandleSessionOpened() - ObjectHandler creation failed" ); } -#ifdef _DEBUG TRAP( errorTrap, PreallocateNamespaceL( aSession.GetDefaultNamespaceDefL() ) ); if ( errorTrap != KErrNone ) { @@ -1187,12 +1233,12 @@ WRITELOG( "CHarvesterAO::HandleSessionOpened() - couldn't start composer plugins" ); } #else - // The idea here is that all of these three methods needs to be called, - // even if some leave, thus the three TRAPs + // The idea here is that all of these methods needs to be called, + // even if some leave, thus the several TRAPs + TRAP_IGNORE( iMdeObjectHandler = CMdeObjectHandler::NewL( *iMdESession ) ); TRAP_IGNORE( PreallocateNamespaceL( aSession.GetDefaultNamespaceDefL() ) ); TRAP_IGNORE( LoadMonitorPluginsL() ); - TRAP_IGNORE( StartComposersL() ); - + TRAP_IGNORE( StartComposersL() ); #endif if ( iContextEngineInitialized ) @@ -1220,6 +1266,7 @@ // Initializing pause indicator iServerPaused = EFalse; + #ifdef _DEBUG WRITELOG( "HarvesterThread::HandleSessionOpened() - Succeeded!" ); @@ -1386,7 +1433,6 @@ // no more items to harvest else { - // if container files to harvest, handle those if( iContainerPHArray.Count() > 0 ) { @@ -1394,12 +1440,12 @@ break; } - if(iReadyPHArray.Count() > 0) + const TInt arrayCount( iReadyPHArray.Count() ); + if( arrayCount > 0 ) { #ifdef _DEBUG - WRITELOG1("CHarvesterAO::RunL - items in ready pharray: %d", iReadyPHArray.Count() ); + WRITELOG1("CHarvesterAO::RunL - items in ready pharray: %d", arrayCount ); #endif - const TInt arrayCount( iReadyPHArray.Count() ); TInt endIndex( KPlaceholderQueueSize ); if( arrayCount < KPlaceholderQueueSize ) { @@ -2593,3 +2639,22 @@ TRAP_IGNORE( ResumeHarvesterL() ); } +TBool CHarvesterAO::CheckForCameraItem( CHarvesterData* aHd, TDes& aObjectDef ) + { + if( aHd->Origin() == MdeConstants::Object::ECamera ) + { + TPtrC ext; + if( !MdsUtils::GetExt( aHd->Uri(), ext ) ) + { + return EFalse; + } + TInt pos( 0 ); + if( iCameraExtensionArray->FindIsq( ext, pos ) == 0 ) // video extension matched + { + aObjectDef.Copy( KVideo ); + return ETrue; + } + } + return EFalse; + } +