diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/Presentation/src/Pbk2ContactNameFormatterFactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/Presentation/src/Pbk2ContactNameFormatterFactory.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,169 @@ +/* +* Copyright (c) 2002-2007 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: +* Name formatter factory. +* +*/ + + +#include "Pbk2ContactNameFormatterFactory.h" + +// From Phonebook2 +#include "Pbk2DataCaging.hrh" +#include "CPbk2ContactNameFormatter.h" +#include "CPbk2JapaneseContactNameFormatter.h" +#include "CPbk2ChineseContactNameFormatter.h" +#include "Pbk2PresentationUtils.h" +#include +#include + +// From Virtual Phonebook +#include + +// System includes +#include +#include + +namespace { + +MPbk2ContactNameFormatter* CreateFormatterL( + const MVPbkFieldTypeList& aMasterFieldTypeList, + const CPbk2SortOrderManager& aSortOrderManager, + CVPbkFieldTypeSelector* aTitleFieldSelector, + const TDesC& aUnnamedText ) + { + MPbk2ContactNameFormatter* result = NULL; + + FeatureManager::InitializeLibL(); + TBool chinese = FeatureManager::FeatureSupported( KFeatureIdChinese ); + FeatureManager::UnInitializeLib(); + + if ( chinese ) + { + result = CPbk2ChineseContactNameFormatter::NewL( aUnnamedText, + aMasterFieldTypeList, aSortOrderManager, aTitleFieldSelector ); + } + else + { + result = CPbk2ContactNameFormatter::NewL( aUnnamedText, + aMasterFieldTypeList, aSortOrderManager, aTitleFieldSelector ); + } + + + return result; + } + +MPbk2ContactNameFormatter* CreateFormatterL( + const MVPbkFieldTypeList& aMasterFieldTypeList, + const CPbk2SortOrderManager& aSortOrderManager, + TResourceReader* aTitleFieldSelectorReader, + const TDesC* aUnnamedText, + RFs* aRFs ) + { + RFs ownFs; + RFs fs; + + if ( !aRFs ) + { + User::LeaveIfError( ownFs.Connect() ); + CleanupClosePushL( ownFs ); + fs = ownFs; + } + else + { + fs = *aRFs; + } + + RPbk2LocalizedResourceFile resFile( &fs ); + resFile.OpenLC( KPbk2RomFileDrive, + KDC_RESOURCE_FILES_DIR, + Pbk2PresentationUtils::PresentationResourceFile() ); + + CVPbkFieldTypeSelector* titleFieldSelector = NULL; + + HBufC* unnamed = NULL; + if ( !aUnnamedText ) + { + TResourceReader reader; + reader.SetBuffer( resFile.AllocReadLC( R_QTN_PHOB_UNNAMED ) ); + unnamed = reader.ReadHBufCL(); + CleanupStack::PopAndDestroy(); // reader + CleanupStack::PushL( unnamed ); + } + else + { + unnamed = aUnnamedText->AllocLC(); + } + + if ( !aTitleFieldSelectorReader ) + { + // Use default title fields + TResourceReader reader; + reader.SetBuffer( resFile.AllocReadLC( R_TITLE_FIELD_SELECTOR ) ); + titleFieldSelector = + CVPbkFieldTypeSelector::NewL( reader, aMasterFieldTypeList ); + CleanupStack::PopAndDestroy(); // reader + } + else + { + titleFieldSelector = CVPbkFieldTypeSelector::NewL( + *aTitleFieldSelectorReader, aMasterFieldTypeList ); + } + CleanupStack::PushL( titleFieldSelector ); + + // Ownership of titleFieldSelector changes + MPbk2ContactNameFormatter* result = CreateFormatterL( aMasterFieldTypeList, + aSortOrderManager, titleFieldSelector, *unnamed ); + + CleanupStack::Pop( titleFieldSelector ); + CleanupStack::PopAndDestroy(2); // resFile, unnamed + if ( ownFs.Handle() ) + { + CleanupStack::PopAndDestroy(); // ownFs + } + + return result; + } +} + + +EXPORT_C MPbk2ContactNameFormatter* Pbk2ContactNameFormatterFactory::CreateL + ( const MVPbkFieldTypeList& aMasterFieldTypeList, + const CPbk2SortOrderManager& aSortOrderManager, + RFs* aRFs ) + { + return CreateFormatterL( aMasterFieldTypeList, aSortOrderManager, + NULL, NULL, aRFs ); + } + +EXPORT_C MPbk2ContactNameFormatter* Pbk2ContactNameFormatterFactory::CreateL + ( const TDesC& aUnnamedText, + const MVPbkFieldTypeList& aMasterFieldTypeList, + const CPbk2SortOrderManager& aSortOrderManager, + RFs* aRFs ) + { + return CreateFormatterL( aMasterFieldTypeList, aSortOrderManager, + NULL, &aUnnamedText, aRFs ); + } + +EXPORT_C MPbk2ContactNameFormatter* Pbk2ContactNameFormatterFactory::CreateL + ( const MVPbkFieldTypeList& aMasterFieldTypeList, + const CPbk2SortOrderManager& aSortOrderManager, + TResourceReader& aTitleFieldSelectorReader, + const TDesC* aUnnamedText, + RFs* aRFs ) + { + return CreateFormatterL( aMasterFieldTypeList, aSortOrderManager, + &aTitleFieldSelectorReader, aUnnamedText, aRFs ); + }