voipplugins/voipadapters/provisioningfile/src/WPProvisioningFile.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
equal deleted inserted replaced
20:65a3ef1d5bd0 21:f742655b05bf
     1 /*
       
     2 * Copyright (c) 2006-2007 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:  Handles provisioning document.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include    "WPProvisioningFile.h"
       
    21 #include    "WPOMAMsgHandler.h"
       
    22 #include    "WPProtocolProfileHandlerSIP.h"
       
    23 #include    "wpprovisioningfileconst.h"
       
    24 #include    "wpprovisioningfiledebug.h"
       
    25 
       
    26 #include    <CWPEngine.h>
       
    27 #include    <centralrepository.h>
       
    28 #include    <settingsinternalcrkeys.h>
       
    29 // CONSTANTS
       
    30 _LIT( KPathLetter, "E:" );
       
    31 _LIT( KFilePath, "\\data\\settings.wbxml" );
       
    32 
       
    33 // ============================ LOCAL FUNCTIONS ================================
       
    34 
       
    35 // ============================ MEMBER FUNCTIONS ===============================
       
    36 
       
    37 // -----------------------------------------------------------------------------
       
    38 // CWPProvisioningFile::CWPProvisioningFile
       
    39 // C++ default constructor can NOT contain any code, that
       
    40 // might leave.
       
    41 // -----------------------------------------------------------------------------
       
    42 //
       
    43 CWPProvisioningFile::CWPProvisioningFile( TFileName aFileName )
       
    44     : iIapAllowed( EFalse ),
       
    45     iInitDone( EFalse ),
       
    46     iFileName( aFileName )
       
    47     {
       
    48     }
       
    49 
       
    50 // -----------------------------------------------------------------------------
       
    51 // CWPProvisioningFile::ConstructL
       
    52 // Symbian 2nd phase constructor can leave.
       
    53 // -----------------------------------------------------------------------------
       
    54 //
       
    55 void CWPProvisioningFile::ConstructL()
       
    56     {
       
    57     FLOG( "[ProvisioningFile] CWPProvisioningFile::ConstructL" );
       
    58     
       
    59     iProvEngine = CWPEngine::NewL();
       
    60     
       
    61     iMsgHandler = CWPOMAMsgHandler::NewL();
       
    62     }
       
    63 
       
    64 // -----------------------------------------------------------------------------
       
    65 // CWPProvisioningFile::NewL
       
    66 // Two-phased constructor.
       
    67 // -----------------------------------------------------------------------------
       
    68 //
       
    69 EXPORT_C CWPProvisioningFile* CWPProvisioningFile::NewL( TFileName aFileName )
       
    70     {
       
    71     CWPProvisioningFile* self = CWPProvisioningFile::NewLC( aFileName );
       
    72     CleanupStack::Pop( self );
       
    73     return self;
       
    74     }
       
    75 
       
    76 // -----------------------------------------------------------------------------
       
    77 // CWPProvisioningFile::NewL
       
    78 // Two-phased constructor.
       
    79 // -----------------------------------------------------------------------------
       
    80 //
       
    81 CWPProvisioningFile* CWPProvisioningFile::NewLC( TFileName aFileName )
       
    82     {
       
    83     CWPProvisioningFile* self = new( ELeave ) CWPProvisioningFile( aFileName );
       
    84     CleanupStack::PushL( self );
       
    85     self->ConstructL();
       
    86     return self;
       
    87     }
       
    88 
       
    89 // -----------------------------------------------------------------------------
       
    90 // CWPProvisioningFile::Destructor
       
    91 // 
       
    92 // -----------------------------------------------------------------------------
       
    93 //
       
    94 CWPProvisioningFile::~CWPProvisioningFile()
       
    95     {
       
    96     delete iProvisioningDoc;
       
    97     if ( iSipHandler )
       
    98         {
       
    99         delete iSipHandler;
       
   100         iSipHandler = NULL;
       
   101         }
       
   102     delete iMsgHandler;
       
   103     delete iProvEngine;
       
   104     delete iCenRep;
       
   105     }
       
   106 
       
   107 // -----------------------------------------------------------------------------
       
   108 // CWPProvisioningFile::ProvFileContainsIapL
       
   109 //
       
   110 // -----------------------------------------------------------------------------
       
   111 //
       
   112 EXPORT_C TBool CWPProvisioningFile::ProvFileContainsIapL()
       
   113     {
       
   114     FLOG( "[ProvisioningFile] CWPProvisioningFile::ProvFileContainsIapL" );
       
   115     
       
   116     const TDesC16* settingsName;
       
   117     TBool iapExist( EFalse );
       
   118     
       
   119     if ( !iInitDone )
       
   120         {
       
   121         InitMsgL();
       
   122         }
       
   123     
       
   124     // Check is there IAP
       
   125     for ( TInt i = 0; i < iProvEngine->ItemCount(); i++ )
       
   126         {
       
   127         // Next settings
       
   128         settingsName = &iProvEngine->SummaryTitle( i );
       
   129         
       
   130         // Is settings IAP
       
   131         if ( !settingsName->Compare( KProvFileIapSetting ) )
       
   132             {
       
   133             // Message contains IAP settings
       
   134             iapExist = ETrue;
       
   135             }
       
   136         }
       
   137         
       
   138     return iapExist;        
       
   139     }
       
   140     
       
   141 // -----------------------------------------------------------------------------
       
   142 // CWPProvisioningFile::ProvFileL
       
   143 //
       
   144 // -----------------------------------------------------------------------------
       
   145 //
       
   146 EXPORT_C void CWPProvisioningFile::ProvFileL()
       
   147     {
       
   148     FLOG( "[ProvisioningFile] CWPProvisioningFile::ProvFileL" );
       
   149     
       
   150     if( iMsgHandler )
       
   151         {
       
   152         // Do the provisioning
       
   153         DoProvL();
       
   154         }
       
   155     }
       
   156     
       
   157 // -----------------------------------------------------------------------------
       
   158 // CWPProvisioningFile::ProvFileL
       
   159 //
       
   160 // -----------------------------------------------------------------------------
       
   161 //
       
   162 EXPORT_C void CWPProvisioningFile::ProvFileL( TUint32& aIapId )
       
   163     {
       
   164     FLOG( "[ProvisioningFile] CWPProvisioningFile::ProvFileL IAP" ); 
       
   165     
       
   166     if( iMsgHandler )
       
   167         {
       
   168         // Is offered IAP allowed
       
   169         iIapAllowed = ETrue;
       
   170         
       
   171         iIapId = aIapId;
       
   172                     
       
   173         // Do the provisioning
       
   174         DoProvL();
       
   175         }
       
   176     
       
   177     iIapAllowed = EFalse;        
       
   178     }    
       
   179 
       
   180 // -----------------------------------------------------------------------------
       
   181 // CWPProvisioningFile::DoProvL
       
   182 //
       
   183 // -----------------------------------------------------------------------------
       
   184 //
       
   185 void CWPProvisioningFile::DoProvL()
       
   186     {
       
   187     FLOG( "[ProvisioningFile] CWPProvisioningFile::DoProvL" ); 
       
   188     
       
   189     // Is init done
       
   190     if ( !iInitDone )
       
   191         {
       
   192         InitMsgL();
       
   193         }
       
   194     
       
   195     // Save OMA message
       
   196     SaveDocL();
       
   197     
       
   198     // If new IAP is allowed
       
   199     if( iIapAllowed )
       
   200         {
       
   201         for ( TInt i = 0; i < iSipHandler->ProvisionedCount(); i++ )
       
   202             {
       
   203             iSipHandler->SetProfilesIapL( i, iIapId );
       
   204             }
       
   205         }
       
   206     }
       
   207 
       
   208 // -----------------------------------------------------------------------------
       
   209 // CWPProvisioningFile::InitMsgL
       
   210 //
       
   211 // -----------------------------------------------------------------------------
       
   212 //
       
   213 void CWPProvisioningFile::InitMsgL()
       
   214     {
       
   215     FLOG( "[ProvisioningFile] CWPProvisioningFile::InitMsgL" );
       
   216     
       
   217     FLOG2( "[ProvisioningFile] *** CWPProvisioningFile::InitMsgL %S", &iFileName );
       
   218     if ( KErrNone == iFileName.Compare( KDefaultFilePath ) )
       
   219         {
       
   220         iFileName.Zero();
       
   221         iFileName.Append( KPathLetter );
       
   222         iFileName.Append( KFilePath );
       
   223         }
       
   224     // Read OMA message
       
   225     iMsgHandler->ReadProvFileL( iFileName );
       
   226     
       
   227     // Get OMA message
       
   228     if ( iProvisioningDoc )
       
   229         {
       
   230         delete iProvisioningDoc;
       
   231         iProvisioningDoc = NULL;
       
   232         }
       
   233     iProvisioningDoc = iMsgHandler->DocL();
       
   234 
       
   235     // Import the OMA message
       
   236     iProvEngine->ImportDocumentL( iProvisioningDoc->Des() );
       
   237 
       
   238     // Populate OMA message to Adapters
       
   239     iProvEngine->PopulateL();
       
   240     
       
   241     iInitDone = ETrue;
       
   242     FLOG( "[ProvisioningFile] CWPProvisioningFile::InitMsgL out" );
       
   243     }
       
   244     
       
   245 // -----------------------------------------------------------------------------
       
   246 // CWPProvisioningFile::SaveDocL
       
   247 //
       
   248 // -----------------------------------------------------------------------------
       
   249 //
       
   250 void CWPProvisioningFile::SaveDocL()
       
   251     {
       
   252     FLOG( "[ProvisioningFile] CWPProvisioningFile::SaveDocL" );
       
   253     
       
   254     const TDesC16* settingsName( NULL );
       
   255     
       
   256     // SIP Profile handler
       
   257     if ( iSipHandler )
       
   258         {
       
   259         delete iSipHandler;
       
   260         iSipHandler = NULL;
       
   261         }
       
   262     iSipHandler = CWPProtocolProfileHandlerSIP::NewL();
       
   263     
       
   264     // Message contains SIP information
       
   265     TBool sipEnable( EFalse );
       
   266     
       
   267     // Save OMA message
       
   268     for ( TInt i = 0; i < iProvEngine->ItemCount(); i++ )
       
   269         {
       
   270         // Next settings
       
   271         settingsName = &iProvEngine->SummaryTitle( i );
       
   272         
       
   273         // Ongoing setting
       
   274         if ( !settingsName->Compare( KProvFileIapSetting ) )
       
   275             {
       
   276             // Message contains IAP settings, which priority is higher than given IAPs
       
   277             iIapAllowed = EFalse;
       
   278             }
       
   279         else if ( !settingsName->Compare( KProvFileSipSetting ) )
       
   280             {
       
   281             // There is SIP setting
       
   282             sipEnable = ETrue;
       
   283             }
       
   284         
       
   285         iProvEngine->SaveL( i );
       
   286         }
       
   287     
       
   288     // If there was new SIP Profiles and new IAP is allowed, save provisioned SIP Ids
       
   289     if ( sipEnable && iIapAllowed )
       
   290         {
       
   291         // Lets save provisioned SIP Id
       
   292         iSipHandler->SetProvisioningIdL();
       
   293         }
       
   294     
       
   295     }
       
   296 
       
   297 //  End of File