diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/msgtestfw/TestActions/Email/Imap4/src/CMtfTestActionCreateMailSelection.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgtestfw/TestActions/Email/Imap4/src/CMtfTestActionCreateMailSelection.cpp Wed Nov 03 22:41:46 2010 +0530 @@ -0,0 +1,184 @@ +// Copyright (c) 2004-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: +// __ACTION_INFO_BEGIN__ +// [Action Name] +// CreateMailSelection +// [Action Parameters] +// CMsvSession Session : Reference to the session. +// TMsvId ParentId : Value of the parent folder ID +// CMsvSelection EvenSelection : Reference to the created +// even selection. +// CMsvSelection OddSelection : Reference to the created +// odd selection. +// [Action Description] +// Creates two selections of IMAP4 messages. The Test Action first creates a +// selection of all IMAP4 messages under the parent folder, then copies the +// Message Ids from the selection into 2 seperate message selections where one +// selection has all the message IDs in the odd position in the main selection +// and the other has the message Ids in the even position. +// These two message selections can be used as inputs to Test Actions related +// to IMAP4 commands which require a mail selection is requried as an input. +// [APIs Used] +// CMsvEntry::SetEntryL +// CMsvEntry::SetSortTypeL +// CMsvEntry::ChildrenWithMtmL +// CMsvEntrySelection::AppendL +// __ACTION_INFO_END__ +// +// + +/** + @file + @internalTechnology +*/ + +// EPOC include +#include +#include + + +// User include +#include "CMtfTestActionCreateMailSelection.h" +#include "CMtfTestCase.h" +#include "CMtfTestActionParameters.h" + + + +/** + NewL() + Constructs a CMtfTestActionCreateMailSelection object. Uses two phase + construction and leaves nothing on the CleanupStack. + @internalTechnology + @param aTestCase Test Case to which this Test Action belongs + @param aActionParameters Action parameters, must not be NULL + @return Created object of type CMtfTestActionCreateMailSelection + @pre None + @post CMtfTestActionCreateMailSelection object is created +*/ +CMtfTestAction* CMtfTestActionCreateMailSelection:: + NewL(CMtfTestCase& aTestCase,CMtfTestActionParameters* aActionParameters) + { + + CMtfTestActionCreateMailSelection* self = + new (ELeave) CMtfTestActionCreateMailSelection(aTestCase); + + CleanupStack::PushL(self); + self->ConstructL(aActionParameters); + CleanupStack::Pop(self); + return self; + } + + +/** + CMtfTestActionCreateMailSelection constructor + Calls the base class' constructor + @internalTechnology + @param aTestCase Test Case to which this Test Action belongs + @pre None + @post None +*/ +CMtfTestActionCreateMailSelection::CMtfTestActionCreateMailSelection(CMtfTestCase& aTestCase) + : CMtfSynchronousTestAction(aTestCase) + { + } + + +/** + Function : ExecuteActionL + Creates a selection of all IMAP4 mails present in the parent folder, then copies the + Message Ids from the selection into 2 seperate message selections where one + selection has all the message IDs in the odd position in the main selection + and the other has the message Ids in the even position. The two message selections + created are stored as output parameters of this Test Action. + @internalTechnology + @pre None + @post The third and the fourth parameters of the section in the .ini file corresponding + to the instance of this test action should get associated with the even and the + odd message selections objects respectively. These two message selections can be + used as inputs to Test Actions related to IMAP4 commands which require a + mail selection is requried as an input. +*/ +void CMtfTestActionCreateMailSelection::ExecuteActionL() + { + TestCase().INFO_PRINTF2(_L("Test Action %S start..."), &KTestActionCreateMailSelection); + CMsvSession* paramSession = ObtainParameterReferenceL(TestCase(), + ActionParameters().Parameter(0)); + + TMsvId paramParentId = ObtainValueParameterL(TestCase(), + ActionParameters().Parameter(1)); + + + /*********************************************************************************** + Create a selection of all IMAP4 messages in the parent folder. Create two new message + selection objects. Loop thru all the messages in the IMAP4 message selection, append + the Ids of messages present at odd index into one selection and those present at even + index into another selection. The two message selections are stored as ouput paramters + of this test action. + ***********************************************************************************/ + + + // Set the context to the parent folder + CMsvEntry* entry = CMsvEntry::NewL(*paramSession,paramParentId, + TMsvSelectionOrdering(KMsvNoGrouping, + EMsvSortByNone,ETrue + ) + ); + + CleanupStack::PushL(entry); + entry->SetEntryL(paramParentId); + + // Create a selection of all IMAP4 messages in the parent folder + TMsvSelectionOrdering order; + order.SetShowInvisibleEntries(ETrue); + entry->SetSortTypeL(order); + CMsvEntrySelection* selection = entry->ChildrenWithMtmL(KUidMsgTypeIMAP4); + CleanupStack::PushL(selection); + + // Create a message selection to store message Ids at even index in the main selection + CMsvEntrySelection* evenSelection = new (ELeave) CMsvEntrySelection; + CleanupStack::PushL(evenSelection); + + // Create a message selection to store message Ids at odd index in the main selection + CMsvEntrySelection* oddSelection = new (ELeave) CMsvEntrySelection; + CleanupStack::PushL(oddSelection); + + // Copy Message Ids into seperate selections based on their position (even / odd) + for(TInt i=0 ; iCount(); i++) + { + if((i%2)== 0) + { + evenSelection->AppendL(selection->At(i)); + } + else + { + oddSelection->AppendL(selection->At(i)); + } + } + + // Pop the mail selection objects before storing them as ouput parameters + CleanupStack::Pop(oddSelection); + CleanupStack::Pop(evenSelection); + + // Store the two message selections as output parameters of the Test Action + StoreParameterL(TestCase(),*evenSelection, + ActionParameters().Parameter(2)); + + StoreParameterL(TestCase(),*oddSelection, + ActionParameters().Parameter(3)); + CleanupStack::PopAndDestroy(selection); + CleanupStack::PopAndDestroy(entry); + + TestCase().INFO_PRINTF2(_L("Test Action %S completed."), &KTestActionCreateMailSelection); + TestCase().ActionCompletedL(*this); + }