--- 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<KObjectDefStrSize> 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<KMaxDataTypeLength> 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;
+ }
+