ximpfw/presence/srcpresencedatamodel/presentitygroups/presentitygroupcontenteventimp.cpp
author hgs
Wed, 03 Nov 2010 09:32:20 +0530
changeset 51 61fad867f68e
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2006 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:  MPresentityGroupContentEvent API object implementation.
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "presentitygroupcontenteventimp.h"
hgs
parents:
diff changeset
    19
#include "presentitygroupmemberinfoimp.h"
hgs
parents:
diff changeset
    20
#include "ximpidentityimp.h"
hgs
parents:
diff changeset
    21
#include "ximpdatasubscriptionstateimp.h"
hgs
parents:
diff changeset
    22
#include "ximpobjecthelpers.h"
hgs
parents:
diff changeset
    23
#include <s32strm.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    27
// CPresentityGroupContentEventImp::NewLC()
hgs
parents:
diff changeset
    28
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    29
//
hgs
parents:
diff changeset
    30
EXPORT_C CPresentityGroupContentEventImp* CPresentityGroupContentEventImp::NewLC(
hgs
parents:
diff changeset
    31
        CXIMPIdentityImp& aGroupId,
hgs
parents:
diff changeset
    32
        RPrGrpMemInfoImpArray* aAdded,
hgs
parents:
diff changeset
    33
        RPrGrpMemInfoImpArray* aUpdated,
hgs
parents:
diff changeset
    34
        RPrGrpMemInfoImpArray* aRemoved,
hgs
parents:
diff changeset
    35
        CXIMPDataSubscriptionStateImp* aState
hgs
parents:
diff changeset
    36
        )
hgs
parents:
diff changeset
    37
    {
hgs
parents:
diff changeset
    38
    CPresentityGroupContentEventImp* self = new( ELeave ) CPresentityGroupContentEventImp();
hgs
parents:
diff changeset
    39
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    40
    self->ConstructL( aGroupId, aAdded, aUpdated, aRemoved, aState );
hgs
parents:
diff changeset
    41
    return self;
hgs
parents:
diff changeset
    42
    }
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    45
// CPresentityGroupContentEventImp::NewLC()
hgs
parents:
diff changeset
    46
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    47
//
hgs
parents:
diff changeset
    48
EXPORT_C CPresentityGroupContentEventImp* CPresentityGroupContentEventImp::NewLC(
hgs
parents:
diff changeset
    49
        CXIMPIdentityImp& aGroupId,
hgs
parents:
diff changeset
    50
        RPrGrpMemInfoImpArray* aAdded,
hgs
parents:
diff changeset
    51
        RPrGrpMemInfoImpArray* aUpdated,
hgs
parents:
diff changeset
    52
        RPrGrpMemInfoImpArray* aRemoved,
hgs
parents:
diff changeset
    53
        RPrGrpMemInfoImpArray* aCurrent,
hgs
parents:
diff changeset
    54
        CXIMPDataSubscriptionStateImp* aState
hgs
parents:
diff changeset
    55
        )
hgs
parents:
diff changeset
    56
    {
hgs
parents:
diff changeset
    57
    CPresentityGroupContentEventImp* self = new( ELeave ) CPresentityGroupContentEventImp();
hgs
parents:
diff changeset
    58
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    59
    if( aCurrent )
hgs
parents:
diff changeset
    60
        {
hgs
parents:
diff changeset
    61
        self->ConstructL( aGroupId, aAdded, aUpdated, aRemoved, aCurrent, aState );
hgs
parents:
diff changeset
    62
        }
hgs
parents:
diff changeset
    63
    else
hgs
parents:
diff changeset
    64
        {
hgs
parents:
diff changeset
    65
        self->ConstructL( aGroupId, aAdded, aUpdated, aRemoved, aState );
hgs
parents:
diff changeset
    66
        }
hgs
parents:
diff changeset
    67
    return self;
hgs
parents:
diff changeset
    68
    }
hgs
parents:
diff changeset
    69
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    70
// CPresentityGroupContentEventImp::NewL()
hgs
parents:
diff changeset
    71
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    72
//
hgs
parents:
diff changeset
    73
EXPORT_C CPresentityGroupContentEventImp* CPresentityGroupContentEventImp::NewL(
hgs
parents:
diff changeset
    74
        CXIMPIdentityImp& aGroupId,
hgs
parents:
diff changeset
    75
        RPrGrpMemInfoImpArray* aAdded,
hgs
parents:
diff changeset
    76
        RPrGrpMemInfoImpArray* aUpdated,
hgs
parents:
diff changeset
    77
        RPrGrpMemInfoImpArray* aRemoved,
hgs
parents:
diff changeset
    78
        RPrGrpMemInfoImpArray* aCurrent,
hgs
parents:
diff changeset
    79
        CXIMPDataSubscriptionStateImp* aState
hgs
parents:
diff changeset
    80
        )
hgs
parents:
diff changeset
    81
    {
hgs
parents:
diff changeset
    82
    CPresentityGroupContentEventImp* self = 
hgs
parents:
diff changeset
    83
        NewLC( aGroupId, aAdded, aUpdated, aRemoved, aCurrent, aState );
hgs
parents:
diff changeset
    84
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
    85
    return self;
hgs
parents:
diff changeset
    86
    }
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    89
// CPresentityGroupContentEventImp::NewFromStreamLC()
hgs
parents:
diff changeset
    90
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    91
//
hgs
parents:
diff changeset
    92
CXIMPApiEventBase* CPresentityGroupContentEventImp::NewFromStreamLC( RReadStream& aStream )
hgs
parents:
diff changeset
    93
    {
hgs
parents:
diff changeset
    94
    CPresentityGroupContentEventImp* self = new( ELeave ) CPresentityGroupContentEventImp();
hgs
parents:
diff changeset
    95
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    96
    self->ConstructL( aStream );
hgs
parents:
diff changeset
    97
    return self;
hgs
parents:
diff changeset
    98
    }
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   101
// CPresentityGroupContentEventImp::~CPresentityGroupContentEventImp()
hgs
parents:
diff changeset
   102
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   103
//
hgs
parents:
diff changeset
   104
CPresentityGroupContentEventImp::~CPresentityGroupContentEventImp()
hgs
parents:
diff changeset
   105
    {
hgs
parents:
diff changeset
   106
    delete iGroupId;
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
    if( iConstructedFromStream )
hgs
parents:
diff changeset
   109
        {
hgs
parents:
diff changeset
   110
        delete iAddedMembers;
hgs
parents:
diff changeset
   111
        delete iUpdatedMembers;
hgs
parents:
diff changeset
   112
        delete iRemovedMembers;
hgs
parents:
diff changeset
   113
        delete iCurrentMembers;
hgs
parents:
diff changeset
   114
        iCurrentMembers = NULL;  // must be null to skip double deletion below
hgs
parents:
diff changeset
   115
        }
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
    if ( iOwnsCurrentMembersArray )
hgs
parents:
diff changeset
   118
        {
hgs
parents:
diff changeset
   119
        delete iCurrentMembers;
hgs
parents:
diff changeset
   120
        }
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
    delete iSubscriptionState;
hgs
parents:
diff changeset
   123
    }
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   126
// CPresentityGroupContentEventImp::CPresentityGroupContentEventImp()
hgs
parents:
diff changeset
   127
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   128
//
hgs
parents:
diff changeset
   129
CPresentityGroupContentEventImp::CPresentityGroupContentEventImp()
hgs
parents:
diff changeset
   130
    {
hgs
parents:
diff changeset
   131
    }
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   135
// CPresentityGroupContentEventImp::ConstructL()
hgs
parents:
diff changeset
   136
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   137
//
hgs
parents:
diff changeset
   138
void CPresentityGroupContentEventImp::ConstructL(
hgs
parents:
diff changeset
   139
        CXIMPIdentityImp& aGroupId,
hgs
parents:
diff changeset
   140
        RPrGrpMemInfoImpArray* aAdded,
hgs
parents:
diff changeset
   141
        RPrGrpMemInfoImpArray* aUpdated,
hgs
parents:
diff changeset
   142
        RPrGrpMemInfoImpArray* aRemoved,
hgs
parents:
diff changeset
   143
        CXIMPDataSubscriptionStateImp* aState
hgs
parents:
diff changeset
   144
         )
hgs
parents:
diff changeset
   145
    {
hgs
parents:
diff changeset
   146
    iGroupId = TXIMPObjectCloner< CXIMPIdentityImp >::CloneL( aGroupId );
hgs
parents:
diff changeset
   147
    iAddedMembers = aAdded;
hgs
parents:
diff changeset
   148
    iUpdatedMembers = aUpdated;
hgs
parents:
diff changeset
   149
    iRemovedMembers = aRemoved;
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
    iCurrentMembers = new ( ELeave ) RPrGrpMemInfoImpArray;
hgs
parents:
diff changeset
   152
    iOwnsCurrentMembersArray = ETrue;
hgs
parents:
diff changeset
   153
    
hgs
parents:
diff changeset
   154
    iSubscriptionState = aState;
hgs
parents:
diff changeset
   155
    }
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   158
// CPresentityGroupContentEventImp::ConstructL()
hgs
parents:
diff changeset
   159
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   160
//
hgs
parents:
diff changeset
   161
void CPresentityGroupContentEventImp::ConstructL(
hgs
parents:
diff changeset
   162
        CXIMPIdentityImp& aGroupId,
hgs
parents:
diff changeset
   163
        RPrGrpMemInfoImpArray* aAdded,
hgs
parents:
diff changeset
   164
        RPrGrpMemInfoImpArray* aUpdated,
hgs
parents:
diff changeset
   165
        RPrGrpMemInfoImpArray* aRemoved,
hgs
parents:
diff changeset
   166
        RPrGrpMemInfoImpArray* aCurrent,
hgs
parents:
diff changeset
   167
        CXIMPDataSubscriptionStateImp* aState )
hgs
parents:
diff changeset
   168
    {
hgs
parents:
diff changeset
   169
    iGroupId = TXIMPObjectCloner< CXIMPIdentityImp >::CloneL( aGroupId );
hgs
parents:
diff changeset
   170
    iAddedMembers = aAdded;
hgs
parents:
diff changeset
   171
    iUpdatedMembers = aUpdated;
hgs
parents:
diff changeset
   172
    iRemovedMembers = aRemoved;
hgs
parents:
diff changeset
   173
    iCurrentMembers = aCurrent;
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
    iSubscriptionState = aState;
hgs
parents:
diff changeset
   176
    }
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   179
// CPresentityGroupContentEventImp::ConstructL()
hgs
parents:
diff changeset
   180
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   181
//
hgs
parents:
diff changeset
   182
void CPresentityGroupContentEventImp::ConstructL( RReadStream& aStream )
hgs
parents:
diff changeset
   183
    {
hgs
parents:
diff changeset
   184
    iConstructedFromStream = ETrue;
hgs
parents:
diff changeset
   185
    iAddedMembers = new ( ELeave ) RPrGrpMemInfoImpArray;
hgs
parents:
diff changeset
   186
    iUpdatedMembers = new ( ELeave ) RPrGrpMemInfoImpArray;
hgs
parents:
diff changeset
   187
    iRemovedMembers = new ( ELeave ) RPrGrpMemInfoImpArray;
hgs
parents:
diff changeset
   188
    iCurrentMembers = new ( ELeave ) RPrGrpMemInfoImpArray;
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
    iGroupId = CXIMPIdentityImp::NewLC();
hgs
parents:
diff changeset
   191
    CleanupStack::Pop( 1 ); // iGroupId
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
    iGroupId->InternalizeL( aStream );
hgs
parents:
diff changeset
   194
    FillArrayFromStreamL( *iAddedMembers, aStream );
hgs
parents:
diff changeset
   195
    FillArrayFromStreamL( *iUpdatedMembers, aStream );
hgs
parents:
diff changeset
   196
    FillArrayFromStreamL( *iRemovedMembers, aStream );
hgs
parents:
diff changeset
   197
    FillArrayFromStreamL( *iCurrentMembers, aStream );
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
    iSubscriptionState = CXIMPDataSubscriptionStateImp::NewL();
hgs
parents:
diff changeset
   201
    iSubscriptionState->InternalizeL( aStream );
hgs
parents:
diff changeset
   202
    }
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   205
// Implement supported interface access.
hgs
parents:
diff changeset
   206
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   207
//
hgs
parents:
diff changeset
   208
XIMPIMP_IF_BASE_GET_INTERFACE_BEGIN( CPresentityGroupContentEventImp,
hgs
parents:
diff changeset
   209
                                     MPresentityGroupContentEvent )
hgs
parents:
diff changeset
   210
    XIMPIMP_IF_BASE_GET_CLASS( CXIMPApiEventBase, this )
hgs
parents:
diff changeset
   211
XIMPIMP_IF_BASE_GET_INTERFACE_END()
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
XIMPIMP_IF_BASE_GET_CONST_INTERFACE_BEGIN( CPresentityGroupContentEventImp,
hgs
parents:
diff changeset
   214
                                           MPresentityGroupContentEvent )
hgs
parents:
diff changeset
   215
    XIMPIMP_IF_BASE_GET_CONST_CLASS( CXIMPApiEventBase, this )                                            
hgs
parents:
diff changeset
   216
XIMPIMP_IF_BASE_GET_INTERFACE_END()
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   221
// Implement methods from base event interface and base event class
hgs
parents:
diff changeset
   222
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   223
//
hgs
parents:
diff changeset
   224
XIMPIMP_IMPLEMENT_EVENT_BASE_METHODS( CPresentityGroupContentEventImp,
hgs
parents:
diff changeset
   225
                                      MPresentityGroupContentEvent )
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   229
// CPresentityGroupContentEventImp::EqualsContent()
hgs
parents:
diff changeset
   230
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   231
//
hgs
parents:
diff changeset
   232
TBool CPresentityGroupContentEventImp::EqualsContent( 
hgs
parents:
diff changeset
   233
    const CXIMPApiEventBase& aOtherInstance ) const
hgs
parents:
diff changeset
   234
    {
hgs
parents:
diff changeset
   235
    const CPresentityGroupContentEventImp* tmp =
hgs
parents:
diff changeset
   236
    TXIMPGetImpClassOrPanic< const CPresentityGroupContentEventImp >::From( 
hgs
parents:
diff changeset
   237
                                                        aOtherInstance.Base() );
hgs
parents:
diff changeset
   238
hgs
parents:
diff changeset
   239
    TBool same = ETrue;
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
    TBool x = 0 == GroupId().Identity().Compare( tmp->GroupId().Identity() );
hgs
parents:
diff changeset
   242
    same &= x;
hgs
parents:
diff changeset
   243
hgs
parents:
diff changeset
   244
    x = CompareArrays( iAddedMembers, tmp->iAddedMembers );
hgs
parents:
diff changeset
   245
    same &= x;
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
    x = CompareArrays( iUpdatedMembers, tmp->iUpdatedMembers );
hgs
parents:
diff changeset
   248
    same &= x;
hgs
parents:
diff changeset
   249
hgs
parents:
diff changeset
   250
    x = CompareArrays( iRemovedMembers, tmp->iRemovedMembers );
hgs
parents:
diff changeset
   251
    same &= x;
hgs
parents:
diff changeset
   252
hgs
parents:
diff changeset
   253
    x = CompareArrays( iCurrentMembers, tmp->iCurrentMembers );
hgs
parents:
diff changeset
   254
    same &= x;
hgs
parents:
diff changeset
   255
hgs
parents:
diff changeset
   256
    x = iSubscriptionState->EqualsContent( *tmp->iSubscriptionState );
hgs
parents:
diff changeset
   257
    same &= x;
hgs
parents:
diff changeset
   258
hgs
parents:
diff changeset
   259
    return same;
hgs
parents:
diff changeset
   260
    }
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   263
// CPresentityGroupContentEventImp::CompareArrays
hgs
parents:
diff changeset
   264
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   265
//
hgs
parents:
diff changeset
   266
TBool CPresentityGroupContentEventImp::CompareArrays(
hgs
parents:
diff changeset
   267
        RPrGrpMemInfoImpArray* aA, RPrGrpMemInfoImpArray* aB )
hgs
parents:
diff changeset
   268
    {
hgs
parents:
diff changeset
   269
    TBool same = ETrue;
hgs
parents:
diff changeset
   270
hgs
parents:
diff changeset
   271
    TBool x;
hgs
parents:
diff changeset
   272
    x = aA->Count() == aB->Count();   // counts must match
hgs
parents:
diff changeset
   273
    same &= x;
hgs
parents:
diff changeset
   274
hgs
parents:
diff changeset
   275
    if ( ! same )
hgs
parents:
diff changeset
   276
        {
hgs
parents:
diff changeset
   277
        // don't bother checking further if counts mismatch
hgs
parents:
diff changeset
   278
        return same;
hgs
parents:
diff changeset
   279
        }
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
    // now check whole array, arrays have equal length
hgs
parents:
diff changeset
   282
    for ( TInt i = 0; i < aA->Count(); i++ )
hgs
parents:
diff changeset
   283
        {
hgs
parents:
diff changeset
   284
        x = 0 == ( (*aA)[ i ]->IdentityImp().Compare(
hgs
parents:
diff changeset
   285
                    (*aB)[ i ]->IdentityImp() ) );
hgs
parents:
diff changeset
   286
        same &= x;
hgs
parents:
diff changeset
   287
hgs
parents:
diff changeset
   288
        x = 0 == ( (*aA)[ i ]->GroupMemberDisplayName().Compare(
hgs
parents:
diff changeset
   289
                    (*aB)[ i ]->GroupMemberDisplayName() ) );
hgs
parents:
diff changeset
   290
        same &= x;
hgs
parents:
diff changeset
   291
        }
hgs
parents:
diff changeset
   292
hgs
parents:
diff changeset
   293
    return same;
hgs
parents:
diff changeset
   294
    }
hgs
parents:
diff changeset
   295
hgs
parents:
diff changeset
   296
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   297
// From class CXIMPApiEventBase.
hgs
parents:
diff changeset
   298
// CPresentityGroupContentEventImp::ExternalizeL()
hgs
parents:
diff changeset
   299
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   300
//
hgs
parents:
diff changeset
   301
void CPresentityGroupContentEventImp::ExternalizeL( RWriteStream& aStream ) const
hgs
parents:
diff changeset
   302
    {
hgs
parents:
diff changeset
   303
    iGroupId->ExternalizeL( aStream );
hgs
parents:
diff changeset
   304
    WriteArrayToStreamL( *iAddedMembers, aStream );
hgs
parents:
diff changeset
   305
    WriteArrayToStreamL( *iUpdatedMembers, aStream );
hgs
parents:
diff changeset
   306
    WriteArrayToStreamL( *iRemovedMembers, aStream );
hgs
parents:
diff changeset
   307
    WriteArrayToStreamL( *iCurrentMembers, aStream );
hgs
parents:
diff changeset
   308
hgs
parents:
diff changeset
   309
    iSubscriptionState->ExternalizeL( aStream );
hgs
parents:
diff changeset
   310
    }
hgs
parents:
diff changeset
   311
hgs
parents:
diff changeset
   312
hgs
parents:
diff changeset
   313
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   314
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   315
// CPresentityGroupContentEventImp::GroupId()
hgs
parents:
diff changeset
   316
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   317
//
hgs
parents:
diff changeset
   318
const MXIMPIdentity& CPresentityGroupContentEventImp::GroupId() const
hgs
parents:
diff changeset
   319
    {
hgs
parents:
diff changeset
   320
    return *iGroupId;
hgs
parents:
diff changeset
   321
    }
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   324
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   325
// CPresentityGroupContentEventImp::NewMembersCount()
hgs
parents:
diff changeset
   326
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   327
//
hgs
parents:
diff changeset
   328
TInt CPresentityGroupContentEventImp::NewMembersCount() const
hgs
parents:
diff changeset
   329
    {
hgs
parents:
diff changeset
   330
    return iAddedMembers->Count();
hgs
parents:
diff changeset
   331
    }
hgs
parents:
diff changeset
   332
hgs
parents:
diff changeset
   333
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   334
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   335
// CPresentityGroupContentEventImp::NewMember()
hgs
parents:
diff changeset
   336
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   337
//
hgs
parents:
diff changeset
   338
const MPresentityGroupMemberInfo& 
hgs
parents:
diff changeset
   339
    CPresentityGroupContentEventImp::NewMember( TInt aIndex ) const
hgs
parents:
diff changeset
   340
    {
hgs
parents:
diff changeset
   341
    return *(*iAddedMembers)[ aIndex ];
hgs
parents:
diff changeset
   342
    }
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   345
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   346
// CPresentityGroupContentEventImp::UpdatedMembersCount()
hgs
parents:
diff changeset
   347
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   348
//
hgs
parents:
diff changeset
   349
TInt CPresentityGroupContentEventImp::UpdatedMembersCount() const
hgs
parents:
diff changeset
   350
    {
hgs
parents:
diff changeset
   351
    return iUpdatedMembers->Count();
hgs
parents:
diff changeset
   352
    }
hgs
parents:
diff changeset
   353
hgs
parents:
diff changeset
   354
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   355
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   356
// CPresentityGroupContentEventImp::UpdatedMember()
hgs
parents:
diff changeset
   357
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   358
//
hgs
parents:
diff changeset
   359
const MPresentityGroupMemberInfo& 
hgs
parents:
diff changeset
   360
    CPresentityGroupContentEventImp::UpdatedMember( TInt aIndex ) const
hgs
parents:
diff changeset
   361
    {
hgs
parents:
diff changeset
   362
    return *(*iUpdatedMembers)[ aIndex ];
hgs
parents:
diff changeset
   363
    }
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   366
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   367
// CPresentityGroupContentEventImp::DisappearedMembersCount()
hgs
parents:
diff changeset
   368
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   369
//
hgs
parents:
diff changeset
   370
TInt CPresentityGroupContentEventImp::DisappearedMembersCount() const
hgs
parents:
diff changeset
   371
    {
hgs
parents:
diff changeset
   372
    return iRemovedMembers->Count();
hgs
parents:
diff changeset
   373
    }
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   376
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   377
// CPresentityGroupContentEventImp::DisappearedMember()
hgs
parents:
diff changeset
   378
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   379
//
hgs
parents:
diff changeset
   380
const MPresentityGroupMemberInfo& 
hgs
parents:
diff changeset
   381
    CPresentityGroupContentEventImp::DisappearedMember( TInt aIndex ) const
hgs
parents:
diff changeset
   382
    {
hgs
parents:
diff changeset
   383
    return *(*iRemovedMembers)[ aIndex ];
hgs
parents:
diff changeset
   384
    }
hgs
parents:
diff changeset
   385
hgs
parents:
diff changeset
   386
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   387
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   388
// CPresentityGroupContentEventImp::CurrentMembersCount()
hgs
parents:
diff changeset
   389
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   390
//
hgs
parents:
diff changeset
   391
TInt CPresentityGroupContentEventImp::CurrentMembersCount() const
hgs
parents:
diff changeset
   392
    {
hgs
parents:
diff changeset
   393
    return iCurrentMembers->Count();
hgs
parents:
diff changeset
   394
    }
hgs
parents:
diff changeset
   395
hgs
parents:
diff changeset
   396
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   397
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   398
// CPresentityGroupContentEventImp::CurrentMember()
hgs
parents:
diff changeset
   399
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   400
//
hgs
parents:
diff changeset
   401
const MPresentityGroupMemberInfo& 
hgs
parents:
diff changeset
   402
    CPresentityGroupContentEventImp::CurrentMember( TInt aIndex ) const
hgs
parents:
diff changeset
   403
    {
hgs
parents:
diff changeset
   404
    return *(*iCurrentMembers)[ aIndex ];
hgs
parents:
diff changeset
   405
    }
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   408
// From class MPresentityGroupContentEvent.
hgs
parents:
diff changeset
   409
// CPresentityGroupContentEventImp::Status()
hgs
parents:
diff changeset
   410
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   411
//
hgs
parents:
diff changeset
   412
const MXIMPDataSubscriptionState&
hgs
parents:
diff changeset
   413
    CPresentityGroupContentEventImp::DataSubscriptionState() const
hgs
parents:
diff changeset
   414
    {
hgs
parents:
diff changeset
   415
    return *iSubscriptionState;
hgs
parents:
diff changeset
   416
    }
hgs
parents:
diff changeset
   417
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   420
// CPresentityGroupContentEventImp::WriteArrayToStreamL()
hgs
parents:
diff changeset
   421
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   422
//
hgs
parents:
diff changeset
   423
void CPresentityGroupContentEventImp::WriteArrayToStreamL(
hgs
parents:
diff changeset
   424
        RPrGrpMemInfoImpArray& aArray, RWriteStream& aStream ) const
hgs
parents:
diff changeset
   425
    {
hgs
parents:
diff changeset
   426
    TInt count = aArray.Count();
hgs
parents:
diff changeset
   427
    aStream.WriteInt32L( count );
hgs
parents:
diff changeset
   428
        {
hgs
parents:
diff changeset
   429
        for( TInt a = 0; a < count; ++a )
hgs
parents:
diff changeset
   430
            {
hgs
parents:
diff changeset
   431
            aArray[ a ]->ExternalizeL( aStream );
hgs
parents:
diff changeset
   432
            }
hgs
parents:
diff changeset
   433
        }
hgs
parents:
diff changeset
   434
    }
hgs
parents:
diff changeset
   435
hgs
parents:
diff changeset
   436
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   437
// CPresentityGroupContentEventImp::FillArrayFromStreamL
hgs
parents:
diff changeset
   438
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   439
//
hgs
parents:
diff changeset
   440
void CPresentityGroupContentEventImp::FillArrayFromStreamL(
hgs
parents:
diff changeset
   441
        RPrGrpMemInfoImpArray& aArray,
hgs
parents:
diff changeset
   442
        RReadStream& aStream )
hgs
parents:
diff changeset
   443
    {
hgs
parents:
diff changeset
   444
    TInt count = aStream.ReadInt32L();
hgs
parents:
diff changeset
   445
    for( TInt a = 0; a < count; ++a )
hgs
parents:
diff changeset
   446
        {
hgs
parents:
diff changeset
   447
        // the stream MUST be in order (since it was externalized by this class)
hgs
parents:
diff changeset
   448
        CPresentityGroupMemberInfoImp* newInfo = CPresentityGroupMemberInfoImp::NewLC();
hgs
parents:
diff changeset
   449
        newInfo->InternalizeL( aStream );
hgs
parents:
diff changeset
   450
        aArray.AppendL( newInfo );
hgs
parents:
diff changeset
   451
        CleanupStack::Pop(); // newInfo
hgs
parents:
diff changeset
   452
        }
hgs
parents:
diff changeset
   453
    }
hgs
parents:
diff changeset
   454
hgs
parents:
diff changeset
   455
// End of file
hgs
parents:
diff changeset
   456