--- a/omaprovisioning/provisioning/ProvisioningBC/Src/CWPBioControl.cpp Wed Jun 23 19:10:17 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