diff -r e8c1ea2c6496 -r 8758140453c0 messaging/Src/TestMessEditEntry.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messaging/Src/TestMessEditEntry.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,170 @@ +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This contains CTestMessEditEntry which edits the entry characterstics +// +// + +#include "TestMessEditEntry.h" +#include "TestMessEditEntryUtil.h" + +/** + * @name Constant Literals used. + */ +/*@{*/ +_LIT(KPtSaveToOutbox, "SaveToOutbox"); +/*@}*/ + +/// Default value for depth of the count +#define KDefaultDepthCount 1 + +/** + * Override of base class pure virtual + * @param None + * @return TVerdict - return TVerdict codes + * @panic None + * @leave KErrNoMemory + * +*/ +void CTestMessEditEntry::ProcessMessageL(CBaseMtm& /*aBaseMtm*/, TMsvId /*aMsgId*/) + { + // Printing to the console and log file + INFO_PRINTF1(_L("Edit Entry")); + + if ( TestStepResult() == EPass ) + { + CTestMessEditEntryUtil* editUtil=new (ELeave) CTestMessEditEntryUtil(*this, EFalse, EFalse, RMobilePhone::TMobileAddress()); + CleanupStack::PushL(editUtil); + + editUtil->ProcessEntryL(EntryL().EntryId()); + + //Read whether the message is saved in outbox + TBool saveOutbox; + if( ! GetBoolFromConfig(ConfigSection(), KPtSaveToOutbox, saveOutbox)) + { + saveOutbox = EFalse; + } + + INFO_PRINTF2(_L("The message saved in outbox flag is : %S"), &saveOutbox); + if(saveOutbox) + { + //Move the message to outbox + MoveMessageL(EntryL().EntryId(), KMsvGlobalOutBoxIndexEntryId); + } + else + { + INFO_PRINTF1(_L("Entry is not moved")); + } + + CleanupStack::PopAndDestroy(editUtil); + } + } + +/** + Move the message the destination folder + @param aMessageId - TMsvId of the message + @param aFolderId - TMsvId of the destination folder + @leave KErrNoMemory + @leave KErrNotFound +*/ +void CTestMessEditEntry::MoveMessageL(TMsvId aMessageId,TMsvId aFolderId) + { + // Get CMsvEntry object and the TMsvEntry of the message + CMsvEntry* msgvEntry = iSession->GetEntryL(aMessageId); + CleanupStack::PushL(msgvEntry); + TMsvEntry entry= msgvEntry->Entry(); + + // Get the parent folder Id of the messaage and create the CMsvEntry + TMsvId parentId = entry.Parent(); + CMsvEntry* msvEntry = iSession->GetEntryL(parentId); + CleanupStack::PushL(msvEntry); + + // Create the active object for handling asynchronous request + CMoveOperation* activeOperation = CMoveOperation::NewL(); + CleanupStack::PushL(activeOperation); + + // Move the selected message to given target folder + CMsvOperation* op = msvEntry->MoveL(aMessageId, aFolderId, activeOperation->iStatus); + CleanupStack::PushL(op); + + // Start the Active scheduler + activeOperation->SetOperation(); + CActiveScheduler::Start(); + TInt error = activeOperation->iStatus.Int(); + if(error == KErrNone) + { + INFO_PRINTF1(_L("message moved successfully")); + } + else + { + INFO_PRINTF2(_L("message failed to be moved. Error : %d"),error); + SetTestStepResult(EFail); + } + //Destroy the object + CleanupStack::PopAndDestroy(4, msgvEntry); + } + +/** + Constructor for CMoveOperation +*/ +CTestMessEditEntry::CMoveOperation::CMoveOperation() +: CActive(CActive::EPriorityStandard) + { + } + +/** + Two phase constructor + @return CTestMessEditEntry::CMoveOperation* - pointer of CTestMessEditEntry::CMoveOperation + @leave - KErrNoMemory + @leave - System wide error codes +*/ +CTestMessEditEntry::CMoveOperation* CTestMessEditEntry::CMoveOperation::NewL() + { + CMoveOperation* self = new (ELeave) CMoveOperation(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +/** + Second phase construction + @leave - sytem wide error codes +*/ +void CTestMessEditEntry::CMoveOperation::ConstructL() + { + CActiveScheduler::Add(this); + } + +/** + Sets the operation as active +*/ +void CTestMessEditEntry::CMoveOperation::SetOperation() + { + SetActive(); + } + +/** + Operation completed event handler. +*/ +void CTestMessEditEntry::CMoveOperation::RunL() + { + CActiveScheduler::Stop(); + } + +/** + Cancels the active operation +*/ +void CTestMessEditEntry::CMoveOperation::DoCancel() + { + }