phonebookui/Phonebook/PbkEngine_FM/src/Cfmpbkengineextension.cpp
changeset 0 e686773b3f54
child 21 9da50d567e3c
equal deleted inserted replaced
-1:000000000000 0:e686773b3f54
       
     1 /*
       
     2 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Implementation for CFmPbkEngineExtension.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDES
       
    21 #include "Cfmpbkengineextension.h"
       
    22 #include <PbkEngine_FMRes.rsg> // Common for all langugages
       
    23 #include <barsc.h>
       
    24 #include <bautils.h>
       
    25 #include <featmgr.h>
       
    26 
       
    27 #include <bldvariant.hrh>
       
    28 #include "PbkDataCaging.hrh"
       
    29 
       
    30 #include <CPbkConstants.h>
       
    31 #include <PbkEngUtils.h>
       
    32 #include <PhonebookVariant.hrh>
       
    33 #include "PbkFieldInfoWrite.h"
       
    34 #include "CPbkFieldsInfo.h"
       
    35 #include "CPbkFieldInfoGroup.h"
       
    36 #include <PbkConfig.hrh>
       
    37 
       
    38 /// Unnamed namespace for local definitions
       
    39 namespace {
       
    40 
       
    41 _LIT(KFmResFileName, "PbkEngine_FMRes.RSC"); // default resource file name
       
    42 _LIT(KFmResChineseFileName, "PbkEngine_FMChineseRes.RSC"); // Chinese variant
       
    43 _LIT(KFmResJapaneseFileName, "PbkEngine_FMJapaneseRes.RSC"); // Japanese
       
    44 
       
    45 enum TFieldType
       
    46     {
       
    47     ENickNameFieldType = 0,
       
    48     EVideoTelephonyFieldType,
       
    49     EJapaneseReadingFieldType,
       
    50     EVOIPFieldType,
       
    51     EPOCFieldType,
       
    52     EShareviewFieldType,
       
    53     ESIPFieldType,
       
    54     EOldVOIPFieldType,
       
    55     EOldPOCFieldType,
       
    56     EOldShareviewFieldType,
       
    57     ECODFieldType,
       
    58     EPrefixFieldType,
       
    59     ESuffixFieldType,
       
    60     EMegaOperatorFieldType,
       
    61     ELastFieldType // Must be last, used to indicate number of field types
       
    62     };
       
    63 
       
    64 #ifdef _DEBUG
       
    65 
       
    66 enum TPanicCode
       
    67     {
       
    68     EPanicPreCond_ConstructL = 1,
       
    69     EPanicPreCond_NewL
       
    70     };
       
    71 
       
    72 void Panic(TPanicCode aPanicCode)
       
    73     {
       
    74     _LIT(KPanicText, "CFmPbkEngineExtension");
       
    75     User::Panic(KPanicText, aPanicCode);
       
    76     };
       
    77 
       
    78 #endif // _DEBUG
       
    79 
       
    80 /**
       
    81  * Solves correct language specific FM engine's resource filename. 
       
    82  *
       
    83  * @return A reference to resource file
       
    84  */
       
    85 inline const TDesC& FmResFileName()
       
    86     {
       
    87     if (FeatureManager::FeatureSupported(KFeatureIdChinese))
       
    88         {
       
    89         return KFmResChineseFileName;
       
    90         }
       
    91     else if (FeatureManager::FeatureSupported(KFeatureIdJapanese))
       
    92         {
       
    93         return KFmResJapaneseFileName;
       
    94         }
       
    95     return KFmResFileName;
       
    96     }
       
    97 
       
    98 
       
    99 } // namespace
       
   100 
       
   101 
       
   102 // ================= MEMBER FUNCTIONS =======================
       
   103 
       
   104 inline CFmPbkEngineExtension::CFmPbkEngineExtension()
       
   105     {
       
   106     }
       
   107 
       
   108 inline void CFmPbkEngineExtension::ConstructL(
       
   109         const CPbkEngineExtensionInterface::TEngExtParams& aParam)
       
   110     {
       
   111     __ASSERT_DEBUG(aParam.iFs, Panic(EPanicPreCond_ConstructL));
       
   112 
       
   113     iFs = *aParam.iFs;
       
   114     RResourceFile pbkResFile;
       
   115     
       
   116     PbkEngUtils::FindAndOpenDefaultResourceFileLC(iFs,pbkResFile);
       
   117     pbkResFile.ConfirmSignatureL();
       
   118 
       
   119     iConstants = CPbkConstants::NewL(pbkResFile);
       
   120 
       
   121     CleanupStack::PopAndDestroy();  // pbkResFile
       
   122 
       
   123     PbkEngUtils::FindAndOpenResourceFileLC
       
   124         (iFs, FmResFileName(), KDC_RESOURCE_FILES_DIR, KPbkRomFileDrive, iResourceFile);
       
   125     iResourceFile.ConfirmSignatureL(0);
       
   126     CleanupStack::Pop();
       
   127     }
       
   128 
       
   129 CFmPbkEngineExtension* CFmPbkEngineExtension::NewL(TAny* aParam)
       
   130     {
       
   131     __ASSERT_DEBUG(aParam, Panic(EPanicPreCond_NewL));
       
   132     CFmPbkEngineExtension* self = new (ELeave) CFmPbkEngineExtension;
       
   133     CleanupStack::PushL(self);
       
   134     self->ConstructL(*static_cast<CPbkEngineExtensionInterface::TEngExtParams*>(aParam));
       
   135     CleanupStack::Pop(self);
       
   136     return self;
       
   137     }
       
   138 
       
   139 CFmPbkEngineExtension::~CFmPbkEngineExtension()
       
   140     {
       
   141     delete iConstants;
       
   142     iResourceFile.Close();
       
   143     }
       
   144 
       
   145 TBool CFmPbkEngineExtension::GetAdditionalFieldTypesResourceL
       
   146         (TFieldTypeResource& aResource)
       
   147     {
       
   148     TBool result = EFalse;
       
   149 
       
   150     switch (iCurrentResourceIndex)
       
   151         {
       
   152         case ENickNameFieldType:
       
   153             {
       
   154             if (iConstants->
       
   155                     LocallyVariatedFeatureEnabled(EPbkLVAddNickNameField))
       
   156                 {
       
   157                 GetFieldTypeL(aResource,
       
   158                               R_PHONEBOOK_ADD_NICK_NAME_FIELD_PROPERTIES,
       
   159                               R_CNTUI_ADD_NICK_NAME_FIELD_DEFNS);
       
   160                 result = ETrue;
       
   161                 }
       
   162             break;
       
   163             }
       
   164         case EVideoTelephonyFieldType:
       
   165             {
       
   166             if (iConstants->
       
   167                     LocallyVariatedFeatureEnabled(EPbkLVAddVideoTelephonyFields))
       
   168                 {
       
   169                 GetFieldTypeL(aResource,
       
   170                               R_PHONEBOOK_ADD_VIDEO_TELEPHONY_FIELD_PROPERTIES,
       
   171                               R_CNTUI_ADD_VIDEO_TELEPHONY_FIELD_DEFNS);
       
   172                 result = ETrue;
       
   173                 }
       
   174             break;
       
   175             }
       
   176         case EJapaneseReadingFieldType:
       
   177             {
       
   178             if (FeatureManager::FeatureSupported(KFeatureIdJapanese))
       
   179                 {
       
   180                 GetFieldTypeL(aResource,
       
   181                               R_PHONEBOOK_ADD_JAPANESE_READING_FIELD_PROPERTIES,
       
   182                               R_CNTUI_ADD_JAPANESE_READING_FIELD_DEFNS);
       
   183                 result = ETrue;
       
   184                 }
       
   185             break;
       
   186             }
       
   187         case EVOIPFieldType:
       
   188             {
       
   189             if (iConstants->LocallyVariatedFeatureEnabled(EPbkLVVOIP))
       
   190                 {
       
   191                 GetFieldTypeL(aResource,
       
   192                               R_PHONEBOOK_ADD_VOIP_FIELD_PROPERTIES,
       
   193                               R_CNTUI_ADD_VOIP_FIELD_DEFNS);
       
   194                 result = ETrue;
       
   195                 }
       
   196             break;
       
   197             }
       
   198         case EPOCFieldType:
       
   199             {
       
   200             if (iConstants->LocallyVariatedFeatureEnabled(EPbkLVPOC))
       
   201                 {
       
   202                 GetFieldTypeL(aResource,
       
   203                               R_PHONEBOOK_ADD_POC_FIELD_PROPERTIES,
       
   204                               R_CNTUI_ADD_POC_FIELD_DEFNS);
       
   205                 result = ETrue;
       
   206                 }
       
   207             break;
       
   208             }
       
   209         case EShareviewFieldType:
       
   210             {
       
   211             if (iConstants->LocallyVariatedFeatureEnabled(EPbkLVShareView))
       
   212                 {
       
   213                 GetFieldTypeL(aResource,
       
   214                               R_PHONEBOOK_ADD_SHARE_VIEW_FIELD_PROPERTIES,
       
   215                               R_CNTUI_ADD_SHARE_VIEW_FIELD_DEFNS);
       
   216                 result = ETrue;
       
   217                 }
       
   218             break;
       
   219             }
       
   220         case ESIPFieldType:
       
   221             {
       
   222             if (iConstants->LocallyVariatedFeatureEnabled(EPbkLVAddSIPFields))
       
   223                 {
       
   224                 GetFieldTypeL(aResource,
       
   225                               R_PHONEBOOK_ADD_SIP_FIELD_PROPERTIES,
       
   226                               R_CNTUI_ADD_SIP_FIELD_DEFNS);
       
   227                 result = ETrue;
       
   228                 }
       
   229             break;
       
   230             }
       
   231         case EOldVOIPFieldType:
       
   232             {
       
   233             if (iConstants->LocallyVariatedFeatureEnabled(EPbkLVVOIP))
       
   234                 {
       
   235                 GetFieldTypeL(aResource,
       
   236                               R_PHONEBOOK_ADD_OLD_VOIP_FIELD_PROPERTIES,
       
   237                               R_CNTUI_ADD_OLD_VOIP_FIELD_DEFNS);
       
   238                 result = ETrue;
       
   239                 }
       
   240             break;
       
   241             }
       
   242         case EOldPOCFieldType:
       
   243             {
       
   244             if (iConstants->LocallyVariatedFeatureEnabled(EPbkLVPOC))
       
   245                 {
       
   246                 GetFieldTypeL(aResource,
       
   247                               R_PHONEBOOK_ADD_OLD_POC_FIELD_PROPERTIES,
       
   248                               R_CNTUI_ADD_OLD_POC_FIELD_DEFNS);
       
   249                 result = ETrue;
       
   250                 }
       
   251             break;
       
   252             }
       
   253         case EOldShareviewFieldType:
       
   254             {
       
   255             if (iConstants->LocallyVariatedFeatureEnabled(EPbkLVShareView))
       
   256                 {
       
   257                 GetFieldTypeL(aResource,
       
   258                               R_PHONEBOOK_ADD_OLD_SHARE_VIEW_FIELD_PROPERTIES,
       
   259                               R_CNTUI_ADD_OLD_SHARE_VIEW_FIELD_DEFNS);
       
   260                 result = ETrue;
       
   261                 }
       
   262             break;
       
   263             }
       
   264         case ECODFieldType:
       
   265             {
       
   266             if (FeatureManager::FeatureSupported(KFeatureIdCallImagetext))
       
   267                 {
       
   268                 GetFieldTypeL(aResource,
       
   269                     R_PHONEBOOK_ADD_COD_FIELD_PROPERTIES,
       
   270                     R_CNTUI_ADD_COD_FIELD_DEFNS );
       
   271                 result = ETrue;
       
   272                 }
       
   273             break;
       
   274             }
       
   275         case EPrefixFieldType:
       
   276             {
       
   277             if (iConstants->
       
   278                     LocallyVariatedFeatureEnabled(EPbkLVAddMDOFields))
       
   279                 {
       
   280                 GetFieldTypeL(aResource,
       
   281                               R_PHONEBOOK_ADD_PREFIX_FIELD_PROPERTIES,
       
   282                               R_CNTUI_ADD_PREFIX_FIELD_DEFNS);
       
   283                 result = ETrue;
       
   284                 }
       
   285             break;
       
   286             }
       
   287 
       
   288         case ESuffixFieldType:
       
   289             {
       
   290             if (iConstants->
       
   291                     LocallyVariatedFeatureEnabled(EPbkLVAddMDOFields))
       
   292                 {
       
   293                 GetFieldTypeL(aResource,
       
   294                               R_PHONEBOOK_ADD_SUFFIX_FIELD_PROPERTIES,
       
   295                               R_CNTUI_ADD_SUFFIX_FIELD_DEFNS);
       
   296                 result = ETrue;
       
   297                 }
       
   298             break;
       
   299             }
       
   300 
       
   301         case EMegaOperatorFieldType:
       
   302             {
       
   303             if (iConstants->
       
   304                     LocallyVariatedFeatureEnabled(EVPbkLVMegaOperatorFields))
       
   305                 {
       
   306                 GetFieldTypeL(aResource,
       
   307                               R_PHONEBOOOK_ADD_MEGAOP_FIELD_PROPERTIES,
       
   308                               R_CNTUI_ADD_MEGAOP_FIELD_DEFNS);
       
   309                 result = ETrue;
       
   310                 }
       
   311             break;
       
   312             }
       
   313 
       
   314         default:
       
   315             {
       
   316             // no other possible field types
       
   317             break;
       
   318             }
       
   319         }
       
   320 
       
   321     ++iCurrentResourceIndex;
       
   322     return result;
       
   323     }
       
   324 
       
   325 void CFmPbkEngineExtension::GetFieldTypeL
       
   326         (TFieldTypeResource& aResource,
       
   327         TInt aPbkResId,
       
   328         TInt aCntResId)
       
   329     {
       
   330     HBufC8* pbkResBuffer = iResourceFile.AllocReadLC(aPbkResId);
       
   331     HBufC8* cntResBuffer = iResourceFile.AllocReadLC(aCntResId);
       
   332     aResource.iPbkRes = pbkResBuffer;
       
   333     aResource.iCntModelRes = cntResBuffer;
       
   334     CleanupStack::Pop(cntResBuffer);
       
   335     CleanupStack::Pop(pbkResBuffer);
       
   336     }
       
   337 
       
   338 TBool CFmPbkEngineExtension::ModifyFieldTypesL(CPbkFieldsInfo& /*aFieldsInfo*/)
       
   339     {
       
   340     return EFalse;
       
   341     }
       
   342 
       
   343 TInt CFmPbkEngineExtension::AdditionalFieldTypesResourceCount() const
       
   344     {
       
   345     return ELastFieldType;
       
   346     }
       
   347 
       
   348 // End of file