harvesterplugins/file/src/cfolderrenamedharvester.cpp
changeset 2 208a4ba3894c
parent 0 ccd0fd43f247
child 26 367228f82b66
--- a/harvesterplugins/file/src/cfolderrenamedharvester.cpp	Mon Apr 19 14:40:05 2010 +0300
+++ b/harvesterplugins/file/src/cfolderrenamedharvester.cpp	Mon May 03 12:32:15 2010 +0300
@@ -26,17 +26,23 @@
 
 #include "cfileplugin.h"
 #include "cfolderrenamedharvester.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cfolderrenamedharvesterTraces.h"
+#endif
+
 
 // CONSTANTS
 _LIT( KFileMask, "*.*" );
 const TInt KItemsPerRun = 1;
 
+
 namespace {
 
 void AppendBackslash( TDes& aDirectory )
-    {
+    {    
+    const TInt lastChar = aDirectory.Length() - 1;
     const TChar KBackslashChar( '\\' );
-    const TInt lastChar = aDirectory.Length() - 1;
 
     // If it is directory which not contain backslash. 
     if ( KBackslashChar != aDirectory[lastChar] )
@@ -45,6 +51,21 @@
        }
     }
 
+void RemoveBackslash( TDes& aDirectory )
+    {
+    const TInt lastChar = aDirectory.Length() - 1;
+    const TChar KBackslashChar( '\\' );
+    
+    //If directory contains slash at the end
+    if ( KBackslashChar == aDirectory[lastChar] )
+        {
+        TPtrC temppath( aDirectory.Left( lastChar ) );
+        aDirectory.Zero();
+        aDirectory.Append(temppath);
+        }
+    
+    }
+
 } // namespace
 
 // ============================ MEMBER FUNCTIONS ===============================
@@ -149,9 +170,11 @@
     iFilePlugin( aFilePlugin ),
     iFs( aFs )
     {
+    OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_CFOLDERRENAMEDHARVESTER_ENTRY );
     CPIXLOGSTRING("ENTER CFolderRenamedHarvester::CFolderRenamedHarvester");
     CActiveScheduler::Add( this );
     CPIXLOGSTRING("END CFolderRenamedHarvester::CFolderRenamedHarvester");
+    OstTraceFunctionExit0( CFOLDERRENAMEDHARVESTER_CFOLDERRENAMEDHARVESTER_EXIT );
     }
 
 
@@ -171,6 +194,7 @@
 TBool CFolderRenamedHarvester::StartL( const TFileName& aOldDirectoryName, 
 									   const TFileName& aNewDirectoryName )
     {
+    OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_STARTL_ENTRY );
     CPIXLOGSTRING("ENTER CFolderRenamedHarvester::Start");
 
     // Append trailing backslash if required
@@ -184,6 +208,7 @@
 
 	SetNextRequest( EFolderRenamedIdleState );
     CPIXLOGSTRING("END CFolderRenamedHarvester::Start");
+    OstTraceFunctionExit0( CFOLDERRENAMEDHARVESTER_STARTL_EXIT );
     return ETrue;
     }
 
@@ -193,6 +218,7 @@
 //		
 void CFolderRenamedHarvester::GetNextFolderL()
     {
+    OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_GETNEXTFOLDERL_ENTRY );
     CPIXLOGSTRING("ENTER CFolderRenamedHarvester::GetNextFolderL");   
 
     delete iDir;
@@ -203,13 +229,15 @@
 
     if( iDir )
         {
+        OstTrace0( TRACE_NORMAL, CFOLDERRENAMEDHARVESTER_GETNEXTFOLDERL, "CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterGetFileId" );
         CPIXLOGSTRING("CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterGetFileId"); 
         SetNextRequest( EFolderRenamedGetFileId );
         }
     else
         {
+        OstTrace0( TRACE_NORMAL, DUP1_CFOLDERRENAMEDHARVESTER_GETNEXTFOLDERL, "CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterIdle" );
         CPIXLOGSTRING("CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterIdle");
-
+        HandleFolderRenameL();
         // finished folder rename, delete the folder from the array.
         CFolderRenamedItem *item = iRenamedFolders[0];
         iRenamedFolders.Remove(0);
@@ -218,6 +246,7 @@
         SetNextRequest( EFolderRenamedIdleState );
         }
     CPIXLOGSTRING("END CFolderRenamedHarvester::GetNextFolderL");
+    OstTraceFunctionExit0( CFOLDERRENAMEDHARVESTER_GETNEXTFOLDERL_EXIT );
     }
 
 // ---------------------------------------------------------------------------
@@ -227,6 +256,7 @@
 //		    
 void CFolderRenamedHarvester::GetFileIdL()
     {
+    OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_GETFILEIDL_ENTRY );
     CPIXLOGSTRING("ENTER CFolderRenamedHarvester::GetFileId");
 
     if( iCurrentIndex == 0 )
@@ -251,7 +281,7 @@
             TEntry entry = (*iDir)[iCurrentIndex];
             // Check if entry is a hidden or system file
             // if true -> continue until find something to index or have checked whole directory
-            if( !entry.IsHidden() && !entry.IsSystem() && !entry.IsDir() )
+            if( !entry.IsHidden() && !entry.IsSystem() )
                 {
                 TParse fileParser;
                 fileParser.Set( iDirscan->FullPath(), &(*iDir)[iCurrentIndex].iName, NULL );
@@ -260,12 +290,22 @@
                 TPtrC leaf( fileNamePtr.Right( fileNamePtr.Length() - iNewFolderName.Length() ) );
                 TFileName oldFileName( iOldFolderName );
                 oldFileName.Append( leaf );
-
-                iFilePlugin.CreateFileIndexItemL( oldFileName, ECPixRemoveAction );
-                iFilePlugin.CreateFileIndexItemL( fileParser.FullName(), ECPixAddAction );
+                if(entry.IsDir())
+                    {
+                    iFilePlugin.CreateFolderFileIndexItemL( oldFileName, ECPixRemoveAction );
+                    iFilePlugin.CreateFolderFileIndexItemL( fileParser.FullName(), ECPixAddAction );                
+                    }  
+                else
+                    {
+                    iFilePlugin.CreateContentIndexItemL( oldFileName, ECPixRemoveAction );
+                    iFilePlugin.CreateFolderFileIndexItemL( oldFileName, ECPixRemoveAction, false );
+                
+                    iFilePlugin.CreateContentIndexItemL( fileParser.FullName(), ECPixAddAction );
+                    iFilePlugin.CreateFolderFileIndexItemL( fileParser.FullName(), ECPixAddAction, false );
+                    }                
                 // TODO: If this is not TRAPPED, state machine breaks 
                 iStepNumber++;
-                }
+                }            
             iCurrentIndex++;
             }
             
@@ -286,6 +326,7 @@
         SetNextRequest( EFolderRenamedStartHarvest );
         }
     CPIXLOGSTRING("END CFolderRenamedHarvester::GetFileId"); 
+    OstTraceFunctionExit0( CFOLDERRENAMEDHARVESTER_GETFILEIDL_EXIT );
     }			
 
       
@@ -295,6 +336,7 @@
 //   
 void CFolderRenamedHarvester::DoCancel()
 	{
+	OstTrace0( TRACE_NORMAL, CFOLDERRENAMEDHARVESTER_DOCANCEL, "CFolderRenamedHarvester::DoCancel" );
 	CPIXLOGSTRING("CFolderRenamedHarvester::DoCancel");
 	}
 
@@ -304,6 +346,7 @@
 //   
 void CFolderRenamedHarvester::RunL()
     {
+    OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_RUNL_ENTRY );
     CPIXLOGSTRING("ENTER CFolderRenamedHarvester::RunL");
      // Simple Round-Robin scheduling.
     Deque();
@@ -315,6 +358,7 @@
 			{
 			if ( iRenamedFolders.Count() == 0 )
 				{
+				OstTraceFunctionExit0( CFOLDERRENAMEDHARVESTER_RUNL_EXIT );
 				return; // Nothing to do.
 				}
 
@@ -342,6 +386,7 @@
 			break;
         }
     CPIXLOGSTRING("END CFolderRenamedHarvester::RunL");
+    OstTraceFunctionExit0( DUP1_CFOLDERRENAMEDHARVESTER_RUNL_EXIT );
     }
 
 // -----------------------------------------------------------------------------
@@ -350,6 +395,7 @@
 //   
 TInt CFolderRenamedHarvester::RunError(TInt aError)
 	{
+    OstTrace1( TRACE_NORMAL, CFOLDERRENAMEDHARVESTER_RUNERROR, "CFolderRenamedHarvester::RunError;aError=%d", aError );
     CPIXLOGSTRING2("CFolderRenamedHarvester::RunError - aError: %d", aError );
     iRenamedFolders.ResetAndDestroy();
 	iHarvestState = EFolderRenamedIdleState;
@@ -363,6 +409,7 @@
 //
 void CFolderRenamedHarvester::SetNextRequest( TFileHarvesterState aState )
     {
+    OstTrace0( TRACE_NORMAL, CFOLDERRENAMEDHARVESTER_SETNEXTREQUEST, "CFolderRenamedHarvester::SetNextRequest" );
     CPIXLOGSTRING("CFolderRenamedHarvester::SetNextRequest");
     if ( !IsActive() )
         {
@@ -373,5 +420,11 @@
         }
     }
 
-
+void CFolderRenamedHarvester::HandleFolderRenameL()
+    {
+    RemoveBackslash(iOldFolderName);
+    iFilePlugin.CreateFolderFileIndexItemL( iOldFolderName, ECPixRemoveAction );
+    RemoveBackslash(iNewFolderName);
+    iFilePlugin.CreateFolderFileIndexItemL( iNewFolderName, ECPixAddAction );
+    }
 // End of File