IMPSengine/datautils/src/impsvariant.cpp
changeset 0 094583676ce7
equal deleted inserted replaced
-1:000000000000 0:094583676ce7
       
     1 /*
       
     2 * Copyright (c) 2003 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:  Handler for bldvariants
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 #include    <featmgr.h>
       
    22 #include    <WvEngineVariant.hrh>
       
    23 
       
    24 #include    "WVEnginePrivateCRKeys.h"
       
    25 #include    <centralrepository.h>
       
    26 
       
    27 #include    "impsvariantAPI.h"
       
    28 #include    "impsvariant.h"
       
    29 
       
    30 #include    "impsutils.h"
       
    31 
       
    32 // ============================ MEMBER FUNCTIONS ===============================
       
    33 
       
    34 // ----------------------------------------------------------------------------
       
    35 // CImpsVariant::CImpsVariant
       
    36 // ----------------------------------------------------------------------------
       
    37 //
       
    38 CImpsVariant::CImpsVariant ()
       
    39     {
       
    40     }
       
    41 
       
    42 // ----------------------------------------------------------------------------
       
    43 // CImpsVariant::ConstructL
       
    44 // ----------------------------------------------------------------------------
       
    45 //
       
    46 void CImpsVariant::ConstructL()
       
    47     {
       
    48     iPointerPackage =
       
    49         reinterpret_cast<TThreadLocalStoragePackage*> ( Dll::Tls( ) );
       
    50     if ( iPointerPackage == NULL )
       
    51         {
       
    52         // create pointerPackage and store it into Tls
       
    53         iPointerPackage = new ( ELeave ) TThreadLocalStoragePackage;
       
    54         iPointerPackage->iFeatureBitMask = 0;
       
    55         iPointerPackage->iUserCount = 0;
       
    56         User::LeaveIfError( Dll::SetTls( iPointerPackage ) );
       
    57         }
       
    58 
       
    59     if ( iPointerPackage->iUserCount <= 0 )
       
    60         {
       
    61         // Initialize feature manager
       
    62         FeatureManager::InitializeLibL( );
       
    63         }
       
    64     iPointerPackage->iFeatureBitMask = 0;
       
    65     //////////////////////////////////////////////////////////////
       
    66     /*    TInt value( 0 );
       
    67         CRepository* repository = CRepository::NewLC( KCRUIDWVEngine ); // << repository
       
    68         User::LeaveIfError( repository->Get( KWVEngineFeatWapPushOverUDP, value ) );
       
    69         if ( value )
       
    70             {
       
    71             iPointerPackage->iFeatureBitMask = iPointerPackage->iFeatureBitMask & KWVEngineFeatWapPushOverUDP;
       
    72             }
       
    73         value  = 0;
       
    74         User::LeaveIfError( repository->Get( KWVEngineFeatOpenAPILauncher, value ) );
       
    75         if ( value )
       
    76             {
       
    77             iPointerPackage->iFeatureBitMask = iPointerPackage->iFeatureBitMask & KWVEngineFeatOpenAPILauncher;
       
    78             }
       
    79         CleanupStack::PopAndDestroy(); // >> repository
       
    80     */
       
    81     //////////////////////////////////////////////////////////////////
       
    82     // CHANGED
       
    83     CRepository* repository = NULL;
       
    84     TInt err( KErrNone );
       
    85     TInt value1( 1 );
       
    86     TInt value2( 1 );
       
    87     TRAP( err, repository = CRepository::NewL( KCRUIDWVEngine ) );
       
    88     if ( err == KErrNone )
       
    89         {
       
    90         CleanupStack::PushL( repository );
       
    91         TInt err2 = repository->Get( KWVEngineFeatWapPushOverUDP, value1 ) ;
       
    92         if ( err2 != KErrNone )
       
    93             {
       
    94             value1 = 1;
       
    95             }
       
    96         TInt err3 = repository->Get( KWVEngineFeatOpenAPILauncher, value2 ) ;
       
    97         if ( err3 != KErrNone )
       
    98             {
       
    99             value2 = 1;
       
   100             }
       
   101         CleanupStack::PopAndDestroy();
       
   102         }
       
   103     else
       
   104         {
       
   105 #ifndef _NO_IMPS_LOGGING_
       
   106         CImpsClientLogger::Log( _L( "CImpsVariant::ConstructL(): KCRUIDWVEngine not found from cenrep!!!" ) );
       
   107 #endif
       
   108         }
       
   109     repository = NULL;
       
   110     if ( value1 )
       
   111         {
       
   112         iPointerPackage->iFeatureBitMask = iPointerPackage->iFeatureBitMask | KWVEngineFeatWapPushOverUDP;
       
   113         }
       
   114     if ( value2 )
       
   115         {
       
   116         iPointerPackage->iFeatureBitMask = iPointerPackage->iFeatureBitMask | KWVEngineFeatOpenAPILauncher;
       
   117         }
       
   118     // END OF CHANGED
       
   119     ++iPointerPackage->iUserCount;
       
   120     User::LeaveIfError( Dll::SetTls( iPointerPackage ) );
       
   121     }
       
   122 
       
   123 // ----------------------------------------------------------------------------
       
   124 // CImpsVariant::NewLC
       
   125 // ----------------------------------------------------------------------------
       
   126 //
       
   127 EXPORT_C CImpsVariant* CImpsVariant::NewLC()
       
   128     {
       
   129     CImpsVariant* self = new ( ELeave ) CImpsVariant;
       
   130 
       
   131     CleanupStack::PushL( self );
       
   132     self->ConstructL();
       
   133 
       
   134     return self;
       
   135     }
       
   136 
       
   137 // ----------------------------------------------------------------------------
       
   138 // CImpsVariant::~CImpsVariant
       
   139 // ----------------------------------------------------------------------------
       
   140 //
       
   141 CImpsVariant::~CImpsVariant()
       
   142     {
       
   143     iPointerPackage =
       
   144         reinterpret_cast<TThreadLocalStoragePackage*> ( Dll::Tls( ) );
       
   145     if ( iPointerPackage )
       
   146         {
       
   147         --iPointerPackage->iUserCount;
       
   148         if ( iPointerPackage->iUserCount <= 0 )
       
   149             {
       
   150             FeatureManager::UnInitializeLib( );
       
   151             delete iPointerPackage;
       
   152             Dll::SetTls( NULL );
       
   153             }
       
   154         else
       
   155             {
       
   156             Dll::SetTls( iPointerPackage );
       
   157             }
       
   158         }
       
   159     }
       
   160 
       
   161 // ----------------------------------------------------------------------------
       
   162 // CImpsVariant::IsFeatureSupportedL
       
   163 // ----------------------------------------------------------------------------
       
   164 //
       
   165 EXPORT_C TBool CImpsVariant::IsFeatureSupportedL( TImpsVariants aVariant ) const
       
   166     {
       
   167     TBool ret( EFalse );
       
   168 // these are used for testing purposes
       
   169 #ifdef _USEDYNAMICPHONEBOOK
       
   170     if ( aVariant == EDpb )
       
   171         {
       
   172         return ETrue;
       
   173         }
       
   174 #endif
       
   175 #ifdef _STANDALONE_IP_CIR
       
   176     if ( aVariant == EIpCirStandalone )
       
   177         {
       
   178         return ETrue;
       
   179         }
       
   180 #endif
       
   181 #ifdef _WAPUDP_CIR
       
   182     if ( aVariant == EWAPUDP )
       
   183         {
       
   184         return ETrue;
       
   185         }
       
   186 #endif
       
   187 #ifdef _OPENAPI
       
   188     if ( aVariant == EOpenAPI )
       
   189         {
       
   190         return ETrue;
       
   191         }
       
   192 #endif
       
   193 
       
   194     switch ( aVariant )
       
   195         {
       
   196         case EDpb:
       
   197             {
       
   198             if ( FeatureManager::FeatureSupported( KFeatureIdPresence ) )
       
   199                 {
       
   200                 ret = ETrue;
       
   201                 }
       
   202             }
       
   203         break;
       
   204         case EIpCirStandalone:
       
   205             {
       
   206             if ( FeatureManager::FeatureSupported( KFeatureIdImpsStandaloneIpCir ) )
       
   207                 {
       
   208                 ret =  ETrue;
       
   209                 }
       
   210             }
       
   211         break;
       
   212         case EWAPUDP:
       
   213             {
       
   214             if ( iPointerPackage->iFeatureBitMask & KWvEngFeatWapPushOverUDP )
       
   215                 {
       
   216                 ret =  ETrue;
       
   217                 }
       
   218             }
       
   219         break;
       
   220         case EImLauncher:
       
   221             {
       
   222             if ( iPointerPackage->iFeatureBitMask & KWVEngFeatOpenAPILauncher )
       
   223                 {
       
   224                 ret =  ETrue;
       
   225                 }
       
   226             }
       
   227         break;
       
   228         default:
       
   229             // EOpenAPI not supported
       
   230             ret =  EFalse;
       
   231             break;
       
   232         }
       
   233     return ret;
       
   234     }
       
   235 
       
   236 //  End of File
       
   237 
       
   238