diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/msgtestfw/misc/ScheduleMessage/src/schedulemessage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgtestfw/misc/ScheduleMessage/src/schedulemessage.cpp Wed Nov 03 22:41:46 2010 +0530 @@ -0,0 +1,122 @@ +// 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: +// + +#include +#include "pigeonservermtm.h" +#include +#include +#include +#include +#include +#include + + +class CSessionObserver : public MMsvSessionObserver, public CBase + { +public: + void HandleSessionEventL(TMsvSessionEvent,TAny*,TAny*,TAny*) {}; + }; + +LOCAL_C TBool FindOrCreateScheduleL(RScheduler& aScheduler, const TTime& aTime, const CMsvScheduleSettings& aSettings, TSchedulerItemRef& aRef) + { + TRAPD(err, CMsvScheduleSend::FindScheduleL(aScheduler, aTime, aRef)); + + if( err != KErrNone ) + CMsvScheduleSend::CreateScheduleL(aScheduler, aSettings, aTime, aSettings.ValidityPeriod(), aRef); + + return (err == KErrNone); + } + +LOCAL_C void DoExecuteL() + { + CActiveScheduler* activeScheduler = new (ELeave) CActiveScheduler(); + CleanupStack::PushL(activeScheduler); + CActiveScheduler::Install(activeScheduler); + + // Create Session + CSessionObserver* sessionObserver; + sessionObserver = new (ELeave) CSessionObserver; + CleanupStack::PushL(sessionObserver); + + CMsvSession* session = CMsvSession::OpenSyncL(*sessionObserver); + CleanupStack::PushL(session); + + // Set the message entry to global Outbox folder + CMsvEntry* msvEntry = session->GetEntryL(KMsvGlobalOutBoxIndexEntryId); + CleanupStack::PushL(msvEntry); + + // Get the selection of Pigeon messages present in Outbox + CMsvEntrySelection* selection = msvEntry->ChildrenWithMtmL(KUidMsgTypePigeon); + CleanupStack::PushL(selection); + + // Schedule it to send immediately - use default settings. + CMsvScheduleSettings* settings = CMsvScheduleSettings::NewL(); + CleanupStack::PushL(settings); + + RScheduler scheduler; + TSchedulerItemRef ref; + + CMsvScheduleSend::ConnectAndRegisterL(scheduler, *settings); + CleanupClosePushL(scheduler); + + TInt selCount = selection->Count(); + + for( TInt index = 0; index < selCount; ++index ) + { + msvEntry->SetEntryL(selection->At(index)); + + if(msvEntry != NULL) + { + TMsvEntry entry = msvEntry->Entry(); + + ref.iHandle = KErrNotFound; + + FindOrCreateScheduleL(scheduler, entry.iDate, *settings, ref); + + User::LeaveIfError(scheduler.DisableSchedule(ref.iHandle)); + + TMsvSchedulePackage package; + package.iPollProgress = 3000000; + package.iCommandId = ESendScheduledL; + package.iId = selection->At(index); + + TTaskInfo info; + + CMsvScheduleSend::ScheduleEntryL(scheduler, ref, package, info); + + User::LeaveIfError(scheduler.EnableSchedule(ref.iHandle)); + } + } + CleanupStack::PopAndDestroy(7, activeScheduler); + } + +LOCAL_C TInt Execute() + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); + + TRAPD(err, DoExecuteL()); + + delete cleanup; + __UHEAP_MARKEND; + + return err; + } + +GLDEF_C TInt E32Main() + { + return Execute(); + } +