--- a/filesystemuis/memscaneng/serversrc/msengdirectoryscanner.cpp Thu Aug 19 09:42:45 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,230 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0""
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Scan directories
-*
-*/
-
-
-// SYSTEM INCLUDES
-#include <bautils.h>
-
-// USER INCLUDES
-#include "msengdirectoryscanner.h"
-
-
-// CONSTANTS
-_LIT(KMsengPathDelimiter, "\\");
-
-
-// ================= MEMBER FUNCTIONS ========================================
-
-// ---------------------------------------------------------------------------
-// CMsengDirectoryScanner::CMsengDirectoryScanner()
-//
-// Default C++ constructor
-// ---------------------------------------------------------------------------
-CMsengDirectoryScanner::CMsengDirectoryScanner(
- MMsengScannerObserver& aObserver,
- CMsengInfoArray& aScanArray,
- RFs& aFsSession )
-: CMsengScannerBase(aObserver, aScanArray, aFsSession)
- {
- }
-
-
-// ---------------------------------------------------------------------------
-// CMsengDirectoryScanner::~CMsengDirectoryScanner()
-//
-// Destructor
-// ---------------------------------------------------------------------------
-CMsengDirectoryScanner::~CMsengDirectoryScanner()
- {
- delete iDirectoryList;
- delete iScanner;
- }
-
-
-
-
-
-
-
-// ---------------------------------------------------------------------------
-// CMsengDirectoryScanner::ScanL()
-//
-//
-// ---------------------------------------------------------------------------
-void CMsengDirectoryScanner::ScanL(const CDesCArray& aRootDirs)
- {
- if (iDirectoryList)
- {
- iDirectoryList->Reset();
- }
- else
- {
- iDirectoryList = new(ELeave) CDesCArraySeg(KDirectoryListGranularity);
- }
- if (!iScanner)
- {
- iScanner = CDirScan::NewL(FsSession());
- }
- // Copy existing directories over
- const TInt count = iNumberOfRootDirectories = aRootDirs.Count();
- for(TInt i=0; i<count; i++)
- {
- // Make sure the copied root dirs exist. Otherwise the RunL()
- // would leave with KErrPathNotFound. After having the list
- // of root dirs, all scanned dirs are taken from the list obtained
- // by a CDirScan instance and are thus known to exist because
- if( InfoArray().FolderExists(FsSession(),aRootDirs[i]) )
- {
- iDirectoryList->AppendL(aRootDirs[i]);
-#ifdef __SHOW_RDEBUG_PRINT_
- TPtrC dir = aRootDirs[i];
- RDebug::Print(_L("Root directory: %S"), &dir);
-#endif // __SHOW_RDEBUG_PRINT_
- }
- else
- {
- iNumberOfRootDirectories--;
- }
- }
-
- // Start the scan going
- CompleteRequest();
- }
-
-
-// ---------------------------------------------------------------------------
-// CMsengDirectoryScanner::PerformStepL()
-//
-//
-// ---------------------------------------------------------------------------
-CMsengScannerBase::TStepResult CMsengDirectoryScanner::PerformStepL()
- {
- TStepResult result = ECompleteRequest;
- RFs& fsSession = FsSession();
-
- // Expand the root directories to a full list of
- // subdirectories
- if (iState == EExpandingRootDirs)
- {
- if (iCurrentIndex >= iNumberOfRootDirectories)
- {
- // Finished scanning for the subdirectories.
- // Reset the current index so that we pass all the directories
- // (including the root paths) to the subclasses.
- iCurrentIndex = 0;
- iState = EScanningSubDirs;
- }
- else
- {
- const TPtrC pFolder(iDirectoryList->MdcaPoint(iCurrentIndex++));
-
- // Do the recursive scanning: First set scan data.
- iScanner->SetScanDataL(
- pFolder,
- KEntryAttDir|KEntryAttMatchExclusive,
- ESortNone,
- CDirScan::EScanDownTree
- );
-
- // Add all the located subdirectories to the array
- iState = EParsingExpandedList;
- }
- }
- else if (iState == EParsingExpandedList)
- {
- CDir* list = NULL;
- iScanner->NextL(list);
-
- if (list)
- {
- CleanupStack::PushL(list);
-
- const TPtrC pFullPath(iScanner->FullPath());
- TFileName file;
-
- const TInt count = list->Count();
- for(TInt i=0; i<count; i++)
- {
- const TPtrC pEntry((*list)[i].iName);
- file = pFullPath;
- file += pEntry;
- file += KMsengPathDelimiter;
-#ifdef __SHOW_RDEBUG_PRINT_
- // Don't add text, all print space (256 chars) may be required
- RDebug::Print(_L("%S"), &file);
-#endif // __SHOW_RDEBUG_PRINT_
- AppendDirectoryL(file);
- }
- //
- CleanupStack::PopAndDestroy(list);
- }
- else
- {
- // No more processing to do in this state
- iState = EExpandingRootDirs;
- }
- }
- else if (iState == EScanningSubDirs)
- {
- // Scan this folder
- if (iCurrentIndex < iDirectoryList->Count())
- {
- const TPtrC pFolder(iDirectoryList->MdcaPoint(iCurrentIndex));
- const TScanDirectoryResult scanDirectoryResult =
- ScanDirectoryL(pFolder, fsSession);
-
- // Check whether we continue with this directory next time
- if (scanDirectoryResult == EContinueToNextDirectory)
- {
- iCurrentIndex++;
- }
- }
- else
- {
- // All directories scanned now
- result = EScanComplete;
- }
- }
-
- // Return the response back to the base scanner
- return result;
- }
-
-
-// ---------------------------------------------------------------------------
-// CMsengDirectoryScanner::AppendDirectoryL()
-//
-//
-// ---------------------------------------------------------------------------
-void CMsengDirectoryScanner::AppendDirectoryL(const TDesC& aDirectory)
- {
- // Append the directory to the directory list,
- // unless it is listed as excluded directory
- if( IsSpecialDir(aDirectory) || !IsExcludedDir(aDirectory) )
- {
- iDirectoryList->AppendL(aDirectory);
- }
- else
- {
-#ifdef __SHOW_RDEBUG_PRINT_
- RDebug::Print(_L("Dir is excluded! %S"), &aDirectory);
-#endif // __SHOW_RDEBUG_PRINT_
- }
- }
-
-// End of File