--- a/deviceencryption/DevEncUi/src/DevEncUiAppui.cpp Tue Feb 02 00:03:31 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,565 +0,0 @@
-/*
-* Copyright (c) 2005 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: Implementation of CDevEncUiAppUi.
-*
-*/
-
-// INCLUDE FILES
-#include <avkon.hrh>
-#include <centralrepository.h>
-#include <DevEncUi.rsg>
-#include <csxhelp/devenc.hlp.hrh>
-#include <e32event.h>
-#include <hlplch.h> // Help launcher
-#include <StringLoader.h> // TBD: Needed?
-#include <w32std.h>
-#include <DevEncExternalCRKeys.h>
-
-#include "DevEncLog.h"
-#include "DevEnc.hrh"
-#include "DevEncUi.pan"
-#include "DevEncUiAppui.h"
-#include "DevEncUiEncrView.h"
-#include "DevEncUiEncryptionOperator.h"
-#include "DevEncUiDecrView.h"
-
-#include "DevEncUiMainView.h"
-#include "DevEncUiMemoryEntity.h"
-#include "DevEncUids.hrh"
-
-#include <AknGlobalNote.h>
-
-//Local definitions
-const TInt KDevEncUiConstructionDelay( 1000000 );
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// --------------------------------------------------------------------------
-// CDevEncUiAppUi::ConstructL()
-// Symbian 2nd phase constructor can leave.
-// --------------------------------------------------------------------------
-//
-void CDevEncUiAppUi::ConstructL()
- {
- // Initialise app UI with standard value.
- BaseConstructL( EAknEnableSkin | EAknSingleClickCompatible );
-
- DFLOG( ">>CDevEncUiAppUi::ConstructL" );
-
- User::LeaveIfError( iFs.Connect() );
-
- DFLOG( "CDevEncUiAppUi::ConstructL => Create drive path" );
- // Create private folder. TBD: Needed?
- TInt error = iFs.CreatePrivatePath( EDriveC );
- if ( error == KErrAlreadyExists )
- {
- error = KErrNone;
- }
- DFLOG( "CDevEncUiAppUi::ConstructL => Leave ?" );
- User::LeaveIfError( error );
- DFLOG( "CDevEncUiAppUi::ConstructL => No, constructing CR" );
-
- // Central repository settings
- iCrSettings = CRepository::NewL( TUid::Uid( KCRDevEncUiSettings ) );
- DFLOG( "CDevEncUiAppUi::ConstructL => Adding observer" );
-
- // Create MMC observer
- iObserver = CMmcObserver::NewL( this, &iFs );
- iObserver->StartObserver();
-
- // Call the MMC callback function once to get the initial card status
- MMCStatusChangedL();
-
- DFLOG( "CDevEncUiAppUi::ConstructL => constructing mass memory" );
-
- CDevEncUiMemoryEntity* massMemory = CDevEncUiMemoryEntity::NewLC( iEikonEnv,
- EPhoneMemory );
-
- DFLOG( "CDevEncUiAppUi::ConstructL => adding to mem entities" );
- iMemEntities.AppendL( massMemory );
- CleanupStack::Pop( massMemory );
-
- DFLOG( "CDevEncUiAppUi::ConstructL => constructing memory card" );
-
- CDevEncUiMemoryEntity* memoryCard = CDevEncUiMemoryEntity::NewLC( iEikonEnv,
- EMemoryCard );
-
- DFLOG( "CDevEncUiAppUi::ConstructL => adding to mem entities" );
- iMemEntities.AppendL( memoryCard );
- CleanupStack::Pop( memoryCard );
-
- DFLOG( "CDevEncUiAppUi::ConstructL => constructing phone memory" );
-
- CDevEncUiMemoryEntity* phoneMemory = CDevEncUiMemoryEntity::NewLC( iEikonEnv,
- EPrimaryPhoneMemory );
-
- DFLOG( "CDevEncUiAppUi::ConstructL => adding to mem entities" );
- iMemEntities.AppendL( phoneMemory );
- CleanupStack::Pop( phoneMemory );
-
- DFLOG( "CDevEncUiAppUi::ConstructL() => Create enc operator" );
-
- // Create encryption operator
- iEncOperator = CDevEncUiEncryptionOperator::NewL( *iEikonEnv,
- *this,
- iCrSettings );
-
- DFLOG( "CDevEncUiAppUi::ConstructL() => Create views" );
-
- // Create views
- iMainView = CDevEncUiMainView::NewL( iMemEntities,
- iCrSettings,
- iMmcStatus );
-
- AddViewL( iMainView ); // transfer ownership
-
- iEncryptionView = CDevEncUiEncrView::NewL( iMemEntities );
- AddViewL( iEncryptionView ); // transfer ownership
-
- iDecryptionView = CDevEncUiDecrView::NewL( iMemEntities );
- AddViewL( iDecryptionView ); // transfer ownership
-
- SetDefaultViewL( *iMainView );
-
- DFLOG( "ConstructL 6" );
-
- iConstructionOnGoing = ETrue;
-
- iTimer = CDevEncUiTimer::NewL( this );
- iTimer->After( KDevEncUiConstructionDelay );
-
- DFLOG( "<<CDevEncUiAppUi::ConstructL" );
- }
-
-// --------------------------------------------------------------------------
-// CDevEncUiAppUi::CDevEncUiAppUi()
-// C++ default constructor can NOT contain any code, that might leave.
-// --------------------------------------------------------------------------
-//
-CDevEncUiAppUi::CDevEncUiAppUi()
- {
- // No implementation required
- }
-
-// --------------------------------------------------------------------------
-// CDevEncUiAppUi::~CDevEncUiAppUi()
-// Destructor.
-// --------------------------------------------------------------------------
-//
-CDevEncUiAppUi::~CDevEncUiAppUi()
- {
- DFLOG( ">>CDevEncUiAppUi::~CDevEncUiAppUi" );
- delete iObserver;
- iFs.Close();
- delete iEncOperator;
- if (iMemEntities.Count())
- iMemEntities[ EMemoryCard ]->RemoveObserver( this );
- for ( TInt i = 0; i < iMemEntities.Count(); i++ )
- {
- delete iMemEntities[i];
- }
- iMemEntities.Close();
- delete iCrSettings;
- delete iTimer;
- }
-
-// --------------------------------------------------------------------------
-// CDevEncUiAppUi::HandleCommandL()
-// Takes care of command handling.
-// --------------------------------------------------------------------------
-//
-void CDevEncUiAppUi::HandleCommandL( TInt aCommand )
- {
- DFLOG( ">>CDevEncUiAppUi::HandleCommandL" );
-
- switch( aCommand )
- {
- // These commands are specific to the memory card
- case EDevEncUiCommandEncryptWithoutSavingKey: // fall through
- case EDevEncUiCommandEncryptAndSaveKey:
- case EDevEncUiCommandEncryptWithRestoredKey:
- {
- // Pass the MMC memory entity to the operator, along with the command
- iEncOperator->HandleMmcEncryptRequestL( iMemEntities[ EMemoryCard ],
- aCommand );
- break;
- }
-
- case EDevEncUiCommandDecrypt: // fall through
- case EDevEncUiCommandDecryptAndTurnOffEncryption:
- {
- // Pass the MMC memory entity to the operator, along with the command
- iEncOperator->HandleMmcDecryptRequestL( iMemEntities[ EMemoryCard ],
- aCommand );
- break;
- }
-
- case EDevEncUiCommandHelp:
- {
- DisplayHelpL();
- break;
- }
-
- case EAknSoftkeyBack:
- {
- // Get the current view
- TVwsViewId wsViewId;
- TInt err = GetActiveViewId( wsViewId );
- if ( ( err != KErrNone ) ||
- ( wsViewId.iAppUid.iUid != KDevEncUiUid ) )
- {
- User::Leave( err );
- }
-
- // Go to the main view from the encryption and decryption views
- if ( wsViewId.iViewUid.iUid == EDevEncUiEncrViewId ||
- wsViewId.iViewUid.iUid == EDevEncUiDecrViewId )
- {
- ActivateLocalViewL( TUid::Uid( EDevEncUiMainViewId ) );
- }
- if ( wsViewId.iViewUid.iUid == EDevEncUiMainViewId )
- {
- Exit();
- }
- break;
- }
-
- case EEikCmdExit: // fall through
- case EAknSoftkeyExit:
- {
- Exit();
- break;
- }
-
- default:
- Panic( EDevEncUi );
- break;
- }
- }
-
-// --------------------------------------------------------------------------
-// Called by the framework when the app is moved to or from foreground.
-//
-// --------------------------------------------------------------------------
-//
-void CDevEncUiAppUi::HandleForegroundEventL( TBool aForeground )
- {
- DFLOG( "CDevEncUiAppUi::HandleForegroundEventL" );
- DFLOG2( "CDevEncUiAppUi::HandleForegroundEventL => aForeground = %d ", aForeground );
- CAknAppUi::HandleForegroundEventL( aForeground );
-
- iForeground = aForeground;
-
- if( iConstructionOnGoing )
- {
- DFLOG( "CDevEncUiAppUi::HandleForegroundEventL => Construction on going" );
- if( iTimer )
- {
- iTimer->Cancel();
- }
- iTimer->After( KDevEncUiConstructionDelay );
- }
- }
-
-// --------------------------------------------------------------------------
-// Called by the framework before the options menu is shown.
-// Sets the correct menu items.
-// --------------------------------------------------------------------------
-//
-void CDevEncUiAppUi::DynInitMenuPaneL( TInt /*aResourceId*/,
- CEikMenuPane* /*aMenuPane*/ )
- {
- }
-
-// --------------------------------------------------------------------------
-// Called by the framework before the context-sensitive help is shown.
-// Sets the correct menu items.
-// --------------------------------------------------------------------------
-//
-//CArrayFix<TCoeHelpContext>* CDevEncUiAppUi::HelpContextL()
-// {
-// TCoeHelpContext& aContext
-// }
-
-// --------------------------------------------------------------------------
-// Called by the framework before the context-sensitive help is shown.
-// Sets the correct menu items.
-// --------------------------------------------------------------------------
-void CDevEncUiAppUi::DisplayHelpL()
- {
- CArrayFix<TCoeHelpContext>* contexts =
- new ( ELeave ) CArrayFixFlat<TCoeHelpContext>( 1 );
- CleanupStack::PushL( contexts );
- TCoeHelpContext context;
- context.iMajor = TUid::Uid( KDevEncUiUid );
-
- // Get the currently active view
- TVwsViewId wsViewId;
- TInt err = GetActiveViewId( wsViewId );
- if ( ( err != KErrNone ) ||
- ( wsViewId.iAppUid.iUid != KDevEncUiUid ) )
- {
- User::Leave( err );
- }
-
- // Set the help context for the current view
- switch ( wsViewId.iViewUid.iUid )
- {
- case EDevEncUiEncrViewId:
- {
- context.iContext = KES_HLP_ENCRYPTION_ENCRYPT;
- }
- break;
- case EDevEncUiDecrViewId:
- {
- context.iContext = KES_HLP_ENCRYPTION_DECRYPT;
- }
- break;
- default: // Main view
- {
- context.iContext = KES_HLP_ENCRYPTION_MAIN;
- }
- break;
- }
-
- contexts->AppendL( context );
- CleanupStack::Pop( contexts );
- HlpLauncher::LaunchHelpApplicationL( iCoeEnv->WsSession(), contexts );
- }
-
-// --------------------------------------------------------------------------
-// Called by CDevEncMmcObserver when MMC status changes.
-//
-// --------------------------------------------------------------------------
-void CDevEncUiAppUi::MMCStatusChangedL()
- {
- DFLOG( "CDevEncUiAppUi::MMCStatusChangedL" );
- TVolumeInfo volInfo;
-
- TInt err = iFs.Volume( volInfo, /*EDriveE*/EDriveF );
- switch ( err )
- {
- case KErrNone:
- {
- // Readable MMC inserted
- DFLOG( "MMC inserted" );
- iMmcStatus = EMmcOk;
- break;
- }
-
- case KErrNotReady:
- {
- // MMC ejected
- DFLOG( "MMC ejected" );
- iMmcStatus = EMmcNotPresent;
- break;
- }
-
- case KErrCorrupt:
- {
- // Corrupt or unformatted MMC, or wrong key
- DFLOG( "MMC corrupt, unformatted or encrypted with other key" );
- iMmcStatus = EMmcNotReadable;
- break;
- }
-
- default:
- {
- DFLOG2( "RFs::Volume returned error %d", err );
- break;
- }
- } // switch
- }
-
-// --------------------------------------------------------------------------
-// Called by memory entity when memory status changes.
-//
-// --------------------------------------------------------------------------
-void CDevEncUiAppUi::UpdateInfo( TDevEncUiMemoryType aType,
- TUint aState,
- TUint /*aProgress*/ )
- {
- DFLOG( "CDevEncUiAppUi::UpdateInfo" );
- TInt error( KErrNone );
- TRAP( error, DoUpdateInfoL( aType, aState ) );
- DFLOG2( "CDevEncUiAppUi::DoUpdateInfo returned %d", error );
- }
-
-// --------------------------------------------------------------------------
-// Helper function called by UpdateInfo when memory status changes.
-//
-// --------------------------------------------------------------------------
-void CDevEncUiAppUi::DoUpdateInfoL( TDevEncUiMemoryType aType,
- TUint aState )
- {
- DFLOG( ">>CDevEncUiAppUi::DoUpdateInfoL" );
- if ( aType != EMemoryCard )
- {
- return;
- }
-
- // Prevent re-entry
- if ( iStatusUpdateOngoing )
- {
- return;
- }
- iStatusUpdateOngoing = ETrue;
-
- DFLOG3( "CDevEncUiAppUi::DoUpdateInfoL, type %d, state %d",
- aType, aState );
- DFLOG2( "Mmc state %d", iMmcStatus );
- DFLOG2( "Enc state %d", iMmcEncState );
-
- // Check encryption key status
- TInt mmcKeyInDriver( 0 );
- iCrSettings->Get( KDevEncUserSettingMemoryCard, mmcKeyInDriver );
-
- if ( ( iMmcStatus == EMmcOk ) &&
- ( iMmcEncState == EUnmounted ) &&
- ( aState == EDecrypted ) )
- {
- // A readable memory card has just been inserted
-
- if ( mmcKeyInDriver )
- {
- // We have a valid encryption key, but the newly inserted
- // card is decrypted. Ask if the user wants to encrypt.
- // (see UI spec 2.13)
- iEncOperator->SuggestMmcEncryptionL(
- iMemEntities[ EMemoryCard ] );
- }
- }
-
- if ( ( iMmcStatus == EMmcNotReadable ) &&
- ( iMmcEncState == EUnmounted ) &&
- ( aState == ECorrupted ) )
- {
- // An unreadable memory card has just been inserted
-
- if ( mmcKeyInDriver )
- {
- // We seem to have the wrong encryption key in the driver.
- // Inform the user that the card cannot be used.
- // (see UI spec 2.16)
- iEncOperator->ErrorNoteL(
- R_DEVENCUI_TEXT_NOTE_INSERTON_UNUSEDMEMORYCARD );
- }
- else
- {
- DFLOG( "CDevEncUiAppUi::DoUpdateInfoL => SuggestMmcDecryption" );
- // We have no encryption key in the driver.
- // Ask if the user wants to import a key and decrypt.
- // (see UI spec 2.17)
- iEncOperator->SuggestMmcDecryptionL(
- iMemEntities[ EMemoryCard ] );
- }
- }
-
- iMmcEncState = aState;
- iStatusUpdateOngoing = EFalse;
- DFLOG( "<<CDevEncUiAppUi::DoUpdateInfoL" );
- }
-
-// --------------------------------------------------------------------------
-// Called by the CDevEncUiTimer when the event is generated.
-//
-// --------------------------------------------------------------------------
-void CDevEncUiAppUi::Timeout()
- {
- DFLOG( "CDevEncUiAppUi::Timeout()" );
-
- if( iForeground )
- {
- DFLOG( "CDevEncUiAppUi::Timeout() => Construction completed" );
- //the construction is completed now
- iConstructionOnGoing = EFalse;
- // This class needs to observe memory card status changes.
- // (This call results in a call to UpdateInfo, hence we need to be fully
- // constructed before this.)
- TRAP_IGNORE(iMemEntities[ EMemoryCard ]->AddObserverL( this ));
-
- }
- }
-
-// -----------------------------------------------------------------------------
-// CDevEncUiAppUi::ProcessCommandParametersL
-// From CEikAppUi
-// -----------------------------------------------------------------------------
-//
-TBool CDevEncUiAppUi::ProcessCommandParametersL(
- TApaCommand /*aCommand*/,
- TFileName& /*aDocumentName*/,
- const TDesC8& /*aTail*/ )
- {
- return ETrue;
- }
-
-// -----------------------------------------------------------------------------
-// CDevEncUiAppUi::OpenFileL
-// -----------------------------------------------------------------------------
-//
-void CDevEncUiAppUi::OpenFileL(const TDesC& /*aFilename*/)
- {
- DFLOG("CDevEncUiAppUi::OpenFileL");
- }
-
-// -----------------------------------------------------------------------------
-// CDevEncUiAppUi::OpenFileL()
-// -----------------------------------------------------------------------------
-//
-void CDevEncUiAppUi::OpenFileL(RFile& aFile)
- {
- _LIT(KTargetDir,"c:\\data\\others\\");
- TBuf16<100> destinationPath;
- destinationPath.Copy( KTargetDir );
- TBuf16<250> sourcePath;
- aFile.FullName( sourcePath );
-
- // if the paths are the same, the copy operation will not be executed
- if ( sourcePath.Left( destinationPath.Length() ).CompareF( destinationPath ) )
- {
- // copy the file to Others folder
- TRAPD(err, CopyL( sourcePath, destinationPath ));
-
- if( err == KErrNone )
- {
- iEncOperator->InfoNoteL( R_DEVENCUI_TEXT_NOTE_SAVEINFO, ETrue );
- ActivateLocalViewL( TUid::Uid( EDevEncUiMainViewId ) );
- }
- else
- {
- Exit();
- }
- }
- else
- {
- ActivateLocalViewL( TUid::Uid( EDevEncUiMainViewId ) );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CDevEncUiAppUi::Copy()
-// -----------------------------------------------------------------------------
-//
-void CDevEncUiAppUi::CopyL(const TDesC &anOld, const TDesC &aNew)
- {
- CFileMan* fileMan=CFileMan::NewL( iFs );
- CleanupStack::PushL( fileMan );
-
- User::LeaveIfError(fileMan->Copy( anOld, aNew ));
-
- CleanupStack::PopAndDestroy( fileMan );
- }
-
-// End of File