diff -r 95243422089a -r 491b3ed49290 filesystemuis/memscaneng/serversrc/msengfileextscanner.cpp --- a/filesystemuis/memscaneng/serversrc/msengfileextscanner.cpp Thu Aug 19 09:42:45 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,208 +0,0 @@ -/* -* Copyright (c) 2006-2008 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: -* Scanner class used to scan file system by filename extensions. -* -*/ - - -// USER INCLUDES -#include "msengfileextscanner.h" -#include "msenguihandler.h" - - -// ================= MEMBER FUNCTIONS ======================================== - -// --------------------------------------------------------------------------- -// CMsengFileExtScanner::CMsengFileExtScanner() -// -// C++ default constructor. Can NOT contain any code, that might leave. -// --------------------------------------------------------------------------- -CMsengFileExtScanner::CMsengFileExtScanner(MMsengScannerObserver& aObserver, - CMsengInfoArray& aScanArray, - RFs& aFsSession) -: CMsengFileScanner(aObserver, aScanArray, aFsSession), iMoveToNextDirectory(ETrue) - { - } - -// --------------------------------------------------------------------------- -// CMsengFileExtScanner::NewL() -// -// Two-phased constructor -// --------------------------------------------------------------------------- -CMsengFileExtScanner* CMsengFileExtScanner::NewL(MMsengScannerObserver& aObserver, - CMsengInfoArray& aScanArray, - RFs& aFsSession) - { - CMsengFileExtScanner* self = - new (ELeave) CMsengFileExtScanner(aObserver, aScanArray, aFsSession); - return self; - } - -// --------------------------------------------------------------------------- -// CMsengFileExtScanner::~CMsengFileExtScanner() -// -// Destructor -// --------------------------------------------------------------------------- -CMsengFileExtScanner::~CMsengFileExtScanner() - { - } - - - - -// --------------------------------------------------------------------------- -// CMsengFileExtScanner::FindFilesL() -// -// --------------------------------------------------------------------------- -// -CDir* CMsengFileExtScanner::FindFilesL(const TDesC& aDirectory, TBool& aMoveToNextDirectory) - { - - // iMoveToNextDirectory is true only when starting to handle the - // current directory. Reset iCurrentExtensionIndex. - if(iMoveToNextDirectory) - { - iCurrentExtensionIndex = -1; - iMoveToNextDirectory = EFalse; -#ifdef __SHOW_RDEBUG_PRINT_ - RDebug::Print(_L("Entering directory:")); - RDebug::Print(_L("%S"), &aDirectory); -#endif // __SHOW_RDEBUG_PRINT_ - } - - // This function performs a search for each file in the directory by extension. - iCurrentExtensionIndex++; - const TPtrC pCurrentExtension(InfoArray().Exts()[iCurrentExtensionIndex]); - -#ifdef __SHOW_RDEBUG_PRINT_ - RDebug::Print(_L("Searching files with extension %d"), iCurrentExtensionIndex); -#endif // __SHOW_RDEBUG_PRINT_ - - // Get a list of results for this directory - CDir* results = NULL; - TParse parse; - TInt error; - - const TInt pathlength = pCurrentExtension.Length() + aDirectory.Length(); - if ( pathlength > KMaxFileName ) - { - error = KErrNotFound; -#ifdef __SHOW_RDEBUG_PRINT_ - RDebug::Print(_L("Path too long, files with extension %d do not fit to directory"), - iCurrentExtensionIndex); -#endif // __SHOW_RDEBUG_PRINT_ - } - - else - { - FsSession().Parse(pCurrentExtension, aDirectory, parse); - error = FsSession().GetDir(parse.FullName(), KEntryAttMaskSupported|KEntryAttAllowUid, - ESortNone, results); - } - - if (error == KErrNotFound) - { - results = NULL; - } - - // Should we move onto searching the next directory - // Yes, if this was the last extension. - const TInt extensionCount = InfoArray().Exts().Count(); - iMoveToNextDirectory = (iCurrentExtensionIndex >= extensionCount-1); - aMoveToNextDirectory = iMoveToNextDirectory; - - // Return populated (or potentially NULL) list. - return results; - } - -// --------------------------------------------------------------------------- -// CMsengFileExtScanner::HandleLocatedEntryL() -// -// -// --------------------------------------------------------------------------- -// -CMsengFileScanner::TLocationResponse CMsengFileExtScanner::HandleLocatedEntryL( - const TDesC& aFullFileNameAndPath, const TEntry& aEntry) - { - TLocationResponse response = EEntryWasDiscarded; - const TInt KUidLocation = 2; - TUid fileUid = aEntry[KUidLocation]; - - if ( fileUid == KNullUid ) - { - // Check whether extension found in special data dir - TBool addSize( ETrue ); - TInt dataDirCount = InfoArray().DataDirs().Count(); - for(TInt i=0; i < dataDirCount; i++) - { - TPtrC dataDirPath = InfoArray().DataDirs().MdcaPoint(i); - - if(aFullFileNameAndPath.Length() >= dataDirPath.Length()) - { - TFileName currentPath; - currentPath.Copy(aFullFileNameAndPath.Left(dataDirPath.Length())); - - // Compare whether folder matches - if(!currentPath.CompareF(dataDirPath)) - { - addSize = EFalse; - break; - } - } - } - - if( addSize ) - { - // Add size of object - InfoArray().AddSizeByExtL(iCurrentExtensionIndex, aEntry.FileSize() ); - -#ifdef __SHOW_RDEBUG_PRINT_ - const TInt pathlength = aFullFileNameAndPath.Length(); - - if ( pathlength < KMaxFileName ) - { - RDebug::Print(_L("File: %S, extension number: %d, size: %d"), - &aFullFileNameAndPath, iCurrentExtensionIndex, aEntry.FileSize()); - } - else - { - RDebug::Print(_L("File: see next line, extension number: %d, size: %d"), - iCurrentExtensionIndex, aEntry.FileSize() ); - RDebug::Print(_L("Can not print %d characters long file name"), pathlength ); - } -#endif // __SHOW_RDEBUG_PRINT_ - - // We processed this one - response = EEntryWasProcessed; - } - } - else - { -#ifdef __SHOW_RDEBUG_PRINT_ - RDebug::Print(_L("Handling file: %S, file Uid: 0x%x"), - &aFullFileNameAndPath, fileUid.iUid); -#endif // __SHOW_RDEBUG_PRINT_ - - // Make sure other than native applications are not calculated - if( iCurrentExtensionIndex == EExtSis || iCurrentExtensionIndex == EExtSisx ) - { - InfoArray().AddSizeByExtL(iCurrentExtensionIndex, aEntry.FileSize() ); - } - } - - return response; - } - -// End of File