--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiprocess/Src/ccainviteeditorpc.cpp Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,189 @@
+/*
+* Copyright (c) 2006 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: Implementation for PC Group Interface
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "CCAInvitationRequest.h"
+#include "MCAInvite.h"
+#include "MCAPresence.h"
+#include "MCAStoredContact.h"
+#include "MCAStoredContacts.h"
+#include "CCAStorageManagerFactory.h"
+#include "CCAEngine.h"
+#include "MCAContactListModel.h"
+#include "MCAInviteConflictResolver.h"
+#include "MCAServerContactsArrayPC.h"
+#include "CCAServerContactsArrayPC.h"
+
+
+#include "CCAInviteEditorPC.h"
+
+//const definitions
+
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CCAInviteEditorPC: Constructor
+// -----------------------------------------------------------------------------
+//
+CCAInviteEditorPC::CCAInviteEditorPC( MCAInvite& aInviteAPI,
+ MCAPresence& aPresenceAP )
+ : iInviteAPI( aInviteAPI ),
+ iPresenceAPI( aPresenceAP )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CCAInviteEditorPC: NewL
+// -----------------------------------------------------------------------------
+//
+CCAInviteEditorPC* CCAInviteEditorPC::NewL( MCAInvite& aInviteAPI,
+ MCAPresence& aPresenceAPI )
+ {
+ CCAInviteEditorPC* self = new ( ELeave ) CCAInviteEditorPC( aInviteAPI,
+ aPresenceAPI );
+ CleanupStack::PushL( self );
+ self->ConstructL( );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CCAInviteEditorPC: ConstructL
+// -----------------------------------------------------------------------------
+//
+void CCAInviteEditorPC::ConstructL( )
+ {
+ // codescanner warning can be ignored
+ }
+
+
+// -----------------------------------------------------------------------------
+// CCAInviteEditorPC: Destructor
+// -----------------------------------------------------------------------------
+//
+CCAInviteEditorPC::~CCAInviteEditorPC()
+ {
+
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// CCAInviteEditorPC: SendInvitationL
+// -----------------------------------------------------------------------------
+//
+TInt CCAInviteEditorPC::SendInvitationL( const CDesCArray& aUserIDs,
+ const TDesC& aGroupID,
+ const TDesC& aMessage )
+ {
+ // Create invitation
+ TInt retVal = KErrNone;
+ CCAInvitationRequest* invitation = CCAInvitationRequest::NewL( aUserIDs,
+ aGroupID,
+ aMessage );
+
+ CleanupStack::PushL( invitation );
+
+ iInviteAPI.SendInvitationL( *invitation );
+
+ CleanupStack::PopAndDestroy( invitation );
+
+ return retVal;
+ }
+
+// -----------------------------------------------------------------------------
+// CCAInviteEditorPC: SendInvitationL
+// -----------------------------------------------------------------------------
+//
+MCAServerContactsArrayPC* CCAInviteEditorPC::GetOnlineFriendsLC( const TDesC& aIconTabulator )
+ {
+ CDesCArray* onlineList = new ( ELeave ) CDesCArrayFlat( KArrayGranularity );
+ CleanupStack::PushL( onlineList );
+
+
+ CDesCArray* onlineIdentificationList =
+ new ( ELeave ) CDesCArrayFlat( KArrayGranularity );
+ CleanupStack::PushL( onlineIdentificationList );
+
+ CDesCArray* onlineNicknameList =
+ new ( ELeave ) CDesCArrayFlat( KArrayGranularity );
+ CleanupStack::PushL( onlineNicknameList );
+
+ iPresenceAPI.GetOnlineFriendsL( *onlineList );
+
+ MCAStoredContacts* contacts = CCAStorageManagerFactory::ContactListInterfaceL();
+
+ // getting nicnames for contact id's
+ TInt onlineListCount( onlineList->MdcaCount() );
+ for ( TInt i( 0 ); i < onlineListCount; i++ )
+ {
+ onlineIdentificationList->AppendL( contacts->Identification(
+ onlineList->MdcaPoint( i ) ) );
+ MCAStoredContact* contact = contacts->FindAnyContact( onlineList->MdcaPoint( i ) );
+ if ( contact )
+ {
+ onlineNicknameList->AppendL( contact->Nickname() );
+ }
+ else
+ {
+ onlineNicknameList->AppendL( KNullDesC );
+ }
+ }
+
+ // servercontactsarray takes the ownership
+ CCAServerContactsArrayPC* pairsArray =
+ CCAServerContactsArrayPC::NewL( onlineNicknameList,
+ onlineList,
+ aIconTabulator,
+ onlineIdentificationList );
+ //ownership is transfered to the caller.
+ CleanupStack::Pop( onlineNicknameList );
+ CleanupStack::Pop( onlineIdentificationList );
+ CleanupStack::Pop( onlineList );
+ CleanupStack::PushL( pairsArray );
+ return pairsArray;
+ }
+
+// -----------------------------------------------------------------------------
+// CCAInviteEditorPC: PopulateInviteListL
+// -----------------------------------------------------------------------------
+//
+void CCAInviteEditorPC::PopulateInviteListL( CDesCArray& aInviteList,
+ const MCAServerContactsArrayPC& aRawOnlineList,
+ const CArrayFixFlat<TInt>& aSelectionArray )
+ {
+ TInt inviteCount( aSelectionArray.Count() );
+ CCAServerContactsArrayPC& rawOnlineList = dynamic_cast<CCAServerContactsArrayPC&>(
+ const_cast<MCAServerContactsArrayPC&>( aRawOnlineList ) );
+ for ( TInt ii( 0 ); ii < inviteCount; ++ii )
+ {
+ TInt index ( aSelectionArray.At( ii ) );
+ if ( index >= 0 && index < rawOnlineList.MdcaCount() )
+ {
+ aInviteList.AppendL( rawOnlineList[ index ].iWVID );
+ }
+ }
+ }
+
+
+//End of file