wvuing/wvuiprocess/Src/ccainviteeditorpc.cpp
changeset 0 094583676ce7
--- /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