omaprovisioning/provisioning/ProvisioningBC/Src/CWPBioControl.cpp
branchRCL_3
changeset 61 b183ec05bd8c
parent 59 13d7c31c74e0
child 62 19bba8228ff0
--- a/omaprovisioning/provisioning/ProvisioningBC/Src/CWPBioControl.cpp	Thu Aug 19 10:44:50 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,875 +0,0 @@
-/*
-* Copyright (c) 2002 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: 
-*     Bio control for Provisioning documents.
-*
-*/
-
-
-// INCLUDE FILES
-#include "CWPBioControl.h"
-
-#include <aknnotewrappers.h>
-#include <msvapi.h>
-#include <StringLoader.h>
-#include <CRichBio.h>
-#include <msgbiocontrolObserver.h>
-
-
-#include <ProvisioningBC.rsg>
-#include <bldvariant.hrh>
-#include <msvids.h>
-#include <biouids.h>
-#include <featmgr.h>
-#include <csxhelp/prov.hlp.hrh>
-#include <sysutil.h>
-#include "CWPEngine.h"
-#include "CWPAdapter.h"
-#include "MWPPhone.h"
-#include "WPPhoneFactory.h"
-#include "CWPPushMessage.h"
-#include "CWPBootstrap.h"
-#include "CWPSaver.h"
-#include "ProvisioningUIDs.h"
-#include "CWPCodeQueryDialog.h"
-#include "MWPContextManager.h"
-#include "ProvisioningDebug.h"
-#include "CWPNameValue.h"
-#include <aknmessagequerydialog.h> 
-#include "ProvisioningInternalCRKeys.h"
-// CONSTANTS
-/// Strings are loaded from this resource
-_LIT(KResourceFileName, "provisioningbc.rsc");
-/// Maximum number of items with same title before they get merged.
-const TInt KMaxDuplicates = 5;
-/// Maximum length of PIN code
-const TInt KMaxPinSize = 20;
-/// Number of retries for PIN
-// const TInt KPinRetries = 3; // Removed, because iMtmData1 data member of TMsvEntry in CWPMessage.cpp contains Max tries, default=3.
-///NONE
-_LIT(KNone,"");
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// Constructor.
-// -----------------------------------------------------------------------------
-//
-CWPBioControl::CWPBioControl( MMsgBioControlObserver& aObserver,
-                              CMsvSession* aSession,
-                              TMsvId aId,
-                              TMsgBioMode aEditorOrViewerMode,
-                              const RFile* aFile )
-                            : CMsgBioControl( aObserver,
-                                              aSession,
-                                              aId,
-                                              aEditorOrViewerMode,
-                                              aFile )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDMSyncAppEngine::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CWPBioControl::ConstructL()
-    {
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::ConstructL:" ) );
-    
-    FeatureManager::InitializeLibL();
-
-    if( IsEditor() ) //This control does not support editing mode.
-        {
-        User::Leave( KErrNotSupported );
-        }
-
-    LoadResourceL(KResourceFileName);
-    LoadStandardBioResourceL();
-
-    iEngine = CWPEngine::NewL();
-    iRichBio = new(ELeave) CRichBio( ERichBioModeEditorBase );
-
-    // this function leaves if not enough data exists
-    RestoreMsgL();
-
-    // Add items to CRichBio
-    AddItemsL();
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::ConstructL: done" ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CNSmlDMSyncAppEngine::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CWPBioControl* CWPBioControl::NewL( MMsgBioControlObserver& aObserver,
-                                             CMsvSession* aSession,
-                                             TMsvId aId,
-                                             TMsgBioMode aEditorOrViewerMode,
-                                             const RFile* aFile )
-    {
-
-    CWPBioControl* self = new( ELeave ) CWPBioControl( aObserver,
-                                                       aSession,
-                                                       aId,
-                                                       aEditorOrViewerMode,
-                                                       aFile );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-CWPBioControl::~CWPBioControl()
-    {
-    delete iRichBio;
-    delete iEngine;
-    delete iMessage;
-    FeatureManager::UnInitializeLib();
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::SetAndGetSizeL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::SetAndGetSizeL( TSize& aSize )
-    {
-    iRichBio->SetAndGetSizeL( aSize );
-    SetSizeWithoutNotification( aSize );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::SetMenuCommandSetL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::SetMenuCommandSetL( CEikMenuPane& aMenuPane )
-    {
-    AddMenuItemL( aMenuPane, R_MENU_SAVESETTING, ECmdSaveSettings );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::CurrentLineRect
-// ----------------------------------------------------------------------------
-//
-TRect CWPBioControl::CurrentLineRect() const
-    {
-    return iRichBio->CurrentLineRect();
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::IsFocusChangePossible
-// ----------------------------------------------------------------------------
-//
-TBool CWPBioControl::IsFocusChangePossible(
-                                         TMsgFocusDirection aDirection ) const
-    {
-    if (aDirection == EMsgFocusUp )
-        {
-        return iRichBio->IsCursorLocation( EMsgTop );
-        }
-    else
-        {
-        return EFalse;
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::IsCursorLocation
-// ----------------------------------------------------------------------------
-//
-TBool CWPBioControl::IsCursorLocation( TMsgCursorLocation aLocation ) const
-    {
-    return iRichBio->IsCursorLocation( aLocation );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::HeaderTextL
-// ----------------------------------------------------------------------------
-//
-HBufC* CWPBioControl::HeaderTextL() const
-    {
-    return StringLoader::LoadL( R_TITLE_PROVISIONING );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::HandleBioCommandL()
-// ----------------------------------------------------------------------------
-//
-TBool CWPBioControl::HandleBioCommandL(TInt aCommand)
-    {
-    TBool result( EFalse );
-
-    if ( aCommand == iBioControlObserver.FirstFreeCommand() + ECmdSaveSettings )
-        {
-        SaveSettingsL();
-        result = ETrue;
-        }
-    return result;
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::OptionMenuPermissionsL
-// ----------------------------------------------------------------------------
-//
-TUint32 CWPBioControl::OptionMenuPermissionsL() const
-    {
-    TUint32 perm( EMsgBioDelete | EMsgBioMessInfo | EMsgBioMove | EMsgBioExit );
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
-        {
-        perm |= EMsgBioHelp;
-        }
-    return perm;
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::OfferKeyEventL
-// ----------------------------------------------------------------------------
-//
-TKeyResponse CWPBioControl::OfferKeyEventL( const TKeyEvent& aKeyEvent,
-                                            TEventCode aType )
-    {
-    return iRichBio->OfferKeyEventL( aKeyEvent, aType );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::GetBioHelpContext
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::GetHelpContext( TCoeHelpContext& aContext ) const
-    {   
-    if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
-        {
-        aContext.iContext = KPROV_HLP_PROVISIONVIEW() ;    
-        aContext.iMajor = TUid::Uid( KProvisioningBCUid3 );
-        }
-    else
-        {
-        CCoeControl::GetHelpContext(aContext);
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::CountComponentControls
-// ----------------------------------------------------------------------------
-//
-TInt CWPBioControl::CountComponentControls() const
-    {
-    return 1;
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::ComponentControl
-// ----------------------------------------------------------------------------
-//
-CCoeControl* CWPBioControl::ComponentControl( TInt /*aIndex*/ ) const
-    {
-    return iRichBio;
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::SizeChanged()
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::SizeChanged()
-    {
-    iRichBio->SetExtent( Position(), iRichBio->Size() );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::FocusChanged
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::FocusChanged( TDrawNow aDrawNow )
-    {
-    iRichBio->SetFocus( IsFocused(), aDrawNow );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl::SetContainerWindowL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::SetContainerWindowL( const CCoeControl& aContainer )
-    {
-    CCoeControl::SetContainerWindowL( aContainer );
-    iRichBio->ConstructL(this);
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::VirtualHeight
-// ----------------------------------------------------------------------------
-//
-TInt CWPBioControl::VirtualHeight()
-    {
-    return iRichBio->VirtualHeight();
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::VirtualVisibleTop
-// ----------------------------------------------------------------------------
-//
-TInt CWPBioControl::VirtualVisibleTop()
-    {
-    return iRichBio->VirtualVisibleTop();
-    }
-
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::RestoreMsgL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::RestoreMsgL()
-    {
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL" ) );
-    
-    // Load the message from Messaging Server
-    CMsvEntry* entry = MsvSession().GetEntryL(iId);
-    CleanupStack::PushL( entry );
-    TMsvEntry tentry( entry->Entry() );
-    iMessage = CWPPushMessage::NewL();
-    CMsvStore* readStore = entry->ReadStoreL();
-    CleanupStack::PushL( readStore );
-    iMessage->RestoreL( *readStore );
-    CleanupStack::PopAndDestroy(); // readStore
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 1" ) );
-    // Fill the engine
-    TRAPD( result, iEngine->ImportDocumentL( iMessage->Body() ) );
-    if( result == KErrCorrupt )
-        {
-        FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL KErrMsgBioMessageNotValid " ) );
-        result = KErrMsgBioMessageNotValid;
-        }
-    FTRACE(RDebug::Print(_L("[ProvisioningBC] CWPBioControl::RestoreMsgL result (%d)"), result));
-    User::LeaveIfError( result );
-    
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 2 " ) );
-    TBool preAuthenticated( iMessage->Authenticated() );
-    // If the message was not authenticated, give a warning
-    AuthenticateL( *iMessage );
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 3 " ) );
-    if( !tentry.ReadOnly() && preAuthenticated != iMessage->Authenticated() )
-        {
-        // If the entry can be written to, get its edit store and save
-        // authentication flag. Failing is not dangerous, as the only
-        // effect is that the user has to re-enter the PIN.
-        FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 4 " ) );
-        TRAPD( ignoreError, SaveMessageL() );
-        if ( ignoreError ) ignoreError = 0; // prevent compiler warning	
-        }
-    
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 5 " ) );
-    iEngine->PopulateL();
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 6 " ) );
-    // Empty messages are not supported
-    if( iEngine->ItemCount() == 0 )
-        {
-        FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 7 " ) );
-        User::Leave( KErrMsgBioMessageNotValid );
-        }
-
-    TPtrC8 orig8( iMessage->Originator() );
-    HBufC* orig16 = HBufC::NewLC( orig8.Length() );
-    orig16->Des().Copy( orig8 );
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL 8 " ) );
-    if( iMessage->Authenticated() 
-        && iEngine->ContextExistsL( *orig16 ) )
-        {
-        TUint32 context( iEngine->ContextL( *orig16 ) );
-        iEngine->SetCurrentContextL( context );
-        }
-    else
-        {
-        iEngine->SetCurrentContextL( KWPMgrUidNoContext );
-        }
-
-    CleanupStack::PopAndDestroy(2); // orig16, entry
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::RestoreMsgL done" ) );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::AuthenticateL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::AuthenticateL( CWPPushMessage& aMessage )
-    {
-    if( !aMessage.Authenticated() )
-        {
-        // Try authentication and bootstrap without PIN.
-        
-	
-	      MWPPhone* phone = NULL;
-        TBuf<KMaxPinSize> imsi;
-        TRAPD(err, phone = WPPhoneFactory::CreateL());
-	
-	     if(err!=KErrNone)
-        {
-		      imsi = KNone;
-		
-        }
-        else
-        {
-        	imsi = phone->SubscriberId();
-        }
-        
-        
-        CWPBootstrap* bootstrap = CWPBootstrap::NewL( imsi );
-        
-        if(phone)
-        delete phone;
-
-	      CleanupStack::PushL( bootstrap );
-
-        CWPBootstrap::TBootstrapResult result( bootstrap->BootstrapL( 
-                                                                aMessage, 
-                                                                *iEngine, 
-                                                                KNullDesC ) );
-        if( result == CWPBootstrap::EPinRequired )
-            {
-            	CMsvEntry* entry = MsvSession().GetEntryL(iId);
-				TInt count = (entry->Entry()).MtmData1();
-            // We need to ask the PIN. Retry max. MtmData1 (=3, default) times if
-            // the user supplies from PIN.
-            TBuf<KMaxPinSize> pin;
-	            for( TInt i(0); i < count && !aMessage.Authenticated(); i++ )
-                {
-                pin.Zero();
-				CWPCodeQueryDialog* dlg = 
-				                        new (ELeave) CWPCodeQueryDialog( pin );
-				if (dlg->ExecuteLD( R_QUERY_PIN ) == 0) //R_DATA_QUERY
-				    {
-					    delete entry;
-					    entry = NULL;
-                    //enable user cancelling at any phase
-                    User::Leave( KLeaveWithoutAlert );
-				    }
-                result = bootstrap->BootstrapL( aMessage, *iEngine, pin );
-
-                // Wrong PIN. Give a note except on the last time. 
-                // Then the user will get note 
-                // R_QUERY_VERIFIC_FAILED_TOTALLY with OK key.
-                if( result == CWPBootstrap::EAuthenticationFailed 
-	                    && i < (const_cast <TMsvEntry&> (entry->Entry())).iMtmData1--)
-                    {
-	                      entry->ChangeL(entry->Entry());
-						i--;	                    
-						count = (entry->Entry()).MtmData1(); //(const_cast <TMsvEntry&> (entry->Entry())).iMtmData1;
-                    ErrorNoteL( R_TEXT_WRONG_PIN );
-                    }
-                }
-
-            // Still wrong PIN -> tell the user and delete the message.
-            if( !aMessage.Authenticated() )
-                {
-					delete entry;
-					entry = NULL;
-                CAknNoteDialog* dlg = new(ELeave) CAknNoteDialog;
-                dlg->ExecuteLD(R_QUERY_VERIFIC_FAILED_TOTALLY);
-                MsvSession().RemoveEntry( iId );
-                User::Leave( KLeaveWithoutAlert );
-                }
-	             if(entry)
-	             {
-	             	delete entry;
-	             }
-            }
-        if(result == CWPBootstrap::EAuthenticationFailed)
-        {
-        		
-        		CAknMessageQueryDialog* msg =  new(ELeave) CAknMessageQueryDialog;
-        		msg->ExecuteLD(R_MSG_AUTHENTICATION_FAILED);
-
-			MsvSession().RemoveEntry( iId );
-        		
-        		User::Leave( KLeaveWithoutAlert );
-        		
-        		
-        }
-        CleanupStack::PopAndDestroy( bootstrap );
-
-        // If the message is still not authenticated, show a note to user.
-        if( !aMessage.Authenticated() )
-            {   
-            CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-        
-            if ( !dlg->ExecuteLD(R_QUERY_NOTAUTHENTICATED) )
-                {                
-                User::Leave( KLeaveWithoutAlert );
-                }
-            }
-        }
-    if (aMessage.Authenticated() )
-        {
-        //update Cenrep key
-        TBuf8<100> orig;
-        orig.Copy(aMessage.Originator());
-        TRAPD(err, SetCenrepKeyL(orig));
-        User::LeaveIfError(err);
-
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::AddItemsL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::AddItemsL()
-    {
-    // Add help text before the actual items
-    HBufC* help = StringLoader::LoadLC( R_TEXT_HELPTEXT );
-    iRichBio->AddItemL( *help, KNullDesC );
-    CleanupStack::PopAndDestroy(); // help
-
-    RPointerArray<CWPNameValue>* array = CollectItemsLC();
-    CollateAndAddItemsL( *array );
-    CleanupStack::PopAndDestroy(); // array
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::CollectItemsL
-// ----------------------------------------------------------------------------
-//
-RPointerArray<CWPNameValue>* CWPBioControl::CollectItemsLC() const
-    {
-    RPointerArray<CWPNameValue>* array = 
-                                    new(ELeave) RPointerArray<CWPNameValue>;
-    CleanupStack::PushL( TCleanupItem( Cleanup, array ) );
-
-    TInt count( iEngine->ItemCount() );
-    for( TInt index = 0; index < count; index++ )
-        {
-        const TDesC& text = iEngine->SummaryText( index );
-        const TDesC& title = iEngine->SummaryTitle( index );
-
-        CWPNameValue* pair = CWPNameValue::NewLC( title, text );
-        User::LeaveIfError( array->Append( pair ) );
-        CleanupStack::Pop( pair );
-        }
-
-    array->Sort( TLinearOrder<CWPNameValue>( CWPBioControl::Compare ) );
-
-    return array;
-    }
-
-// -----------------------------------------------------------------------------
-// CWPBioControl::Cleanup
-// -----------------------------------------------------------------------------
-//
-void CWPBioControl::Cleanup( TAny* aAny )
-    {
-    RPointerArray<CWPNameValue>* array = 
-                       reinterpret_cast<RPointerArray<CWPNameValue>*>( aAny );
-    array->ResetAndDestroy();
-    array->Close();
-    delete array;
-    }
-
-// -----------------------------------------------------------------------------
-// CWPBioControl::Compare
-// -----------------------------------------------------------------------------
-//
-TInt CWPBioControl::Compare( const CWPNameValue& aItem1,
-                             const CWPNameValue& aItem2 )
-    {
-    return aItem1.Name().Compare( aItem2.Name() );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::CollateAndAddItemsL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::CollateAndAddItemsL( RPointerArray<CWPNameValue>& aItems )
-    {
-    // Add a pivot item
-    CWPNameValue* pivot = CWPNameValue::NewLC( KNullDesC, KNullDesC );
-    User::LeaveIfError( aItems.Append( pivot ) );
-    CleanupStack::Pop( pivot );
-
-    // Title of the items being currently collected
-    TPtrC currentTitle( KNullDesC );
-    // Items under the same title
-    RArray<TPtrC> pointers;
-    CleanupClosePushL( pointers );
-    for( TInt item = 0; item < aItems.Count(); item++ )
-        {
-        CWPNameValue* pair = aItems[ item ];
-
-        if( pair->Name().Compare( currentTitle ) != 0 )
-            {
-            // Title has changed. Inserted collected items into rich bio
-            if( pointers.Count() > KMaxDuplicates )
-                {
-                // More than KMaxDuplicates items. Put only one line with
-                // number of items.
-                HBufC* string = StringLoader::LoadLC( R_TEXT_NUMITEMS,
-					                                  pointers.Count() );
-                iRichBio->AddItemL( currentTitle, *string );
-                CleanupStack::PopAndDestroy( string );
-                }
-            else
-                {
-                // Insert all collected items into rich bio
-                for( TInt index = 0; index < pointers.Count(); index++ )
-                    {
-                    iRichBio->AddItemL( currentTitle, pointers[index] );
-                    // Make sure title is repeated only once
-                    currentTitle.Set( KNullDesC );
-                    }
-			    } 
-            // Change the current title and start collecting for it
-            currentTitle.Set( pair->Name() );
-            pointers.Reset();
-            }
-		if(  pair->Value().Compare( KNullDesC ) != 0  )
-			{
-			User::LeaveIfError( pointers.Append( pair->Value() ) );
-			}
-        }
-    // Delete pivot
-    aItems.Remove( aItems.Count() - 1 );
-    delete pivot;
-    CleanupStack::PopAndDestroy( &pointers );
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::SaveSettingsL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::SaveSettingsL()
-    {
-    if( SysUtil::FFSSpaceBelowCriticalLevelL( &iEikonEnv->FsSession() ) )
-        {
-        User::Leave( KErrDiskFull );
-        }
-
-    CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-    
-    if( !iMessage->Saved())
-    {
-    	DoSaveL();
-    	delete dlg;
-    }
-    
-    else
-    if( dlg->ExecuteLD(R_QUERY_ALREADY_SAVED) )
-        {
-        DoSaveL();
-        }
-    iMessage->SetSaved( ETrue );
-    SaveMessageL();
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::DoSaveL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::DoSaveL()
-    {
-    TInt numSaved( 0 );
-    CWPSaver* saver = new(ELeave) CWPSaver( *iEngine, EFalse );
-    HBufC* text=NULL;
-    TInt err( saver->ExecuteLD( numSaved ) );
-    TInt numAccessDenied = saver->GetNumAccessDenied();
-    TInt itemCount( iEngine->ItemCount() );
-    
-	if( (numSaved != itemCount) && (iEngine->GetAccessDenied()) )
-    	{
-	  numSaved = numSaved + 1 - numAccessDenied;
-	  iEngine->SetAccessDenied(EFalse);
-    	  err= KErrAccessDenied;
-    	}
-    
-    if( err >= 0 )
-        {
-        // Check if any setting can be made default
-        TBool setDefault( EFalse );
-        
-        for( TInt i( 0 ); i < itemCount && !setDefault; i++ )
-            {
-            if( iEngine->CanSetAsDefault( i ) )
-                {
-                setDefault = ETrue;
-                }
-            }
-        
-        // Ask the user if the saved settings should be 
-        // made default.
-       TInt result = KErrNone;
-        if( setDefault )
-            {
-            CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-            
-            if ( dlg->ExecuteLD(R_QUERY_SETDEFAULT) )
-                {
-                CWPSaver* setter = new(ELeave) CWPSaver( *iEngine, ETrue );
-                TInt numSet( 0 );
-                result = setter->ExecuteLD( numSet );
-                }             
-            }
-        
-        // All settings saved
-        if (result)
-            {
-            if(numSaved == 0)
-             	text = StringLoader::LoadLC( R_TEXT_NOTSAVED_SINGULAR_ZERO);
-            else if(numSaved == 1)
-            	text = StringLoader::LoadLC( R_TEXT_NOTSAVED_SINGULAR_ONE, numSaved );
-    				else        
-            	text = StringLoader::LoadLC( R_TEXT_NOTSAVED, numSaved );
-            ErrorNoteL( *text );
-            CleanupStack::PopAndDestroy(); // text
-            }
-        else
-            {
-            ConfirmationNoteL( R_TEXT_SAVED );
-            }
-        }
-    else
-        {
-        if( err == EWPAccessPointsProtected )
-            {
-            // Some problem in saving or user cancelled.
-            InformationNoteL( R_TEXT_AP_PROTECTED );
-            }
-        else
-            {
-            // Some problem in saving or user cancelled.
-            if(numSaved == 0)
-             	text = StringLoader::LoadLC( R_TEXT_NOTSAVED_SINGULAR_ZERO);
-            else if(numSaved == 1)
-            	text = StringLoader::LoadLC( R_TEXT_NOTSAVED_SINGULAR_ONE, numSaved );
-    				else        
-            	text = StringLoader::LoadLC( R_TEXT_NOTSAVED, numSaved );
-            ErrorNoteL( *text );
-            CleanupStack::PopAndDestroy( text );
-            }
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::SaveMessageL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::SaveMessageL()
-    {
-    CMsvEntry* entry = MsvSession().GetEntryL(iId);
-    CleanupStack::PushL( entry );
-
-    CMsvStore* editStore = entry->EditStoreL();
-    CleanupStack::PushL( editStore );
-    iMessage->StoreL( *editStore );
-    editStore->CommitL();
-    CleanupStack::PopAndDestroy(2); // editStore, entry
-    }
-
-void CWPBioControl::ErrorNoteL(const TDesC& aText)
-    {
-    CAknErrorNote* note = new(ELeave)CAknErrorNote( ETrue );
-    note->ExecuteLD(aText);
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::ErrorNoteL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::ErrorNoteL(TInt aStringResource)
-    {
-    HBufC* buf = StringLoader::LoadLC(aStringResource);
-    ErrorNoteL(*buf);
-    CleanupStack::PopAndDestroy(buf);
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::ConfirmationNoteL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::ConfirmationNoteL(TInt aStringResource)
-    {
-    HBufC* buf = StringLoader::LoadLC(aStringResource);
-    ConfirmationNoteL(*buf);
-    CleanupStack::PopAndDestroy(buf);
-    }
-    
-// ----------------------------------------------------------------------------
-// CWPBioControl ::InformationNoteL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::InformationNoteL(TInt aStringResource)
-    {
-    HBufC* buf = StringLoader::LoadLC(aStringResource);
-    InformationNoteL(*buf);
-    CleanupStack::PopAndDestroy(buf);
-    }
-    
-// ----------------------------------------------------------------------------
-// CWPBioControl ::ConfirmationNoteL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::ConfirmationNoteL(const TDesC& aText)
-    {
-    CAknConfirmationNote* note = new (ELeave) CAknConfirmationNote;
-    note->ExecuteLD(aText);
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::InformationNoteL
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::InformationNoteL(const TDesC& aText)
-    {
-    CAknInformationNote* note = new (ELeave) CAknInformationNote;
-    note->ExecuteLD(aText);
-    }
-
-// ----------------------------------------------------------------------------
-// CWPBioControl ::SetCenrepKey
-// ----------------------------------------------------------------------------
-//
-void CWPBioControl::SetCenrepKeyL(const TDesC8& aValue)
-    {
-
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::SetCenrepKeyL" ) );
-
-    CRepository* rep= NULL;
-    TInt errorStatus = KErrNone;
-
-    TRAPD( errVal, rep = CRepository::NewL( KCRUidOMAProvisioningLV ))
-    ;
-
-    if (errVal == KErrNone)
-        {
-        errorStatus = rep->Set(KOMAProvOriginatorContent, aValue);
-        }
-    else
-        {
-        errorStatus = errVal;
-        }
-
-    if (rep)
-        {
-        delete rep;
-        }
-
-    if (errorStatus != KErrNone)
-        {
-        User::Leave(errorStatus);
-        }
-
-    FLOG( _L( "[ProvisioningBC] CWPBioControl::SetCenrepKeyL done" ) );
-
-    }
-//  End of File