emailcontacts/remotecontactlookup/engine/src/cpbkxrclsearchresultdlg.cpp
branchRCL_3
changeset 12 4ce476e64c59
parent 11 0396474f30f5
child 13 8592a65ad3fb
--- a/emailcontacts/remotecontactlookup/engine/src/cpbkxrclsearchresultdlg.cpp	Mon Mar 15 12:39:10 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1102 +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 CPbkxRclSearchResultDlg.
-*
-*/
-
-
-#include "emailtrace.h"
-#include <pbkxrclengine.rsg>
-#include <eikmover.h>
-#include <coemain.h>
-#include <aknnavi.h>
-#include <aknnavide.h>
-#include <aknappui.h>
-#include <AknIconUtils.h>
-#include <cntitem.h>
-#include <badesca.h>
-#include <StringLoader.h>
-#include <CPbkContactEngine.h>
-#include <CPbkContactItem.h>
-#include <gulicon.h>
-#include <avkon.mbg>
-#include <pbkxrclengine.mbg>
-//<cmail>
-#include "cfsccontactactionmenu.h"  
-#include "mfsccontactactionmenumodel.h"
-#include "mfsccontactaction.h"
-#include "cfsccontactactionmenuitem.h"
-#include "fsccontactactionservicedefines.h"
-#include "fsccontactactionmenudefines.h"
-//</cmail>
-
-#include <data_caging_path_literals.hrh>
-#include <AknsUtils.h>
-#include <eikclb.h>
-#include <eikclbd.h>
-#include <eiklbo.h>                 // MEikListBoxObserver
-
-#include <csxhelp/cmail.hlp.hrh>
-
-#include "cpbkxrclsearchresultdlg.h"
-#include "pbkxremotecontactlookuppanic.h"
-#include "engine.hrh"
-#include "pbkxrclutils.h"
-#include "cpbkxrclvcardsender.h"
-#include "cpbkxrclactionservicewrapper.h"
-
-// list box field formats
-_LIT( KFieldFormat, "\t%S %S" );
-_LIT( KFieldFormatWithIcon, "\t%S %S\t%d" );
-
-_LIT( KFieldFormatDispName, "\t%S" );
-_LIT( KFieldFormatDispNameWithIcon, "\t%S\t%d" );
-
-// Constant to measure when user is scrolling.
-const TInt KKeyScrolling = 1;
-// <cmail> S60 UID update
-const TInt KPbkxRemoteContactLookupServiceImplImpUid = 0x2001FE0D;
-// </cmail> S60 UID update
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::NewL
-// ---------------------------------------------------------------------------
-//
-CPbkxRclSearchResultDlg* CPbkxRclSearchResultDlg::NewL(
-    TInt& aIndex,
-    CDesCArray* aArray,
-    MEikCommandObserver* aCommand,
-    RPointerArray<CContactCard>& aContactItems,
-    CPbkContactEngine& aContactEngine,
-    CPbkxRclActionServiceWrapper& aActionService,
-    TBool aContactSelectorEnabled )
-    {
-    FUNC_LOG;
-    CPbkxRclSearchResultDlg* dialog = new ( ELeave ) CPbkxRclSearchResultDlg(
-        aIndex, 
-        aArray,
-        aCommand,
-        aContactItems,
-        aContactEngine,
-        aActionService,
-        aContactSelectorEnabled );
-
-    CleanupStack::PushL( dialog );
-    dialog->ConstructL();
-    CleanupStack::Pop( dialog );
-    return dialog;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::CPbkxRclSearchResultDlg
-// ---------------------------------------------------------------------------
-//
-CPbkxRclSearchResultDlg::CPbkxRclSearchResultDlg(
-    TInt& aIndex,
-    CDesCArray* aArray,
-    MEikCommandObserver* aCommand,
-    RPointerArray<CContactCard>& aContactItems,
-    CPbkContactEngine& aContactEngine,
-    CPbkxRclActionServiceWrapper& aActionService,
-    TBool aContactSelectorEnabled ) :
-    CPbkxRclBaseDlg( aIndex, aArray, aCommand, ETrue ), 
-    iContactEngine( aContactEngine ),
-    iContactActionService( aActionService ),
-    iItems( aArray ), iContactItems( aContactItems ), 
-    iContactSelectorEnabled( aContactSelectorEnabled ), 
-    iSelectedItemIndex( aIndex ), 
-    iIsInfoDlgVisible( EFalse )
-    {
-    FUNC_LOG;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::ConstructL()
-    {
-    FUNC_LOG;
-    CPbkxRclBaseDlg::ConstructL( R_RCL_SEARCH_RESULT_DIALOG_MENU_BAR );
-    LoadNaviTextL();
-
-    // add foreground observer
-    CCoeEnv::Static()->AddForegroundObserverL( *this );
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::~CPbkxRclSearchResultDlg
-// ---------------------------------------------------------------------------
-//
-CPbkxRclSearchResultDlg::~CPbkxRclSearchResultDlg()
-    {
-    FUNC_LOG;
-    CCoeEnv::Static()->RemoveForegroundObserver( *this );
-    ResetStatusPane();
-    iNaviText.Close();
-    delete iAddRecipientIcon;
-
-    iContactActionService.CancelQuery();
-    if ( iActionMenu )
-    	{
-     	delete iActionMenu;
-    	iActionMenu = NULL;
-    	}
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::ExecuteLD
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::ExecuteLD()
-    {
-    FUNC_LOG;
-
-    PrepareLC( R_RCL_SEARCH_RESULT_DIALOG );
-
-    UpdateGraphics();
-    UpdateColors();
-
-    HBufC* noItemText = StringLoader::LoadLC( R_QTN_RCL_NO_RESULTS );
-    ListBox()->View()->SetListEmptyTextL( *noItemText );
-    CleanupStack::PopAndDestroy( noItemText );
-
-    CreateListBoxIconsL();
-
-    InitializeActionMenuL();
-
-    SetupStatusPaneL();
-    CreateListBoxEntriesL();
-    
-    if ( iContactItems.Count() == 0 )
-      {
-      ConstructMenuBarL( R_RCL_OPTIONS_BACK_CONTEXTMENU );
-      }
-
-    CAknSelectionListDialog::RunLD();
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::CurrentItemIndex
-// ---------------------------------------------------------------------------
-//
-TInt CPbkxRclSearchResultDlg::CurrentItemIndex() const
-    {
-    FUNC_LOG;
-    return ListBox()->CurrentItemIndex();
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::SetCurrentItemIndex
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::SetCurrentItemIndexL( TInt aIndex )
-    {
-    FUNC_LOG;
-    if ( aIndex >= 0 && aIndex < iContactItems.Count() )
-        {
-        // update list box entrys first
-        TInt oldIndex = iSelectedItemIndex;
-        
-        ListBox()->SetCurrentItemIndex( aIndex );
-        iSelectedItemIndex = aIndex;
-        
-        UpdateListBoxEntryL( iSelectedItemIndex );
-        UpdateListBoxEntryL( oldIndex );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::Close
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::Close()
-    {
-    FUNC_LOG;
-    // this will not leave, because TryExitL doesn't call leaving methods
-    // when EAknSoftkeyCancel is used
-    iExit = ETrue;
-    TRAP_IGNORE( TryExitL( EAknSoftkeyCancel ) ); // <cmail>
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::UpdateDialogL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::UpdateDialogL()
-    {
-    FUNC_LOG;
-    LoadNaviTextL();
-    CreateListBoxEntriesL();
-    UpdateStatusPaneL();
-    
-    if ( iContactItems.Count() == 0 )
-        {
-        ConstructMenuBarL( R_RCL_OPTIONS_BACK_CONTEXTMENU );
-        }
-    else
-        {
-        ConstructMenuBarL( R_RCL_OPTIONS_BACK_OPEN );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::SendBusinessCardL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::SendBusinessCardL()
-    {
-    FUNC_LOG;
-    CPbkxRclvCardSender* sender = CPbkxRclvCardSender::NewLC( iContactEngine );
-
-    TInt curIndex = CurrentItemIndex();
-
-
-    CContactCard* current = iContactItems[curIndex];
-   
-    CPbkContactItem* contactItem = PbkxRclUtils::CreateContactItemL(
-        current,
-        iContactEngine );
-    CleanupStack::PushL( contactItem );
-    
-    sender->SendvCardL( *contactItem, *(iContactActionService.ContactConverter()) );
-
-    CleanupStack::PopAndDestroy( contactItem );
-    CleanupStack::PopAndDestroy( sender );
-    
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::DynInitMenuPaneL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::DynInitMenuPaneL( 
-    TInt aResourceId, 
-    CEikMenuPane* aMenuPane )
-    {
-    FUNC_LOG;
-    if ( aResourceId == R_RCL_SEARCH_RESULT_DIALOG_MENU_PANE )
-        {
-
-        if ( iContactItems.Count() == 0 )
-            {
-            // when there are 0 results, only new search option is available
-            aMenuPane->SetItemDimmed( ERclCmdViewDetails, ETrue );
-            aMenuPane->SetItemDimmed( ERclCmdAddAsRecipient, ETrue );
-            aMenuPane->SetItemDimmed( ERclCmdSaveToContacts, ETrue );
-            aMenuPane->SetItemDimmed( ERclCmdCall, ETrue );
-            aMenuPane->SetItemDimmed( ERclCmdSend, ETrue );
-            }
-        else
-            {
-            if ( !iContactSelectorEnabled )
-                {
-                
-                aMenuPane->SetItemDimmed( ERclCmdAddAsRecipient, ETrue );
-                
-                aMenuPane->SetItemDimmed(
-                    ERclCmdCall,
-                    !CallActionsAvailable() );
-                
-                // send menu is always visible, since business card can 
-                // always be sent
-                }
-            else
-                {
-                aMenuPane->SetItemDimmed( ERclCmdCall, ETrue );
-                aMenuPane->SetItemDimmed( ERclCmdSend, ETrue );
-                }
-            
-            aMenuPane->SetItemDimmed(
-                ERclCmdSaveToContacts,
-                !iContactActionService.IsActionEnabled( KFscAtManSaveAs ) );
-            }
-        }
-    else if ( aResourceId == R_RCL_CALL_MENU_PANE )
-        {
-        
-        aMenuPane->SetItemDimmed( 
-            ERclCmdVoiceCall,
-            !iContactActionService.IsActionEnabled( KFscAtComCallGSM ) );
-
-        aMenuPane->SetItemDimmed(
-            ERclCmdVideoCall,
-            !iContactActionService.IsActionEnabled( KFscAtComCallVideo ) );
-
-        aMenuPane->SetItemDimmed(
-            ERclCmdVoip,
-            !iContactActionService.IsActionEnabled( KFscAtComCallVoip ) );
-        
-        }
-    else if ( aResourceId == R_RCL_SEND_MENU_PANE )
-        {       
-        aMenuPane->SetItemDimmed( 
-            ERclCmdSendMsg, 
-            !iContactActionService.IsActionEnabled( KFscAtComSendMsg ) );
-       
-        aMenuPane->SetItemDimmed( 
-            ERclCmdSendEmail, 
-            !iContactActionService.IsActionEnabled( KFscAtComSendEmail ) );
-      
-        aMenuPane->SetItemDimmed( 
-            ERclCmdSendMeetingReq, 
-            ETrue /*!iContactActionService.IsActionEnabled( KFscAtComSendCalReq )*/ );
-            // "Send meeting request" option should not be available
-                
-        aMenuPane->SetItemDimmed( 
-            ERclCmdSendAudioMsg, 
-            !iContactActionService.IsActionEnabled( KFscAtComSendAudio ) );
-        
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::GetHelpContext
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    FUNC_LOG;
-
-    if ( !iIsInfoDlgVisible )
-        {
-        aContext.iMajor = TUid::Uid( KPbkxRemoteContactLookupServiceImplImpUid );
-        aContext.iContext = KRLOOK_HLP_RESULT_VIEW;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::HandleGainingForeground
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::HandleGainingForeground()
-    {
-    FUNC_LOG;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::HandleLosingForeground
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::HandleLosingForeground()
-    {
-    FUNC_LOG;
-    if ( ScrollingInProgress() )
-        {
-        // scrolling was in progress
-        TRAP_IGNORE( ScrollingStoppedL() );
-        iKeyDown = EFalse;
-        iKeyCounter = 0;
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::HandleListBoxEventL()
-// ----------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::HandleListBoxEventL(
-    CEikListBox* /* aListBox */,
-    TListBoxEvent aEventType )
-    {
-    FUNC_LOG;
-    switch ( aEventType )
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemClicked:
-        	{
-        	if ( iContactItems.Count() > 0 )
-                {
-                TInt oldIndex = iSelectedItemIndex;
-                iSelectedItemIndex = CurrentItemIndex();
-                if ( oldIndex != iSelectedItemIndex )
-                    {
-                    UpdateListBoxEntryL( oldIndex );
-                    // update listbox entry if we are not yet fast scrolling
-                    if ( !ScrollingInProgress() )
-                        {
-                        SetCurrentContactToActionServiceL();
-                        UpdateListBoxEntryL( iSelectedItemIndex );
-                        }
-                    }
-                }
-        	break;
-        	}
-        case EEventItemActioned:
-            {
-            break;
-            }
-            
-        case EEventItemDoubleClicked:
-        	{
-            ProcessCommandL( ERclCmdViewDetails );
-        	break;
-        	}
-        	
-        default:
-            {
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CPbkxRclSearchResultDlg::OfferKeyEventL( 
-    const TKeyEvent& aKeyEvent, 
-    TEventCode aType )
-    {
-    FUNC_LOG;
-
-    // if there are no items, don't handle key presses
-    TInt count = iContactItems.Count();
-
-    if ( iExit || aType != EEventKey )
-        {
-        if ( aType == EEventKeyUp )
-            {
-            // added count condition
-            if ( count && ScrollingInProgress() && !iIsScrollLaunched )
-                {
-                // scrolling ended
-                iIsScrollLaunched = ETrue;
-                ScrollingStoppedL();
-                }
-            iKeyCounter = 0;
-            iKeyDown = EFalse;
-            }
-        
-        return EKeyWasConsumed;
-        }
-    
-    if ( aKeyEvent.iCode == EKeyUpArrow || 
-         aKeyEvent.iCode == EKeyDownArrow )
-        {
-        iKeyDown = ETrue;
-        iKeyCounter++;
-        }
-    else
-        {
-        // make sure that if we were scrolling we stop it now
-        if ( ScrollingInProgress() )
-            {
-            ScrollingStoppedL();
-            }
-        iKeyDown = EFalse;
-        iKeyCounter = 0;
-        }
-    
-    switch ( aKeyEvent.iCode )
-        {
-        case EKeyPhoneSend:
-            {
-            ProcessCommandL( ERclCmdVoiceCall );
-            break;
-            }
-        case EKeyOK:
-            {
-            if ( count > 0 )
-                {
-                // opens result information view
-                ProcessCommandL( ERclCmdViewDetails );
-                }
-            }
-            break;
-        case EKeyUpArrow: // fall through, same functionality with these two
-        case EKeyDownArrow:
-            {
-            if ( count > 0 )
-                {
-                TInt oldIndex = iSelectedItemIndex;
-                CAknSelectionListDialog::OfferKeyEventL( aKeyEvent, aType );
-                iSelectedItemIndex = CurrentItemIndex();
-                if ( oldIndex != iSelectedItemIndex )
-                    {
-                    UpdateListBoxEntryL( oldIndex );
-                    // update listbox entry if we are not yet fast scrolling
-                    if ( !ScrollingInProgress() )
-                        {
-                        SetCurrentContactToActionServiceL();
-                        UpdateListBoxEntryL( iSelectedItemIndex );
-                        }
-                    }
-                }
-            }
-            break;
-        case EKeyRightArrow:
-            {
-            if ( !AknLayoutUtils::LayoutMirrored() && ActionMenuAvailable() )
-                {
-                // opens action menu
-                ShowActionMenuL();
-                }
-            }
-            break;
-        case EKeyLeftArrow:
-            {
-            if ( AknLayoutUtils::LayoutMirrored() && ActionMenuAvailable() )
-                {
-                ShowActionMenuL();
-                }
-            }
-            break;
-        case EKeyEscape:
-            {
-            // exit application
-            iExit = ETrue;
-            ProcessCommandL( EAknCmdExit );
-            }
-            break;
-        default:
-            break;
-        }
-    return EKeyWasConsumed;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::OkToExitL
-// ---------------------------------------------------------------------------
-//
-TBool CPbkxRclSearchResultDlg::OkToExitL( TInt aButtonId )
-	{
-    FUNC_LOG;
-	if( aButtonId == EAknSoftkeyOpen )
-		{
-		ProcessCommandL( ERclCmdViewDetails );
-		return EFalse;
-		}
-	else if ( aButtonId == EAknSoftkeyContextOptions )
-	    {
-	    iMenuBar->TryDisplayMenuBarL();
-        return EFalse;
-	    }
-	else
-		{
-		return CAknDialog::OkToExitL( aButtonId );
-		}
-	}
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::SetupStatusPaneL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::SetupStatusPaneL()
-    {
-    FUNC_LOG;
-    CAknAppUi* appUi = static_cast<CAknAppUi*>( CCoeEnv::Static()->AppUi() );
-    CEikStatusPane* statusPane = appUi->StatusPane();
-    iNaviPane = reinterpret_cast<CAknNavigationControlContainer*>(
-        statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
-    
-    iNaviDecorator = iNaviPane->CreateNavigationLabelL( iNaviText );
-    
-    iNaviPane->PushL( *iNaviDecorator );
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::UpdateStatusPaneL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::UpdateStatusPaneL()
-    {
-    FUNC_LOG;
-    
-    ResetStatusPane();
-    iNaviDecorator = iNaviPane->CreateNavigationLabelL( iNaviText );
-    iNaviPane->PushL( *iNaviDecorator );
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::ResetStatusPane
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::ResetStatusPane()
-    {
-    FUNC_LOG;
-    // navi pane and navi decorator may be null if dialog construction
-    // failed
-    if ( iNaviPane != NULL && iNaviDecorator != NULL )
-        {
-        iNaviPane->Pop( iNaviDecorator );
-        delete iNaviDecorator;
-        iNaviDecorator = NULL;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::CreateListBoxEntriesL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::CreateListBoxEntriesL()
-    {
-    FUNC_LOG;
-    iItems->Delete( 0, iItems->Count() );
-    TInt count = iContactItems.Count();
-    
-    if ( count > 0 )
-        {
-        iSelectedItemIndex = 0;
-        }
-    
-    SetCurrentContactToActionServiceL();
-
-    for ( TInt i = 0; i < count; i++ )
-        {
-        CreateListBoxEntryL( i );
-        }
-    
-    CEikListBox* listBox = ListBox();
-
-    if ( count > 0 )
-        {
-        listBox->SetTopItemIndex( 0 );
-        listBox->SetCurrentItemIndex( 0 );
-        }
-
-    listBox->HandleItemAdditionL();
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::CreateListBoxIconsL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::CreateListBoxIconsL()
-    {
-    FUNC_LOG;
-    CFbsBitmap* bitmap = NULL;
-    CFbsBitmap* mask = NULL;
-
-    TFileName dllFileName; 
-    Dll::FileName( dllFileName );
-    TParse parse;
-    parse.Set( KEngineIconFile, &KDC_APP_RESOURCE_DIR, &dllFileName );
-
-// <cmail> icons changed
-    if ( iContactSelectorEnabled )
-        {
-        // add as recipient icon
-        AknsUtils::CreateIconL(
-            AknsUtils::SkinInstance(),
-            KAknsIIDQgnFsRclActionRecipient,
-            bitmap,
-            mask,
-            parse.FullName(),
-            EMbmPbkxrclengineQgn_prop_cmail_contacts_group,
-            EMbmPbkxrclengineQgn_prop_cmail_contacts_group_mask );
-        
-        CleanupStack::PushL( bitmap );
-        CleanupStack::PushL( mask );
-        
-        iAddRecipientIcon = CGulIcon::NewL( bitmap, mask );
-        
-        CleanupStack::Pop( mask );
-        CleanupStack::Pop( bitmap );
-        }
-    
-    // action menu icon
-    AknsUtils::CreateIconL(
-        AknsUtils::SkinInstance(),
-        KAknsIIDQgnFsHscrActionArrowRight,
-        bitmap,
-        mask,
-        parse.FullName(),
-        EMbmPbkxrclengineQgn_indi_cmail_action_arrow_right,
-        EMbmPbkxrclengineQgn_indi_cmail_action_arrow_right_mask );
-// </cmail>    
-    CleanupStack::PushL( bitmap );
-    CleanupStack::PushL( mask );
-    
-    CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
-    CleanupStack::PushL( icon );
-
-    CArrayPtr<CGulIcon>* iconArray = 
-        new ( ELeave ) CArrayPtrFlat<CGulIcon>( KArrayGranularity );
-    CleanupStack::PushL( iconArray );
-    iconArray->AppendL( icon );
-
-    SetIconArrayL( iconArray );
-
-    CleanupStack::Pop( iconArray );
-
-    CleanupStack::Pop( icon );
-    CleanupStack::Pop( mask );
-    CleanupStack::Pop( bitmap );
-        
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::CreateListBoxEntryL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::CreateListBoxEntryL( TInt aIndex )
-    {
-    FUNC_LOG;
-     
-    CContactCard* card = iContactItems[aIndex];
-    TPtrC dispName = PbkxRclUtils::FieldText( card, KUidContactFieldDefinedText );
-    TPtrC firstName = PbkxRclUtils::FieldText( card, KUidContactFieldGivenName );
-    TPtrC lastName = PbkxRclUtils::FieldText( card, KUidContactFieldFamilyName );
-    
-    RBuf entry;
-    TPtrC entryFirstName;
-
-    if ( dispName.Length() != 0 )
-        {
-        entryFirstName.Set(dispName);
-        entry.CreateL( entryFirstName.Length() + KExtraSpaceInListboxEntry );
-        }
-    else
-        {
-        entryFirstName.Set(firstName);
-        entry.CreateL( firstName.Length() + lastName.Length() + KExtraSpaceInListboxEntry );
-        }
-    
-    CleanupClosePushL( entry );
-    if ( dispName.Length() != 0 )
-        {
-        if ( aIndex == iSelectedItemIndex && ActionMenuAvailable() )
-            {
-            entry.Format( 
-                KFieldFormatDispNameWithIcon, 
-                &entryFirstName, 
-                EActionMenuEnabled );
-            }
-        else
-            {
-            entry.Format( KFieldFormatDispName, &entryFirstName );
-            }
-        }
-    else
-        {
-        if ( aIndex == iSelectedItemIndex && ActionMenuAvailable() )
-            {
-            entry.Format( 
-                KFieldFormatWithIcon, 
-                &firstName, 
-                &lastName, 
-                EActionMenuEnabled );
-            }
-        else
-            {
-            entry.Format( KFieldFormat, &firstName, &lastName );
-            }
-        }
-    iItems->InsertL( aIndex, entry );
-    CleanupStack::PopAndDestroy( &entry );
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::UpdateListBoxEntryL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::UpdateListBoxEntryL( TInt aIndex )
-    {
-    FUNC_LOG;
-    iItems->Delete( aIndex );
-    CreateListBoxEntryL( aIndex );
-    ListBox()->DrawItem( aIndex );
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::SetCurrentContactToActionServiceL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::SetCurrentContactToActionServiceL()
-    {
-    FUNC_LOG;
-   
-    if ( iActionMenu )
-    	{
-        if ( iContactItems.Count() > 0 )
-            {
-            // set current contact to action service
-        
-            CPbkContactItem* currentContact = PbkxRclUtils::CreateContactItemL(
-                iContactItems[iSelectedItemIndex],
-                iContactEngine );
-            CleanupStack::PushL( currentContact );
-    
-            iContactActionService.SetCurrentContactL( 
-                currentContact );
-        
-            CleanupStack::PopAndDestroy( currentContact );
-        
-            }
-        else
-            {
-            iContactActionService.SetCurrentContactL( NULL );
-            }
-    
-    	if ( iActionMenu )
-			{
-            // update action menu
-            iActionMenu->Model().AddPreQueriedCasItemsL();
-            // save as contact not added for this contact
-            iSaveAsAdded = EFalse;
-            }
-    	} 
-    iIsScrollLaunched = EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::LoadNaviTextL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::LoadNaviTextL()
-    {
-    FUNC_LOG;
-    iNaviText.Close();
-    HBufC* naviText = NULL;
-    if ( iContactItems.Count() == 1 )
-        {
-        naviText = StringLoader::LoadLC( R_QTN_RCL_ONE_RESULT_NAVI );
-        }
-    else if ( iContactItems.Count() == 0 )
-        {
-        naviText = NULL;
-        }
-    else
-        {
-        naviText = StringLoader::LoadLC( 
-            R_QTN_RCL_RESULT_NAVI,
-            iContactItems.Count() );
-        }
-    
-    if (naviText)
-        {
-        iNaviText.CreateL( *naviText );
-        CleanupStack::PopAndDestroy( naviText );
-        }
-    else
-        {
-        iNaviText = KNullDesC;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::CallActionsAvailable
-// ---------------------------------------------------------------------------
-//
-TBool CPbkxRclSearchResultDlg::CallActionsAvailable() const
-    {
-    FUNC_LOG;
-    return iContactActionService.IsActionEnabled( KFscAtComCallGSM ) ||
-        iContactActionService.IsActionEnabled( KFscAtComCallVideo );
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::InitializeActionMenuL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::InitializeActionMenuL()
-    {
-    FUNC_LOG;
-    
-    iActionMenu = CFscContactActionMenu::NewL( 
-        *(iContactActionService.ActionService()) );
-
-    MFscContactActionMenuModel& model = iActionMenu->Model();
-
-    if ( iContactSelectorEnabled && iContactItems.Count() > 0 )
-        {
-
-        // add static custom item
-        HBufC* menuText = StringLoader::LoadLC( 
-            R_QTN_RCL_ADD_RECIPIENT_ACTION_MENU_TEXT );
-        
-        CFscContactActionMenuItem* item = model.NewMenuItemL(
-            *menuText,
-            iAddRecipientIcon,
-            KPbkxRclAddRecipientPriority,
-            ETrue,
-            KPbkxRclAddRecipientActionUid );
-        
-        CleanupStack::PushL( item );
-        
-        model.AddItemL( item );
-        
-        CleanupStack::Pop( item );
-        CleanupStack::PopAndDestroy( menuText );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::ShowActionMenuL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::ShowActionMenuL()
-    {
-    FUNC_LOG;
-
-    CreateAndAddSaveAsContactActionL();
-    
-    TFscContactActionMenuPosition pos = GetActionMenuPosition();
-    TFscActionMenuResult result = iActionMenu->ExecuteL( pos );
-
-    // if custom item was selected, it was our add to recipient or
-    // save as contact
-    if ( result == EFscCustomItemSelected )
-        {
-        const TFscContactActionQueryResult* saveAsContact = 
-            iContactActionService.GetResult( KFscAtManSaveAs );
-        TInt itemIndex = iActionMenu->FocusedItemIndex();
-        CFscContactActionMenuItem& item = 
-            iActionMenu->Model().ItemL( itemIndex );
-        
-        if ( item.ImplementationUid() == KPbkxRclAddRecipientActionUid )
-            {
-            ProcessCommandL( ERclCmdAddAsRecipient );
-            }
-        else if ( saveAsContact != NULL &&
-                  item.ImplementationUid() == saveAsContact->iAction->Uid() ) 
-            {
-            ProcessCommandL( ERclCmdSaveToContacts );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::GetActionMenuPosition
-// ---------------------------------------------------------------------------
-//
-TFscContactActionMenuPosition CPbkxRclSearchResultDlg::GetActionMenuPosition()
-    {
-    FUNC_LOG;
-    const TInt KNumberOfMenuPositions = 3;
-
-    CEikListBox* listBox = ListBox();
-    TInt itemsInView = listBox->View()->NumberOfItemsThatFitInRect( Rect() );
-
-    TInt topIndex = listBox->TopItemIndex();
-    TInt curIndex = listBox->CurrentItemIndex();
-
-    TInt normalizedIndex = curIndex - topIndex;
-    
-    TInt segmentSize = itemsInView / KNumberOfMenuPositions;
-
-    if ( normalizedIndex < segmentSize )
-        {
-        return EFscTop;
-        }
-    else if ( normalizedIndex < ( 2 * segmentSize) )
-        {
-        return EFscCenter;
-        }
-    else
-        {
-        return EFscBottom;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::ActionMenuAvailable
-// ---------------------------------------------------------------------------
-//
-TBool CPbkxRclSearchResultDlg::ActionMenuAvailable() const
-    {
-    FUNC_LOG;
-    TInt count = iActionMenu->Model().ItemCount() > 0;
-    if ( !iSaveAsAdded )
-        {
-        if ( iContactActionService.IsActionEnabled( KFscAtManSaveAs ) )
-            {
-            count++;
-            }
-        }
-    
-    return count > 0;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::CreateAndAddSaveAsContactActionL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::CreateAndAddSaveAsContactActionL()
-    {
-    FUNC_LOG;
-    if ( !iSaveAsAdded )
-        {
-        const TFscContactActionQueryResult* saveAsContact = 
-            iContactActionService.GetResult( KFscAtManSaveAs );
-        if ( saveAsContact != NULL )
-            {
-            MFscContactActionMenuModel& model = iActionMenu->Model();
-            
-            const MFscContactAction* action = saveAsContact->iAction;
-            
-            CFscContactActionMenuItem* item = model.NewMenuItemL(
-                action->ActionMenuText(),
-                action->Icon(),
-                saveAsContact->iPriority,
-                EFalse,
-                action->Uid() );
-            
-            CleanupStack::PushL( item );
-            
-            model.AddItemL( item );
-            
-            iSaveAsAdded = ETrue;
-
-            CleanupStack::Pop( item );
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::ScrollingInProgress
-// ---------------------------------------------------------------------------
-//
-TBool CPbkxRclSearchResultDlg::ScrollingInProgress() const
-    {
-    FUNC_LOG;
-    return iKeyDown && iKeyCounter > KKeyScrolling;
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::ScrollingStopped
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::ScrollingStoppedL()
-    {
-    FUNC_LOG;
-    SetCurrentContactToActionServiceL();
-    UpdateListBoxEntryL( iSelectedItemIndex ); 
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::ConstructContextMenuL
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::ConstructMenuBarL( TInt aResourceId )
-    {
-    FUNC_LOG;
-    CEikButtonGroupContainer& butContainer = ButtonGroupContainer();
-    butContainer.SetCommandSetL( aResourceId );
-    butContainer.DrawNow();
-    }
-
-// ---------------------------------------------------------------------------
-// CPbkxRclSearchResultDlg::InfoDlgVisible
-// ---------------------------------------------------------------------------
-//
-void CPbkxRclSearchResultDlg::InfoDlgVisible( TBool aVisible )
-    {
-    FUNC_LOG;
-    iIsInfoDlgVisible = aVisible;
-    }