phoneengine/PhoneCntFinder/ContactService/src/tphcntservicerequestparams.cpp
changeset 0 5f000ab63145
child 9 91c2fb4b78df
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/PhoneCntFinder/ContactService/src/tphcntservicerequestparams.cpp	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,562 @@
+/*
+* 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:  Classes for service requests made to CPhCntService
+*
+*/
+
+#include <coehelp.h>
+#include <AiwGenericParam.h>
+#include <AiwContactAssignDataTypes.h>
+#include <AiwGenericParam.hrh>
+#include <AiwContactSelectionDataTypes.h>
+#include <CVPbkFieldTypeSelector.h>
+#include <CVPbkContactStoreUriArray.h>
+#include <MVPbkContactLinkArray.h>
+#include <RVPbkContactFieldDefaultPriorities.h>
+#include <talogger.h>
+
+#include "tphcntservicerequestparams.h"
+#include "MPhCntContactManager.h"
+#include "cphcntcontactstoreuris.h"
+#include "CPhCntSingleItemFetch.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntServiceRequestParams::CPhCntServiceRequestParams(
+    TAiwServiceCommands aAiwCommand ) : 
+    iAiwCommand( aAiwCommand )
+    {
+    }
+    
+CPhCntServiceRequestParams::~CPhCntServiceRequestParams()
+    {
+    delete iGenericParamList;
+    iDefaultPriorities.Close();
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+void CPhCntServiceRequestParams::BaseConstructL()
+    {
+    iGenericParamList = CAiwGenericParamList::NewL();
+    }
+    
+// ---------------------------------------------------------------------------
+// Gives the command
+// ---------------------------------------------------------------------------
+//
+TAiwServiceCommands CPhCntServiceRequestParams::Command() const
+    {
+    return iAiwCommand;
+    }
+    
+// ---------------------------------------------------------------------------
+// Gives the in param list
+// ---------------------------------------------------------------------------
+//
+const CAiwGenericParamList& CPhCntServiceRequestParams::InParamList() const
+    {
+    return *iGenericParamList;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntCreateNewContactParams::CPhCntCreateNewContactParams(
+    const TDesC& aPhoneNumber ) : 
+    CPhCntServiceRequestParams( KAiwCmdAssign ),
+    iPhoneNumber( aPhoneNumber )
+    {        
+    }
+    
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntCreateNewContactParams* CPhCntCreateNewContactParams::NewL(
+    const TDesC& aPhoneNumber )
+    {
+    CPhCntCreateNewContactParams* self = 
+        CPhCntCreateNewContactParams::NewLC( aPhoneNumber );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//    
+CPhCntCreateNewContactParams* CPhCntCreateNewContactParams::NewLC(
+    const TDesC& aPhoneNumber )
+    {
+    CPhCntCreateNewContactParams* self = 
+        new( ELeave )CPhCntCreateNewContactParams( aPhoneNumber );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+void CPhCntCreateNewContactParams::ConstructL()
+    {
+    BaseConstructL();
+    
+    AiwContactAssign::TAiwSingleContactAssignDataV1 data = 
+        AiwContactAssign::TAiwSingleContactAssignDataV1();
+        
+    // EHideEditorExit has to be set because otherwise AIW provider offers
+    // exit menu item which will also exit the phone application.
+    data.SetFlags( AiwContactAssign::ECreateNewContact | 
+                   AiwContactAssign::EHideEditorExit ); 
+
+    iGenericParamList->AppendL(
+        TAiwGenericParam(
+            EGenericParamPhoneNumber,
+            TAiwVariant( iPhoneNumber ) ) );
+            
+    iGenericParamList->AppendL( 
+        TAiwGenericParam(
+            EGenericParamContactAssignData,
+            TAiwVariant( 
+                AiwContactAssign::TAiwSingleContactAssignDataV1Pckg( data ) ) ) );
+    }
+    
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntUpdateExistingContact::CPhCntUpdateExistingContact(
+    const TDesC& aPhoneNumber ) : 
+    CPhCntServiceRequestParams( KAiwCmdAssign ),
+    iPhoneNumber( aPhoneNumber )
+    {        
+    }
+    
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntUpdateExistingContact* CPhCntUpdateExistingContact::NewL(
+    const TDesC& aPhoneNumber )
+    {
+    CPhCntUpdateExistingContact* self = 
+        CPhCntUpdateExistingContact::NewLC( aPhoneNumber );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//    
+CPhCntUpdateExistingContact* CPhCntUpdateExistingContact::NewLC(
+    const TDesC& aPhoneNumber )
+    {
+    CPhCntUpdateExistingContact* self = 
+        new( ELeave )CPhCntUpdateExistingContact( aPhoneNumber );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+void CPhCntUpdateExistingContact::ConstructL()
+    {
+    BaseConstructL();
+    
+    AiwContactAssign::TAiwSingleContactAssignDataV1 data = 
+        AiwContactAssign::TAiwSingleContactAssignDataV1();
+        
+    data.SetFlags( AiwContactAssign::EHideEditorExit );
+    
+    iGenericParamList->AppendL(
+        TAiwGenericParam(
+            EGenericParamPhoneNumber,
+            TAiwVariant( iPhoneNumber ) ) );
+            
+    iGenericParamList->AppendL( 
+        TAiwGenericParam(
+            EGenericParamContactAssignData,
+            TAiwVariant( 
+                AiwContactAssign::TAiwSingleContactAssignDataV1Pckg( data ) ) ) );
+    }
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntGetUserSelectedPhoneNumberLink*   
+    CPhCntGetUserSelectedPhoneNumberLink::NewLC(
+        TBool aCallUsedWithLSK, MPhCntContactManager& aContactManager )
+    {
+    CPhCntGetUserSelectedPhoneNumberLink* self = 
+        new( ELeave )CPhCntGetUserSelectedPhoneNumberLink();
+    CleanupStack::PushL( self );
+    self->ConstructL( aCallUsedWithLSK, aContactManager );
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntGetUserSelectedPhoneNumberLink::CPhCntGetUserSelectedPhoneNumberLink() : 
+    CPhCntServiceRequestParams( KAiwCmdSelect )
+    {
+    }
+    
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//  
+CPhCntGetUserSelectedPhoneNumberLink::~CPhCntGetUserSelectedPhoneNumberLink()
+    {
+    delete iContactViewFilter;
+    }
+    
+
+// ---------------------------------------------------------------------------
+// Second phase constructor
+// ---------------------------------------------------------------------------
+// 
+void CPhCntGetUserSelectedPhoneNumberLink::ConstructL(
+    TBool aCallUsedWithLSK, MPhCntContactManager& aContactManager )
+    {
+    TEFLOGSTRING( KTAOBJECT, "CNT CPhCntGetUserSelectedPhoneNumberLink::ConstructL" );
+    BaseConstructL();
+    iContactViewFilter = aContactManager.CreateFieldTypeSelectorL();
+
+    aContactManager.AppendFilterToSelectorL( *iContactViewFilter,   
+        EVPbkContactViewFilterPhoneNumber );
+    
+	iDefaultPriorities.Append( EVPbkDefaultTypePhoneNumber );    
+	
+    TAiwSingleItemSelectionDataV3 data = TAiwSingleItemSelectionDataV3();
+	  
+    if( aCallUsedWithLSK )
+        {
+        data.SetAddressSelectType( EAiwCallItemSelect );	    
+        }
+    else
+        {
+        data.SetAddressSelectType( EAiwPhoneNumberSelect );
+        }
+	
+	data.SetDefaultPriorities( iDefaultPriorities ); 	
+    data.SetFetchFilter( iContactViewFilter );
+        
+    iGenericParamList->AppendL(
+        TAiwGenericParam(
+            EGenericParamContactSelectionData,
+            TAiwVariant( TAiwSingleItemSelectionDataV3Pckg( data ) ) ) );            
+
+	// Pass an array of currently active contact store uris
+    CPhCntContactStoreUris& storeUris = aContactManager.ContactStoreUrisL();
+	CVPbkContactStoreUriArray* uriArray = storeUris.ActiveContactStoresL(); 
+	CleanupStack::PushL( uriArray );
+	if ( uriArray->Count() > 0 ) 
+		{ 
+		HBufC8* packedUris = uriArray->PackLC(); 
+		iGenericParamList->AppendL( 
+	        TAiwGenericParam( 
+            	EGenericParamContactStoreUriArray, 
+            	TAiwVariant( *packedUris ) 
+            	) 
+           	); 
+		CleanupStack::PopAndDestroy( packedUris ); 
+		}
+	CleanupStack::PopAndDestroy( uriArray );
+    }
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntGetUserSelectedVoIPAddressLink*   
+    CPhCntGetUserSelectedVoIPAddressLink::NewLC(
+        MPhCntContactManager& aContactManager,
+        TBool aCallUsedWithLSK )
+    {
+    CPhCntGetUserSelectedVoIPAddressLink* self = 
+        new( ELeave )CPhCntGetUserSelectedVoIPAddressLink();
+    CleanupStack::PushL( self ); 
+    self->ConstructL( aContactManager, aCallUsedWithLSK );
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntGetUserSelectedVoIPAddressLink::CPhCntGetUserSelectedVoIPAddressLink() : 
+    CPhCntServiceRequestParams( KAiwCmdSelect )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor
+// ---------------------------------------------------------------------------
+// 
+void CPhCntGetUserSelectedVoIPAddressLink::ConstructL(
+    MPhCntContactManager& aContactManager,
+    TBool aCallUsedWithLSK )
+    {
+    BaseConstructL();
+
+    // Construct empty filter
+    iContactViewFilter = aContactManager.CreateFieldTypeSelectorL();
+
+    // Append the filter object with suitable criteria
+    aContactManager.AppendFilterToSelectorL( *iContactViewFilter,
+        EVPbkContactViewFilterVoIP );
+    aContactManager.AppendFilterToSelectorL( *iContactViewFilter,   
+        EVPbkContactViewFilterPhoneNumber );
+    
+    iDefaultPriorities.Append( EVPbkDefaultTypeVoIP ); 
+                     
+    TAiwSingleItemSelectionDataV3 data = TAiwSingleItemSelectionDataV3();
+    
+    
+    if( aCallUsedWithLSK )
+        {
+        data.SetCommAddressSelectType( EAiwCommVOIPCall );
+        data.SetAddressSelectType( EAiwVoIPItemSelect );	    
+        }
+    else
+        {
+        data.SetCommAddressSelectType( EAiwCommVOIPCall );
+        }
+    
+    
+    data.SetFetchFilter( iContactViewFilter );
+	data.SetDefaultPriorities( iDefaultPriorities ); 	
+	
+    iGenericParamList->AppendL(
+        TAiwGenericParam(
+            EGenericParamContactSelectionData,
+            TAiwVariant(TAiwSingleItemSelectionDataV3Pckg( data ) ) ) );
+
+	// Pass an array of currently active contact store uris
+    CPhCntContactStoreUris* storeUris = CPhCntContactStoreUris::NewL();
+	CleanupStack::PushL( storeUris );
+	CVPbkContactStoreUriArray* uriArray = storeUris->ActiveContactStoresL();
+	CleanupStack::PushL( uriArray );
+	if ( uriArray->Count() > 0 ) 
+		{ 
+		HBufC8* packedUris = uriArray->PackLC(); 
+		iGenericParamList->AppendL( 
+	        TAiwGenericParam( 
+            	EGenericParamContactStoreUriArray, 
+            	TAiwVariant(*packedUris) 
+            	) 
+           	); 
+		CleanupStack::PopAndDestroy( packedUris ); 
+		}
+	CleanupStack::PopAndDestroy( uriArray );
+	CleanupStack::PopAndDestroy( storeUris );
+    }
+
+
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//    
+CPhCntGetUserSelectedDtmfNumberLink* 
+    CPhCntGetUserSelectedDtmfNumberLink::NewLC(
+        MPhCntContactManager& aContactManager )
+    {
+    CPhCntGetUserSelectedDtmfNumberLink* self = 
+        new( ELeave )CPhCntGetUserSelectedDtmfNumberLink();
+    CleanupStack::PushL( self );
+    self->ConstructL( aContactManager );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//  
+CPhCntGetUserSelectedDtmfNumberLink::~CPhCntGetUserSelectedDtmfNumberLink()
+    {
+    delete iContactViewFilter;
+    }
+    
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntGetUserSelectedDtmfNumberLink::CPhCntGetUserSelectedDtmfNumberLink() : 
+    CPhCntServiceRequestParams( KAiwCmdSelect )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CPhCntGetUserSelectedDtmfNumberLink::ConstructL(
+    MPhCntContactManager& aContactManager )
+    {
+    BaseConstructL();
+
+    // Construct empty filter
+    iContactViewFilter = aContactManager.CreateFieldTypeSelectorL();
+
+    // Append the filter object with suitable criteria
+    aContactManager.AppendFilterToSelectorL( *iContactViewFilter,
+        EVPbkContactViewFilterDTMF );
+    aContactManager.AppendFilterToSelectorL( *iContactViewFilter,   
+        EVPbkContactViewFilterPhoneNumber );
+
+    iDefaultPriorities.Append( EVPbkDefaultTypePhoneNumber ); 
+                     
+    TAiwSingleItemSelectionDataV3 data;
+    data.SetAddressSelectType(EAiwDTMFPhoneNumberSelect);
+    data.SetFetchFilter( iContactViewFilter );
+	data.SetDefaultPriorities( iDefaultPriorities ); 	
+                 
+    iGenericParamList->AppendL(
+        TAiwGenericParam( 
+            EGenericParamContactSelectionData,
+            TAiwVariant( TAiwSingleItemSelectionDataV3Pckg( data ) ) ) );
+	// Pass an array of currently active contact store uris
+    CPhCntContactStoreUris* storeUris = CPhCntContactStoreUris::NewL();
+	CleanupStack::PushL( storeUris );				
+	CVPbkContactStoreUriArray* uriArray = storeUris->ActiveContactStoresL(); 
+	CleanupStack::PushL( uriArray );
+	if ( uriArray->Count() > 0 ) 
+		{ 
+		HBufC8* packedUris = uriArray->PackLC(); 
+		iGenericParamList->AppendL( 
+	        TAiwGenericParam( 
+            	EGenericParamContactStoreUriArray, 
+            	TAiwVariant(*packedUris) 
+            	) 
+           	); 
+		CleanupStack::PopAndDestroy( packedUris ); 
+		}
+	CleanupStack::PopAndDestroy( uriArray );
+	CleanupStack::PopAndDestroy( storeUris );
+    }
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//    
+CPhCntGetPhoneNumberReqParam* 
+    CPhCntGetPhoneNumberReqParam::NewL(
+    	MPhCntContactManager& aContactManager, 
+        MVPbkContactLinkArray& aLinkArray,
+        const CPhCntSingleItemFetch::TCallType aCallType )
+    {
+    CPhCntGetPhoneNumberReqParam* self = 
+        new( ELeave )CPhCntGetPhoneNumberReqParam();
+    CleanupStack::PushL( self );
+    self->ConstructL( aContactManager, aLinkArray, aCallType );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//  
+CPhCntGetPhoneNumberReqParam::~CPhCntGetPhoneNumberReqParam()
+    {    
+    delete iContactViewFilter;
+    }
+    
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhCntGetPhoneNumberReqParam::CPhCntGetPhoneNumberReqParam() : 
+    CPhCntServiceRequestParams( KAiwCmdSelect )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CPhCntGetPhoneNumberReqParam::ConstructL(
+	MPhCntContactManager& aContactManager,
+    MVPbkContactLinkArray& aLinkArray,
+    const CPhCntSingleItemFetch::TCallType aCallType )
+    {
+    BaseConstructL();
+                
+	// Set filtering
+	TVPbkContactViewFilter filter = EVPbkContactViewFilterPhoneNumber;	    		                    		
+	TAiwSingleItemSelectionDataV3 data; 
+	data.SetAddressSelectType(  EAiwCallItemSelect );
+	switch( aCallType )
+		{				
+		case CPhCntSingleItemFetch::ECallPhoneNumber:			
+    		iDefaultPriorities.Append( EVPbkDefaultTypePhoneNumber );    		
+    		break;
+    	case CPhCntSingleItemFetch::ECallVoip:
+    		iDefaultPriorities.Append( EVPbkDefaultTypeVoIP );
+    		filter = EVPbkContactViewFilterVoIP;
+    		data.SetCommAddressSelectType( EAiwCommVOIPCall );
+    		data.SetAddressSelectType(  EAiwVOIPSelect ); 		
+    		break;
+    	case CPhCntSingleItemFetch::ECallVideoNumber:
+    		iDefaultPriorities.Append( EVPbkDefaultTypeVideoNumber );
+    		filter = EVPbkContactViewFilterVideoNumber;
+    		break;    	    		
+    	default:
+            break;
+		}
+		
+	// Construct empty filter
+    iContactViewFilter = aContactManager.CreateFieldTypeSelectorL();
+
+    // Append the filter object with suitable criteria
+    aContactManager.AppendFilterToSelectorL( *iContactViewFilter, filter );   			
+                                                 		
+	data.SetFetchFilter( iContactViewFilter ); 
+	data.SetDefaultPriorities( iDefaultPriorities ); 		
+	
+    iGenericParamList->AppendL(
+        TAiwGenericParam(
+            EGenericParamContactSelectionData,
+            TAiwVariant( TAiwSingleItemSelectionDataV3Pckg( data ) ) ) );
+            
+	// Contact link array		
+	HBufC8* packedLinks = aLinkArray.PackLC();
+	iGenericParamList->AppendL( 
+	    TAiwGenericParam( 
+	    	EGenericParamContactLinkArray, 
+	    	TAiwVariant( *packedLinks ) 
+	    	) 
+	   	); 
+   	CleanupStack::PopAndDestroy( packedLinks );
+   			
+    }
+