messagingapp/msgutils/convergedmessageutils/tsrc/mmstestbed/src/mmstestbed.cpp
changeset 52 12db4185673b
parent 44 36f374c67aa8
child 61 8ba0afbb4637
--- a/messagingapp/msgutils/convergedmessageutils/tsrc/mmstestbed/src/mmstestbed.cpp	Tue Jul 06 14:12:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2357 +0,0 @@
-/*
- * Copyright (c) 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 <mtmdef.h>
-#include <CoreApplicationUIsSDKCRKeys.h>
-#include <mmsheaders.h>
-#include <mmscmds.h>
-#include <mmsencode.h>
-#include <mmscliententry.h>
-#include <logwrap.h>
-#include <logcli.h>
-#include <logview.h>
-#include "mmssettings.h"  //use mmssettings.h instead of cmmssettings.h
-#include "mmstestbed.h"
-#include "mmsreadfile.h"
-#include "mmstestuitimer.h"
-#include "mmsteststaticutils.h"
-#include "mmstestbed.hrh"
-
-//constants
-_LIT( KMmsSender, "0601234567" );
-
-MmsTestBed::MmsTestBed()
-    {
-    //start the timer
-    iTimer = CTestUiTimer::NewL();
-    iTimer->Cancel();
-
-    iWait = CMsvOperationActiveSchedulerWait::NewLC();
-    // don't leave iWait on cleanup stack
-    CleanupStack::Pop();
-
-    //open msvsession
-    iSession = CMsvSession::OpenSyncL(*this);
-    //create client registry
-    iClientMtmRegistry = CClientMtmRegistry::NewL(*iSession);
-    //create client mtm
-    iMmsClient = (CMmsClientMtm *) iClientMtmRegistry->NewMtmL(
-            KUidMsgTypeMultimedia);
-
-    User::LeaveIfError( iFs.Connect() );
-    iFs.SetSessionPath( KRootPath );
-    iSettings = CMmsSettings::NewL();
-    iMmsHeaders = CMmsHeaders::NewL(iSettings->MmsVersion());
-    findDefaultL();
-    iServiceId = iDefaultServiceId;
-
-    //validate the settings
-    iSettings->ValidateSettings();
-
-    iLogEvent = CLogEvent::NewL();
-    iLogEvent->SetEventType(KLogMmsEventTypeUid);
-    iLogClient = NULL; // we test soon if this is available
-    iLogView = NULL; // needs log client
-    if ( checkLogClient() )
-        {
-        // first we generate a general view of all events
-        // we'll set the filter when we update the view
-        iLogView = CLogViewEvent::NewL( *iLogClient );
-        }
-    iLogFilter = CLogFilter::NewL();
-    // we try to filter MMS events
-    iLogFilter->SetEventType(KLogMmsEventTypeUid);
-    }
-
-MmsTestBed::~MmsTestBed()
-    {
-    delete iLogView;
-    delete iLogFilter;
-    delete iLogClient;
-    delete iLogEvent;
-    delete iSettings;
-    delete iMmsHeaders;
-    if(iTimer)
-    {
-        iTimer->Cancel();
-        delete iTimer;
-    }
-    //delete iMsvEntrySelection;
-    delete iMmsClient;
-    delete iClientMtmRegistry;
-    //delete iClientMtmRegistry;
-    delete iSession;
-    delete iWait;
-    }
-
-void MmsTestBed::setConnectionLocal(bool value)
-    {
-    //value = true for global off, local on
-    //value = false for global on, local off
-    iSettings->LoadSettingsL();
-    iSettings->SetLocalMode( value );
-    iSettings->SaveSettingsL();
-    }
-
-void MmsTestBed::fromOutboxToMmsc()
-    {
-    CMsvEntry* cEntry = NULL;
-
-    // Get List of services
-    cEntry = iSession->GetEntryL(KMsvGlobalOutBoxIndexEntryIdValue);
-    CleanupStack::PushL(cEntry);
-    // Get all mms messages of outbox
-    CMsvEntrySelection* selection = cEntry->ChildrenWithMtmL(
-            KUidMsgTypeMultimedia);
-    CleanupStack::PushL(selection);
-
-    // Change state to "KMsvSendStateUnknown" in case the entry has been suspended earlier
-    for (TInt i = 0; i < selection->Count(); ++i)
-        {
-        cEntry->SetEntryL(selection->At(i));
-        TMsvEntry entry = cEntry->Entry();
-        entry.SetReadOnly(EFalse);
-        entry.SetSendingState(KMsvSendStateUnknown);
-        cEntry->ChangeL(entry);
-        }
-
-    selection->InsertL(0, iServiceId);
-
-    CMsvOperation * op = NULL;
-    TCommandParameters parameters; // initialized to zero
-    TCommandParametersBuf paramPack(parameters);
-
-    op = iSession->TransferCommandL(*selection, EMmsSend, paramPack,
-            iWait->iStatus);
-
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending)
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    if (iWait->iStatus.Int() != KErrNone)
-        {
-        //DEBUG(_L("Testbed tried to send, return status %d"), iWait->iStatus.Int());
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(); // selection
-    CleanupStack::PopAndDestroy(); //cEntry
-    }
-
-void MmsTestBed::fromMmscToInbox()
-    {
-    CMsvEntrySelection* msvEntrySelection = new CMsvEntrySelection;
-    CleanupStack::PushL(msvEntrySelection);
-
-    // if we have a selected service, insert it into selection
-    if (iServiceId != KMsvNullIndexEntryId)
-        {
-        msvEntrySelection->InsertL(0, iServiceId);
-        }
-
-    CMsvOperation * op = NULL;
-    TCommandParameters parameters; // initialized to zero
-    TCommandParametersBuf paramPack(parameters);
-
-    op = iMmsClient->InvokeAsyncFunctionL(EMmsReceive, *msvEntrySelection,
-            paramPack, iWait->iStatus);
-
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending)
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    if (iWait->iStatus.Int() != KErrNone)
-        {
-        //DEBUG(_L("Testbed tried to receive, return status %d"),iWait->iStatus.Int());
-        }
-
-    iTimer->Cancel();
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(); //msvEntrySelection
-    }
-
-void MmsTestBed::findDefaultL()
-    {
-    iSettings->LoadSettingsL();
-    iDefaultServiceId = iSettings->Service();
-    }
-
-void MmsTestBed::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1,
-        TAny* aArg2, TAny* /*aArg3*/)
-    {
-    iEvent = aEvent;
-    if (aEvent == EMsvGeneralError)
-        {
-        return;
-        }
-    TMsvId parentId = KMsvNullIndexEntryId;
-    if (aArg2 != NULL)
-        {
-        parentId = *(TMsvId*) aArg2;
-        }
-
-    CMsvEntrySelection* selection = (CMsvEntrySelection*) aArg1;
-    TMsvEntry tEntry;
-    TMsvId service;
-    TInt error = KErrNone;
-    error = iSession->GetEntry(selection->At(0), service, tEntry);
-
-    CMsvEntry* cEntry = NULL;
-    switch (aEvent)
-        {
-        case EMsvEntriesCreated:
-            {
-            if (parentId == KMsvGlobalInBoxIndexEntryIdValue)
-                {
-                // emit signal for new entry into INBOX
-                emit entryCreatedInInbox(tEntry.Id());
-                }
-            else if (parentId == KMsvDraftEntryIdValue)
-                {
-                // emit signal for new entry into Draft
-                emit entryCreatedInDraft(tEntry.Id());
-                }
-            else if (parentId == iServiceId)
-                {
-                // emit signal for new Entry into SERVICE
-                }
-            else
-                {
-                // do nothing
-                }
-            }
-            break;
-        case EMsvEntriesChanged:
-            {
-            TMsvId id;
-            CMsvEntrySelection* selection = (CMsvEntrySelection*) aArg1;
-            if (selection == NULL)
-                {
-                // no selection, cannot handle
-                return;
-                }
-            id = selection->At(0);
-            //DEBUG Entry changed"));
-            if (parentId == KMsvGlobalInBoxIndexEntryIdValue)
-                {
-/*
-                cEntry = iSession->GetEntryL( parentId );
-                CleanupStack::PushL( cEntry );
-                TRAPD (error, cEntry->SetEntryL( id ));
-                if ( error != KErrNone )
-                    {
-                    CleanupStack::PopAndDestroy(); // cEntry
-                    return;
-                    }
-                TMsvEntry tEntry = cEntry->Entry();
-                if ( tEntry.Visible() )
-                    {
-                    // generate fake delivery report
-                    CMsvStore* store = cEntry->ReadStoreL();
-                    CleanupStack::PushL( store );
-                    CMmsHeaders* mmsHeaders = CMmsHeaders::NewL( iSettings->MmsVersion() );
-                    CleanupStack::PushL( mmsHeaders );
-                    mmsHeaders->RestoreL( *store );
-                    iEncodeBuffer->ResizeL( 0 );
-                    generateDeliveryReport( mmsHeaders );
-                    CleanupStack::PopAndDestroy( 2 ); // mmsHeaders, store
-                    }
-                CleanupStack::PopAndDestroy(); // cEntry
-*/
-                }
-            }
-            break;
-        case EMsvEntriesDeleted:
-            {
-            //emit signal for entry deleted
-            }
-            break;
-        case EMsvEntriesMoved:
-            {
-            if (parentId == KMsvGlobalOutBoxIndexEntryIdValue)
-                {
-                // entry moved to outbox
-                emit entryMovedToOutbox(tEntry.Id());
-                }
-            else if (parentId == KMsvSentEntryIdValue)
-                {
-                // entry moved to sent folder
-                emit entryMovedToSent(tEntry.Id());
-                }
-            else
-                {
-                // do nothing
-                }
-            }
-            break;
-        default:
-            break;
-        }
-    }
-
-void MmsTestBed::createMmsService()
-    {
-    CMmsSettings * settings = CMmsSettings::NewL();
-    CleanupStack::PushL( settings );
-    settings->CreateNewServiceL( *iSession );
-    CleanupStack::PopAndDestroy(); // settings
-    return;
-    }
-
-void MmsTestBed::cleanup()
-    {
-    TMsvId entryToBeKilled;
-    // Get access to root index
-    CMsvEntry* cEntry = iSession->GetEntryL(KMsvRootIndexEntryId);
-    CleanupStack::PushL(cEntry);
-
-    entryToBeKilled = iSettings->Service();
-    cEntry->SetSortTypeL( TMsvSelectionOrdering( KMsvNoGrouping, EMsvSortByNone, ETrue ) );
-    while (entryToBeKilled != KMsvNullIndexEntryId)
-        {
-        // delete child of root entry
-        deleteEntry(entryToBeKilled, *cEntry);
-        entryToBeKilled = iSettings->Service();
-        }
-
-    CleanupStack::PopAndDestroy(); // cEntry
-    // We deleted everything!
-    iDefaultServiceId = KMsvNullIndexEntryId;
-    iServiceId = KMsvNullIndexEntryId;
-    }
-
-void MmsTestBed::deleteEntry(TMsvId aEntryId, CMsvEntry& aClientEntry)
-    {
-    aClientEntry.DeleteL(aEntryId);
-    }
-
-void MmsTestBed::cleanupAndCreateNewService()
-    {
-    cleanup();
-    // all old service entries have been destroyed, create a new one
-    createMmsService();
-    }
-
-void MmsTestBed::testFile(TFileName& aFilePath, TInt aCommand /* = 0 */, TMsvId aBox /* = KMsvGlobalOutBoxIndexEntryId */ )
-    {
-    // update settings in mmsclient
-    iMmsClient->RestoreSettingsL();
-    iSettings->CopyL( iMmsClient->MmsSettings() );
-
-    RFileReadStream readStream;
-    readStream.PushL();
-//    TMsvId id = KMsvNullIndexEntryId;
-    CBufFlat* encodeBuffer = NULL;
-    CMmsEncode* encoder = NULL;
-
-    // Open the file
-    TInt err = readStream.Open(iFs, aFilePath, EFileShareReadersOnly );
-    if (err != KErrNone) User::Leave( err );
-
-    TInt   retCode = 0;
-    CMmsReadFile* readFile = NULL;
-    readFile = CMmsReadFile::NewL( iFs, readStream );
-    CleanupStack::PushL( readFile );
-
-    TInt messageCounter = 0;
-    CMsvEntry* cEntry = NULL;
-
-    while(!retCode)
-        {
-        // READ MESSAGE TO BUFFERS
-        iMmsHeaders->Reset(iSettings);
-        // put in some message type just for fun (testing...)
-        iMmsHeaders->SetMessageType( KMmsMessageTypeForwardReq );
-        retCode = readFile->CompleteTestL( messageCounter++, *iMmsHeaders );
-        if(readFile->iMessageType == ETestNewMessage)
-            {
-            // CREATE MESSAGE ENTRY
-            switch ( aCommand )
-                {
-                case ECreateToInbox:
-                case ECreateNotification:
-                    cEntry = iSession->GetEntryL(KMsvGlobalInBoxIndexEntryId);
-                    break;
-                case ECreateToSentItems:
-                    cEntry = iSession->GetEntryL(KMsvSentEntryId);
-                    break;
-                case ECreateToDrafts:
-                    cEntry = iSession->GetEntryL(KMsvDraftEntryId);
-                    break;
-                case ECreateHeadersFromFile:
-                    // here we just encode headers, no message entry
-                    // the entry is fake.
-                    break;
-                case ECreateMMBoxViewConf:
-                    if ( iMmsHeaders->MessageType() == KMmsMessageTypeMboxViewConf )
-                        {
-                        // entry is not created for the description items
-                        // they become attachments
-                        cEntry = iSession->GetEntryL(KMsvDraftEntryId);
-                        }
-                    break;
-                default:
-                    cEntry = iSession->GetEntryL(aBox);
-                    break;
-                }
-
-            // if we are just playing with headers we have no entry
-            if ( aCommand != ECreateHeadersFromFile && aCommand != ECreateMMBoxViewConf )
-                {
-                CleanupStack::PushL(cEntry);
-                iMmsClient->SwitchCurrentEntryL(cEntry->EntryId());
-
-                // CREATE MESSAGE
-                iMmsClient->CreateMessageL(iServiceId);
-                }
-            else if ( aCommand == ECreateMMBoxViewConf )
-                {
-                if ( iMmsHeaders->MessageType() == KMmsMessageTypeMboxViewConf )
-                    {
-                    CleanupStack::PushL(cEntry);
-                    iMmsClient->SwitchCurrentEntryL(cEntry->EntryId());
-
-                    // CREATE MESSAGE
-                    iMmsClient->CreateMessageL(iServiceId);
-                    }
-                else
-                    {
-                    encodeBuffer = CBufFlat::NewL( 4 * 1024 ); // should be plenty
-                    CleanupStack::PushL( encodeBuffer );
-                    encoder = CMmsEncode::NewL( iFs );
-                    CleanupStack::PushL( encoder );
-
-                    // encode headers to a binary file
-                    encoder->EncodeHeadersL( *iMmsHeaders, *encodeBuffer );
-
-                    iFilename = KMmsMMBoxDescriptionDirectory;
-                    TMmsTestUtils::Dump( *encodeBuffer, iFilename, iParse, iFs );
-
-                    CleanupStack::PopAndDestroy( 2 ); // encodeBuffer, encoder
-                    encodeBuffer = NULL;
-                    encoder = NULL;
-                    }
-                }
-            else
-                {
-                encodeBuffer = CBufFlat::NewL( 4 * 1024 ); // should be plenty
-                CleanupStack::PushL( encodeBuffer );
-                encoder = CMmsEncode::NewL( iFs );
-                CleanupStack::PushL( encoder );
-
-                // encode headers to a binary file
-                encoder->EncodeHeadersL( *iMmsHeaders, *encodeBuffer );
-
-                iFilename = KMmsDumpDirectory;
-                TMmsTestUtils::Dump( *encodeBuffer, iFilename, iParse, iFs );
-
-                CleanupStack::PopAndDestroy( 2 ); // encodeBuffer, encoder
-                encodeBuffer = NULL;
-                encoder = NULL;
-                }
-            }
-
-        if ( aCommand != ECreateHeadersFromFile &&
-            ( aCommand != ECreateMMBoxViewConf || iMmsHeaders->MessageType() == KMmsMessageTypeMboxViewConf ) )
-            {
-            if(readFile->iMessageType == ETestSettings)
-                {
-                TMsvId ServiceId = iMmsClient->DefaultServiceL();
-                iMmsClient->RestoreSettingsL();
-                iSettings->CopyL( iMmsClient->MmsSettings() );
-                }
-
-            TMemoryInfoV1Buf memory;
-            UserHal::MemoryInfo( memory );
-            TInt available = memory().iFreeRamInBytes;
-//            TMmsLogger::Log(_L("Free memory before CreateMessageL %d"), available );
-
-            TRAP (err, readFile->CreateMessageL(iMmsClient, iMmsHeaders));
-
-            available = memory().iFreeRamInBytes;
-//            TMmsLogger::Log(_L("Free memory after CreateMessageL %d"), available );
-
-            if(readFile->iMessageType == ETestNewMessage)
-                {
-                TMsvEntry tEntry = iMmsClient->Entry().Entry();
-                TMsvId id = tEntry.Id();
-                if ( err == KErrNone )
-                    {
-                    // SAVE MESSAGE
-                    iMmsClient->SaveMessageL();
-
-                    // If we are creating a MMBox View confirmation,
-                    // we add all binary files from KMmsMMBoxDirectory
-                    // as attachments.
-
-                    if ( iMmsHeaders->MessageType() == KMmsMessageTypeMboxViewConf )
-                        {
-                        addMMBoxDescriptions();
-                        }
-
-                    // reload the entry in case mms client put something into it
-                    // MESSAGE MUST BE SET VISIBLE
-                    tEntry = iMmsClient->Entry().Entry();
-                    if ( iMmsClient->MessageClass() == EMmsClassAdvertisement )
-                        {
-                        tEntry.iMtmData1 |= KMmsMessageAdvertisement;
-                        }
-                    else if ( iMmsClient->MessageClass() == EMmsClassInformational )
-                        {
-                        tEntry.iMtmData1 |= KMmsMessageInformational;
-                        }
-                    tEntry.iMtmData1 &= ~KMmsMessageMobileTerminated;
-
-                    // Test: Set all as editor oriented - except notifications!
-                    if ( aCommand == ECreateNotification )
-                        {
-                        tEntry.iMtm = KUidMsgMMSNotification;
-                        }
-                    else
-                        {
-                        tEntry.iMtmData1 |= KMmsMessageEditorOriented;
-                        }
-                    if ( aCommand == ECreateToInbox )
-                        {
-                        tEntry.iMtmData1 |= KMmsMessageMobileTerminated;
-                        tEntry.SetReadOnly( ETrue );
-                        tEntry.SetNew( ETrue );
-                        tEntry.SetUnread( ETrue );
-                        }
-                    else if ( aCommand == ECreateToSentItems )
-                        {
-                        tEntry.SetReadOnly( ETrue );
-                        }
-                    tEntry.SetVisible( ETrue );
-                    tEntry.SetInPreparation( EFalse );
-                    TTime now;
-                    now.UniversalTime();
-                    tEntry.iDate = now;
-                    TMsvId entryId = tEntry.Id();
-                    iMmsClient->Entry().ChangeL( tEntry );
-                    if ( iMmsHeaders->MessageType() == KMmsMessageTypeMboxViewConf )
-                        {
-                        // Encode to the directory that is used to fetch MMBox view
-                        iFilename.Copy( KMmsMMBoxDirectory );
-                        encodeMessageFromDrafts();
-                        cEntry->SetEntryL( KMsvDraftEntryId );
-                        cEntry->DeleteL( entryId );
-                        }
-                    }
-                else
-                    {
-                    //TMmsLogger::Log(_L("CreateMessageL left with error %d"), err );
-                    iSession->RemoveEntry(id);
-                    err = KErrNone; // clear error
-                    }
-                CleanupStack::PopAndDestroy(); // cEntry
-                cEntry = NULL;
-                }
-            if(readFile->iMessageType == ETestSettings)
-                {
-                iMmsClient->SetSettingsL( *iSettings );
-                iMmsClient->StoreSettingsL();
-                }
-        }
-    }
-
-    CleanupStack::PopAndDestroy(); //readFile
-
-    readStream.Close();
-    readStream.Pop();
-
-    /*
-    iMmsClient->SwitchCurrentEntryL(id);
-    */
-    }
-
-void MmsTestBed::addMMBoxDescriptions()
-    {
-    // add the contents of KMmsMMBoxDescriptionDirectory as attachments
-    CDir* fileList = NULL;
-    TInt i = 0;  // general counter
-    TInt error = KErrNone;
-    iCurrentPath = KMmsMMBoxDescriptionDirectory;
-
-    iFs.SetSessionPath(iCurrentPath);
-
-    TFindFile finder( iFs );
-    error = finder.FindWildByPath( KWild, NULL, fileList );
-    CleanupStack::PushL( fileList );
-    TInt fileCounter = 0;
-
-    if ( error == KErrNone )
-        {
-        fileCounter = fileList->Count();
-        }
-
-    TEntry entry;
-
-    if ( error == KErrNone )
-        {
-        for ( i = 0; i < fileCounter; ++i )
-            {
-            // Reset inactivity timer to keep viewServer from crashing
-            User::ResetInactivityTime();
-            entry = (*fileList)[i]; // name is entry.iName
-            iFilename.Copy( iCurrentPath );
-            iFilename.Append( entry.iName );
-            TPtrC ptr;
-            ptr.Set( iFilename );
-            iWait->iStatus = KErrNone;
-            iMmsClient->AddAttachmentL( ptr, KMmsMimeType, 0, iWait->iStatus );
-
-            iWait->Start();
-            // The descriptions are cleared after being used
-            iFs.Delete( ptr);
-            }
-        }
-
-    iMmsClient->SaveMessageL(); // just in case somthing must be updated
-    CleanupStack::PopAndDestroy(); // fileList
-    fileList = NULL;
-    }
-
-void MmsTestBed::encodeMessageFromDrafts()
-    {
-    CMmsEncode* encoder = CMmsEncode::NewL( iFs );
-    CleanupStack::PushL( encoder );
-    // encode a message iMmsClientPoints to
-    iMmsClient->LoadMessageL();
-    CMsvStore* store = iMmsClient->Entry().ReadStoreL();
-    CleanupStack::PushL( store );
-    iMmsHeaders->RestoreL( *store );
-    CleanupStack::PopAndDestroy(); // store
-    store = NULL;
-    iWait->iStatus = KErrNone;
-
-// caller sets the directory
-//    iFilename = KMmsMessageDumpDirectory;
-
-    CMmsClientEntry* entryWrapper = CMmsClientEntry::NewL( iFs, iMmsClient->Entry(), iServiceId );
-    CleanupStack::PushL( entryWrapper );
-    iEncodeBuffer->ResizeL(0);
-    encoder->StartL( *entryWrapper, *iMmsHeaders, *iEncodeBuffer, iWait->iStatus );
-    iWait->Start();
-    if ( iWait->iStatus == KErrNone )
-        {
-        TMmsTestUtils::Dump( *iEncodeBuffer, iFilename, iParse, iFs );
-        }
-    iEncodeBuffer->ResizeL(0);
-    CleanupStack::PopAndDestroy(); // entryWrapper
-    CleanupStack::PopAndDestroy(); // encoder
-    }
-
-void MmsTestBed::deleteNotifications()
-    {
-    TMsvId mmsFolderId = KMsvNullIndexEntryId;
-    mmsFolderId = findMMSFolder();
-
-    CMsvEntry* cEntry = NULL;
-    // delete all messages from the specified box
-    cEntry = iSession->GetEntryL(KMsvRootIndexEntryId);
-    CleanupStack::PushL(cEntry);
-
-    if ( mmsFolderId != KMsvNullIndexEntryId )
-        {
-        cEntry->SetEntryL(mmsFolderId);
-
-        // show invisible entries
-        cEntry->SetSortTypeL( TMsvSelectionOrdering( KMsvNoGrouping, EMsvSortByNone, ETrue ) );
-        CMsvEntrySelection* msvEntrySelection = cEntry->ChildrenWithMtmL(KUidMsgTypeMultimedia);
-        CleanupStack::PushL(msvEntrySelection);
-
-        TCommandParameters parameters; // initialized to zero
-        TCommandParametersBuf paramPack( parameters );
-
-        if (msvEntrySelection->Count() > 0)
-            {
-            CMsvOperation* op = iSession->TransferCommandL(
-                *msvEntrySelection,
-                EMmsDeleteEntries,
-                paramPack,
-                iWait->iStatus);
-            CleanupStack::PushL(op);
-            iWait->Start();
-            CleanupStack::PopAndDestroy(); // op
-            }
-
-        // These cannot be deleted unless we have the a server mtm
-        // corresponding to this mtm type.
-        cEntry->SetSortTypeL( TMsvSelectionOrdering( KMsvNoGrouping, EMsvSortByNone, ETrue ) );
-        CleanupStack::PopAndDestroy(); //msvEntrySelection
-        msvEntrySelection = cEntry->ChildrenWithMtmL( KUidMsgMMSNotification );
-        CleanupStack::PushL(msvEntrySelection);
-
-        if (msvEntrySelection->Count() > 0)
-            {
-            CMsvOperation* op = iSession->TransferCommandL(
-                *msvEntrySelection,
-                EMmsDeleteEntries,
-                paramPack,
-                iWait->iStatus);
-            CleanupStack::PushL(op);
-            iWait->Start();
-            CleanupStack::PopAndDestroy(); // op
-            }
-
-        CleanupStack::PopAndDestroy(); //msvEntrySelection
-
-        CleanupStack::PopAndDestroy(); //cEntry
-        }
-    }
-
-TMsvId MmsTestBed::findMMSFolder()
-    {
-    return iSettings->NotificationFolder();
-    }
-
-void MmsTestBed::restoreFactorySettings()
-    {
-    iMmsClient->RestoreSettingsL();
-    iSettings->CopyL( iMmsClient->MmsSettings() );
-    // do not reset access point
-    TInt accessPoint = iSettings->AccessPoint( 0 );
-    iSettings->RestoreFactorySettingsL( iMmsClient->Session(), EMmsFactorySettingsLevelDeep );
-    TInt count = iSettings->AccessPointCount();
-    TInt i = 0;
-    for ( i = count - 1; i >= 0; --i )
-        {
-        iSettings->DeleteAccessPointL( i );
-        }
-    // restore the original access point
-    if ( accessPoint > 0 )
-        {
-        // a negative access point is an error (most likely "KErrNotFound")
-        iSettings->AddAccessPointL( accessPoint, 0 );
-        }
-    iMmsClient->SetSettingsL( *iSettings );
-    iMmsClient->StoreSettingsL();
-    }
-
-void MmsTestBed::setFetchingState( TMmsReceivingMode aState )
-    {
-    iMmsClient->RestoreSettingsL();
-    iSettings->CopyL( iMmsClient->MmsSettings() );
-
-    iSettings->SetReceivingModeHome( aState );
-
-    iMmsClient->SetSettingsL( *iSettings );
-    iMmsClient->StoreSettingsL();
-    }
-
-void MmsTestBed::sendFromFile()
-    {
-    CMsvOperation * op = NULL;
-
-    CMsvEntry* cEntry = iSession->GetEntryL(KMsvGlobalOutBoxIndexEntryId);
-    CleanupStack::PushL( cEntry );
-
-    CMsvEntrySelection* selection = NULL;
-    selection = cEntry->ChildrenWithMtmL(KUidMsgTypeMultimedia);
-    CleanupStack::PopAndDestroy(); // cEntry
-    CleanupStack::PushL( selection );
-
-    TRAPD (error, op = iMmsClient->SendL(*selection, iWait->iStatus));
-    if ( error != KErrNone )
-        {
-        CleanupStack::PopAndDestroy(); // selection
-        delete op;
-        return;
-        }
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    if ( iWait->iStatus.Int() != KErrNone )
-        {
-        //TMmsLogger::Log(_L("Testbed tried to send, return status %d"), iWait->iStatus.Int());
-        }
-
-    iTimer->Cancel();
-    CleanupStack::PopAndDestroy(2); // op, selection
-    }
-
-void MmsTestBed::sendOneByOne()
-    {
-    CMsvEntry* cEntry = iSession->GetEntryL(KMsvGlobalOutBoxIndexEntryId);
-    CleanupStack::PushL( cEntry );
-
-    CMsvEntrySelection* selection = NULL;
-    selection = cEntry->ChildrenWithMtmL(KUidMsgTypeMultimedia);
-    CleanupStack::PushL( selection );
-
-    CMsvEntrySelection* shortSelection = new (ELeave) CMsvEntrySelection;
-    CleanupStack::PushL( shortSelection );
-
-    TInt i;
-
-    for ( i = 0; i < selection->Count(); ++i )
-        {
-        shortSelection->Reset();
-        shortSelection->AppendL( selection->At( i ) );
-
-        CMsvOperation * op = NULL;
-
-        TTime now;
-        now.UniversalTime();
-
-        TRAPD (error, op = iMmsClient->SendL(*shortSelection, iWait->iStatus, now ));
-        if ( error != KErrNone )
-            {
-            delete op;
-            CleanupStack::PopAndDestroy( 3 ); // entry, selection, shortSelection
-            return;
-            }
-        CleanupStack::PushL(op);
-        iWait->Start();
-
-        while (iWait->iStatus.Int() == KRequestPending )
-            {
-            if (!iTimer->IsActive())
-                {
-                iTimer->IssueRequest();
-                }
-            CActiveScheduler::Start();
-            }
-
-        if ( iWait->iStatus.Int() != KErrNone )
-            {
-            //TMmsLogger::Log(_L("Testbed tried to send, return status %d"), iWait->iStatus.Int());
-            }
-
-        iTimer->Cancel();
-        CleanupStack::PopAndDestroy(); // op
-
-        }
-    CleanupStack::PopAndDestroy( 3 ); // entry, selection, shortSelection
-    }
-
-void MmsTestBed::sendNotifications()
-    {
-    // Only send one notification!!
-
-    TInt error = KErrNone;
-
-    if (! TMmsTestUtils::IsFile(iCurrentFile, iFs) )
-        {
-        //Not a file
-        return;
-        }
-    TMsvId mmsFolder = findMMSFolder();
-
-    TEntry entry;
-
-
-    // now I think we have a filename
-    TEntry orgEntry;
-    TUint size = 0;
-    error = iFs.Entry( iCurrentFile, orgEntry );
-    size = orgEntry.iSize;
-
-    //TMmsLogger::Log(_L("- notification %S "), &iCurrentFile);
-    if ( size == 0 )
-        {
-        //empty file
-        //TMmsLogger::Log(_L("- empty file"));
-        return;
-        }
-
-    if ( iEncodeBuffer == NULL )
-        {
-        iEncodeBuffer = CBufFlat::NewL( size );
-        }
-    else
-        {
-        iEncodeBuffer->ResizeL( 0 );
-        iEncodeBuffer->ResizeL( size );
-        }
-
-    RFile inFile;
-    error = inFile.Open( iFs, iCurrentFile, EFileShareReadersOnly );
-    TPtr8 ptr = iEncodeBuffer->Ptr( 0 );
-    if ( error == KErrNone )
-        {
-        error = inFile.Read( ptr, size );
-        inFile.Close();
-        }
-    else
-       {
-       //Error
-       //TMmsLogger::Log(_L("- can't read file"));
-       return;
-       }
-
-    TUint8 byte;
-    TUint position = 0;
-    TUint32 uintvar = 0;
-
-    if ( size > 2 )
-        {
-        iEncodeBuffer->Read( 1, &byte, 1 );
-        if ( byte == 6 ) // PUSH PDU
-            {
-            // try to find out length of header
-            position = 2;
-            iEncodeBuffer->Read( position, &byte, 1);
-
-            while ( byte & 0x80  && position < size )
-                {
-                uintvar += ( byte & 0x7f );
-                uintvar <<= 7;
-                position++;
-                iEncodeBuffer->Read( position, &byte, 1 );
-                }
-
-            // add last byte without shift
-            uintvar += byte;
-            position++;
-           }
-        }
-
-    position += uintvar;
-
-    if ( position < size )
-        {
-        ptr = iEncodeBuffer->Ptr( position );
-        size = ptr.Length();
-        }
-
-    if ( size == 0 )
-        {
-        //no MMS stuff
-        //TMmsLogger::Log(_L("- no MMS stuff"));
-        return;
-        }
-
-    TMsvId entryId = TMmsTestUtils::CreateNotificationEntryL( mmsFolder, iServiceId, iEncodeBuffer, *iSession );
-
-    // Now we have streamed our data into this entry.
-    // Now we have an entry that says: local service, MMS MTM
-    CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
-    CleanupStack::PushL( selection );
-    if ( entryId != KMsvNullIndexEntryId )
-        {
-        selection->AppendL( entryId );
-        }
-    else
-        {
-        selection->AppendL( iDefaultServiceId );
-        }
-
-    TWatcherParameters parameters; // initialized to zero
-    parameters.iWatcherId = RThread().Id();
-    parameters.iDataPointer = &ptr;
-    TWatcherParametersBuf paramPack( parameters );
-
-    CMsvOperation * op = NULL;
-
-    op = iSession->TransferCommandL(
-        *selection, EMmsDecodePushedMessage, paramPack, iWait->iStatus );
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-    User::After(1000000);
-
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(); // selection
-    }
-
-void MmsTestBed::copyDrafts()
-    {
-    CMsvEntry* cEntry = NULL;
-// Copies contents of sent folder to drafts for retrying sending.
-
-    cEntry = iSession->GetEntryL(KMsvSentEntryId);
-    CleanupStack::PushL(cEntry);
-    // Get all mms messages in drafts
-    CMsvEntrySelection* selection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-    CleanupStack::PushL( selection );
-
-    TMsvLocalOperationProgress progress;
-    cEntry->CopyL( *selection, KMsvDraftEntryId, progress );
-
-    TInt i = 0;
-    for ( i = 0; i < selection->Count(); ++i )
-        {
-        cEntry->SetEntryL( selection->At( i ) );
-        TMsvEntry entry = cEntry->Entry();
-        entry.SetReadOnly( EFalse );
-        cEntry->ChangeL( entry );
-        }
-
-    CleanupStack::PopAndDestroy(2); // selection, cEntry
-    }
-
-void MmsTestBed::garbageCollection(TUint32 aReason)
-    {
-    CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
-    CleanupStack::PushL( selection );
-    selection->InsertL(0, iDefaultServiceId);
-
-    CMsvOperation * op = NULL;
-
-    TMMSGarbageCollectionParameters parameters; // initialized to zero
-    parameters.iReasonFlags = aReason;
-    TMMSGarbageCollectionParametersBuf paramPack( parameters );
-    op = iSession->TransferCommandL(
-        *selection, EMmsGarbageCollection, paramPack, iWait->iStatus );
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(); // selection
-    }
-
-void MmsTestBed::messageVariation()
-    {
-    CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
-    CleanupStack::PushL( selection );
-    selection->InsertL(0, iDefaultServiceId);
-
-    CMsvOperation * op = NULL;
-
-    op = iSession->TransferCommandL(
-        *selection, EMmsMessageGeneration, TPtrC8(), iWait->iStatus );
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(); // selection
-    }
-
-void MmsTestBed::cancelSendScheduling()
-    {
-    CMsvEntry* cEntry = NULL;
-    setFetchingState( EMmsReceivingPostpone );
-    testFile( iCurrentFile );
-    scheduledSend(KMsvGlobalOutBoxIndexEntryIdValue, 10000); // long delay so that we have time to cancel
-    deleteSendSchedule();
-
-    cEntry = iSession->GetEntryL(KMsvRootIndexEntryId);
-    CleanupStack::PushL(cEntry);
-    cEntry->SetEntryL(KMsvGlobalOutBoxIndexEntryIdValue);
-    if (iMsvEntrySelection != NULL)
-        {
-        delete iMsvEntrySelection;
-        iMsvEntrySelection = NULL;
-        }
-    iMsvEntrySelection = cEntry->ChildrenWithMtmL(KUidMsgTypeMultimedia);
-    CleanupStack::PopAndDestroy();
-    }
-
-void MmsTestBed::scheduledSend(TMsvId aBoxId, TInt aDelay /* = 5 */)
-    {
-    CMsvEntry* cEntry = NULL;
-    TCommandParameters parameters;
-    parameters.iInitialDelay = aDelay;
-    TCommandParametersBuf paramPack( parameters );
-
-    cEntry = iSession->GetEntryL(aBoxId);
-    CleanupStack::PushL(cEntry);
-    // Get all mms messages of outbox
-    CMsvEntrySelection* selection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-    CleanupStack::PushL( selection );
-//    selection->InsertL(0, iDefaultServiceId);
-
-    CMsvOperation * op = NULL;
-    op = iMmsClient->InvokeAsyncFunctionL(
-        EMmsScheduledSend,
-        *selection,
-        paramPack,
-        iWait->iStatus);
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(2); // cEntry, selection
-    }
-
-void MmsTestBed::deleteSendSchedule()
-    {
-    CMsvEntry* cEntry = NULL;
-
-    TCommandParameters parameters; // initialized to zero
-    TCommandParametersBuf paramPack( parameters );
-
-    cEntry = iSession->GetEntryL(KMsvGlobalOutBoxIndexEntryIdValue);
-    CleanupStack::PushL(cEntry);
-    // Get all mms messages of outbox
-    CMsvEntrySelection* selection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-    CleanupStack::PushL( selection );
-    selection->InsertL(0, iDefaultServiceId);
-
-    CMsvOperation * op = NULL;
-    op = iMmsClient->InvokeAsyncFunctionL(
-        EMmsDeleteSchedule,
-        *selection,
-        paramPack,
-        iWait->iStatus);
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(2); // cEntry, selection
-    }
-
-void MmsTestBed::cancelFetchScheduling()
-    {
-    TMsvId mmsFolder = findMMSFolder();
-    CMsvEntry* cEntry = NULL;
-    setFetchingState( EMmsReceivingPostpone );
-    testFile( iCurrentFile );
-    fromOutboxToMmsc(); // immediate send (EMmsSend)
-
-    // Wait until notification has arrived - may take a while in global mode
-    TInt i = 0;
-    while ( TMmsTestUtils::CountChildrenL( mmsFolder, iMsvEntrySelection, *iSession ) == 0
-        && i < 2000 )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        i++;
-        if ( (i/100) * 100 == i )
-            {
-            //TMmsLogger::Log(_L("%d:th wait cycle"), i );
-            }
-        CActiveScheduler::Start();
-        }
-    iTimer->Cancel();
-
-    fetchForced( 10000 ); // delay to allow cancelling
-    deleteFetchSchedule();
-
-    cEntry = iSession->GetEntryL(KMsvRootIndexEntryId);
-    CleanupStack::PushL(cEntry);
-    cEntry->SetEntryL(mmsFolder);
-    if (iMsvEntrySelection != NULL)
-        {
-        delete iMsvEntrySelection;
-        iMsvEntrySelection = NULL;
-        }
-    iMsvEntrySelection = cEntry->ChildrenWithMtmL(KUidMsgTypeMultimedia);
-    CleanupStack::PopAndDestroy(); // cEntry
-    }
-
-void MmsTestBed::fetchForced(TInt aDelay /* = 5 */)
-    {
-    TCommandParameters parameters;
-    parameters.iInitialDelay = aDelay;
-    TCommandParametersBuf paramPack( parameters );
-
-    CMsvEntrySelection* selection = new CMsvEntrySelection;
-    CleanupStack::PushL( selection );
-    // if we have a selected service, insert it into selection
-    if (iServiceId != KMsvNullIndexEntryId)
-        {
-        selection->InsertL(0, iServiceId);
-        }
-    else
-        {
-        selection->InsertL(0, iDefaultServiceId);
-        }
-
-
-    CMsvOperation * op = NULL;
-    op = iMmsClient->InvokeAsyncFunctionL(
-        EMmsScheduledReceiveForced,
-        *selection,
-        paramPack,
-        iWait->iStatus);
-
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(); // selection
-    }
-
-void MmsTestBed::deleteFetchSchedule()
-    {
-    CMsvEntry* cEntry = NULL;
-
-    TCommandParameters parameters; // initialized to zero
-    TCommandParametersBuf paramPack( parameters );
-
-    TMsvId mmsFolderId = KMsvNullIndexEntryId;
-    mmsFolderId = findMMSFolder();
-    cEntry = iSession->GetEntryL( mmsFolderId );
-    CleanupStack::PushL(cEntry);
-    // Get all notifications
-    CMsvEntrySelection* selection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-    CleanupStack::PushL( selection );
-    selection->InsertL(0, iDefaultServiceId);
-
-    CMsvOperation * op = NULL;
-    op = iMmsClient->InvokeAsyncFunctionL(
-        EMmsDeleteSchedule,
-        *selection,
-        paramPack,
-        iWait->iStatus);
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(2); // cEntry, selection
-    }
-
-void MmsTestBed::doAFetchCycle()
-    {
-    // Sends a message from iCurrentFile and lets it come back
-    TMsvId mmsFolder = findMMSFolder();
-    testFile( iCurrentFile );
-    fromOutboxToMmsc(); // immediate send (EMmsSend)
-    // fetching will start automatically
-
-    TInt i = 0;
-    while ( TMmsTestUtils::CountChildrenL( KMsvGlobalInBoxIndexEntryId, iMsvEntrySelection, *iSession ) == 0
-         && i < 2000
-         && TMmsTestUtils::CountChildrenL( mmsFolder, iMsvEntrySelection, *iSession ) > 0 )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        i++;
-        if ( (i/100) * 100 == i )
-            {
-            //TMmsLogger::Log(_L("%d:th wait cycle"), i );
-            }
-        CActiveScheduler::Start();
-        }
-    iTimer->Cancel();
-    }
-
-bool MmsTestBed::checkLogClient()
-    {
-    if ( iLogClient == NULL )
-        {
-        TRAP_IGNORE( iLogClient = CLogClient::NewL( iFs ) );
-        }
-    return ( iLogClient != NULL );
-    }
-
-int MmsTestBed::getLogEntries()
-    {
-    TInt count = 0;
-    if ( !iLogView )
-        {
-        return 0;
-        }
-
-    if ( iLogView->SetFilterL( *iLogFilter, iWait->iStatus ) )
-        {
-        // should complete with KErrNone
-        iWait->Start();
-        if ( iWait->iStatus.Int() == KErrNone )
-            {
-            count = iLogView->CountL();
-            }
-        }
-    return count;
-    }
-
-void MmsTestBed::createEntry(TMsvEntry& aNewEntry, CMsvEntry& aClientEntry)
-    {
-    CMsvOperation*  opert = aClientEntry.CreateL(aNewEntry, iWait->iStatus);
-    iWait->Start();
-    if (!opert->iStatus.Int()==KErrNone)
-        {
-        // what should we do? panic?
-        }
-
-    TPckgBuf<TMsvLocalOperationProgress> package;
-    package.Copy(opert->ProgressL());
-    *(TMsvId*)&aNewEntry = package().iId;
-
-    delete opert; opert=NULL;
-    }
-
-void MmsTestBed::cleanOutbox()
-    {
-    TMmsTestUtils::CleanBoxL(KMsvGlobalOutBoxIndexEntryId, *iSession);
-    }
-
-void MmsTestBed::cleanInbox()
-    {
-    TMmsTestUtils::CleanBoxL(KMsvGlobalInBoxIndexEntryId, *iSession);
-    }
-
-void MmsTestBed::cleanSent()
-    {
-    TMmsTestUtils::CleanBoxL(KMsvSentEntryId, *iSession);
-    }
-
-void MmsTestBed::cleanDrafts()
-    {
-    TMmsTestUtils::CleanBoxL(KMsvDraftEntryId, *iSession);
-    }
-
-void MmsTestBed::cleanAll()
-    {
-    cleanInbox();
-    cleanOutbox();
-    cleanSent();
-    cleanDrafts();
-    TMmsTestUtils::CleanBoxL( iSettings->MMBoxFolder(), *iSession );
-    deleteNotifications();
-    }
-
-void MmsTestBed::reply()
-    {
-    // The first message from inbox is replied to
-    CMsvEntry* cEntry = iSession->GetEntryL(KMsvGlobalInBoxIndexEntryId);
-    CleanupStack::PushL(cEntry);
-    delete iMsvEntrySelection;
-    iMsvEntrySelection = NULL;
-    iMsvEntrySelection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-    if ( iMsvEntrySelection->Count() > 0 )
-        {
-        TMsvId originalEntry = iMsvEntrySelection->At(0);
-        iMmsClient->SwitchCurrentEntryL( originalEntry );
-        TMsvPartList partList = KMsvMessagePartOriginator | KMsvMessagePartDescription;
-        CMsvOperation * op = NULL;
-        op = iMmsClient->ReplyL( KMsvGlobalOutBoxIndexEntryId, partList, iWait->iStatus);
-        CleanupStack::PushL(op);
-        iWait->Start();
-        while (iWait->iStatus.Int() == KRequestPending )
-            {
-            if (!iTimer->IsActive())
-                {
-                iTimer->IssueRequest();
-                }
-            CActiveScheduler::Start();
-            }
-
-        iTimer->Cancel();
-        if ( iWait->iStatus.Int() != KErrNone )
-            {
-            //TMmsLogger::Log(_L("Create reply, return status %d"), iWait->iStatus.Int());
-            }
-        else
-            {
-            TMsvId newEntry = KMsvNullIndexEntryId;
-            TPckgBuf<TMsvId> package;
-            package.Copy(op->ProgressL());
-            newEntry = package();
-            if ( newEntry != KMsvNullIndexEntryId )
-                {
-                cEntry->SetEntryL( newEntry );
-                TMsvEntry entry = cEntry->Entry();
-                entry.SetInPreparation( EFalse );
-                entry.SetVisible( ETrue );
-                cEntry->ChangeL(entry);
-                }
-            }
-        CleanupStack::PopAndDestroy(); // op
-        }
-    CleanupStack::PopAndDestroy(); // cEntry
-    }
-
-void MmsTestBed::replyToAll()
-    {
-    // The first message from inbox is replied to
-    CMsvEntry* cEntry = iSession->GetEntryL(KMsvGlobalInBoxIndexEntryId);
-    CleanupStack::PushL(cEntry);
-    delete iMsvEntrySelection;
-    iMsvEntrySelection = NULL;
-    iMsvEntrySelection = cEntry->ChildrenWithMtmL(KUidMsgTypeMultimedia);
-
-    if ( iMsvEntrySelection->Count() > 0 )
-        {
-        TMsvId originalEntry = iMsvEntrySelection->At(0);
-        iMmsClient->SwitchCurrentEntryL( originalEntry );
-        TMsvPartList partList = KMsvMessagePartOriginator | KMsvMessagePartDescription |
-            KMsvMessagePartRecipient;
-        CMsvOperation * op = NULL;
-        op = iMmsClient->ReplyL( KMsvGlobalOutBoxIndexEntryId, partList, iWait->iStatus);
-        CleanupStack::PushL(op);
-        iWait->Start();
-        while (iWait->iStatus.Int() == KRequestPending )
-            {
-            if (!iTimer->IsActive())
-                {
-                iTimer->IssueRequest();
-                }
-            CActiveScheduler::Start();
-            }
-
-        iTimer->Cancel();
-        if ( iWait->iStatus.Int() != KErrNone )
-            {
-            //TMmsLogger::Log(_L("Create reply to all, return status %d"), iWait->iStatus.Int());
-            }
-        else
-            {
-            TMsvId newEntry = KMsvNullIndexEntryId;
-            TPckgBuf<TMsvId> package;
-            package.Copy(op->ProgressL());
-            newEntry = package();
-            if ( newEntry != KMsvNullIndexEntryId )
-                {
-                cEntry->SetEntryL( newEntry );
-                TMsvEntry entry = cEntry->Entry();
-                entry.SetInPreparation( EFalse );
-                entry.SetVisible( ETrue );
-                cEntry->ChangeL(entry);
-                }
-            }
-        CleanupStack::PopAndDestroy(); // op
-        }
-    CleanupStack::PopAndDestroy(); // cEntry
-    }
-
-void MmsTestBed::forward()
-    {
-    // The first message from inbox is forwarded
-    CMsvEntry* cEntry = iSession->GetEntryL(KMsvGlobalInBoxIndexEntryId);
-    CleanupStack::PushL(cEntry);
-    delete iMsvEntrySelection;
-    iMsvEntrySelection = NULL;
-    iMsvEntrySelection = cEntry->ChildrenWithMtmL(KUidMsgTypeMultimedia);
-
-    if ( iMsvEntrySelection->Count() > 0 )
-        {
-        TMsvId originalEntry = iMsvEntrySelection->At(0);
-        iMmsClient->SwitchCurrentEntryL( originalEntry );
-        TMsvPartList partList = KMsvMessagePartOriginator | KMsvMessagePartDescription |
-            KMsvMessagePartRecipient | KMsvMessagePartAttachments;
-        CMsvOperation * op = NULL;
-        op = iMmsClient->ForwardL( KMsvGlobalOutBoxIndexEntryId, partList, iWait->iStatus);
-        CleanupStack::PushL(op);
-        iWait->Start();
-        while (iWait->iStatus.Int() == KRequestPending )
-            {
-            if (!iTimer->IsActive())
-                {
-                iTimer->IssueRequest();
-                }
-            CActiveScheduler::Start();
-            }
-
-        iTimer->Cancel();
-        if ( iWait->iStatus.Int() != KErrNone )
-            {
-            //TMmsLogger::Log(_L("Create forward, return status %d"), iWait->iStatus.Int());
-            }
-        else
-            {
-            TMsvId newEntry = KMsvNullIndexEntryId;
-            TPckgBuf<TMsvId> package;
-            package.Copy(op->ProgressL());
-            newEntry = package();
-            if ( newEntry != KMsvNullIndexEntryId )
-                {
-                iMmsClient->SwitchCurrentEntryL( newEntry );
-                // Add a sender: 0601234567
-                iMmsClient->LoadMessageL();
-                iMmsClient->SetSenderL( KMmsSender );
-                iMmsClient->SaveMessageL();
-                cEntry->SetEntryL( newEntry );
-                TMsvEntry entry = cEntry->Entry();
-                entry.SetInPreparation( EFalse );
-                entry.SetVisible( ETrue );
-                cEntry->ChangeL(entry);
-                }
-            }
-        CleanupStack::PopAndDestroy(); // op
-        }
-    CleanupStack::PopAndDestroy(); // cEntry
-    }
-
-void MmsTestBed::sendReadReport()
-    {
-    // TURN READ REPORTS ON (until available from menu)
-    iSettings->LoadSettingsL();
-    iSettings->SetReadReplyReportSendingAllowed( ETrue );
-    iSettings->SaveSettingsL();
-    iMmsClient->RestoreSettingsL();
-
-
-    // Read report is sent for the first message in inbox
-    CMsvEntry* cEntry = iSession->GetEntryL( KMsvGlobalInBoxIndexEntryId );
-    CleanupStack::PushL(cEntry);
-    delete iMsvEntrySelection;
-    iMsvEntrySelection = NULL;
-    iMsvEntrySelection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-
-    if ( iMsvEntrySelection->Count() == 0 )
-        {
-        return;
-        }
-    TMsvId originalEntry = iMsvEntrySelection->At( 0 );
-
-    // new test using Client MTM
-    CMsvOperation * op = NULL;
-    op = iMmsClient->SendReadReportL( originalEntry, iWait->iStatus, EMmsReadStatusRead );
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    if ( iWait->iStatus.Int() != KErrNone )
-        {
-        //TMmsLogger::Log(_L("Testbed tried to send read report, return status %d"), iWait->iStatus.Int());
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy( op );
-    op = NULL;
-
-    // Try sending the read report to current entry
-
-    iMmsClient->SwitchCurrentEntryL( originalEntry );
-    op = iMmsClient->SendReadReportL( originalEntry, iWait->iStatus, EMmsReadStatusRead );
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    if ( iWait->iStatus.Int() != KErrNone )
-        {
-        //TMmsLogger::Log(_L("Testbed tried to send read report, return status %d"), iWait->iStatus.Int());
-        }
-
-    iTimer->Cancel();
-    CleanupStack::PopAndDestroy( op );
-    op = NULL;
-
-/*
-    cEntry->SetEntryL( originalEntry );
-    iMmsHeaders->Reset();
-    CMsvStore* store = cEntry->ReadStoreL();
-    CleanupStack::PushL( store );
-    iMmsHeaders->RestoreL( *store );
-    CleanupStack::PopAndDestroy( store );
-    store = NULL;
-    HBufC8* messageId = HBufC8::NewL( iMmsHeaders->MessageId().Length() );
-    CleanupStack::PushL( messageId );
-    messageId->Des().Copy( iMmsHeaders->MessageId() );
-
-    iMmsClient->SwitchCurrentEntryL( originalEntry );
-    iMmsClient->LoadMessageL();
-
-    iMmsHeaders->Reset();
-    iMmsHeaders->SetMessageType( KMmsMessageTypeReadRecInd );
-    // Message id cannot be accessed via MMS Client MTM!
-
-    iMmsHeaders->SetMessageIdL( messageId->Des() );
-    CleanupStack::PopAndDestroy( messageId );
-
-    iMmsHeaders->AddTypedAddresseeL( iMmsClient->Sender(), EMsvRecipientTo );
-    // sender must be insert-address-token because we don't know our number
-    TTime now;
-    now.UniversalTime();
-
-    _LIT( K1970, "19700000:000000.000000" );    // 1-Jan 1970 0:00:00
-
-    TTime y1970( K1970 );
-    TTimeIntervalMicroSeconds interval;
-    // we can't use "seconds from" as it only returns a
-    // 32 bit signed integer. If fails in 2038.
-    // "microseconds from" returns a 64 bit signed integer
-    interval = now.MicroSecondsFrom( y1970 );
-    // date in iMmsHeaders() in seconds from 1.1.1970.
-    iMmsHeaders->SetDate( (interval.Int64() ) / KMmsMillion );
-    iMmsHeaders->SetReadStatus( KMmsReadStatusRead );
-
-    TMsvId mmsFolderId = KMsvNullIndexEntryId;
-    mmsFolderId = FindMMSFolderL();
-
-    cEntry->SetEntryL( mmsFolderId );
-
-    TMsvEntry entry;
-    entry.iType = KUidMsvMessageEntry;
-    entry.iMtm = KUidMsgTypeMultimedia;
-    entry.SetVisible( ETrue );
-    entry.SetInPreparation( EFalse );
-    entry.iServiceId = KMsvLocalServiceIndexEntryId;
-    entry.iRelatedId = iDefaultServiceId;
-    entry.iMtmData1 = KMmsMessageReadRecInd;
-    cEntry->CreateL( entry );
-    TMsvId entryId = entry.Id();
-
-    cEntry->SetEntryL( entryId );
-
-    store = cEntry->EditStoreL();
-    CleanupStack::PushL( store );
-    iMmsHeaders->StoreL( *store );
-    store->CommitL();
-    CleanupStack::PopAndDestroy( store );
-    store = NULL;
-
-    CMsvEntrySelection* selection = new ( ELeave ) CMsvEntrySelection;
-    CleanupStack::PushL( selection );
-    selection->InsertL(0, entryId);
-
-    CMsvOperation * op = NULL;
-    TCommandParameters parameters; // initialized to zero
-    TCommandParametersBuf paramPack( parameters );
-
-    op = iSession->TransferCommandL(*selection,EMmsScheduledReadReport,paramPack,iWait->iStatus);
-
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    if ( iWait->iStatus.Int() != KErrNone )
-        {
-        //TMmsLogger::Log(_L("Testbed tried to send read report, return status %d"), iWait->iStatus.Int());
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy( op );
-    CleanupStack::PopAndDestroy( selection );
-*/
-    CleanupStack::PopAndDestroy( cEntry );
-    }
-
-int MmsTestBed::fromOutboxToMmscWithMemoryFailure()
-    {
-    TInt error = KErrNone;
-    TInt messageCount = 0;
-    TInt failureCount = 0;
-    do {
-        CMsvEntry* cEntry = NULL;
-
-        // Get List of services
-        cEntry = iSession->GetEntryL(KMsvGlobalOutBoxIndexEntryIdValue);
-        CleanupStack::PushL(cEntry);
-        // Get all mms messages of outbox
-        CMsvEntrySelection* selection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-        CleanupStack::PushL( selection );
-        failureCount++;
-        // These are failures that fail in Message server.
-        if ( failureCount >= 63 && failureCount <= 64 )
-            {
-            failureCount = 65;
-            }
-        cEntry->SetEntryL( iServiceId );
-        TMsvEntry entry = cEntry->Entry();
-        entry.iMtmData3 &= 0x0000000FF;
-        entry.iMtmData3 |= failureCount << 8;
-        cEntry->ChangeL( entry );
-
-        selection->InsertL(0, iServiceId);
-
-        CMsvOperation * op = NULL;
-        TCommandParameters parameters; // initialized to zero
-        TCommandParametersBuf paramPack( parameters );
-
-        TRAP (error, op = iSession->TransferCommandL(*selection,EMmsSend,paramPack,iWait->iStatus));
-
-        if ( error == KErrNone )
-            {
-            CleanupStack::PushL(op);
-            iWait->Start();
-
-            while (iWait->iStatus.Int() == KRequestPending )
-                {
-                if (!iTimer->IsActive())
-                    {
-                    iTimer->IssueRequest();
-                    }
-                CActiveScheduler::Start();
-                }
-
-            if ( iWait->iStatus.Int() != KErrNone )
-                {
-                error = iWait->iStatus.Int();
-                if ( iWait->iStatus.Int() != KErrNoMemory )
-                    {
-                    //TMmsLogger::Log(_L("Testbed tried to send, return status %d"), iWait->iStatus.Int());
-                    }
-                }
-
-            CleanupStack::PopAndDestroy(); // op
-            }
-        iTimer->Cancel();
-        CleanupStack::PopAndDestroy(); // selection
-        CleanupStack::PopAndDestroy(); // cEntry
-        selection = NULL;
-        cEntry = NULL;
-        cEntry = iSession->GetEntryL( KMsvGlobalOutBoxIndexEntryIdValue );
-        CleanupStack::PushL(cEntry);
-        selection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-        messageCount = selection->Count();
-        delete selection;
-        selection = 0;
-        CleanupStack::PopAndDestroy(); //cEntry
-        }
-    while ( error == KErrNoMemory || messageCount > 0 );
-    return failureCount;
-    }
-
-int MmsTestBed::fromMmscToInboxWithMemoryFailure()
-    {
-    TInt error = KErrNone;
-    TInt failureCount = 0;
-    TInt messageCount = 0;
-    TMsvId mmsFolderId = KMsvNullIndexEntryId;
-    mmsFolderId = findMMSFolder();
-
-    do {
-        // Inbox must be cleaned if failure makes message to be fetched more than once.
-        // should not happen, but this test is quite stressful, and perfect result
-        // cannot be guaranteed.
-        // What is expected:
-        // 1. Program does not crash
-        // 2. After sufficient number of retries the message is fetched and notification deleted.
-        TMmsTestUtils::CleanBoxL(KMsvGlobalInBoxIndexEntryId, *iSession);
-        CMsvEntry* cEntry = NULL;
-        CMsvEntrySelection* msvEntrySelection = new CMsvEntrySelection;
-        CleanupStack::PushL(msvEntrySelection);
-
-        cEntry = iSession->GetEntryL(iServiceId);
-        CleanupStack::PushL(cEntry);
-
-        failureCount++;
-        // These are failures that fail in Message server.
-        if ( failureCount >= 63 && failureCount <= 64 )
-            {
-            failureCount = 65;
-            }
-        cEntry->SetEntryL( iServiceId );
-
-        TMsvEntry entry = cEntry->Entry();
-        entry.iMtmData3 &= 0x0000000FF;
-        entry.iMtmData3 |= failureCount << 8;
-        cEntry->ChangeL( entry );
-
-        // if we have a selected service, insert it into selection
-        if (iServiceId != KMsvNullIndexEntryId)
-            {
-            msvEntrySelection->InsertL(0, iServiceId);
-            }
-
-        CMsvOperation * op = NULL;
-        TCommandParameters parameters; // initialized to zero
-        TCommandParametersBuf paramPack( parameters );
-
-        TRAP (error, op = iMmsClient->InvokeAsyncFunctionL(
-            EMmsReceiveForced,
-            *msvEntrySelection,
-            paramPack,
-            iWait->iStatus) );
-
-        if ( error == KErrNone )
-            {
-            CleanupStack::PushL(op);
-            iWait->Start();
-
-            while (iWait->iStatus.Int() == KRequestPending )
-                {
-                if (!iTimer->IsActive())
-                    {
-                    iTimer->IssueRequest();
-                    }
-                CActiveScheduler::Start();
-                }
-
-            if ( iWait->iStatus.Int() != KErrNone )
-                {
-                error = iWait->iStatus.Int();
-                if ( iWait->iStatus.Int() != KErrNoMemory )
-                    {
-                    //TMmsLogger::Log(_L("Testbed tried to receive, return status %d"), iWait->iStatus.Int());
-                    }
-                }
-
-            CleanupStack::PopAndDestroy(); // op
-            }
-
-        iTimer->Cancel();
-        CleanupStack::PopAndDestroy(); // msvEntrySelection
-        CleanupStack::PopAndDestroy(); // cEntry
-        msvEntrySelection = NULL;
-        cEntry = NULL;
-        cEntry = iSession->GetEntryL( mmsFolderId );
-        CleanupStack::PushL(cEntry);
-        msvEntrySelection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-        messageCount = msvEntrySelection->Count();
-        delete msvEntrySelection;
-        msvEntrySelection = 0;
-        CleanupStack::PopAndDestroy(); //cEntry
-        }
-    while ( error == KErrNoMemory || messageCount > 0 );
-    if ( error != KErrNoMemory && error != KErrNone )
-        {
-        //TMmsLogger::Log(_L("Memory failure loop ended with %d"), error);
-        }
-    return failureCount;
-    }
-
-void MmsTestBed::sendViaClient()
-    {
-    CMsvEntry* cEntry = NULL;
-
-    cEntry = iSession->GetEntryL(KMsvDraftEntryId);
-    CleanupStack::PushL(cEntry);
-    // Get all mms messages in drafts
-    CMsvEntrySelection* selection = cEntry->ChildrenWithMtmL( KUidMsgTypeMultimedia );
-    CleanupStack::PushL( selection );
-
-    CMsvOperation * op = NULL;
-    TTime now;
-    now.UniversalTime();
-    op = iMmsClient->SendL( *selection, iWait->iStatus, now );
-
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(2); // cEntry, selection
-    }
-
-void MmsTestBed::scheduledFetch(TInt aDelay /* = 5 */)
-    {
-    TCommandParameters parameters;
-    parameters.iInitialDelay = aDelay;
-    TCommandParametersBuf paramPack( parameters );
-
-    CMsvEntrySelection* selection = new CMsvEntrySelection;
-    CleanupStack::PushL( selection );
-    // if we have a selected service, insert it into selection
-    if (iServiceId != KMsvNullIndexEntryId)
-        {
-        selection->InsertL(0, iServiceId);
-        }
-    else
-        {
-        selection->InsertL(0, iDefaultServiceId);
-        }
-
-    CMsvOperation * op = NULL;
-    op = iMmsClient->InvokeAsyncFunctionL(
-        EMmsScheduledReceive,
-        *selection,
-        paramPack,
-        iWait->iStatus);
-
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(); // selection
-    }
-
-void MmsTestBed::fetchForcedImmediate()
-    {
-    TCommandParameters parameters;
-    TCommandParametersBuf paramPack( parameters );
-
-    CMsvEntrySelection* selection = new CMsvEntrySelection;
-    CleanupStack::PushL( selection );
-    // if we have a selected service, insert it into selection
-    if (iServiceId != KMsvNullIndexEntryId)
-        {
-        selection->InsertL(0, iServiceId);
-        }
-    else
-        {
-        selection->InsertL(0, iDefaultServiceId);
-        }
-
-
-    CMsvOperation * op = NULL;
-    op = iMmsClient->InvokeAsyncFunctionL(
-        EMmsReceiveForced,
-        *selection,
-        paramPack,
-        iWait->iStatus);
-
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(); // selection
-    }
-
-void MmsTestBed::getEventType()
-    {
-    if ( !checkLogClient() )
-        {
-        return; // not available
-        }
-
-    CLogEventType* eventType = CLogEventType::NewL();
-    CleanupStack::PushL( eventType );
-    eventType->SetUid(iLogEvent->EventType());
-    iLogClient->GetEventType( *eventType, iWait->iStatus );
-
-    iWait->Start();
-    CleanupStack::PopAndDestroy(); // eventType
-    }
-
-void MmsTestBed::addEventType()
-    {
-    if ( !checkLogClient() )
-        {
-        return; // not available
-        }
-
-    CLogEventType* eventType = CLogEventType::NewL();
-    CleanupStack::PushL( eventType );
-    eventType->SetUid(iLogEvent->EventType());
-    eventType->SetDescription(_L("Multimedia Message") );
-    eventType->SetLoggingEnabled( ETrue );
-
-//    iWait->iStatus = KRequestPending;
-    iLogClient->AddEventType( *eventType, iWait->iStatus );
-    iWait->Start();
-    CleanupStack::PopAndDestroy(); // eventType
-    }
-
-void MmsTestBed::deleteEventType()
-    {
-    if ( !checkLogClient() )
-        {
-        return; // not available
-        }
-//    iWait->iStatus = KRequestPending;
-    iLogClient->DeleteEventType( iLogEvent->EventType(), iWait->iStatus );
-    iWait->Start();
-    }
-
-void MmsTestBed::cleanLog()
-    {
-    TInt count = 0;
-
-    count = getLogEntries();
-
-    TInt i;
-    for ( i = 0; i < count; ++i )
-        {
-        // when a view is created, it will be positioned on the first event
-//        iWait->iStatus = KRequestPending;
-        iLogClient->DeleteEvent(iLogView->Event().Id(), iWait->iStatus);
-        iWait->Start();
-
-        if ( iLogView->NextL( iWait->iStatus ) )
-            {
-            // should complete with KErrNone
-            iWait->Start();
-            if ( iWait->iStatus.Int() != KErrNone )
-                {
-                // could not get next event!
-                break;
-                }
-            }
-        else
-            {
-            break; // no more events!
-            }
-        }
-    }
-
-void MmsTestBed::setOnline(bool value)
-    {
-    //value = true for online mode
-    //value = false for offline mode
-    CRepository* repository = NULL;
-    TInt retval = KErrNone;
-    TRAP( retval, repository = CRepository::NewL( KCRUidCoreApplicationUIs ) );
-    if( retval == KErrNone )
-        {
-        repository->Set( KCoreAppUIsNetworkConnectionAllowed, value );
-        delete repository;
-        }
-    }
-
-void MmsTestBed::generateDeliveryReport( CMmsHeaders* aMmsHeaders )
-    {
-    iEncodeBuffer->ResizeL( 1024 );
-
-    TInt position = 0;
-
-    // encode message type
-    iEncodeBuffer->Write( position, &KMmsAssignedMessageType, 1 );
-    position++;
-    iEncodeBuffer->Write( position, &KMmsMessageTypeDeliveryInd, 1 );
-    position++;
-
-    // version
-    iEncodeBuffer->Write( position, &KMmsAssignedMmsVersion, 1 );
-    position++;
-
-    TUint8 version = aMmsHeaders->MmsVersion() | 0x80; // current version as short integer
-    iEncodeBuffer->Write( position, &version, 1 );
-    position++;
-
-    // message id from the headers
-    // At least once MMSC did not send us the message id!
-    // if message id is missing, we cannot match the entry!
-    // This only a fake. Real delivery reports should always
-    // contain the message id.
-    if ( aMmsHeaders->MessageId().Length() > 0 )
-        {
-        iEncodeBuffer->Write( position, &KMmsAssignedMessageId, 1 );
-        position++;
-        iEncodeBuffer->Write( position, &(aMmsHeaders->MessageId()[0]), aMmsHeaders->MessageId().Length() );
-        position += aMmsHeaders->MessageId().Length();
-        iEncodeBuffer->Write( position, &KMmsNull, 1 );
-        position++;
-        }
-
-    // To is taken from the headers
-    iEncodeBuffer->Write( position, &KMmsAssignedTo, 1 );
-    position++;
-
-    TPtrC recipient;
-    if ( aMmsHeaders->ToRecipients().MdcaCount() > 0 &&
-        aMmsHeaders->ToRecipients()[0].Length() > 0 )
-        {
-        recipient.Set( aMmsHeaders->ToRecipients()[0] );
-        }
-    else if( aMmsHeaders->CcRecipients().MdcaCount() > 0 &&
-        aMmsHeaders->CcRecipients()[0].Length() > 0 )
-        {
-        recipient.Set( aMmsHeaders->CcRecipients()[0] );
-        }
-    else if( aMmsHeaders->BccRecipients().MdcaCount() > 0 &&
-        aMmsHeaders->BccRecipients()[0].Length() > 0 )
-        {
-        recipient.Set( aMmsHeaders->BccRecipients()[0] );
-        }
-    else
-        {
-        recipient.Set( _L("Jasso-Kissa@jii.fi") );
-        }
-
-    TMmsAddressType addressType = EMmsAddressTypeUnknown;
-
-    if ( recipient.Find( KMiuMau ) != KErrNotFound )
-        {
-        addressType = EMmsAddressTypeEmail;
-        }
-    else
-        {
-        addressType = EMmsAddressTypeMobile;
-        }
-
-    TUint8 character;
-    TInt i;
-    if ( addressType == EMmsAddressTypeEmail )
-        {
-        // email address - ASCII ONLY - THIS IS JUST A TEST!
-
-        for ( i = 0; i < recipient.Length(); ++i )
-            {
-            character = TUint8( recipient[i] & 0xff );
-            iEncodeBuffer->Write( position, &character, 1 );
-            position++;
-            }
-        iEncodeBuffer->Write( position, &KMmsNull, 1 );
-        position++;
-
-        }
-    else
-        {
-        // must be a phone number
-        // We expect for now that the format is correct as is
-        // All legal characters present in a phone number are ASCII
-
-        TInt i;
-        for ( i = 0; i < recipient.Length(); ++i )
-            {
-            character = TUint8( recipient[i] & 0xff );
-            iEncodeBuffer->Write( position, &character, 1 );
-            position++;
-            }
-        iEncodeBuffer->Write( position, KMmsPlmn, KMmsPlmnLength );
-        position += KMmsPlmnLength;
-        iEncodeBuffer->Write( position, &KMmsNull, 1 );
-        position++;
-        }
-
-    // date
-    iEncodeBuffer->Write( position, &KMmsAssignedDate, 1 );
-    position++;
-
-    TLocale locale;
-    locale.Refresh();
-    TInt64 UtcDate;
-    TTimeIntervalSeconds universalTimeOffset( locale.UniversalTimeOffset() );
-
-    TTime now;
-    now.UniversalTime();
-    UtcDate = ( now.MicroSecondsFrom( TTime( KMmsYear1970String ) ).Int64() ) / 1000000 ;
-
-    UtcDate -= universalTimeOffset.Int();
-
-    if ( locale.QueryHomeHasDaylightSavingOn() )
-        {
-        TTimeIntervalSeconds daylightSaving( 60 * 60 );
-        UtcDate -= daylightSaving.Int();
-        }
-
-    TUint8 len; // number of bytes we will need
-    len = 0;
-    TUint8 array[8];
-
-    TInt64 temp = UtcDate;
-
-    for (i = 7; i >= 0; --i)
-        {
-        array[i] = TInt8( ( I64INT( temp ) ) & 0xFF );
-        I64LSR( temp, 8 );
-        }
-
-    len = 8;
-    i = 0;
-    while( ( array[i]== 0 ) && ( i < 8 ) )
-        {
-        i++;
-        len--;
-        }
-
-    // a zero should be coded as short integer.
-    // However, if there is a valid reason to code a zero as a long integer,
-    // we allow it. The caller should know what he is doing.
-    if ( len == 0 )
-        {
-        len = 1;
-        }
-    // write short length
-    iEncodeBuffer->Write( position, &len, 1 );
-    position++;
-    // write as many bytes as were non-zero
-    iEncodeBuffer->Write( position, &(array[8 - len] ), len );
-    position+= len;
-    // status
-    iEncodeBuffer->Write( position, &KMmsAssignedStatus, 1 );
-    position++;
-    iEncodeBuffer->Write( position, &KMmsMessageStatusRetrieved, 1 );
-    position++;
-    // DONE!!!
-    iEncodeBuffer->ResizeL( position );
-    return;
-    }
-
-void MmsTestBed::sendDeliveryReport()
-    {
-    if ( iEncodeBuffer->Size() == 0 )
-        {
-        //No delivery report
-        return;
-        }
-
-
-    TMsvId mmsFolder = findMMSFolder();
-    CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
-    CleanupStack::PushL( selection );
-
-    TMsvId entryId = TMmsTestUtils::CreateNotificationEntryL( mmsFolder, iServiceId, iEncodeBuffer, *iSession );
-    TPtr8 ptr = iEncodeBuffer->Ptr( 0 );
-
-    // Now we have streamed our data into this entry.
-    // Now we have an entry that says: local service, MMS MTM
-
-    if ( entryId != KMsvNullIndexEntryId )
-        {
-        selection->AppendL( entryId );
-        }
-    else
-        {
-        selection->AppendL( iDefaultServiceId );
-        }
-
-    TWatcherParameters parameters; // initialized to zero
-    parameters.iWatcherId = RThread().Id();
-    parameters.iDataPointer = &ptr;
-    TWatcherParametersBuf paramPack( parameters );
-
-    CMsvOperation * op = NULL;
-
-//    iWait->iStatus = KRequestPending;
-    op = iSession->TransferCommandL(
-        *selection, EMmsDecodePushedMessage, paramPack, iWait->iStatus );
-    CleanupStack::PushL(op);
-    iWait->Start();
-
-    while (iWait->iStatus.Int() == KRequestPending )
-        {
-        if (!iTimer->IsActive())
-            {
-            iTimer->IssueRequest();
-            }
-        CActiveScheduler::Start();
-        }
-
-    iTimer->Cancel();
-
-    CleanupStack::PopAndDestroy(); // op
-    CleanupStack::PopAndDestroy(); // selection
-    }
-