harvester/server/src/harvesterao.cpp
branchRCL_3
changeset 8 6752808b2036
parent 3 b73a2e62868f
child 9 04bdd8f58f0e
child 14 646a02f170b9
--- 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;
+    }
+