diff -r a3a1ae9acec6 -r da5135c61bad emailcontacts/remotecontactlookup/engine/src/cpbkxrclactionservicewrapper.cpp --- a/emailcontacts/remotecontactlookup/engine/src/cpbkxrclactionservicewrapper.cpp Mon Mar 15 12:39:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,431 +0,0 @@ -/* -* Copyright (c) 2008 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: Definition of the class CPbkxRclSearchEngine. -* -*/ - - -#include "emailtrace.h" -#include -// -#include "cfsccontactactionservice.h" -#include "mfsccontactaction.h" -#include "fscactionpluginactionuids.h" - -#include "tfsccontactactionqueryresult.h" -// -#include -#include - -#include -#include -#include -#include -#include -#include -#include // for RFscStoreContactList items - -#include "cpbkxrclactionservicewrapper.h" -#include "pbkxrclengineconstants.h" -#include "cpbkxrclcontactconverter.h" - - -// Contact databases -_LIT(KRclDefaultCntDbURI, "cntdb://c:contacts.cdb"); - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::NewL -// --------------------------------------------------------------------------- -// -CPbkxRclActionServiceWrapper* CPbkxRclActionServiceWrapper::NewL( - CPbkContactEngine& aContactEngine ) - { - FUNC_LOG; - CPbkxRclActionServiceWrapper* wrapper = new ( ELeave ) - CPbkxRclActionServiceWrapper( aContactEngine ); - CleanupStack::PushL( wrapper ); - wrapper->ConstructL(); - CleanupStack::Pop( wrapper ); - return wrapper; - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::CPbkxRclActionServiceWrapper -// --------------------------------------------------------------------------- -// -CPbkxRclActionServiceWrapper::CPbkxRclActionServiceWrapper( CPbkContactEngine& - aContactEngine ) : CBase(), iContactEngine( aContactEngine ) - { - FUNC_LOG; - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::~CPbkxRclActionServiceWrapper -// --------------------------------------------------------------------------- -// -CPbkxRclActionServiceWrapper::~CPbkxRclActionServiceWrapper() - { - FUNC_LOG; - - iConvertedContact.ResetAndDestroy(); - - if( iContactManager ) - { - if ( iContactStore ) - { - iContactStore->Close(*this); - } - } - delete iContactManager; - delete iContactActionService; - delete iContactConverter; - delete iWait; - - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::ConstructL -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::ConstructL() - { - FUNC_LOG; - // Create Contact Manager - CVPbkContactStoreUriArray* uriList = CVPbkContactStoreUriArray::NewLC(); - uriList->AppendL( TVPbkContactStoreUriPtr( KRclDefaultCntDbURI ) ); - iContactManager = CVPbkContactManager::NewL( *uriList, &(CCoeEnv::Static()->FsSession()) ); - CleanupStack::PopAndDestroy( uriList ); - - // Get store list - MVPbkContactStoreList& defaultstore = iContactManager->ContactStoresL(); - - // Open contact store - iContactStore = &defaultstore.At( 0 ); - iContactStore->OpenL( *this ); - - iContactActionService = CFscContactActionService::NewL( *iContactManager ); - - iContactConverter = CPbkxRclContactConverter::NewL( - iContactEngine, *iContactManager, *iContactStore ); - - iWait = new ( ELeave ) CActiveSchedulerWait(); - - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::SetContactSelectorMode -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::SetContactSelectorMode( - TBool aContactSelectorMode ) - { - FUNC_LOG; - iContactSelectorMode = aContactSelectorMode; - if ( aContactSelectorMode ) - { - // in contact selector mode the flags are static - - // all actions except save as is queried - iFlags = KFscAtMan & ( ~KFscAtManSaveAs ); - } - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::SetActionMenuMode -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::SetActionMenuMode( - TBool aActionMenuMode ) - { - FUNC_LOG; - // if not in contact selector mode, flags depend on whether - // we are showing the action menu or not - if ( !iContactSelectorMode ) - { - if ( aActionMenuMode ) - { - // in action menu mode poc and save as are disabled - iFlags = KFscAtAll & ( ~KFscAtComCallPoc ) & ( ~KFscAtManSaveAs ); - } - else - { - // when not in action menu mode, all actions but save as contact - // are enabled - iFlags = KFscAtAll & ( ~KFscAtManSaveAs ); - } - } - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::SetCurrentContactL -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::SetCurrentContactL( CPbkContactItem* aContactItem ) - { - FUNC_LOG; - - iConvertedContact.ResetAndDestroy(); // clean before new use - - // Convert contact to MVPbkStoreContact object, only one item in - if ( aContactItem ) - { - iContactConverter->ConvertContactL( *aContactItem, iConvertedContact ); - } - - iContactActionService->SetContactSetL( iConvertedContact ); - - iSaveAsContactActionExists = EFalse; - - iQueryComplete = EFalse; - // first query for save as contact - iContactActionService->QueryActionsL( this, EFalse, KFscAtManSaveAs ); - - // Wait async operation callback. If operation is completed before returning method call - // don't start waiting - if (!iQueryComplete) - { - iWait->Start(); - } - - const CFscContactActionList& actions = iContactActionService->QueryResults(); - - // look for save as contact - for ( TInt i = 0; i < actions.Count(); i++ ) - { - const TFscContactActionQueryResult& result = actions[i]; - if ( result.iAction->Uid() == KFscActionUidSaveAsContact ) - { - iSaveAsContactResult = TFscContactActionQueryResult( - result.iAction, - result.iPriority, - result.iActionMenuVisibility, - result.iOptionsMenuVisibility ); - - iSaveAsContactActionExists = ETrue; - break; - } - } - - // Wait async operation callback. If operation is completed before returning method call - // don't start waiting - iQueryComplete = EFalse; - iContactActionService->QueryActionsL( this, EFalse, iFlags ); - if (!iQueryComplete) - { - iWait->Start(); - } - - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::IsActionEnabled -// --------------------------------------------------------------------------- -// -TBool CPbkxRclActionServiceWrapper::IsActionEnabled( - const TUint64 aActionType ) const - { - FUNC_LOG; - TBool enabled = EFalse; - - const TFscContactActionQueryResult* result = GetResult( aActionType ); - - if ( result != NULL ) - { - enabled = ( result->iOptionsMenuVisibility.iVisibility == - TFscContactActionVisibility::EFscActionVisible && - result->iPriority >= 0 ); - } - - return enabled; - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::ExecuteActionL -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::ExecuteActionL( const TUint64 aActionType ) - { - FUNC_LOG; - const TFscContactActionQueryResult* result = GetResult( aActionType ); - - if ( result == NULL ) - { - User::Leave( KErrNotFound ); - } - iExecuteComplete = EFalse; - iContactActionService->ExecuteL( result->iAction->Uid(), this ); - // Wait async operation callback. If operation is completed before returning method call - // don't start waiting - if (!iExecuteComplete) - { - iWait->Start(); - } - - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::ActionService -// --------------------------------------------------------------------------- -// -CFscContactActionService* CPbkxRclActionServiceWrapper::ActionService() - { - FUNC_LOG; - return iContactActionService; - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::GetResult -// --------------------------------------------------------------------------- -// -const TFscContactActionQueryResult* CPbkxRclActionServiceWrapper::GetResult( - const TUint64 aType ) const - { - FUNC_LOG; - if ( iSaveAsContactActionExists && aType == iSaveAsContactResult.iAction->Type() ) - { - return &iSaveAsContactResult; - } - else - { - const CFscContactActionList& actions = iContactActionService->QueryResults(); - - for ( TInt i = 0; i < actions.Count(); i++ ) - { - const TFscContactActionQueryResult& queryResult = actions[i]; - if ( queryResult.iAction->Type() == aType ) - { - return &queryResult; - } - } - } - return NULL; - } -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::ContactConverter -// --------------------------------------------------------------------------- -// -CPbkxRclContactConverter* CPbkxRclActionServiceWrapper::ContactConverter() - { - FUNC_LOG; - return iContactConverter; - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::StoreReady -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::StoreReady( - MVPbkContactStore& /* aContactStore */ ) - { - FUNC_LOG; - iLastError = KErrNone; - } -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::StoreUnavailable() -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::StoreUnavailable( - MVPbkContactStore& /* aContactStore */, - TInt aReason ) - { - FUNC_LOG; - iLastError = aReason; - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::HandleStoreEventL() -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::HandleStoreEventL( - MVPbkContactStore& /* aContactStore */, - TVPbkContactStoreEvent /* aStoreEvent */ ) - { - FUNC_LOG; - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::QueryActionsComplete() -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::QueryActionsComplete() - { - FUNC_LOG; - iLastError = KErrNone; - iQueryComplete = ETrue; - if (iWait->IsStarted()) - { - iWait->AsyncStop(); - } - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::QueryActionsFailed() -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::QueryActionsFailed( TInt aError ) - { - FUNC_LOG; - iLastError = aError; - iQueryComplete = ETrue; - if (iWait->IsStarted()) - { - iWait->AsyncStop(); - } - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::ExecuteComplete() -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::ExecuteComplete() - { - FUNC_LOG; - iLastError = KErrNone; - iExecuteComplete = ETrue; - if (iWait->IsStarted()) - { - iWait->AsyncStop(); - } - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::ExecuteFailed() -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::ExecuteFailed( TInt aError ) - { - FUNC_LOG; - iLastError = aError; - iExecuteComplete = ETrue; - if (iWait->IsStarted()) - { - iWait->AsyncStop(); - } - } - -// --------------------------------------------------------------------------- -// CPbkxRclActionServiceWrapper::ExecuteFailed() -// --------------------------------------------------------------------------- -// -void CPbkxRclActionServiceWrapper::CancelQuery() - { - FUNC_LOG; - iContactActionService->CancelQueryActions(); - if (iWait->IsStarted()) - { - iWait->AsyncStop(); - } - }