diff -r d1daf54a55b5 -r 1957042d8c7e filesystemuis/memscaneng/serversrc/msengscanner.cpp --- a/filesystemuis/memscaneng/serversrc/msengscanner.cpp Tue Feb 02 00:03:31 2010 +0200 +++ /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: -* This is the class that is in control most of the time. -* It instantiates CMsengScannerBase derived scanner classes -* to do the job. -* -*/ - - -// SYSTEM INCLUDES -#include -#include - -// USER INCLUDES -#include "msengscanner.h" -#include "msengfileextscanner.h" -#include "msengfindallscanner.h" -#include "msengregistryscanner.h" -#include "msenguihandler.h" -#include "mseng.h" - - -// LOCAL CONSTANTS AND MACROS -#ifdef _DEBUG -_LIT(KClassName, "CMsengScanner"); -#endif - -// ================= MEMBER FUNCTIONS ======================================== - -// --------------------------------------------------------------------------- -// CMsengScanner::CMsengScanner() -// -// C++ default constructor. Can NOT contain any code, that might leave. -// --------------------------------------------------------------------------- -CMsengScanner::CMsengScanner(MMsengUIHandler& aUIHandler, CResourceFile& aResFile) : -iUIHandler(aUIHandler), iResFile(aResFile) - { - } - -// --------------------------------------------------------------------------- -// CMsengScanner::~CMsengScanner() -// -// Destructor -// --------------------------------------------------------------------------- -CMsengScanner::~CMsengScanner() - { - delete iScanArray; - delete iFileExtScanner; - delete iFindAllScanner; - delete iRegistryScanner; - } - - - -// --------------------------------------------------------------------------- -// CMsengScanner::Cancel() -// -// --------------------------------------------------------------------------- -// -void CMsengScanner::Cancel() - { - iFileExtScanner->Cancel(); - iFindAllScanner->Cancel(); - iRegistryScanner->Cancel(); - TRAP_IGNORE( iUIHandler.QuitL(KErrCancel) ); - } - -// --------------------------------------------------------------------------- -// CMsengScanner::HaveActiveScanners() -// -// --------------------------------------------------------------------------- -// -TBool CMsengScanner::HaveActiveScanners() const - { - const TBool isActive = - (iFileExtScanner && iFileExtScanner->IsActive()) - || (iFindAllScanner && iFindAllScanner->IsActive()) - || (iRegistryScanner && iRegistryScanner->IsActive()) - ; - return isActive; - } - -// --------------------------------------------------------------------------- -// CMsengScanner::ScanL() -// -// --------------------------------------------------------------------------- -// -TInt CMsengScanner::ScanL(TDriveNumber aDrive, TInt aNumberOfDataGroups, RFs& aFsSession) - { - if(HaveActiveScanners()) - { - return KErrInUse; - } - - // Create data structures; delete the old ones - CMsengInfoArray* infoArray = CMsengInfoArray::NewL( aDrive, - aNumberOfDataGroups, - aFsSession, iResFile ); - - delete iScanArray; - iScanArray = infoArray; - - // Do some scanning tasks not include in ScanL - PreScanL(aDrive, aFsSession); - - // Start the scan by filename extension - iFileExtScanner = CMsengFileExtScanner::NewL(*this, *iScanArray, aFsSession); - iFileExtScanner->ScanL(iScanArray->Dirs()); - - // Start scanning data dirs (including messages) - iFindAllScanner = CMsengFindAllScanner::NewL(*this, *iScanArray, aFsSession); - iFindAllScanner->ScanL(iScanArray->DataDirs()); - - // Start the scan from registries - iRegistryScanner = CMsengRegistryScanner::NewL( aDrive, *this, *iScanArray, aFsSession ); - iRegistryScanner->Scan(); - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// MsengScanner::HandleScannerEventL() -// -// Handle the events from scanning -// --------------------------------------------------------------------------- -// -void CMsengScanner::HandleScannerEventL(TScannerEvent aEvent, - const CMsengScannerBase& /*aScanner*/, - TInt aError) - { -#ifdef __SHOW_RDEBUG_PRINT_ - RDebug::Print(_L("CMsengScanner::HandleScannerEventL() called with event: %d"), aEvent); -#endif // __SHOW_RDEBUG_PRINT_ - - switch(aEvent) - { - case MMsengScannerObserver::EScannerEventScanComplete: - // This scanner object has finished all of its scanning. - // If all the others are finished too, - // then we tell the UI that scanning is complete. - if (!HaveActiveScanners()) - { - iUIHandler.QuitL(KErrNone); - } - break; - - case MMsengScannerObserver::EScannerEventScanError: - // An error has happened - iUIHandler.ErrorL(aError); - break; - - default: - // should never happen - __ASSERT_DEBUG(EFalse,User::Panic(KClassName, KErrGeneral)); - break; - } - } - -// --------------------------------------------------------------------------- -// CMsengScanner::PreScanL() -// -// --------------------------------------------------------------------------- -// -void CMsengScanner::PreScanL(TDriveNumber aDrive, RFs& aFsSession) - { - // Before actual scanning, check the sizes of the few extra - // data files that are not scanned in normal way. - - RResourceReader theReader; - - TBool somethingToDo = EFalse; - if(CMseng::IsInternalDrive(aFsSession, aDrive)) - { - theReader.OpenLC( &iResFile, C_EXTRADATAFILES ); - somethingToDo = ETrue; - } - else if(CMseng::IsRemovableDrive(aFsSession, aDrive)) - { - theReader.OpenLC( &iResFile, E_EXTRADATAFILES ); - somethingToDo = ETrue; - } - if(somethingToDo) - { - //the first WORD contains the number of elements in the resource - const TInt length = theReader.ReadInt16L(); - - // Read the array resource, - TInt groupindex; // value from enum TDataGroups - for(TInt i=0; iDes(); - TBuf<1> drive; - drive.Append(ch); - ptrName.Replace(0, drive.Length(), drive); - - // check the size of the file whose path was in the resource. - TEntry file; - TInt err = aFsSession.Entry(ptrName, file); - if (err == KErrNone) - { - TInt size = file.iSize; - iScanArray->AddSizeByGroupL(groupindex, size); - } - - CleanupStack::PopAndDestroy(name); - } - } - } - CleanupStack::PopAndDestroy(&theReader); - } - -// End of File