--- a/coreapplicationuis/SysAp/Src/memorycard/sysapdriveunlockhandler.cpp Tue Aug 31 15:24:25 2010 +0300
+++ b/coreapplicationuis/SysAp/Src/memorycard/sysapdriveunlockhandler.cpp Wed Sep 01 12:24:48 2010 +0100
@@ -53,8 +53,7 @@
const TBool aMemoryCardLockSupported ) :
iSysApDriveList( aSysApDriveList ),
iSysApAppUi( aSysApAppUi ),
- iMemoryCardLockSupported( aMemoryCardLockSupported ),
- iMemCardPwdDialog(NULL)
+ iMemoryCardLockSupported( aMemoryCardLockSupported )
{
}
@@ -68,12 +67,8 @@
_L( "CSysApDriveUnlockHandler::~CSysApDriveUnlockHandler" ) ) );
iIgnoreQueryResult = ETrue;
- if (iMemCardPwdDialog!=NULL)
- {
- //MemoryCardDialog already exist
- delete iMemCardPwdDialog;
- iMemCardPwdDialog = NULL;
- }
+ delete iQueryShowCB;
+ delete iMemoryCardDialog;
}
// ---------------------------------------------------------------------------
@@ -82,6 +77,16 @@
//
void CSysApDriveUnlockHandler::StartUnlock()
{
+ TBool isOngoing( IsQueryOngoing() );
+
+ TRACES( RDebug::Print(
+ _L( "CSysApMCSysApMMCUnlockObserver::StartUnlock: ongoing: %d" ),
+ isOngoing ) );
+
+ if ( isOngoing )
+ {
+ return;
+ }
TRAPD( err, DoStartQueryIfNeededL() );
if ( err != KErrNone )
{
@@ -145,6 +150,7 @@
// Mark handled and start next query
iSysApDriveList.MarkDriveUnlockQueryShown( iDriveToUnlock );
+ DoStartQueryAsyncIfNeeded();
}
// ---------------------------------------------------------------------------
@@ -169,23 +175,19 @@
//
void CSysApDriveUnlockHandler::ShowUnlockQueryL()
{
- iDriveToUnlock = iSysApDriveList.DriveToUnlock();
TRACES( RDebug::Print(
_L( "CSysApMCSysApMMCUnlockObserver::ShowUnlockQueryL: drive: %d" ),
iDriveToUnlock ) );
- if (iMemCardPwdDialog!=NULL)
+ if ( !iMemoryCardDialog )
{
- //PowerMenu already exist
- delete iMemCardPwdDialog;
- iMemCardPwdDialog = NULL;
- }
- TRACES( RDebug::Print(_L("CSysApAppUi::HandleKeyEventL, JEELani 01") ) );
- iMemCardPwdDialog = CHbDeviceInputDialogSymbian::NewL();
- TRACES( RDebug::Print(_L("CSysApAppUi::HandleKeyEventL, JEELani 02") ) );
- iMemCardPwdDialog->ShowL();
- TRACES( RDebug::Print(_L("CSysApAppUi::HandleKeyEventL, JEELani 03") ) );
-}
+ CAknMemoryCardDialog* mmcDialog = CAknMemoryCardDialog::NewLC( this );
+ iMemoryCardDialog = mmcDialog; // temporary variable used for hiding codescanner error
+ iMemoryCardDialog->SetSelfPointer( &iMemoryCardDialog );
+ TDriveNumber drive( static_cast< TDriveNumber >( iDriveToUnlock ) );
+ iMemoryCardDialog->UnlockCardLD( drive, ETrue );
+ }
+ }
// ---------------------------------------------------------------------------
// CSysApDriveUnlockHandler::IsQueryOngoing
@@ -193,7 +195,7 @@
//
TBool CSysApDriveUnlockHandler::IsQueryOngoing() const
{
- return 0;
+ return ( iMemoryCardDialog || iQueryShowCB );
}
// ---------------------------------------------------------------------------
@@ -203,19 +205,10 @@
void CSysApDriveUnlockHandler::DoStartQueryIfNeededL()
{
iDriveToUnlock = iSysApDriveList.DriveToUnlock();
-
if ( iDriveToUnlock == KErrNotFound )
{
- _LIT(KChargingNote,"Phone does not found drive to unlock");
- HBufC* aString = HBufC16::NewLC(150);
- TPtrC aStringPointer = aString->Des();
- aStringPointer.Set(KChargingNote);
- TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
- iSysApAppUi.ShowExampleUiNoteL( aStringPointer );
- CleanupStack::PopAndDestroy(); // aString
return;
}
-
if ( iMemoryCardLockSupported )
{
ShowUnlockQueryL();
@@ -223,13 +216,6 @@
else
{
iSysApAppUi.ShowQueryL( ESysApMemoryCardLockedNote );
- _LIT(KChargingNote,"Phone does not support locked memory cards");
- HBufC* aString = HBufC16::NewLC(150);
- TPtrC aStringPointer = aString->Des();
- aStringPointer.Set(KChargingNote);
- TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
- iSysApAppUi.ShowExampleUiNoteL( aStringPointer );
- CleanupStack::PopAndDestroy(); // aString
iSysApDriveList.MarkDriveUnlockQueryShown( iDriveToUnlock );
}
}
@@ -246,6 +232,18 @@
DoStopUnlock( KErrNone );
return;
}
+ delete iQueryShowCB;
+ iQueryShowCB = NULL;
+ iQueryShowCB = new CAsyncCallBack(
+ TCallBack( QueryShowCB, this ), CActive::EPriorityStandard );
+ if ( iQueryShowCB )
+ {
+ iQueryShowCB->CallBack();
+ }
+ else
+ {
+ DoStopUnlock( KErrNoMemory );
+ }
}
// ---------------------------------------------------------------------------
@@ -260,117 +258,12 @@
_L( "CSysApMCSysApMMCUnlockObserver::DoStopUnlock: error: %d" ),
aError ) );
}
- ReleaseMemoryForInputCardDialog();
iIgnoreQueryResult = ETrue;
+ delete iMemoryCardDialog;
+ iMemoryCardDialog = NULL;
+ delete iQueryShowCB;
+ iQueryShowCB = NULL;
iIgnoreQueryResult = EFalse;
}
-void CSysApDriveUnlockHandler::ReleaseMemoryForInputCardDialog()
- {
- if (iMemCardPwdDialog!=NULL)
- {
- //MemoryCardDialog already exist
- delete iMemCardPwdDialog;
- iMemCardPwdDialog = NULL;
- }
- }
-
-TInt CSysApDriveUnlockHandler::CheckMemoryDialogIfNeeded()
- {
- TRACES( RDebug::Print(_L( "CSysApDriveUnlockHandler::CheckMemoryDialogIfNeeded(): Begin" )));
- TDriveNumber drive( static_cast< TDriveNumber >( iDriveToUnlock ) );
- TRACES( RDebug::Print(_L( "CSysApDriveUnlockHandler::CheckMemoryDialogIfNeeded()" )));
- TPtrC aStringPointer11 = iMemCardPwdDialog->getTextL();
- ConvertCharactersToPwd(aStringPointer11,iPassword);
-
- if(!aStringPointer11.Length())
- {
- return EFalse; // It meant user has pressed OK without password
- }
-
- TRACES( RDebug::Print(_L( "CSysApMCSysApMMCUnlockObserver::RunL; iPassword %S" ),&iPassword));
- CEikonEnv* eikEnv = CEikonEnv:: Static();
- TInt err = eikEnv->FsSession().UnlockDrive(drive,iPassword,ETrue);
- ReleaseMemoryForInputCardDialog();
-
- if ( err == KErrNone)
- {
- TRACES( RDebug::Print(_L( "CSysApAppUi::ReleaseMemoryCardCustomDialogMemory(), Drive Unlocked Succesfully" )));
- _LIT(KUnlockNote,"The memory is unlocked!");
- HBufC* aString = HBufC16::NewLC(150);
- TPtrC aStringPointer = aString->Des();
- aStringPointer.Set(KUnlockNote);
- iSysApAppUi.ShowExampleUiNoteL( aStringPointer );
- CleanupStack::PopAndDestroy(); // aString
- return ETrue;
- }
- else if( err == KErrAccessDenied )
- {
- TRACES( RDebug::Print(_L( "CSysApAppUi::ReleaseMemoryCardCustomDialogMemory(), Password InCorrect" )));
- _LIT(KUnlockDeniedNote,"The password is incorrect, try again!");
- HBufC* aString = HBufC16::NewLC(150);
- TPtrC aStringPointer = aString->Des();
- aStringPointer.Set(KUnlockDeniedNote);
- iSysApAppUi.ShowExampleUiNoteL( aStringPointer );
- CleanupStack::PopAndDestroy(); // aString
- return EFalse;
- }
- else if( err == KErrAlreadyExists )
- {
- TRACES( RDebug::Print(_L( "CSysApAppUi::ReleaseMemoryCardCustomDialogMemory(), Already been Drive Unlocked" )));
- _LIT(KUnlockAlreadyExistNote,"The disk has already been unlocked!");
- HBufC* aString = HBufC16::NewLC(150);
- TPtrC aStringPointer = aString->Des();
- aStringPointer.Set(KUnlockAlreadyExistNote);
- iSysApAppUi.ShowExampleUiNoteL( aStringPointer );
- CleanupStack::PopAndDestroy(); // aString
- return ETrue;
- }
- else if( err == KErrNotSupported )
- {
- TRACES( RDebug::Print(_L( "CSysApAppUi::ReleaseMemoryCardCustomDialogMemory(), Media does not support password locking." )));
- _LIT(KUnlockNotSupporrtedNote,"The media does not support password locking!");
- HBufC* aString = HBufC16::NewLC(150);
- TPtrC aStringPointer = aString->Des();
- aStringPointer.Set(KUnlockNotSupporrtedNote);
- TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
- iSysApAppUi.ShowExampleUiNoteL( aStringPointer );
- CleanupStack::PopAndDestroy(); // aString
- return ETrue;
- }
- else
- {
- // check for error -18 what it is .
- _LIT(KUnlockOperationCancelNote,"Error occurred, operation cancelled!");
- HBufC* aString = HBufC16::NewLC(150);
- TPtrC aStringPointer = aString->Des();
- aStringPointer.Set(KUnlockOperationCancelNote);
- TRACES( RDebug::Print( _L("CSysApWsClient::RunL(): Key EEventKeyUp 01") ) );
- iSysApAppUi.ShowExampleUiNoteL( aStringPointer );
- CleanupStack::PopAndDestroy(); // aString
- return ETrue;
- }
-}
-
-HBufC8* CSysApDriveUnlockHandler::Convert16to8L(TDesC16& aStr)//const
- {
-
- HBufC8* newFrom1 = HBufC8::NewL(aStr.Length());
-
- newFrom1->Des().Copy(aStr);
-
- return newFrom1;
- }
-
-void CSysApDriveUnlockHandler::ConvertCharactersToPwd(TDesC& aWord, TDes8& aConverted)
-{
- aConverted.FillZ(aConverted.MaxLength());
- aConverted.Zero();
-
- if (aWord.Length())
- {
- aConverted.Copy( (TUint8*)(&aWord[0]), aWord.Size() );
- }
-}
-
// End of File