diff -r 000000000000 -r 5f000ab63145 phoneengine/PhoneCntFinder/ContactService/src/tphcntservicerequestparams.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 ); + + } +