terminalsecurity/SCP/SCPClient/src/SCPQueryDialog.cpp
changeset 2 5594fba90824
parent 0 b497e44ab2fc
child 5 3f7d9dbe57c8
--- a/terminalsecurity/SCP/SCPClient/src/SCPQueryDialog.cpp	Thu Jan 07 13:15:03 2010 +0200
+++ b/terminalsecurity/SCP/SCPClient/src/SCPQueryDialog.cpp	Mon Jan 18 21:00:49 2010 +0200
@@ -74,7 +74,8 @@
 			  iPreviousCharacterWasInvalid( EFalse ),
 			  iPrioritySet( EFalse ),
 			  iPriorityDropped( EFalse ),
-			  iKeyUsed ( NULL )
+			  iKeyUsed ( NULL ),
+			  isCallSoftkeyAdded(EFalse)
 	{		 
 	}
 	
@@ -537,15 +538,21 @@
             if ( queryControl != NULL )
                 {
                 queryControl->RevealSecretText( ETrue );
+                if (isCallSoftkeyAdded == EFalse)
+                {
+                	isCallSoftkeyAdded = ETrue;
                 HBufC* cbaLabel = NULL;
 				Dprint( (_L("CSCPQueryDialog::OfferKeyEventL(): R_AVKON_SOFTKEY_CALL_TEXT") ));
                 TRAPD ( err, cbaLabel =
                         StringLoader::LoadL( R_AVKON_SOFTKEY_CALL_TEXT) );
                 if ( err == KErrNone )
                 {
+                	ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyOk);
                 TRAP ( err, ButtonGroupContainer().AddCommandToStackL( 0, EAknSoftkeyEmergencyCall,
                         *cbaLabel) );
+				ButtonGroupContainer().DrawDeferred();
                 delete cbaLabel;
+                }
               }
                 }            
             }
@@ -555,14 +562,26 @@
             if ( queryControl != NULL )
                 {
                 queryControl->RevealSecretText( EFalse );
+			if(aType == EEventKey)
+			{
                 HBufC* cbaLabel = NULL;
 				Dprint( (_L("CSCPQueryDialog::OfferKeyEventL(): R_SCPDIALOG_OK_TEXT") ));
                 TRAPD ( err , cbaLabel= StringLoader::LoadL(R_SCPDIALOG_OK_TEXT) );
                 if ( err == KErrNone )
                 {
+					if (isCallSoftkeyAdded)
+					{
+						isCallSoftkeyAdded = EFalse;
+						ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyEmergencyCall);
+					}
+					else
+					{
+					ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyOk);
+					}
                 TRAP ( err , ButtonGroupContainer().AddCommandToStackL(0,EAknSoftkeyOk,*cbaLabel) );
                 ButtonGroupContainer().DrawDeferred();
                 delete cbaLabel;
+				}
             	  }
                 }
             }
@@ -715,6 +734,15 @@
                 TRAP ( err, cbaLabel= StringLoader::LoadL(R_SCPDIALOG_OK_TEXT) );
                 if ( err == KErrNone )
                 {
+                	if (isCallSoftkeyAdded)
+						{
+							isCallSoftkeyAdded = EFalse;
+							ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyEmergencyCall);
+						}
+						else
+						{
+							ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyOk);
+						}
                 	TRAP ( err , ButtonGroupContainer().AddCommandToStackL(0, EAknSoftkeyOk, *cbaLabel) );
                 	ButtonGroupContainer().DrawDeferred();
                 	delete cbaLabel;