24 // For Logging |
24 // For Logging |
25 #include "harvesterserverlogger.h" |
25 #include "harvesterserverlogger.h" |
26 |
26 |
27 #include "cfileplugin.h" |
27 #include "cfileplugin.h" |
28 #include "cfolderrenamedharvester.h" |
28 #include "cfolderrenamedharvester.h" |
|
29 #include "OstTraceDefinitions.h" |
|
30 #ifdef OST_TRACE_COMPILER_IN_USE |
|
31 #include "cfolderrenamedharvesterTraces.h" |
|
32 #endif |
|
33 |
29 |
34 |
30 // CONSTANTS |
35 // CONSTANTS |
31 _LIT( KFileMask, "*.*" ); |
36 _LIT( KFileMask, "*.*" ); |
32 const TInt KItemsPerRun = 1; |
37 const TInt KItemsPerRun = 1; |
33 |
38 |
|
39 |
34 namespace { |
40 namespace { |
35 |
41 |
36 void AppendBackslash( TDes& aDirectory ) |
42 void AppendBackslash( TDes& aDirectory ) |
37 { |
43 { |
|
44 const TInt lastChar = aDirectory.Length() - 1; |
38 const TChar KBackslashChar( '\\' ); |
45 const TChar KBackslashChar( '\\' ); |
39 const TInt lastChar = aDirectory.Length() - 1; |
|
40 |
46 |
41 // If it is directory which not contain backslash. |
47 // If it is directory which not contain backslash. |
42 if ( KBackslashChar != aDirectory[lastChar] ) |
48 if ( KBackslashChar != aDirectory[lastChar] ) |
43 { |
49 { |
44 aDirectory.Append( KBackslashChar ); |
50 aDirectory.Append( KBackslashChar ); |
45 } |
51 } |
46 } |
52 } |
47 |
53 |
|
54 void RemoveBackslash( TDes& aDirectory ) |
|
55 { |
|
56 const TInt lastChar = aDirectory.Length() - 1; |
|
57 const TChar KBackslashChar( '\\' ); |
|
58 |
|
59 //If directory contains slash at the end |
|
60 if ( KBackslashChar == aDirectory[lastChar] ) |
|
61 { |
|
62 TPtrC temppath( aDirectory.Left( lastChar ) ); |
|
63 aDirectory.Zero(); |
|
64 aDirectory.Append(temppath); |
|
65 } |
|
66 |
|
67 } |
|
68 |
48 } // namespace |
69 } // namespace |
49 |
70 |
50 // ============================ MEMBER FUNCTIONS =============================== |
71 // ============================ MEMBER FUNCTIONS =============================== |
51 |
72 |
52 |
73 |
147 CFolderRenamedHarvester::CFolderRenamedHarvester( CFilePlugin& aFilePlugin, RFs& aFs ) |
168 CFolderRenamedHarvester::CFolderRenamedHarvester( CFilePlugin& aFilePlugin, RFs& aFs ) |
148 : CActive( CActive::EPriorityIdle ), |
169 : CActive( CActive::EPriorityIdle ), |
149 iFilePlugin( aFilePlugin ), |
170 iFilePlugin( aFilePlugin ), |
150 iFs( aFs ) |
171 iFs( aFs ) |
151 { |
172 { |
|
173 OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_CFOLDERRENAMEDHARVESTER_ENTRY ); |
152 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::CFolderRenamedHarvester"); |
174 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::CFolderRenamedHarvester"); |
153 CActiveScheduler::Add( this ); |
175 CActiveScheduler::Add( this ); |
154 CPIXLOGSTRING("END CFolderRenamedHarvester::CFolderRenamedHarvester"); |
176 CPIXLOGSTRING("END CFolderRenamedHarvester::CFolderRenamedHarvester"); |
|
177 OstTraceFunctionExit0( CFOLDERRENAMEDHARVESTER_CFOLDERRENAMEDHARVESTER_EXIT ); |
155 } |
178 } |
156 |
179 |
157 |
180 |
158 // --------------------------------------------------------------------------- |
181 // --------------------------------------------------------------------------- |
159 // CFolderRenamedHarvester::ConstructL |
182 // CFolderRenamedHarvester::ConstructL |
169 // --------------------------------------------------------------------------- |
192 // --------------------------------------------------------------------------- |
170 // |
193 // |
171 TBool CFolderRenamedHarvester::StartL( const TFileName& aOldDirectoryName, |
194 TBool CFolderRenamedHarvester::StartL( const TFileName& aOldDirectoryName, |
172 const TFileName& aNewDirectoryName ) |
195 const TFileName& aNewDirectoryName ) |
173 { |
196 { |
|
197 OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_STARTL_ENTRY ); |
174 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::Start"); |
198 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::Start"); |
175 |
199 |
176 // Append trailing backslash if required |
200 // Append trailing backslash if required |
177 TFileName oldName ( aOldDirectoryName ); |
201 TFileName oldName ( aOldDirectoryName ); |
178 AppendBackslash( oldName ); |
202 AppendBackslash( oldName ); |
182 CFolderRenamedItem *renameItem = CFolderRenamedItem::NewL( oldName, newName ); |
206 CFolderRenamedItem *renameItem = CFolderRenamedItem::NewL( oldName, newName ); |
183 iRenamedFolders.AppendL( renameItem ); |
207 iRenamedFolders.AppendL( renameItem ); |
184 |
208 |
185 SetNextRequest( EFolderRenamedIdleState ); |
209 SetNextRequest( EFolderRenamedIdleState ); |
186 CPIXLOGSTRING("END CFolderRenamedHarvester::Start"); |
210 CPIXLOGSTRING("END CFolderRenamedHarvester::Start"); |
|
211 OstTraceFunctionExit0( CFOLDERRENAMEDHARVESTER_STARTL_EXIT ); |
187 return ETrue; |
212 return ETrue; |
188 } |
213 } |
189 |
214 |
190 // --------------------------------------------------------------------------- |
215 // --------------------------------------------------------------------------- |
191 // CFolderRenamedHarvester::GetNextFolderL |
216 // CFolderRenamedHarvester::GetNextFolderL |
192 // --------------------------------------------------------------------------- |
217 // --------------------------------------------------------------------------- |
193 // |
218 // |
194 void CFolderRenamedHarvester::GetNextFolderL() |
219 void CFolderRenamedHarvester::GetNextFolderL() |
195 { |
220 { |
|
221 OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_GETNEXTFOLDERL_ENTRY ); |
196 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::GetNextFolderL"); |
222 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::GetNextFolderL"); |
197 |
223 |
198 delete iDir; |
224 delete iDir; |
199 iDir = NULL; |
225 iDir = NULL; |
200 // Documentation: CDirScan::NextL() The caller of this function |
226 // Documentation: CDirScan::NextL() The caller of this function |
201 // is responsible for deleting iDir after the function has returned. |
227 // is responsible for deleting iDir after the function has returned. |
202 iDirscan->NextL(iDir); |
228 iDirscan->NextL(iDir); |
203 |
229 |
204 if( iDir ) |
230 if( iDir ) |
205 { |
231 { |
|
232 OstTrace0( TRACE_NORMAL, CFOLDERRENAMEDHARVESTER_GETNEXTFOLDERL, "CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterGetFileId" ); |
206 CPIXLOGSTRING("CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterGetFileId"); |
233 CPIXLOGSTRING("CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterGetFileId"); |
207 SetNextRequest( EFolderRenamedGetFileId ); |
234 SetNextRequest( EFolderRenamedGetFileId ); |
208 } |
235 } |
209 else |
236 else |
210 { |
237 { |
|
238 OstTrace0( TRACE_NORMAL, DUP1_CFOLDERRENAMEDHARVESTER_GETNEXTFOLDERL, "CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterIdle" ); |
211 CPIXLOGSTRING("CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterIdle"); |
239 CPIXLOGSTRING("CFolderRenamedHarvester::GetNextFolderL - IF EHarvesterIdle"); |
212 |
240 HandleFolderRenameL(); |
213 // finished folder rename, delete the folder from the array. |
241 // finished folder rename, delete the folder from the array. |
214 CFolderRenamedItem *item = iRenamedFolders[0]; |
242 CFolderRenamedItem *item = iRenamedFolders[0]; |
215 iRenamedFolders.Remove(0); |
243 iRenamedFolders.Remove(0); |
216 delete item; |
244 delete item; |
217 |
245 |
218 SetNextRequest( EFolderRenamedIdleState ); |
246 SetNextRequest( EFolderRenamedIdleState ); |
219 } |
247 } |
220 CPIXLOGSTRING("END CFolderRenamedHarvester::GetNextFolderL"); |
248 CPIXLOGSTRING("END CFolderRenamedHarvester::GetNextFolderL"); |
|
249 OstTraceFunctionExit0( CFOLDERRENAMEDHARVESTER_GETNEXTFOLDERL_EXIT ); |
221 } |
250 } |
222 |
251 |
223 // --------------------------------------------------------------------------- |
252 // --------------------------------------------------------------------------- |
224 // CFolderRenamedHarvester::GetFileIdL |
253 // CFolderRenamedHarvester::GetFileIdL |
225 // |
254 // |
226 // --------------------------------------------------------------------------- |
255 // --------------------------------------------------------------------------- |
227 // |
256 // |
228 void CFolderRenamedHarvester::GetFileIdL() |
257 void CFolderRenamedHarvester::GetFileIdL() |
229 { |
258 { |
|
259 OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_GETFILEIDL_ENTRY ); |
230 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::GetFileId"); |
260 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::GetFileId"); |
231 |
261 |
232 if( iCurrentIndex == 0 ) |
262 if( iCurrentIndex == 0 ) |
233 { |
263 { |
234 TParse parse; |
264 TParse parse; |
249 while( ( iCurrentIndex < count ) && ( iStepNumber < KItemsPerRun ) ) |
279 while( ( iCurrentIndex < count ) && ( iStepNumber < KItemsPerRun ) ) |
250 { |
280 { |
251 TEntry entry = (*iDir)[iCurrentIndex]; |
281 TEntry entry = (*iDir)[iCurrentIndex]; |
252 // Check if entry is a hidden or system file |
282 // Check if entry is a hidden or system file |
253 // if true -> continue until find something to index or have checked whole directory |
283 // if true -> continue until find something to index or have checked whole directory |
254 if( !entry.IsHidden() && !entry.IsSystem() && !entry.IsDir() ) |
284 if( !entry.IsHidden() && !entry.IsSystem() ) |
255 { |
285 { |
256 TParse fileParser; |
286 TParse fileParser; |
257 fileParser.Set( iDirscan->FullPath(), &(*iDir)[iCurrentIndex].iName, NULL ); |
287 fileParser.Set( iDirscan->FullPath(), &(*iDir)[iCurrentIndex].iName, NULL ); |
258 |
288 |
259 TPtrC fileNamePtr = fileParser.FullName(); |
289 TPtrC fileNamePtr = fileParser.FullName(); |
260 TPtrC leaf( fileNamePtr.Right( fileNamePtr.Length() - iNewFolderName.Length() ) ); |
290 TPtrC leaf( fileNamePtr.Right( fileNamePtr.Length() - iNewFolderName.Length() ) ); |
261 TFileName oldFileName( iOldFolderName ); |
291 TFileName oldFileName( iOldFolderName ); |
262 oldFileName.Append( leaf ); |
292 oldFileName.Append( leaf ); |
263 |
293 if(entry.IsDir()) |
264 iFilePlugin.CreateFileIndexItemL( oldFileName, ECPixRemoveAction ); |
294 { |
265 iFilePlugin.CreateFileIndexItemL( fileParser.FullName(), ECPixAddAction ); |
295 iFilePlugin.CreateFolderFileIndexItemL( oldFileName, ECPixRemoveAction ); |
|
296 iFilePlugin.CreateFolderFileIndexItemL( fileParser.FullName(), ECPixAddAction ); |
|
297 } |
|
298 else |
|
299 { |
|
300 iFilePlugin.CreateContentIndexItemL( oldFileName, ECPixRemoveAction ); |
|
301 iFilePlugin.CreateFolderFileIndexItemL( oldFileName, ECPixRemoveAction, false ); |
|
302 |
|
303 iFilePlugin.CreateContentIndexItemL( fileParser.FullName(), ECPixAddAction ); |
|
304 iFilePlugin.CreateFolderFileIndexItemL( fileParser.FullName(), ECPixAddAction, false ); |
|
305 } |
266 // TODO: If this is not TRAPPED, state machine breaks |
306 // TODO: If this is not TRAPPED, state machine breaks |
267 iStepNumber++; |
307 iStepNumber++; |
268 } |
308 } |
269 iCurrentIndex++; |
309 iCurrentIndex++; |
270 } |
310 } |
271 |
311 |
272 iStepNumber = 0; |
312 iStepNumber = 0; |
273 |
313 |
284 else |
324 else |
285 { |
325 { |
286 SetNextRequest( EFolderRenamedStartHarvest ); |
326 SetNextRequest( EFolderRenamedStartHarvest ); |
287 } |
327 } |
288 CPIXLOGSTRING("END CFolderRenamedHarvester::GetFileId"); |
328 CPIXLOGSTRING("END CFolderRenamedHarvester::GetFileId"); |
|
329 OstTraceFunctionExit0( CFOLDERRENAMEDHARVESTER_GETFILEIDL_EXIT ); |
289 } |
330 } |
290 |
331 |
291 |
332 |
292 // ----------------------------------------------------------------------------- |
333 // ----------------------------------------------------------------------------- |
293 // CFolderRenamedHarvester::DoCancel |
334 // CFolderRenamedHarvester::DoCancel |
294 // ----------------------------------------------------------------------------- |
335 // ----------------------------------------------------------------------------- |
295 // |
336 // |
296 void CFolderRenamedHarvester::DoCancel() |
337 void CFolderRenamedHarvester::DoCancel() |
297 { |
338 { |
|
339 OstTrace0( TRACE_NORMAL, CFOLDERRENAMEDHARVESTER_DOCANCEL, "CFolderRenamedHarvester::DoCancel" ); |
298 CPIXLOGSTRING("CFolderRenamedHarvester::DoCancel"); |
340 CPIXLOGSTRING("CFolderRenamedHarvester::DoCancel"); |
299 } |
341 } |
300 |
342 |
301 // ----------------------------------------------------------------------------- |
343 // ----------------------------------------------------------------------------- |
302 // CFolderRenamedHarvester::RunL |
344 // CFolderRenamedHarvester::RunL |
303 // ----------------------------------------------------------------------------- |
345 // ----------------------------------------------------------------------------- |
304 // |
346 // |
305 void CFolderRenamedHarvester::RunL() |
347 void CFolderRenamedHarvester::RunL() |
306 { |
348 { |
|
349 OstTraceFunctionEntry0( CFOLDERRENAMEDHARVESTER_RUNL_ENTRY ); |
307 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::RunL"); |
350 CPIXLOGSTRING("ENTER CFolderRenamedHarvester::RunL"); |
308 // Simple Round-Robin scheduling. |
351 // Simple Round-Robin scheduling. |
309 Deque(); |
352 Deque(); |
310 CActiveScheduler::Add( this ); |
353 CActiveScheduler::Add( this ); |
311 |
354 |
340 } |
384 } |
341 default: |
385 default: |
342 break; |
386 break; |
343 } |
387 } |
344 CPIXLOGSTRING("END CFolderRenamedHarvester::RunL"); |
388 CPIXLOGSTRING("END CFolderRenamedHarvester::RunL"); |
|
389 OstTraceFunctionExit0( DUP1_CFOLDERRENAMEDHARVESTER_RUNL_EXIT ); |
345 } |
390 } |
346 |
391 |
347 // ----------------------------------------------------------------------------- |
392 // ----------------------------------------------------------------------------- |
348 // CFolderRenamedHarvester::RunError |
393 // CFolderRenamedHarvester::RunError |
349 // ----------------------------------------------------------------------------- |
394 // ----------------------------------------------------------------------------- |
350 // |
395 // |
351 TInt CFolderRenamedHarvester::RunError(TInt aError) |
396 TInt CFolderRenamedHarvester::RunError(TInt aError) |
352 { |
397 { |
|
398 OstTrace1( TRACE_NORMAL, CFOLDERRENAMEDHARVESTER_RUNERROR, "CFolderRenamedHarvester::RunError;aError=%d", aError ); |
353 CPIXLOGSTRING2("CFolderRenamedHarvester::RunError - aError: %d", aError ); |
399 CPIXLOGSTRING2("CFolderRenamedHarvester::RunError - aError: %d", aError ); |
354 iRenamedFolders.ResetAndDestroy(); |
400 iRenamedFolders.ResetAndDestroy(); |
355 iHarvestState = EFolderRenamedIdleState; |
401 iHarvestState = EFolderRenamedIdleState; |
356 return KErrNone; |
402 return KErrNone; |
357 } |
403 } |
361 // SetNextRequest |
407 // SetNextRequest |
362 // --------------------------------------------------------------------------- |
408 // --------------------------------------------------------------------------- |
363 // |
409 // |
364 void CFolderRenamedHarvester::SetNextRequest( TFileHarvesterState aState ) |
410 void CFolderRenamedHarvester::SetNextRequest( TFileHarvesterState aState ) |
365 { |
411 { |
|
412 OstTrace0( TRACE_NORMAL, CFOLDERRENAMEDHARVESTER_SETNEXTREQUEST, "CFolderRenamedHarvester::SetNextRequest" ); |
366 CPIXLOGSTRING("CFolderRenamedHarvester::SetNextRequest"); |
413 CPIXLOGSTRING("CFolderRenamedHarvester::SetNextRequest"); |
367 if ( !IsActive() ) |
414 if ( !IsActive() ) |
368 { |
415 { |
369 iHarvestState = aState; |
416 iHarvestState = aState; |
370 SetActive(); |
417 SetActive(); |
371 TRequestStatus* status = &iStatus; |
418 TRequestStatus* status = &iStatus; |
372 User::RequestComplete( status, KErrNone ); |
419 User::RequestComplete( status, KErrNone ); |
373 } |
420 } |
374 } |
421 } |
375 |
422 |
376 |
423 void CFolderRenamedHarvester::HandleFolderRenameL() |
|
424 { |
|
425 RemoveBackslash(iOldFolderName); |
|
426 iFilePlugin.CreateFolderFileIndexItemL( iOldFolderName, ECPixRemoveAction ); |
|
427 RemoveBackslash(iNewFolderName); |
|
428 iFilePlugin.CreateFolderFileIndexItemL( iNewFolderName, ECPixAddAction ); |
|
429 } |
377 // End of File |
430 // End of File |