/*
* 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:  test case
*
*/


#include <w32std.h>
#include <coecntrl.h>

#include "BCTestMemSelPage.h"
#include "BCTestCmDlg.hrh"
#include "streamlogger.h"

// ======== MEMBER FUNCTIONS ========

// ---------------------------------------------------------------------------
// Symbian 2nd static Constructor
// ---------------------------------------------------------------------------
//
CBCTestMemSelSettingPage* CBCTestMemSelSettingPage::NewL()
    {
    CBCTestMemSelSettingPage* self = new( ELeave ) CBCTestMemSelSettingPage();
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }
    
// ---------------------------------------------------------------------------
// C++ default constructor
// ---------------------------------------------------------------------------
//
CBCTestMemSelSettingPage::CBCTestMemSelSettingPage():iDlg(0)
    {    
    }
    
// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
CBCTestMemSelSettingPage::~CBCTestMemSelSettingPage()
    {  
	delete iDlg;
    }
    
// ---------------------------------------------------------------------------
// Symbian 2nd Constructor
// ---------------------------------------------------------------------------
//
void CBCTestMemSelSettingPage::ConstructL()
    {    
    BuildScriptL();    
    }
    
// ---------------------------------------------------------------------------
// CBCTestMemSelSettingPage::BuildScriptL
// ---------------------------------------------------------------------------
//
void CBCTestMemSelSettingPage::BuildScriptL()
    { 
	AddTestL( DELAY(1), TEND);

    // Add script as your need.   
	for(int i=0; i<EBCTestCmdMemSelPageEnd - EBCTestCmdMemSelPageBegin -1; ++i)
		{
		AddTestL( LeftCBA, REP(Down, 1), Right, TEND );
		for(int j=0; j<i; ++j)
			AddTestL( Down, TEND);
		AddTestL( LeftCBA, TEND );	
		AddOKL();
		}
    }
    
void CBCTestMemSelSettingPage::AddOKL()
	{
	// add dlg response sciprts
	for(int i=0; i<1; ++i)
		AddTestL( WAIT(5), KeyOK, TEND);
	}

void CBCTestMemSelSettingPage::AddCancelL()
	{
	// add dlg response sciprts
	for(int i=0; i<1; ++i)
		AddTestL( WAIT(5), RightCBA, TEND);
	}

// ---------------------------------------------------------------------------
// CBCTestMemSelSettingPage::RunL
// ---------------------------------------------------------------------------
//
void CBCTestMemSelSettingPage::RunL( TInt aCmd )
    {
	SetupL();
	switch(aCmd){
	case EBCTestCmdMemSelPageCreate:
		TestCreateL();
		break;
	case EBCTestCmdMemSelPageCreateRes:
		TestCreateL(0);		// 0 is default res id
		break;
	case EBCTestCmdMemSelPageQuickCreate:
		TestQuickCreateL();
		break;
	case EBCTestCmdMemSelPageQuickCreateTitle:
		TestQuickCreateL(_L("a title"));
		break;
	case EBCTestCmdMemSelPageQuickCreateRes:
		TestQuickCreateL(0);	// 0 is the default res id
		break;
	default:
		break;
	}
    Teardown();
    }

// ---------------------------------------------------------------------------
// CBCTestMemSelSettingPage::ReleaseCaseL
// ---------------------------------------------------------------------------
//   
void CBCTestMemSelSettingPage::Teardown()
    {
	delete iDlg;
	iDlg = NULL;
    }

void CBCTestMemSelSettingPage::TestCreateL()
	{
	_LIT( KRootPath,					"C:\\Nokia\\Images\\" );
	_LIT( KDefaultFileName,				"DynamicFilename.jpg" );
	TFileName emptyFileName( KNullDesC );
	TFileName rootFileName( KRootPath );
	TFileName defaultFileName( KDefaultFileName );

	iDlg = CAknMemorySelectionSettingPage::NewL();
	AssertNotNullL(iDlg, _L("mem sel setting page created"));

	TInt returnValue = iDlg->ExecuteL( iMemory, &rootFileName, &defaultFileName );
	iDlg->GetItem( iMemory, emptyFileName );

	TFileName msg;
	msg.Format( _L("User Hit: %d, Memory is: %d, FileName: "), returnValue, iMemory );
	msg.Append( emptyFileName );
	msg.ZeroTerminate();
	AssertTrueL( ETrue, msg);
	msg.Append( _L("Root: ") );
	msg.Append( rootFileName );
	msg.Append( _L(", Default: ") );
	msg.Append( defaultFileName );
	msg.ZeroTerminate();
	AssertTrueL( ETrue, msg );
	}

void CBCTestMemSelSettingPage::TestCreateL(TInt aResID)
	{
	iDlg = CAknMemorySelectionSettingPage::NewL( aResID );
	TInt returnValue = iDlg->ExecuteL( iMemory);
	AssertTrueL( returnValue, _L("Create with Resorce ID"));
	}

void CBCTestMemSelSettingPage::TestQuickCreateL()
	{
	AssertTrueL(CAknMemorySelectionSettingPage::RunDlgLD(iMemory), _L("Quick create, User hit OK"));
	AssertIntL( CAknMemorySelectionSettingPage::EPhoneMemory, iMemory, _L("Phone memroy created"));
	}

void CBCTestMemSelSettingPage::TestQuickCreateL(const TDesC &aTitle)
	{
	AssertTrueL(CAknMemorySelectionSettingPage::RunDlgLD(iMemory, aTitle), _L("Quick create with title, User hit OK"));
	AssertIntL( CAknMemorySelectionSettingPage::EPhoneMemory, iMemory, _L("Phone memroy created"));
	}

void CBCTestMemSelSettingPage::TestQuickCreateL(TInt aResID)
	{
	AssertTrueL(CAknMemorySelectionSettingPage::RunDlgLD(iMemory, aResID), _L("Quick create with ResID, User hit OK"));
	AssertIntL( CAknMemorySelectionSettingPage::EPhoneMemory, iMemory, _L("Phone memroy created"));
	}

void CBCTestMemSelSettingPage::SetupL()
	{
	iMemory = CAknMemorySelectionDialog::EPhoneMemory;
	}

