--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/tsrc/MMCTestDriver/MCETester/src/CTcMCEFileHandler.cpp Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,242 @@
+/*
+* Copyright (c) 2009 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: Implementation.
+*
+*/
+
+#include "CTcMCEFileHandler.h"
+
+_LIT(KDateString,"%D%M%Y%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%:3%+B");
+
+CTcMCEFileHandler::CTcMCEFileHandler()
+ {
+ // No implementation required
+ }
+
+CTcMCEFileHandler::~CTcMCEFileHandler()
+ {
+ iFsSession.Close();
+ }
+
+CTcMCEFileHandler* CTcMCEFileHandler::NewLC()
+ {
+ CTcMCEFileHandler* self = new (ELeave) CTcMCEFileHandler();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+CTcMCEFileHandler* CTcMCEFileHandler::NewL()
+ {
+ CTcMCEFileHandler* self = CTcMCEFileHandler::NewLC();
+ CleanupStack::Pop(); // self;
+ return self;
+ }
+
+void CTcMCEFileHandler::ConstructL()
+ {
+ User::LeaveIfError(iFsSession.Connect());
+ }
+
+void CTcMCEFileHandler::FindFile(const TDesC& aPath,
+ const TDesC& aFileName, CDesC8Array* aArray)
+ {
+ CDirScan* DirScan = CDirScan::NewLC(iFsSession);
+ DirScan->SetScanDataL(aPath,
+ KEntryAttDir|KEntryAttMatchExclusive,
+ ESortNone, CDirScan::EScanDownTree);
+
+ while(true)
+ {
+ CDir* dir = NULL;
+ TRAPD(error, DirScan->NextL(dir));
+ if (error || !dir)
+ break;
+
+ delete dir;
+
+ ScanDirectoryL(DirScan->FullPath(), aFileName, aArray);
+ };
+
+ CleanupStack::PopAndDestroy(DirScan);
+
+ }
+
+TInt CTcMCEFileHandler::GetFilesFromFolderL(TDesC& aFolder,CDesC8Array* aArray)
+ {
+ if(aArray == NULL)
+ return KErrArgument;
+
+ CDir* FileList(NULL);
+ TInt res = iFsSession.GetDir(aFolder,
+ KEntryAttMaskSupported, EDirsFirst, FileList);
+ if( res == KErrNone )
+ {
+ if(FileList && aArray)
+ {
+ FileList->Sort(ESortByName);
+ for(TInt i=0; i < FileList->Count(); i++)
+ {
+ if((*FileList)[i].IsSystem()
+ || (*FileList)[i].IsHidden()
+ || (*FileList)[i].IsDir())
+ {
+ // ignore System & Hidden Files & folders
+ }
+ else
+ {
+ TBuf8<255> buf8;
+ buf8.Copy((*FileList)[i].iName);
+ //add the file name to the array
+ aArray->AppendL(buf8);
+ }
+ }
+ }
+
+ delete FileList;
+ FileList = NULL;
+ }
+ return res;
+ }
+
+TBool CTcMCEFileHandler::Delete(const TDesC& aName, TUint aSwitch)
+ {
+ CFileMan* fileMan=CFileMan::NewL(iFsSession);
+ CleanupStack::PushL(fileMan);
+
+ TInt err=fileMan->Delete(aName,aSwitch);
+ CleanupStack::PopAndDestroy(fileMan);
+
+ if(err==KErrNone)
+ return ETrue;
+ else
+ return EFalse;
+
+ }
+
+
+TBool CTcMCEFileHandler::CheckFileExists(const TDesC& aFileName)
+ {
+ TParse p;
+ // do isolated parse
+ User::LeaveIfError(p.Set(aFileName, NULL, NULL));
+
+ User::LeaveIfError(iFsSession.Parse(aFileName, p));
+
+ TBool result = BaflUtils::FileExists(iFsSession, aFileName);
+
+ if(result)
+ return ETrue;
+ else
+ return EFalse;
+ }
+
+//name: value
+void CTcMCEFileHandler::GetFileInfoL(const TDesC& aFileName, CDesC8Array* aArray)
+ {
+ if(aArray == NULL)
+ User::LeaveIfError(KErrArgument);
+
+ if(CheckFileExists(aFileName) == EFalse)
+ User::LeaveIfError(KErrNotFound);
+
+ _LIT8(KFileName,"File Name:");
+ _LIT8(KDateModified,"Date Modified:");
+ _LIT8(KFileSize,"File Size:");
+ _LIT8(KFileAttrib,"Entry details:");
+
+ TParse parse;
+ User::LeaveIfError(parse.Set(aFileName, NULL, NULL));
+
+ //Consists of a drive and path
+ iFsSession.SetSessionPath( parse.DriveAndPath() );
+
+ TFileName name( parse.NameAndExt() );
+
+ // Get entry details for file and print them
+ TEntry entry;
+ User::LeaveIfError(iFsSession.Entry(name, entry));
+
+ TBuf<30> dateString;
+ entry.iModified.FormatL(dateString, KDateString);
+
+ TBuf8<255> buf8;
+ //file name
+ aArray->AppendL( KFileName );
+ buf8.Copy( parse.NameAndExt() );
+ aArray->AppendL( buf8 );
+ buf8.Zero();
+ //date modified
+ aArray->AppendL( KDateModified );
+ buf8.Copy(dateString);
+ aArray->AppendL( buf8 );
+ buf8.Zero();
+
+ //file size
+ TBuf8< 12 > convert;
+ convert.AppendNum( entry.iSize );
+ aArray->AppendL( KFileSize );
+ aArray->AppendL( convert );
+
+ TBuf8<15> buffer;
+ FormatEntry(buffer,entry); // Archive attribute should be set
+ //attribs
+ aArray->AppendL(KFileAttrib);
+ aArray->AppendL(buffer);
+ }
+
+void CTcMCEFileHandler::FormatEntry(TDes8& aBuffer, const TEntry& aEntry)
+ {
+ _LIT(KReadOnly,"Read-only");
+ _LIT(KHidden,"Hidden");
+ _LIT(KSystem,"System");
+ _LIT(KDirectory,"Directory");
+ _LIT(KArchive,"Archive");
+
+ if(aEntry.IsReadOnly())
+ aBuffer.Append(KReadOnly);
+ if(aEntry.IsHidden())
+ aBuffer.Append(KHidden);
+ if(aEntry.IsSystem())
+ aBuffer.Append(KSystem);
+ if(aEntry.IsDir())
+ aBuffer.Append(KDirectory);
+ if(aEntry.IsArchive())
+ aBuffer.Append(KArchive);
+ }
+
+void CTcMCEFileHandler::ScanDirectoryL(const TDesC& aDir,
+ const TDesC& aWildCard, CDesC8Array* aArray)
+ {
+ TParse parse;
+ parse.Set(aWildCard, &aDir, NULL);
+ TPtrC spec(parse.FullName());
+
+ TFindFile FindFile(iFsSession);
+ CDir* dir;
+
+ if (!FindFile.FindWildByPath(parse.FullName(), NULL, dir))
+ {
+ CleanupStack::PushL(dir);
+
+ for(TInt i = 0; i < dir->Count(); i++)
+ {
+ parse.Set((*dir)[i].iName, &spec, NULL);
+ TBuf8<255> buf8;
+ buf8.Copy(parse.FullName());
+ aArray->AppendL(buf8);
+ }
+ CleanupStack::PopAndDestroy(dir);
+ }
+ }