diff -r 000000000000 -r 6a9f87576119 filemanager/Engine/src/Cfilemanagerindexiterator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filemanager/Engine/src/Cfilemanagerindexiterator.cpp Mon Jan 18 20:09:41 2010 +0200 @@ -0,0 +1,125 @@ +/* +* Copyright (c) 2002-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: Goes through the list of given files +* +*/ + + +// INCLUDE FILES +#include "Cfilemanagerindexiterator.h" +#include "CFileManagerEngine.h" +#include "CFileManagerCommonDefinitions.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CFileManagerIndexIterator::NewL +// +// ----------------------------------------------------------------------------- +// +CFileManagerIndexIterator* CFileManagerIndexIterator::NewL + ( CFileManagerEngine& aEngine, + CArrayFixFlat& aIndexList, + const TDesC& aDstDir ) + { + CFileManagerIndexIterator* self = new( ELeave ) + CFileManagerIndexIterator( aEngine, aIndexList, aDstDir ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CFileManagerIndexIterator::CFileManagerIndexIterator +// +// ----------------------------------------------------------------------------- +// +CFileManagerIndexIterator::CFileManagerIndexIterator + ( CFileManagerEngine& aEngine, + CArrayFixFlat< TInt >& aIndexList, + const TDesC& aDstDir ): + iEngine( aEngine ), + iIndexList( aIndexList ), + iDstDir( aDstDir ) + { + } + +// ----------------------------------------------------------------------------- +// CFileManagerIndexIterator::~CFileManagerIndexIterator +// Destructor +// ----------------------------------------------------------------------------- +// +CFileManagerIndexIterator::~CFileManagerIndexIterator() + { + delete iSrc; + delete iDst; + } + +// ----------------------------------------------------------------------------- +// CFileManagerIndexIterator::ConstructL +// +// ----------------------------------------------------------------------------- +// +void CFileManagerIndexIterator::ConstructL() + { + // We need double destination size + // because source and target folder can be + // KMaxFileName sized and those are append + // to same buffer. + iDst = HBufC::NewL( KFmgrDoubleMaxFileName ); + } + +// ----------------------------------------------------------------------------- +// CFileManagerIndexIterator::CurrentL +// +// ----------------------------------------------------------------------------- +// +void CFileManagerIndexIterator::CurrentL( + HBufC** aSrc, + HBufC** aDst, + TFileManagerTypeOfItem& aItemType ) + { + delete iSrc; + iSrc = NULL; + iSrc = iEngine.IndexToFullPathL( iIndexList.At( iCurrentIndex ) ); + + TPtr ptrDst( iDst->Des() ); + ptrDst.Copy( iDstDir ); + TParsePtrC parse( *iSrc ); + ptrDst.Append( parse.NameAndExt() ); + + *aSrc = iSrc; + *aDst = iDst; + + aItemType = EFileManagerFile; + } + +// ----------------------------------------------------------------------------- +// CFileManagerIndexIterator::NextL +// +// ----------------------------------------------------------------------------- +// +TBool CFileManagerIndexIterator::NextL() + { + ++iCurrentIndex; + if( iCurrentIndex < iIndexList.Count()) + { + return ETrue; + } + + return EFalse; + } + +// End of File