--- a/voiceui/pbkinfoviewimpl/src/pbkinfoviewdialog.cpp Thu Aug 19 09:56:14 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,805 +0,0 @@
-/*
-* 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: Pbk info view dialog.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <AknIconArray.h> // for GulArray
-#include <bldvariant.hrh>
-#include "pbkinfoviewdialog.h"
-#include "pbkinfoviewutil.h"
-#include "pbkinfoviewsindhandler.h"
-#include "pbkinfoviewdefines.h"
-#include <pbkinfoview.rsg>
-#include "pbkinfoview.rh"
-#include <e32property.h> // RProperty
-#include <PSVariables.h> // Property values
-#include <ctsydomainpskeys.h>
-
-#include "rubydebug.h"
-
-#include <csxhelp/vc.hlp.hrh> // for help text id
-#include <eikmenub.h> // CEikMenuBar
-#include <PbkIconId.hrh> // Phonebook icon ids
-#include <aknnotewrappers.h> // For information note
-#include <StringLoader.h>
-
-#include <MPbk2FieldPropertyArray.h>
-#include <VPbkEng.rsg>
-#include <CPbk2StoreConfiguration.h>
-#include <CVPbkContactStoreUriArray.h>
-#include <CVPbkContactManager.h>
-#include <VPbkContactStoreUris.h>
-#include <CVPbkFieldTypeRefsList.h>
-#include <CPbk2IconFactory.h>
-#include <Pbk2FieldPropertiesFactory.h>
-#include <MPbk2FieldProperty.h>
-#include <TVPbkContactStoreUriPtr.h>
-#include <PbkFields.hrh>
-
-#include <MPbk2FieldPropertyArray2.h>
-#include <MPbk2FieldProperty2.h>
-#include <MPbk2FieldProperty.h>
-
-const TUint KFieldIds[] =
- {
- R_VPBK_FIELD_TYPE_LANDPHONEGEN,
- R_VPBK_FIELD_TYPE_MOBILEPHONEGEN,
- R_VPBK_FIELD_TYPE_VIDEONUMBERGEN,
- R_VPBK_FIELD_TYPE_VOIPGEN,
- R_VPBK_FIELD_TYPE_EMAILGEN,
- R_VPBK_FIELD_TYPE_IMPP
- };
-
-NONSHARABLE_CLASS( TXspIconHelper )
- {
- public:
- TXspIconHelper( TInt aIndex, const TDesC& aLable );
- TDesC& LableText();
- TInt Index();
- private:
- TBuf<KPbkSIPMaxLength> iLable;
- TInt iIndex;
- };
-
-TXspIconHelper::TXspIconHelper( TInt aIndex, const TDesC& aLable ):
- iLable(aLable),iIndex(aIndex)
- {
- }
-
-inline TInt TXspIconHelper::Index()
- {
- return iIndex;
- }
-inline TDesC& TXspIconHelper::LableText()
- {
- return iLable;
- }
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::NewL
-//
-// -----------------------------------------------------------------------------
-//
-CPbkInfoViewDialog* CPbkInfoViewDialog::NewL( TInt aContactId )
- {
- RUBY_DEBUG_BLOCK( "CPbkInfoViewDialog::NewL" );
-
- CPbkInfoViewDialog* self = new ( ELeave ) CPbkInfoViewDialog( aContactId );
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
-
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::CPbkInfoViewDialog
-//
-// -----------------------------------------------------------------------------
-//
-CPbkInfoViewDialog::CPbkInfoViewDialog( TInt aContactId )
- {
- iContactId = aContactId;
-
- if( aContactId == KVoiceTaglessContactId )
- {
- iVoiceTaglessContact = ETrue;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::ConstructL
-//
-// -----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::ConstructL()
- {
- CAknDialog::ConstructL( R_INFOVIEW_DIALOG_MENU );
-
- // Hide tabs
- CEikStatusPane* statusPane = iAvkonAppUi->StatusPane();
- if ( statusPane && statusPane->PaneCapabilities
- ( TUid::Uid( EEikStatusPaneUidTitle ) ).IsPresent() )
- {
- iNaviPane = (CAknNavigationControlContainer*) statusPane->ControlL
- ( TUid::Uid(EEikStatusPaneUidNavi ) );
- iNaviPane->PushDefaultL();
- }
-
- iAvkonAppUi->SetKeyEventFlags( CAknAppUiBase::EDisableSendKeyLong );
-
- // Get the previous title so it can be restored
- iStatusPaneHandler = CStatusPaneHandler::NewL( iAvkonAppUi );
- iStatusPaneHandler->StoreOriginalTitleL();
-
- iPopupController = CAknInfoPopupNoteController::NewL();
-
- iResHandler = CPbkInfoViewResHandler::NewL();
-
- iSindHandler = CPbkInfoViewSindHandler::NewL( iContactId );
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::~CPbkInfoViewDialog()
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CPbkInfoViewDialog::~CPbkInfoViewDialog()
- {
- delete iStatusPaneHandler;
- iStatusPaneHandler = NULL;
- delete iPopupController;
- iPopupController = NULL;
- delete iResHandler;
- iResHandler = NULL;
- delete iSindHandler;
- iSindHandler = NULL;
-
- if ( iAvkonAppUi )
- {
- iAvkonAppUi->RemoveFromStack( this );
- }
-
- // Restore tabs
- if ( iNaviPane )
- {
- iNaviPane->Pop();
- }
-
- iXspIconHelper.Close();
- }
-
-//------------------------------------------------------------------------------
-// CPbkInfoViewDialog::ExecuteLD
-// Overrides CAknDialog::ExecuteLD. Checks whether the contact has any voice
-// tags. If not an info note is displayed. Otherwise calls CAknDialog::ExecuteLD
-// @param aResourceId The resource ID of the dialog to be loaded
-// @return see CAknDialog::ExecuteLD
-//------------------------------------------------------------------------------
-//
-TInt CPbkInfoViewDialog::ExecuteLD( TInt aResourceId )
- {
- // Check whether info view should be shown at all
- if( iContactId == KVoiceTaglessContactId )
- {
- ShowInformationNoteL( R_INFOVIEW_EMPTY_VIEW_SIM_CONTACT );
- delete this;
- return 0;
- }
- else if( iSindHandler->VoiceTagCount() == 0 )
- {
- ShowInformationNoteL( R_INFOVIEW_EMPTY_VIEW );
- delete this;
- return 0;
- }
- // Show info view
- else
- {
- return CAknDialog::ExecuteLD( aResourceId );
- }
- }
-
-//------------------------------------------------------------------------------
-// CPbkInfoViewDialog::FocusChanged (from CCoeControl)
-//------------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::FocusChanged( TDrawNow aDrawNow )
- {
- CAknDialog::FocusChanged(aDrawNow);
- TRAP_IGNORE( iStatusPaneHandler->SetTitleL(R_INFOVIEW_DIALOG_TITLE) );
- }
-//------------------------------------------------------------------------------
-// CPbkInfoViewDialog::ActivateL (from CCoeControl)
-// Called by system when dialog is activated.
-//------------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::ActivateL()
- {
- CAknDialog::ActivateL();
-
- // This cannot be in ConstructL which is executed before dialog is launched
- iAvkonAppUi->AddToStackL( this );
- }
-
-//------------------------------------------------------------------------------
-// CPbkInfoViewDialog::GetHelpContext
-// Method to get context sensitive help topic.
-// @param aContext Help topic to open.
-//------------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- aContext.iMajor = TUid::Uid( PBKINFOVIEW_HELP_UID );
- aContext.iContext = KVCINFO_HLP_MAINVIEW;
- }
-
-//------------------------------------------------------------------------------
-// CPbkInfoViewDialog::ProcessCommandL
-// Handles menu events.
-// @param aCommandId Command id.
-//------------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::ProcessCommandL( TInt aCommandId )
- {
- HideMenu();
-
- switch ( aCommandId )
- {
- case EInfoViewMenuCmdPlay:
- {
- if ( IsCallActive() )
- {
- CallInProgressNoteL();
- }
- else
- {
- iSindHandler->PlayVoiceCommandL( CurrentItemIndex() );
- }
-
- break;
- }
- case EInfoViewMenuCmdHelp:
- {
- iAvkonAppUi->ProcessCommandL( EAknCmdHelp );
- break;
- }
- case EInfoViewMenuCmdExit:
- {
- iAvkonAppUi->ProcessCommandL( EAknCmdExit );
- break;
- }
- case EAknCmdExit:
- case EEikCmdExit:
- {
- //
- // Exit dialog
- //
- // CEikAppUi::ProcessCommandL starts CAknAppShutter that
- // closes all dialogs and finally calling application. Before
- // dialog is closed (deleted) it's OkToExitL(EEikBidCancel)
- // is called. EEikBidCancel means OkToExitL must silently
- // save and return ETrue.
- //
- iAvkonAppUi->ProcessCommandL( EAknCmdExit );
-
- break;
- }
-
- default:
- {
- break;
- }
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// CPbkInfoViewDialog::IsCallActive
-// ----------------------------------------------------------------------------
-//
-TBool CPbkInfoViewDialog::IsCallActive()
- {
- TBool callActive( EFalse );
- TInt state( 0 );
- TInt err = RProperty::Get( KPSUidCtsyCallInformation, KCTsyCallState,
- state );
-
- // note! errors are handled as a call is active
- if( err || state == EPSCTsyCallStateConnected
- || state == EPSCTsyCallStateAlerting
- || state == EPSCTsyCallStateRinging
- || state == EPSCTsyCallStateDialling
- || state == EPSCTsyCallStateAnswering )
- {
- callActive = ETrue;
- }
- else
- {
- TInt callType( 0 );
- TInt err = RProperty::Get( KPSUidCtsyCallInformation, KCTsyCallType,
- callType );
- if ( err || callType == EPSCTsyCallTypeH324Multimedia )
- {
- callActive = ETrue;
- }
- }
-
- return callActive;
- }
-
-// ----------------------------------------------------------------------------
-// CPbkInfoViewDialog::CallInProgressNoteL
-// ----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::CallInProgressNoteL()
- {
- HBufC* text = StringLoader::LoadLC( R_TEXT_CALL_IN_PROGRESS );
- CAknInformationNote* note = new( ELeave ) CAknInformationNote( ETrue );
- note->ExecuteLD( *text );
- CleanupStack::PopAndDestroy( text );
- }
-
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::OkToExitL
-// Called by framework before exiting the dialog.
-// @param aButtonId Button id.
-// @return ETrue to exit\ EFalse to not to exit.
-// -----------------------------------------------------------------------------
-//
-TBool CPbkInfoViewDialog::OkToExitL( TInt aButtonId )
- {
- if( iSindHandler->IsPlaying() )
- {
- iSindHandler->CancelPlaybackL();
- }
-
- switch ( aButtonId )
- {
- case EAknSoftkeyBack:
- {
- return ETrue;
- }
-
- case EAknSoftkeyClose:
- case EAknSoftkeyExit:
- {
- iAvkonAppUi->ProcessCommandL( EAknCmdExit );
- return ETrue;
- }
-
- case EAknSoftkeySelect: // Middle soft key, no exit
- {
- if ( IsCallActive() )
- {
- CallInProgressNoteL();
- }
- else
- {
- iSindHandler->PlayVoiceCommandL( CurrentItemIndex() );
- }
-
- return EFalse;
- }
-
- default:
- {
- return CAknDialog::OkToExitL( aButtonId );
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CPbkInfoViewDialog::OfferKeyEventL
-// Called by framework for key event handling.
-// ----------------------------------------------------------------------------
-//
-TKeyResponse CPbkInfoViewDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode aType )
- {
- if ( aType == EEventKey )
- {
- switch ( aKeyEvent.iCode )
- {
- case EKeyEscape: // Framework calls this when dialog must shut
- {
- return CAknDialog::OfferKeyEventL( aKeyEvent, aType );
- }
-
- case EKeyUpArrow:
- case EKeyDownArrow:
- {
- CAknDialog::OfferKeyEventL( aKeyEvent, aType );
- if( iSindHandler->VoiceTagCount() > 0 )
- {
- ShowPopupL();
- }
- return EKeyWasConsumed;
- }
-
- default:
- break;
- }
- }
-
- return CAknDialog::OfferKeyEventL( aKeyEvent, aType );
- }
-
-// ----------------------------------------------------------------------------
-// CPbkInfoViewDialog::HandleResourceChange
-// Called when display resolution changes.
-// ----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::HandleResourceChange( TInt aType )
- {
- // Handle change in layout orientation
- if ( aType == KEikDynamicLayoutVariantSwitch )
- {
- TRect mainPaneRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
- mainPaneRect );
- SetRect( mainPaneRect );
- //iListBox->SetSize( mainPaneRect.Size() );
- iListBox->SetSize( mainPaneRect.Size() );
- CCoeControl::HandleResourceChange( aType );
- DrawDeferred();
- }
- else
- {
- CCoeControl::HandleResourceChange( aType );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CPbkInfoViewDialog::PostLayoutDynInitL
-// Called by framework after dialog is shown.
-// ----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::PostLayoutDynInitL()
- {
- }
-
-// ----------------------------------------------------------------------------
-// CPbkInfoViewDialog::PreLayoutDynInitL
-// Called by framework before dialog is shown.
-// ----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::PreLayoutDynInitL()
- {
- RUBY_DEBUG_BLOCK( "CPbkInfoViewDialog::PreLayoutDynInitL" );
-
- iListBox = ( CAknDoubleGraphicStyleListBox* ) ControlOrNull ( EInfoViewDialogList );
-
- __ASSERT_ALWAYS( iListBox, TPbkInfoViewUtil::Panic( KErrGeneral ) );
-
- iListBox->SetListBoxObserver( this );
- iListBox->CreateScrollBarFrameL( ETrue );
- iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto );
- iListBox->ItemDrawer()->FormattedCellData()->EnableMarqueeL( ETrue );
-
- TDesC* des;
- // Set empty list text
- if( iVoiceTaglessContact )
- {
- des = StringLoader::LoadLC( R_INFOVIEW_EMPTY_VIEW_SIM_CONTACT );
- iListBox->View()->SetListEmptyTextL( *des );
- }
- else
- {
- des = StringLoader::LoadLC( R_INFOVIEW_EMPTY_VIEW );
- iListBox->View()->SetListEmptyTextL( *des );
- }
- CleanupStack::PopAndDestroy( des );
-
- // Set icons
-
- CArrayPtr<CGulIcon>* icons = new (ELeave) CAknIconArray( KDefaultArraySize );
- CleanupStack::PushL( icons );
-
- CreateFieldIconsL( icons );
-
- CleanupStack::Pop( icons );
-
- CreateListBoxItemsL();
-
- iListBox->UpdateScrollBarsL();
- iListBox->ScrollBarFrame()->MoveVertThumbTo( 0 );
-
- iStatusPaneHandler->SetTitleL( R_INFOVIEW_DIALOG_TITLE );
-
- UpdateCbaL( R_SOFTKEYS_OPTIONS_BACK__PLAY );
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::DynInitMenuPaneL
-// Called by framework before menu is shown.
-// @param aResourceId Menu resource id.
-// @param aMenuPane Pointer to the menu.
-// -----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::DynInitMenuPaneL( TInt aResourceID,
- CEikMenuPane* aMenuPane )
- {
- if ( aResourceID == R_INFOVIEW_DIALOG_MENU_PANE )
- {
- // No play function in menu if there are no voice tags
- if( iSindHandler->VoiceTagCount() == 0 )
- {
- aMenuPane->SetItemDimmed( EInfoViewMenuCmdPlay, ETrue );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::IconIndex
-// Returns TInfoViewDialogIconIndex enumeration icon index.
-// @param aIconId enumeration TPbkIconId from PbkIconId.hrh.
-// @return TInt Icon index.
-// -----------------------------------------------------------------------------
-//
-TInt CPbkInfoViewDialog::IconIndex( TInt aIconId, TInt aTagIndex )
- {
- TInt iconIndex;
-
- switch ( aIconId )
- {
- case EPbkqgn_prop_nrtyp_mobile:
- iconIndex = EIconIndexMobile;
- break;
- case EPbkqgn_prop_nrtyp_phone:
- iconIndex = EIconIndexPhone;
- break;
- case EPbkqgn_prop_nrtyp_video:
- iconIndex = EIconIndexVideo;
- break;
- case EPbkqgn_prop_nrtyp_email:
- iconIndex = EIconIndexEmail;
- break;
- case EPbkqgn_prop_nrtyp_voip:
- iconIndex = EIconIndexVoip;
- if ( iSindHandler->FieldIdL( aTagIndex ) == EPbkFieldIdXsp )
- {
- for ( TInt i=0; i<iXspIconHelper.Count();i++)
- {
- if ( !iXspIconHelper[i].LableText().Compare(iSindHandler->LabelL(aTagIndex)) )
- {
- iconIndex = iXspIconHelper[i].Index();
- }
- }
- }
- break;
- default:
- iconIndex = EIconIndexPhone;
- break;
- }
-
- return iconIndex;
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::CreateListBoxItemsL
-// Creates listbox items.
-// -----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::CreateListBoxItemsL()
- {
- RUBY_DEBUG_BLOCK( "CPbkInfoViewDialog::CreateListBoxItemsL" );
-
- CAknDoubleGraphicStyleListBox* listBox = iListBox;
- CDesCArray* items = (CDesCArray*) listBox->Model()->ItemTextArray();
- items->Reset();
- listBox->ItemDrawer()->ClearAllPropertiesL();
-
- TInt count = iSindHandler->VoiceTagCount();
-
- // Create dialog entries
- for ( TInt i = 0; i < count; i++ )
- {
- // Line header
- HBufC* firstLine = iSindHandler->VoiceTagLabelLC( i );
- // Phone number, email address, etc...
- HBufC* secondLine = iSindHandler->VoiceTagValueL( i ).AllocLC();
-
- TInt iconIndex = IconIndex( iSindHandler->IconIdL( i ), i );
-
- TPtr ptr1 = firstLine->Des();
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr1 );
- TPtr ptr2 = secondLine->Des();
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr2 );
-
- HBufC* listBoxItem = NULL;
- listBoxItem = TDialogUtil::ConstructListBoxItemLC( firstLine->Des(),
- secondLine->Des(),
- iconIndex );
-
- items->AppendL( listBoxItem->Des() );
-
- CleanupStack::PopAndDestroy( listBoxItem );
- CleanupStack::PopAndDestroy( secondLine );
- CleanupStack::PopAndDestroy( firstLine );
- }
-
- listBox->HandleItemAdditionL();
-
- TInt current = CurrentItemIndex();
- if (current == KErrNotFound)
- {
- current = 0;
- }
-
- iListBox->SetCurrentItemIndexAndDraw( current );
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::HandleListBoxEventL (from MEikListBoxObserver)
-// From MEikListBoxObserver, called by framework.
-// -----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::HandleListBoxEventL( CEikListBox* /*aListBox*/,
- TListBoxEvent aEventType )
- {
- switch ( aEventType )
- {
- case EEventEnterKeyPressed:
- case EEventItemSingleClicked:
- {
- if ( iSindHandler->VoiceTagCount() > 0 )
- {
- ShowPopupL();
-
- if ( IsCallActive() )
- {
- CallInProgressNoteL();
- }
- else
- {
- iSindHandler->PlayVoiceCommandL( CurrentItemIndex() );
- }
-
- }
- break;
- }
-
- default:
- break;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::CurrentItemIndex
-// Gets current listbox item.
-// -----------------------------------------------------------------------------
-//
-TInt CPbkInfoViewDialog::CurrentItemIndex()
- {
- TInt ret;
-
- if ( iListBox->Model()->NumberOfItems() == 0 )
- {
- ret = KErrNotFound;
- }
- else
- {
- ret = iListBox->CurrentItemIndex();
- }
-
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::UpdateCbaL
-// Updates dialog cba.
-// @param aResourceId Resource id.
-// -----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::UpdateCbaL( TInt aResourceId )
- {
- CEikButtonGroupContainer& cba = ButtonGroupContainer();
- cba.SetCommandSetL( aResourceId );
- cba.DrawDeferred();
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::ShowPopupL
-// Shows popup for a voice command in the list.
-// -----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::ShowPopupL()
- {
- iPopupController->SetTextL( iSindHandler->PopupTextL( CurrentItemIndex() ) );
- iPopupController->ShowInfoPopupNote();
- }
-
-// -----------------------------------------------------------------------------
-// CPbkInfoViewDialog::ShowInformationNoteL
-//
-// -----------------------------------------------------------------------------
-//
-void CPbkInfoViewDialog::ShowInformationNoteL( TInt aResourceId )
- {
- TDesC* noteText = StringLoader::LoadLC( aResourceId );
-
- CAknInformationNote* dialog =
- new(ELeave)CAknInformationNote( R_AKN_INFORMATION_NOTE );
- dialog->ExecuteLD( *noteText );
-
- CleanupStack::PopAndDestroy( noteText );
- }
-
-void CPbkInfoViewDialog::CreateFieldIconsL(CArrayPtr<CGulIcon>* aIconArray)
- {
- CPbk2StoreConfiguration* configuration = CPbk2StoreConfiguration::NewL();
- CleanupStack::PushL(configuration);
-
- CVPbkContactStoreUriArray* uriArray = configuration->CurrentConfigurationL();
- CleanupStack::PushL( uriArray );
- if ( uriArray->IsIncluded(VPbkContactStoreUris::DefaultCntDbUri()) == EFalse )
- {
- uriArray->AppendL( VPbkContactStoreUris::DefaultCntDbUri() );
- }
-
- CVPbkContactManager* contactManager = CVPbkContactManager::NewL(*uriArray);
- CleanupStack::PushL( contactManager );
-
- TInt arraySize = sizeof KFieldIds / sizeof KFieldIds[0];
- TInt count =0;
- const MVPbkFieldType* fieldType = NULL;
- CGulIcon* icon = NULL;
-
- CVPbkFieldTypeRefsList* fieldTypeList = CVPbkFieldTypeRefsList::NewL();
- CleanupStack::PushL( fieldTypeList );
-
- for( count = 0; count < arraySize; ++count )
- {
- fieldType = contactManager->FieldTypes().Find( KFieldIds[count] );
- fieldTypeList->AppendL(*fieldType);
- }
-
- MPbk2FieldPropertyArray* propertyArray = Pbk2FieldPropertiesFactory::CreateLC(*fieldTypeList,
- &contactManager->FsSession() );
-
- CPbk2IconFactory* pbk2IconFactory = CPbk2IconFactory::NewL();
- CleanupStack::PushL( pbk2IconFactory );
-
- for( count = 0; count < propertyArray->Count(); ++ count)
- {
- icon = pbk2IconFactory->CreateIconL( propertyArray->At(count).IconId());
- // Append xSP icon info to helper array
- if ( propertyArray->At(count).FieldType().FieldTypeResId() == R_VPBK_FIELD_TYPE_IMPP
- && icon && icon->Bitmap()->Handle() )
- {
- const MPbk2FieldProperty& property = propertyArray->At(count);
- MPbk2FieldProperty2* property2 = reinterpret_cast<MPbk2FieldProperty2*>
- ( const_cast<MPbk2FieldProperty&> (property).FieldPropertyExtension(
- KMPbk2FieldPropertyExtension2Uid ) );
- TXspIconHelper xsp( count, property2->XSpName() );
- iXspIconHelper.Append( xsp );
- }
- aIconArray->AppendL(icon);
- }
-
- iListBox->ItemDrawer()->FormattedCellData()->SetIconArrayL( aIconArray );
-
- //Destroy: configuration,uriArray,contactManager
- //fieldTypeList,propertyArray,pbk2IconFactory
- CleanupStack::PopAndDestroy( 6,configuration );
- }
-// End of File