videditor/VideoEditorCommon/src/VeiTempMaker.cpp
author Mikael Laine <mikael.laine@ixonos.com>
Fri, 29 Jan 2010 14:08:33 +0200
changeset 0 951a5db380a0
permissions -rw-r--r--
Committing the Video Editor package under the Eclipse Public License

/*
* Copyright (c) 2010 Ixonos Plc.
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the "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:
* Ixonos Plc
*
* Description:  
*
*/


// INCLUDE FILES

// System includes
#include <eikenv.h>
#include <pathinfo.h>
#include <eikappui.h>
#include <bautils.h>
#include <e32math.h>
#include <vedcommon.h>

// User includes
#include "VeiTempMaker.h"
#include "VideoEditorCommon.h"
#include "VeiSettings.h"
#include "VideoEditorDebugUtils.h"


EXPORT_C CVeiTempMaker* CVeiTempMaker::NewL()
    {
    CVeiTempMaker* self = NewLC();
    CleanupStack::Pop(self);
    return self;
    }

    
EXPORT_C CVeiTempMaker* CVeiTempMaker::NewLC()
    {
    CVeiTempMaker* self = new (ELeave) CVeiTempMaker();
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

void CVeiTempMaker::ConstructL()
	{
	}

CVeiTempMaker::CVeiTempMaker()
    {
    }


EXPORT_C CVeiTempMaker::~CVeiTempMaker()
    {
    }

EXPORT_C void CVeiTempMaker::EmptyTempFolder() const
	{
	LOG(KVideoEditorLogFile, "CVeiTempMaker::EmptyTempFolder(): In");

	TRAP_IGNORE( DoEmptyTempFolderL() );

	LOG(KVideoEditorLogFile, "CVeiTempMaker::EmptyTempFolder(): Out");
	}

void CVeiTempMaker::DoEmptyTempFolderL() const
	{
	LOG(KVideoEditorLogFile, "CVeiTempMaker::DoEmptyTempFolderL(): In");

	RFs&	fs = CCoeEnv::Static()->FsSession();

	CFileMan* fileManager = CFileMan::NewL( fs );
	CleanupStack::PushL( fileManager );
		
	TFileName tempDir;
	// First try to delete from Phone Memory
	TBool dirExists = GetTempPath( CAknMemorySelectionDialog::EPhoneMemory, tempDir );
	if ( dirExists )
		{
		LOGFMT(KVideoEditorLogFile, "\tFolder \"%S\" exists...Deleting...", &tempDir);
		fileManager->RmDir( tempDir );
		}
	// ..then from MMC
	dirExists = GetTempPath( CAknMemorySelectionDialog::EMemoryCard, tempDir );
	if ( dirExists )
		{
		LOGFMT(KVideoEditorLogFile, "\tFolder \"%S\" exists...Deleting...", &tempDir);
		fileManager->RmDir( tempDir );
		}

	CleanupStack::PopAndDestroy( fileManager );

	LOG(KVideoEditorLogFile, "CVeiTempMaker::DoEmptyTempFolderL(): Out");
	}

EXPORT_C void CVeiTempMaker::GenerateTempFileName( 
	HBufC& aTempPathAndName, 
	CAknMemorySelectionDialog::TMemory aMemory,
	TVedVideoFormat aVideoFormat,
	TBool aExtAMR ) const
	{
	LOG(KVideoEditorLogFile, "CVeiTempMaker::GenerateTempFileName(): In");

	RFs&	fs = CCoeEnv::Static()->FsSession();
	

// Parse tempPath. MMC or memoryroot
	TFileName tempPath;
	RFile temp;
// Temp files are processed to \\data\\videos\\[application uid]\\[random name]
	TBool tempFolderExists = GetTempPath( aMemory, tempPath );
	if ( !tempFolderExists )
		{
		fs.MkDirAll( tempPath );
		fs.SetAtt( tempPath, KEntryAttHidden, KEntryAttDir );
		}
	
	TUint32 randomName;

	randomName = Math::Random();
	tempPath.AppendNum( randomName, EHex );
	
	if ( aExtAMR )
		{
		tempPath.Append( KExtAmr );
		}	
	else if ( aVideoFormat == EVedVideoFormatMP4 )
		{
		tempPath.Append( KExtMp4 );
		}
	else
		{
		tempPath.Append( KExt3gp );
		}

	temp.Create( fs, tempPath, EFileWrite );
	temp.Close();

	aTempPathAndName = tempPath;

	LOGFMT(KVideoEditorLogFile, "CVeiTempMaker::GenerateTempFileName(): Out: %S", &tempPath);
	}
	
TBool CVeiTempMaker::GetTempPath( const CAknMemorySelectionDialog::TMemory& aMemory, TDes& aTempPath ) const
	{
	LOG(KVideoEditorLogFile, "CVeiTempMaker::GetTempPath: In");

	if ( aMemory == CAknMemorySelectionDialog::EPhoneMemory )
		{
		aTempPath = PathInfo::PhoneMemoryRootPath();
		}
	else
		{
		aTempPath = PathInfo::MemoryCardRootPath();
		}
		
	aTempPath.Append( PathInfo::VideosPath() ); 	
	aTempPath.AppendNum( KUidVideoEditor.iUid, EHex );
	aTempPath.Append(_L("\\"));	

	LOGFMT(KVideoEditorLogFile, "CVeiTempMaker::GetTempPath: Out: %S", &aTempPath);

	return BaflUtils::FolderExists( CCoeEnv::Static()->FsSession(), aTempPath );
	}

/*void CVeiTempMaker::ListFilesL(const TDesC& aFindFromDir, const TDesC& aWriteResultTo) const
{	
	LOGFMT(KVideoEditorLogFile, "CVeiTempMaker::ListFiles(): In, aFindFromDir:%S", &aFindFromDir);
	CDir* dir = NULL;
	//RFile file;
	RFs fileSession;
	
	TInt err = fileSession.Connect();	

//	err = file.Replace(fileSession, aWriteResultTo, EFileWrite);

	
	CleanupClosePushL(fileSession);
	//CleanupClosePushL(file);

	//_LIT8(KNewLine, "\r\n");
	//TBuf8<255> buf8;
	TBuf<KMaxFileName> buf;
	TFileName fileName;
	fileName.Append(aFindFromDir); 
	
	fileSession.GetDir(fileName, KEntryAttNormal, ESortNone, dir);
	LOG(KVideoEditorLogFile, "CVeiTempMaker::ListFiles(): 2");
	if (dir)
	{
		CleanupStack::PushL(dir);
		

		for(TInt index=0; index < dir->Count(); index++)
		{
			LOG(KVideoEditorLogFile, "CVeiTempMaker::ListFiles(): 3 in loop");

			//buf8.Copy((*dir)[index].iName);		
			//buf.Copy((*dir)[index].iName);		
			
			LOG(KVideoEditorLogFile, "CVeiTempMaker::ListFiles(): 4 in loop");

			LOGFMT(KVideoEditorLogFile, "%S", &((*dir)[index].iName));			
			//file.Write(buf8);

			//file.Write(KNewLine);		

		}
		CleanupStack::PopAndDestroy( dir );	
	}	
	LOG(KVideoEditorLogFile, "CVeiTempMaker::ListFiles(): 5");
	//CleanupStack::PopAndDestroy( file );	
	CleanupStack::PopAndDestroy( fileSession );	
	LOG(KVideoEditorLogFile, "CVeiTempMaker::ListFiles(): Out");
}*/

// End of File