coreapplicationuis/SysAp/Src/memorycard/sysapdriveunlockhandler.cpp
branchRCL_3
changeset 20 c2c61fdca848
parent 19 924385140d98
--- 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