/*
* 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: Performs required preparations before encryption
* operations can place.
*
*/
#ifndef DEVENCUI_ENCRYPTIONOPERATOR_H_
#define DEVENCUI_ENCRYPTIONOPERATOR_H_
//INCLUDES
//System includes
#include <avkon.rsg>
#include <e32base.h>
#include <badesca.h> // for CDesCArrayFlat
//User Includes
// FORWARD DECLARATIONS
class CDevEncUiMemoryEntity;
class CEikonEnv;
class CAknViewAppUi;
class CRepository;
class CDevEncUiEncryptionOperator: public CBase
{
public:
// Constructors and destructor
static CDevEncUiEncryptionOperator* NewL( CEikonEnv& aEikonEnv,
CAknViewAppUi& aAppUi,
CRepository*& aCrSettings );
static CDevEncUiEncryptionOperator* NewLC( CEikonEnv& aEikonEnv,
CAknViewAppUi& aAppUi,
CRepository*& aCrSettings );
~CDevEncUiEncryptionOperator();
// Functions related to encryption
void HandlePhoneMemEncryptRequestL( CDevEncUiMemoryEntity* aMem, CDevEncUiMemoryEntity* aPrimaryMem = NULL );
void HandleMmcEncryptRequestL( CDevEncUiMemoryEntity* aMem,
TInt aCommand );
void HandleMmcDecryptRequestL( CDevEncUiMemoryEntity* aMem,
TInt aCommand );
void DestroyKeyQueryL( TBool aShowMmcNote );
void BatteryStatusCallback();
void SuggestMmcEncryptionL( CDevEncUiMemoryEntity* aMem );
void SuggestMmcDecryptionL( CDevEncUiMemoryEntity* aMem );
void SuggestMmcImportKeyL( CDevEncUiMemoryEntity* aMem,
TBool aFirstAttempt );
void ShowWrongKeyNoteL();
/**
* Displays an error note.
* @param aResourceId the error text to display
*/
void ErrorNoteL( TInt aResourceId,
TBool aWaitingNote = ETrue );
/**
* Displays an information note.
* @param aResourceId the text to display
*/
void InfoNoteL( TInt aResourceId,
TBool aWaitingNote = EFalse );
private:
CDevEncUiEncryptionOperator( CEikonEnv& aEikonEnv,
CAknViewAppUi& aAppUi,
CRepository*& aCrSettings );
// Second-phase constructor
void ConstructL();
TBool PrepareEncryptionL();
TBool PrepareDecryptionL();
void SetPowerMenuStatusL( TBool aOpen );
TBool MessageQueryL( TInt aResourceId,
TInt aSoftKeysId = R_AVKON_SOFTKEYS_OK_CANCEL );
TBool QueryDialogL( TInt aResourceId,
TInt aSoftKeysId = R_AVKON_SOFTKEYS_OK_CANCEL );
TBool DataQueryDialogL( TDes& aResult,
TInt aPromptResourceId,
TInt aMaxLength );
/**
* Displays a query dialog to let the user enter a password.
* @param aPromptResourceId the prompt text to display
* @param aPassword On return, contains the password
* @return ETrue if the user entered a password, EFalse if
* the dialog was cancelled.
*/
TBool PasswordQueryL( TInt aPromptResourceId,
TDes8& aPassword );
/**
* Checks if there's enough battery power to update.
* @return ETrue if battery OK or charger connected
*/
TBool CheckBatteryL();
/**
* Prompts the user for a key name and password, then creates
* a pkcs#5 encrypted key using the common utility component.
* @return ETrue if the key was created and saved successfully
*/
TBool CreateAndSaveKeyL();
/**
* Lets the user select a key and enter a password, then loads
* the specified key and takes it in use using the common utility
* component.
* @return ETrue if the key was loaded and set successfully
*/
TBool LoadAndSetKeyL();
/**
* Creates a random key and sets it in the security driver.
* @return ETrue if the key was created and set successfully
*/
TBool CreateKeyL();
/**
* Resets the key in the security driver (fills with null chars).
* Before destroying the key, a confirmation query is shown to
* the user.
*/
void DestroyKeyL();
void RemountMmcL();
TInt CheckMMCStatus();
// For testing, remove
void CheckNotesL();
void CheckNotesWithHeaderL();
// data
/** Not owned */
CEikonEnv& iEikEnv;
/** Not owned */
CAknViewAppUi& iAppUi;
/** Owned */
CDesCArrayFlat* iListQueryItemArray;
/** Not owned */
CRepository*& iCrSettings;
};
#endif /* DEVENCUI_ENCRYPTIONOPERATOR_H_ */
// END OF FILE