messagingapp/msgutils/unieditorutils/unieditorplugins/unieditormmsplugin/tsrc/mmstestbed/src/mmsteststaticutils.cpp
author hgs
Fri, 25 Jun 2010 15:47:40 +0530
changeset 37 518b245aa84c
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description:
hgs
parents:
diff changeset
    15
 */
hgs
parents:
diff changeset
    16
hgs
parents:
diff changeset
    17
#include <f32file.h>
hgs
parents:
diff changeset
    18
#include <centralrepository.h>
hgs
parents:
diff changeset
    19
#include <apparc.h>
hgs
parents:
diff changeset
    20
#include <msvapi.h>
hgs
parents:
diff changeset
    21
#include <msvids.h>
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include "mmsteststaticutils.h"
hgs
parents:
diff changeset
    24
#include "mmsconst.h"
hgs
parents:
diff changeset
    25
#include "MmsEnginePrivateCRKeys.h"
hgs
parents:
diff changeset
    26
#include "mmssettings.h"
hgs
parents:
diff changeset
    27
#include "mmsheaders.h"
hgs
parents:
diff changeset
    28
#include "mmsservercommon.h"
hgs
parents:
diff changeset
    29
#include "mmsencode.h"
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// ---------------------------------------------------------
hgs
parents:
diff changeset
    33
//
hgs
parents:
diff changeset
    34
// ---------------------------------------------------------
hgs
parents:
diff changeset
    35
//
hgs
parents:
diff changeset
    36
TMmsJoinedArrays::TMmsJoinedArrays(CDesCArray* const & aArray1, CDesCArray* const & aArray2)
hgs
parents:
diff changeset
    37
: iArray1(aArray1), iArray2(aArray2)
hgs
parents:
diff changeset
    38
    {
hgs
parents:
diff changeset
    39
    }
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
TInt TMmsJoinedArrays::MdcaCount() const
hgs
parents:
diff changeset
    42
    {
hgs
parents:
diff changeset
    43
    TInt count=0;
hgs
parents:
diff changeset
    44
    if (iArray1)
hgs
parents:
diff changeset
    45
        count += iArray1->MdcaCount();
hgs
parents:
diff changeset
    46
    if (iArray2)
hgs
parents:
diff changeset
    47
        count += iArray2->MdcaCount();
hgs
parents:
diff changeset
    48
    return count;
hgs
parents:
diff changeset
    49
    }
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
TPtrC16 TMmsJoinedArrays::MdcaPoint(TInt aIndex) const
hgs
parents:
diff changeset
    52
    {
hgs
parents:
diff changeset
    53
    if (iArray1)
hgs
parents:
diff changeset
    54
        {
hgs
parents:
diff changeset
    55
        if (aIndex < iArray1->MdcaCount())
hgs
parents:
diff changeset
    56
            return iArray1->MdcaPoint(aIndex);
hgs
parents:
diff changeset
    57
        else
hgs
parents:
diff changeset
    58
            aIndex -= iArray1->MdcaCount();
hgs
parents:
diff changeset
    59
        }
hgs
parents:
diff changeset
    60
    return iArray2->MdcaPoint(aIndex);
hgs
parents:
diff changeset
    61
    }
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
// ---------------------------------------------------------
hgs
parents:
diff changeset
    65
//
hgs
parents:
diff changeset
    66
// ---------------------------------------------------------
hgs
parents:
diff changeset
    67
//
hgs
parents:
diff changeset
    68
TMmsTestUtils::TMmsTestUtils()
hgs
parents:
diff changeset
    69
    {
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
    }
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
// ---------------------------------------------------------
hgs
parents:
diff changeset
    74
//
hgs
parents:
diff changeset
    75
// ---------------------------------------------------------
hgs
parents:
diff changeset
    76
//
hgs
parents:
diff changeset
    77
HBufC* TMmsTestUtils::ReadContactFromFileL( TDesC& aFileName, RFs& aFs )
hgs
parents:
diff changeset
    78
    {
hgs
parents:
diff changeset
    79
    RFile file;
hgs
parents:
diff changeset
    80
    TInt error = KErrNone;
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
    TInt textBufferSize = 256;
hgs
parents:
diff changeset
    83
    HBufC* textBuffer = HBufC::NewL( textBufferSize );
hgs
parents:
diff changeset
    84
    TPtr textPtr = textBuffer->Des();
hgs
parents:
diff changeset
    85
    TFileText textFile;
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
    error = file.Open( aFs, aFileName,
hgs
parents:
diff changeset
    88
            EFileRead|EFileShareReadersOnly );
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
    if ( error == KErrNone )
hgs
parents:
diff changeset
    91
        {
hgs
parents:
diff changeset
    92
        textFile.Set( file );
hgs
parents:
diff changeset
    93
        error = textFile.Seek( ESeekStart );
hgs
parents:
diff changeset
    94
        }
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    if ( error == KErrNone )
hgs
parents:
diff changeset
    97
        {
hgs
parents:
diff changeset
    98
        error = textFile.Read( textPtr );
hgs
parents:
diff changeset
    99
        }
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
    file.Close();
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
    if ( textBuffer->Des().Find( &KMmsByteOrderMark, 1 ) == 0 )
hgs
parents:
diff changeset
   104
        {
hgs
parents:
diff changeset
   105
        textBuffer->Des().Copy( textBuffer->Des().Mid( 1 ) );
hgs
parents:
diff changeset
   106
        }
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
    return textBuffer;
hgs
parents:
diff changeset
   109
    }
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   112
// turn on detailed logging while decoding a message
hgs
parents:
diff changeset
   113
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   114
//
hgs
parents:
diff changeset
   115
void TMmsTestUtils::DecodeLoggingOnL()
hgs
parents:
diff changeset
   116
    {
hgs
parents:
diff changeset
   117
    // CenRep for decodelogging
hgs
parents:
diff changeset
   118
    CRepository* repository = NULL;
hgs
parents:
diff changeset
   119
    TInt retval = KErrNone;
hgs
parents:
diff changeset
   120
    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) );
hgs
parents:
diff changeset
   121
    if( retval == KErrNone )
hgs
parents:
diff changeset
   122
        {
hgs
parents:
diff changeset
   123
        // Best effort - if cannot access repository, no can do
hgs
parents:
diff changeset
   124
        TInt temp = 1;
hgs
parents:
diff changeset
   125
        repository->Set( KMmsEngineDecodeLog, temp );
hgs
parents:
diff changeset
   126
        delete repository;
hgs
parents:
diff changeset
   127
        }
hgs
parents:
diff changeset
   128
    }
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   131
// turn off detailed logging while decoding a message
hgs
parents:
diff changeset
   132
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   133
//
hgs
parents:
diff changeset
   134
void TMmsTestUtils::DecodeLoggingOffL()
hgs
parents:
diff changeset
   135
    {
hgs
parents:
diff changeset
   136
    // CenRep for decodelogging
hgs
parents:
diff changeset
   137
    CRepository* repository = NULL;
hgs
parents:
diff changeset
   138
    TInt retval = KErrNone;
hgs
parents:
diff changeset
   139
    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) );
hgs
parents:
diff changeset
   140
    if( retval == KErrNone )
hgs
parents:
diff changeset
   141
        {
hgs
parents:
diff changeset
   142
        // Best effort - if cannot access repository, no can do
hgs
parents:
diff changeset
   143
        TInt temp = 0;
hgs
parents:
diff changeset
   144
        repository->Set( KMmsEngineDecodeLog, temp );
hgs
parents:
diff changeset
   145
        delete repository;
hgs
parents:
diff changeset
   146
        }
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
    }
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   151
// turn on binary dump of incoming messages
hgs
parents:
diff changeset
   152
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   153
//
hgs
parents:
diff changeset
   154
void TMmsTestUtils::BinaryDumpOnL()
hgs
parents:
diff changeset
   155
    {
hgs
parents:
diff changeset
   156
    // CenRep for binarydump setting
hgs
parents:
diff changeset
   157
    CRepository* repository = NULL;
hgs
parents:
diff changeset
   158
    TInt retval = KErrNone;
hgs
parents:
diff changeset
   159
    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) );
hgs
parents:
diff changeset
   160
    if( retval == KErrNone )
hgs
parents:
diff changeset
   161
        {
hgs
parents:
diff changeset
   162
        // Best effort - if cannot access repository, no can do
hgs
parents:
diff changeset
   163
        TInt temp = 1;
hgs
parents:
diff changeset
   164
        repository->Set( KMmsEngineBinaryDump, temp );
hgs
parents:
diff changeset
   165
        delete repository;
hgs
parents:
diff changeset
   166
        }
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
    }
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   171
// turn off binary dump of incoming messages
hgs
parents:
diff changeset
   172
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   173
//
hgs
parents:
diff changeset
   174
void TMmsTestUtils::BinaryDumpOffL()
hgs
parents:
diff changeset
   175
    {
hgs
parents:
diff changeset
   176
    // CenRep for binarydump setting
hgs
parents:
diff changeset
   177
    CRepository* repository = NULL;
hgs
parents:
diff changeset
   178
    TInt retval = KErrNone;
hgs
parents:
diff changeset
   179
    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) );
hgs
parents:
diff changeset
   180
    if( retval == KErrNone )
hgs
parents:
diff changeset
   181
        {
hgs
parents:
diff changeset
   182
        // Best effort - if cannot access repository, no can do
hgs
parents:
diff changeset
   183
        TInt temp = 0;
hgs
parents:
diff changeset
   184
        repository->Set( KMmsEngineBinaryDump, temp );
hgs
parents:
diff changeset
   185
        delete repository;
hgs
parents:
diff changeset
   186
        }
hgs
parents:
diff changeset
   187
    }
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
// ---------------------------------------------------------
hgs
parents:
diff changeset
   190
//
hgs
parents:
diff changeset
   191
// ---------------------------------------------------------
hgs
parents:
diff changeset
   192
//
hgs
parents:
diff changeset
   193
void TMmsTestUtils::CleanDirectoryL( RFs& aFs )
hgs
parents:
diff changeset
   194
    {
hgs
parents:
diff changeset
   195
    // Delete the files in the directory
hgs
parents:
diff changeset
   196
    CFileMan* fileMan = CFileMan::NewL( aFs );
hgs
parents:
diff changeset
   197
    CleanupStack::PushL( fileMan );
hgs
parents:
diff changeset
   198
    fileMan->RmDir( KMmsDefaultLocalModeDir );
hgs
parents:
diff changeset
   199
    fileMan->RmDir( KMmsMMBoxDirectory );
hgs
parents:
diff changeset
   200
    fileMan->RmDir( KMmsMMBoxDescriptionDirectory );
hgs
parents:
diff changeset
   201
    CleanupStack::PopAndDestroy(); // fileManager
hgs
parents:
diff changeset
   202
    // we don't want to throw these away!
hgs
parents:
diff changeset
   203
    aFs.MkDirAll( KMmsDefaultLocalModeDir );
hgs
parents:
diff changeset
   204
    aFs.MkDirAll( KMmsMMBoxDirectory );
hgs
parents:
diff changeset
   205
    aFs.MkDirAll( KMmsMMBoxDescriptionDirectory );
hgs
parents:
diff changeset
   206
    }
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
// ---------------------------------------------------------
hgs
parents:
diff changeset
   209
//
hgs
parents:
diff changeset
   210
// ---------------------------------------------------------
hgs
parents:
diff changeset
   211
//
hgs
parents:
diff changeset
   212
void TMmsTestUtils::Dump( CBufFlat& aBuffer, TFileName& aFilename, TParse& aParse, RFs& aFs )
hgs
parents:
diff changeset
   213
    {
hgs
parents:
diff changeset
   214
    TInt error = KErrNone;
hgs
parents:
diff changeset
   215
    aFs.MkDirAll( aFilename );
hgs
parents:
diff changeset
   216
    TUint att;
hgs
parents:
diff changeset
   217
    if ( aFs.Att( aFilename, att ) == KErrNone )
hgs
parents:
diff changeset
   218
        {
hgs
parents:
diff changeset
   219
        _LIT( KRelated, "dump.mms");
hgs
parents:
diff changeset
   220
        aParse.Set( aFilename, &KRelated, NULL );
hgs
parents:
diff changeset
   221
        aFilename = aParse.FullName();
hgs
parents:
diff changeset
   222
        error = CApaApplication::GenerateFileName( aFs, aFilename );
hgs
parents:
diff changeset
   223
        if ( error == KErrNone )
hgs
parents:
diff changeset
   224
            {
hgs
parents:
diff changeset
   225
            RFile file;
hgs
parents:
diff changeset
   226
            error = file.Create( aFs, aFilename, EFileWrite | EFileShareExclusive );
hgs
parents:
diff changeset
   227
            // for message id generation
hgs
parents:
diff changeset
   228
            aParse.Set( aFilename, NULL, NULL );
hgs
parents:
diff changeset
   229
            if ( error == KErrNone )
hgs
parents:
diff changeset
   230
                {
hgs
parents:
diff changeset
   231
                // the data is supposed to be in the encode buffer
hgs
parents:
diff changeset
   232
                TPtr8 ptr = aBuffer.Ptr( 0 );
hgs
parents:
diff changeset
   233
                file.Write( ptr );
hgs
parents:
diff changeset
   234
                file.Flush();
hgs
parents:
diff changeset
   235
                }
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
            // done - close files
hgs
parents:
diff changeset
   238
            file.Close();
hgs
parents:
diff changeset
   239
            }
hgs
parents:
diff changeset
   240
        }
hgs
parents:
diff changeset
   241
    }
hgs
parents:
diff changeset
   242
hgs
parents:
diff changeset
   243
// ---------------------------------------------------------
hgs
parents:
diff changeset
   244
//
hgs
parents:
diff changeset
   245
// ---------------------------------------------------------
hgs
parents:
diff changeset
   246
//
hgs
parents:
diff changeset
   247
void TMmsTestUtils::CleanBoxL(TMsvId aBoxId, CMsvSession& aSession)
hgs
parents:
diff changeset
   248
    {
hgs
parents:
diff changeset
   249
    CMsvEntry* cEntry = NULL;
hgs
parents:
diff changeset
   250
    // delete all messages from the specified box
hgs
parents:
diff changeset
   251
    cEntry = aSession.GetEntryL(KMsvRootIndexEntryId);
hgs
parents:
diff changeset
   252
    CleanupStack::PushL(cEntry);
hgs
parents:
diff changeset
   253
    cEntry->SetEntryL(aBoxId);
hgs
parents:
diff changeset
   254
    // show invisible entries
hgs
parents:
diff changeset
   255
    cEntry->SetSortTypeL( TMsvSelectionOrdering( KMsvNoGrouping, EMsvSortByNone, ETrue ) );
hgs
parents:
diff changeset
   256
    CMsvEntrySelection* msvEntrySelection = cEntry->ChildrenWithMtmL(KUidMsgTypeMultimedia);
hgs
parents:
diff changeset
   257
    CleanupStack::PushL(msvEntrySelection);
hgs
parents:
diff changeset
   258
hgs
parents:
diff changeset
   259
    CMsvEntrySelection* selection = NULL;
hgs
parents:
diff changeset
   260
    cEntry->SetSortTypeL( TMsvSelectionOrdering( KMsvNoGrouping, EMsvSortByNone, ETrue ) );
hgs
parents:
diff changeset
   261
    selection = cEntry->ChildrenWithMtmL(KUidMsgMMSNotification);
hgs
parents:
diff changeset
   262
    CleanupStack::PushL( selection );
hgs
parents:
diff changeset
   263
    if ( selection->Count() > 0 )
hgs
parents:
diff changeset
   264
        {
hgs
parents:
diff changeset
   265
        msvEntrySelection->AppendL( selection->Back( 0 ), selection->Count() );
hgs
parents:
diff changeset
   266
        }
hgs
parents:
diff changeset
   267
    CleanupStack::PopAndDestroy(); // selection
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
    int i;
hgs
parents:
diff changeset
   270
    for (i = 0; i < msvEntrySelection->Count(); ++i)
hgs
parents:
diff changeset
   271
        {
hgs
parents:
diff changeset
   272
        CMsvEntry* entry = aSession.GetEntryL( msvEntrySelection->At(i) );
hgs
parents:
diff changeset
   273
        CleanupStack::PushL( entry );
hgs
parents:
diff changeset
   274
        TMsvEntry tEntry = entry->Entry();
hgs
parents:
diff changeset
   275
        tEntry.SetReadOnly(EFalse);
hgs
parents:
diff changeset
   276
        entry->ChangeL(tEntry);
hgs
parents:
diff changeset
   277
        cEntry->DeleteL( msvEntrySelection->At(i) );
hgs
parents:
diff changeset
   278
        CleanupStack::PopAndDestroy( entry );
hgs
parents:
diff changeset
   279
        }
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
    CleanupStack::PopAndDestroy(msvEntrySelection);
hgs
parents:
diff changeset
   282
    CleanupStack::PopAndDestroy(cEntry);
hgs
parents:
diff changeset
   283
    }
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   286
// turn on logging email recipients
hgs
parents:
diff changeset
   287
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   288
void TMmsTestUtils::EmailLoggingOnL()
hgs
parents:
diff changeset
   289
    {
hgs
parents:
diff changeset
   290
    // CenRep for binarydump setting
hgs
parents:
diff changeset
   291
    CRepository* repository = NULL;
hgs
parents:
diff changeset
   292
    TInt retval = KErrNone;
hgs
parents:
diff changeset
   293
    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) ); // ***
hgs
parents:
diff changeset
   294
    if( retval == KErrNone )
hgs
parents:
diff changeset
   295
        {
hgs
parents:
diff changeset
   296
        TInt temp = 1;
hgs
parents:
diff changeset
   297
        repository->Set( KMmsEngineLogEmailRecipients, temp );
hgs
parents:
diff changeset
   298
        delete repository;
hgs
parents:
diff changeset
   299
        }
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
    }
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   304
// turn off logging email recipients
hgs
parents:
diff changeset
   305
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   306
void TMmsTestUtils::EmailLoggingOffL()
hgs
parents:
diff changeset
   307
    {
hgs
parents:
diff changeset
   308
    // CenRep for binarydump setting
hgs
parents:
diff changeset
   309
    CRepository* repository = NULL;
hgs
parents:
diff changeset
   310
    TInt retval = KErrNone;
hgs
parents:
diff changeset
   311
    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) ); // ***
hgs
parents:
diff changeset
   312
    if( retval == KErrNone )
hgs
parents:
diff changeset
   313
        {
hgs
parents:
diff changeset
   314
        TInt temp = 0;
hgs
parents:
diff changeset
   315
        repository->Set( KMmsEngineLogEmailRecipients, temp );
hgs
parents:
diff changeset
   316
        delete repository;
hgs
parents:
diff changeset
   317
        }
hgs
parents:
diff changeset
   318
hgs
parents:
diff changeset
   319
    }
hgs
parents:
diff changeset
   320
hgs
parents:
diff changeset
   321
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   322
//
hgs
parents:
diff changeset
   323
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   324
TInt TMmsTestUtils::CountChildrenL(TMsvId aBoxId, CMsvEntrySelection*& aMsvEntrySelection, CMsvSession& aSession, TUid aMessageType )
hgs
parents:
diff changeset
   325
    {
hgs
parents:
diff changeset
   326
    CMsvEntry* cEntry = aSession.GetEntryL(KMsvRootIndexEntryId);
hgs
parents:
diff changeset
   327
    CleanupStack::PushL(cEntry);
hgs
parents:
diff changeset
   328
    cEntry->SetEntryL(aBoxId);
hgs
parents:
diff changeset
   329
    if (aMsvEntrySelection != NULL)
hgs
parents:
diff changeset
   330
        {
hgs
parents:
diff changeset
   331
        delete aMsvEntrySelection;
hgs
parents:
diff changeset
   332
        aMsvEntrySelection = NULL;
hgs
parents:
diff changeset
   333
        }
hgs
parents:
diff changeset
   334
    aMsvEntrySelection = cEntry->ChildrenWithMtmL(aMessageType);
hgs
parents:
diff changeset
   335
    CleanupStack::PopAndDestroy(); // cEntry
hgs
parents:
diff changeset
   336
    return aMsvEntrySelection->Count();
hgs
parents:
diff changeset
   337
    }
hgs
parents:
diff changeset
   338
hgs
parents:
diff changeset
   339
hgs
parents:
diff changeset
   340
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   341
// CreateFolderEntryL
hgs
parents:
diff changeset
   342
//
hgs
parents:
diff changeset
   343
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   344
//
hgs
parents:
diff changeset
   345
void TMmsTestUtils::CreateFolderEntryL(
hgs
parents:
diff changeset
   346
    CMsvSession& aSession,
hgs
parents:
diff changeset
   347
    TMsvId aParentFolder,
hgs
parents:
diff changeset
   348
    const TDesC& aFolderName,
hgs
parents:
diff changeset
   349
    TMsvId& aFolderId )
hgs
parents:
diff changeset
   350
    {
hgs
parents:
diff changeset
   351
    aFolderId = KMsvNullIndexEntryId;
hgs
parents:
diff changeset
   352
    CMsvEntry* cEntry = aSession.GetEntryL( aParentFolder );
hgs
parents:
diff changeset
   353
    CleanupStack::PushL( cEntry );
hgs
parents:
diff changeset
   354
hgs
parents:
diff changeset
   355
    // Create a new folder.
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
    TMsvEntry entry;
hgs
parents:
diff changeset
   358
    entry.iType = KUidMsvFolderEntry;
hgs
parents:
diff changeset
   359
    entry.iMtm = KUidMsvLocalServiceMtm;
hgs
parents:
diff changeset
   360
    entry.iDetails.Set( aFolderName );
hgs
parents:
diff changeset
   361
    entry.SetVisible( EFalse );
hgs
parents:
diff changeset
   362
    entry.SetInPreparation( EFalse );
hgs
parents:
diff changeset
   363
    entry.iServiceId = KMsvLocalServiceIndexEntryId;
hgs
parents:
diff changeset
   364
    cEntry->CreateL( entry );
hgs
parents:
diff changeset
   365
    aFolderId = entry.Id();
hgs
parents:
diff changeset
   366
    CleanupStack::PopAndDestroy( cEntry );
hgs
parents:
diff changeset
   367
hgs
parents:
diff changeset
   368
    }
hgs
parents:
diff changeset
   369
hgs
parents:
diff changeset
   370
hgs
parents:
diff changeset
   371
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   372
//
hgs
parents:
diff changeset
   373
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   374
TMsvId TMmsTestUtils::CreateNotificationEntryL(
hgs
parents:
diff changeset
   375
        TMsvId aNotificationFolder,
hgs
parents:
diff changeset
   376
        TMsvId aServiceId,
hgs
parents:
diff changeset
   377
        CBufFlat* aEncodeBuffer,
hgs
parents:
diff changeset
   378
        CMsvSession& aSession )
hgs
parents:
diff changeset
   379
    {
hgs
parents:
diff changeset
   380
    TMsvId entryId = KMsvNullIndexEntryId;
hgs
parents:
diff changeset
   381
    if ( aNotificationFolder == KMsvNullIndexEntryId )
hgs
parents:
diff changeset
   382
        {
hgs
parents:
diff changeset
   383
        // no folder no entry
hgs
parents:
diff changeset
   384
        return entryId;
hgs
parents:
diff changeset
   385
        }
hgs
parents:
diff changeset
   386
hgs
parents:
diff changeset
   387
    CMsvEntry* cEntry = aSession.GetEntryL( aNotificationFolder );
hgs
parents:
diff changeset
   388
    CleanupStack::PushL(cEntry);
hgs
parents:
diff changeset
   389
hgs
parents:
diff changeset
   390
    TMsvEntry entry;
hgs
parents:
diff changeset
   391
    entry.iType = KUidMsvMessageEntry;
hgs
parents:
diff changeset
   392
    entry.iMtm = KUidMsgTypeMultimedia;
hgs
parents:
diff changeset
   393
    entry.SetVisible( ETrue );
hgs
parents:
diff changeset
   394
    // If we want to put data here, InPreparation must be set to true first
hgs
parents:
diff changeset
   395
    entry.SetInPreparation( EFalse );
hgs
parents:
diff changeset
   396
    entry.iServiceId = KMsvLocalServiceIndexEntryId;
hgs
parents:
diff changeset
   397
    entry.iRelatedId = aServiceId;
hgs
parents:
diff changeset
   398
    entry.iMtmData2 = KMmsNotificationBinary;
hgs
parents:
diff changeset
   399
    cEntry->CreateL( entry );
hgs
parents:
diff changeset
   400
    entryId = entry.Id();
hgs
parents:
diff changeset
   401
hgs
parents:
diff changeset
   402
    //
hgs
parents:
diff changeset
   403
    // Stream
hgs
parents:
diff changeset
   404
    // 1) length of the data as 32 bit integer
hgs
parents:
diff changeset
   405
    // 2) pushed message data
hgs
parents:
diff changeset
   406
    // into created entry's stream
hgs
parents:
diff changeset
   407
    //
hgs
parents:
diff changeset
   408
    cEntry->SetEntryL( entryId );
hgs
parents:
diff changeset
   409
    CMsvStore* store = cEntry->EditStoreL();
hgs
parents:
diff changeset
   410
    CleanupStack::PushL( store );   // ***
hgs
parents:
diff changeset
   411
    RMsvWriteStream outs;
hgs
parents:
diff changeset
   412
    outs.AssignLC( *store, KUidBinaryNotificationStream ); // ***
hgs
parents:
diff changeset
   413
    TPtrC8 ptr = aEncodeBuffer->Ptr( 0 );
hgs
parents:
diff changeset
   414
    outs.WriteUint32L( ptr.Length() );
hgs
parents:
diff changeset
   415
    outs.WriteL( ptr );
hgs
parents:
diff changeset
   416
    outs.CommitL();
hgs
parents:
diff changeset
   417
    outs.Close();
hgs
parents:
diff changeset
   418
    store->CommitL();
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
    CleanupStack::PopAndDestroy( &outs ); // close outs
hgs
parents:
diff changeset
   421
    CleanupStack::PopAndDestroy( store );
hgs
parents:
diff changeset
   422
    CleanupStack::PopAndDestroy( cEntry );
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
    return entryId;
hgs
parents:
diff changeset
   425
hgs
parents:
diff changeset
   426
    }
hgs
parents:
diff changeset
   427
hgs
parents:
diff changeset
   428
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   429
//
hgs
parents:
diff changeset
   430
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   431
void TMmsTestUtils::FormNotification(
hgs
parents:
diff changeset
   432
        TDesC8& aUrl,
hgs
parents:
diff changeset
   433
        TInt aSize,
hgs
parents:
diff changeset
   434
        CMmsHeaders& aMmsHeaders,
hgs
parents:
diff changeset
   435
        CMmsEncode& aMmsEncoder,
hgs
parents:
diff changeset
   436
        CBufFlat* aEncodeBuffer )
hgs
parents:
diff changeset
   437
    {
hgs
parents:
diff changeset
   438
    // for test purposes aUrl will contain the filename.
hgs
parents:
diff changeset
   439
hgs
parents:
diff changeset
   440
    // Reset sets the default encapsulation version
hgs
parents:
diff changeset
   441
    // The default version has been set from MmsSettings in NewL
hgs
parents:
diff changeset
   442
    aMmsHeaders.Reset();
hgs
parents:
diff changeset
   443
hgs
parents:
diff changeset
   444
    // construct the notification into iMmsHeaders, and call encode
hgs
parents:
diff changeset
   445
hgs
parents:
diff changeset
   446
    aMmsHeaders.SetMessageType( KMmsMessageTypeMNotificationInd );
hgs
parents:
diff changeset
   447
hgs
parents:
diff changeset
   448
    TTime currentTime;
hgs
parents:
diff changeset
   449
    currentTime.UniversalTime();
hgs
parents:
diff changeset
   450
    currentTime.Int64();
hgs
parents:
diff changeset
   451
hgs
parents:
diff changeset
   452
    TPtrC8 tid;
hgs
parents:
diff changeset
   453
    TBufC8<KMMSMAXTIDLENGTH> target;
hgs
parents:
diff changeset
   454
    TInt random = 0;
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
    // we don't generate a true random TID: We generate the
hgs
parents:
diff changeset
   457
    // TID from the URL so that if we generate a notification
hgs
parents:
diff changeset
   458
    // twice from the same file, we get the same TID and the
hgs
parents:
diff changeset
   459
    // same URL. This way we can test the pruning function in
hgs
parents:
diff changeset
   460
    // server MTM
hgs
parents:
diff changeset
   461
hgs
parents:
diff changeset
   462
    TInt i;
hgs
parents:
diff changeset
   463
    for ( i = 0; i < aUrl.Length(); ++i )
hgs
parents:
diff changeset
   464
        {
hgs
parents:
diff changeset
   465
        random += aUrl[ i ];
hgs
parents:
diff changeset
   466
        }
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
    target.Des().Num( random );
hgs
parents:
diff changeset
   469
    tid.Set( target.Des() );
hgs
parents:
diff changeset
   470
    aMmsHeaders.SetTidL( tid );
hgs
parents:
diff changeset
   471
hgs
parents:
diff changeset
   472
    aMmsHeaders.SetMessageClass( EMmsClassPersonal );
hgs
parents:
diff changeset
   473
    aMmsHeaders.SetMessageSize( aSize );
hgs
parents:
diff changeset
   474
    const TInt KTenHours = 10 * 60 * 60; // 10 hours relative expiry
hgs
parents:
diff changeset
   475
    aMmsHeaders.SetExpiryInterval( KTenHours );
hgs
parents:
diff changeset
   476
    aMmsHeaders.SetContentLocationL( aUrl );
hgs
parents:
diff changeset
   477
hgs
parents:
diff changeset
   478
    aMmsEncoder.EncodeHeadersL( aMmsHeaders, *aEncodeBuffer );
hgs
parents:
diff changeset
   479
hgs
parents:
diff changeset
   480
    }
hgs
parents:
diff changeset
   481
hgs
parents:
diff changeset
   482
hgs
parents:
diff changeset
   483
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   484
//
hgs
parents:
diff changeset
   485
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   486
TBool TMmsTestUtils::IsFile(const TDesC& aFileName, RFs& aFs)
hgs
parents:
diff changeset
   487
    {
hgs
parents:
diff changeset
   488
    //Is the name a file?
hgs
parents:
diff changeset
   489
    if (IsDrive(aFileName))
hgs
parents:
diff changeset
   490
        return EFalse;
hgs
parents:
diff changeset
   491
    return !(IsDir(aFileName, aFs));
hgs
parents:
diff changeset
   492
    }
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   495
//
hgs
parents:
diff changeset
   496
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   497
TBool TMmsTestUtils::IsDir(const TDesC& aFileName, RFs& aFs)
hgs
parents:
diff changeset
   498
    {
hgs
parents:
diff changeset
   499
    //Is the name a directory?
hgs
parents:
diff changeset
   500
    TEntry entry;
hgs
parents:
diff changeset
   501
    TInt err = aFs.Entry(aFileName, entry);
hgs
parents:
diff changeset
   502
    if (err)
hgs
parents:
diff changeset
   503
        return EFalse;
hgs
parents:
diff changeset
   504
    else
hgs
parents:
diff changeset
   505
        return entry.IsDir();
hgs
parents:
diff changeset
   506
    }
hgs
parents:
diff changeset
   507
hgs
parents:
diff changeset
   508
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   509
//
hgs
parents:
diff changeset
   510
//----------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   511
TBool TMmsTestUtils::IsDrive(const TDesC& aFileName)
hgs
parents:
diff changeset
   512
    {
hgs
parents:
diff changeset
   513
    //horrible little function to figure if the path is just a drive
hgs
parents:
diff changeset
   514
    TBool retVal = EFalse;
hgs
parents:
diff changeset
   515
    if (aFileName.Length()==3) //eg "c:\"
hgs
parents:
diff changeset
   516
        {
hgs
parents:
diff changeset
   517
        if ((aFileName[1] == ':')  && (aFileName[2] == '\\'))
hgs
parents:
diff changeset
   518
            retVal=ETrue;
hgs
parents:
diff changeset
   519
        }
hgs
parents:
diff changeset
   520
    else if (aFileName.Length()==2) //eg "c:"
hgs
parents:
diff changeset
   521
        {
hgs
parents:
diff changeset
   522
        if (aFileName[1] == ':')
hgs
parents:
diff changeset
   523
            retVal=ETrue;
hgs
parents:
diff changeset
   524
        }
hgs
parents:
diff changeset
   525
    return retVal;
hgs
parents:
diff changeset
   526
    }
hgs
parents:
diff changeset
   527
hgs
parents:
diff changeset
   528
// end of file