uifw/eikctl/src/EIKSECED.CPP
branchRCL_3
changeset 56 d48ab3b357f1
parent 55 aecbbf00d063
child 59 978afdc0236f
--- a/uifw/eikctl/src/EIKSECED.CPP	Tue Aug 31 15:28:30 2010 +0300
+++ b/uifw/eikctl/src/EIKSECED.CPP	Wed Sep 01 12:16:19 2010 +0100
@@ -230,6 +230,7 @@
     TBool iWindowSet;
     TBool iLaunchPenInputAutomatic;
     TBool iPartialScreenInput;
+    TBool iLockQuerySCT;
     };
 
 EXPORT_C void CEikSecretEditor::AknSetFont(const CFont &aFont)
@@ -582,16 +583,18 @@
     gc.UseFont(iFont);
 
     TSize size=iBorder.SizeDelta();
-
-    if ( iRevealSecretText )
-        {
-        gc.DrawText( iSecCharArr->Des(), iExtension->iTextRect, 
-            iAscent, iAlign, 0 );
-        }
-    else
-        {
-        gc.DrawText(iBuf, iExtension->iTextRect, iAscent, iAlign, 0);
-        }
+    if ( iExtension )
+    	{
+		if ( iRevealSecretText )
+			{
+			gc.DrawText( iSecCharArr->Des(), iExtension->iTextRect, 
+				iAscent, iAlign, 0 );
+			}
+		else
+			{
+			gc.DrawText(iBuf, iExtension->iTextRect, iAscent, iAlign, 0);
+			}
+    	}
         
     gc.DiscardFont();    
     }
@@ -623,11 +626,14 @@
 
 void CEikSecretEditor::ReportUpdate()
     {
-    TRAP_IGNORE (
-        iExtension->iExtendedInputCapabilities->ReportEventL(
-        CAknExtendedInputCapabilities::MAknEventObserver::EControlContentUpdatedInternally,
-        NULL );
-        )
+	if ( iExtension )
+		{
+        TRAP_IGNORE (
+            iExtension->iExtendedInputCapabilities->ReportEventL(
+            CAknExtendedInputCapabilities::MAknEventObserver::EControlContentUpdatedInternally,
+            NULL );
+            )
+		}
     }
 
 EXPORT_C void CEikSecretEditor::AppendCharacterL( TInt aKeyCode )
@@ -728,7 +734,7 @@
     TBool oldShown = iRevealSecretText;
     iRevealSecretText = aReveal;
 
-    if ( !COMPARE_BOOLS( oldShown, iRevealSecretText ) )
+    if ( !COMPARE_BOOLS( oldShown, iRevealSecretText ) && iExtension )
         {
         TInt caps = iExtension->iExtendedInputCapabilities->Capabilities();
         if ( iRevealSecretText )
@@ -784,15 +790,14 @@
     
 EXPORT_C void CEikSecretEditor::HandlePointerEventL(const TPointerEvent& aPointerEvent) 
     { 
-    if ( iFepState )
+    if ( iFepState && iExtension )
         {
         if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
             {
-            if ( iExtension 
-              && iExtension->iFeedback )
+            if ( iExtension->iFeedback )
                 {
                 // tactile feedback is always given on down event
-                iExtension->iFeedback->InstantFeedback( this, ETouchFeedbackEditor );
+                iExtension->iFeedback->InstantFeedback( this, ETouchFeedbackEdit );
                 }
             
             CAknExtendedInputCapabilities::
@@ -809,13 +814,13 @@
                 }
             }
         else if ( aPointerEvent.iType == TPointerEvent::EButton1Up && 
-            iExtension && !iExtension->iDisablePenInput)
+                  !iExtension->iDisablePenInput )
             {
-            if (iExtension && iExtension->iFeedback)
+            if ( iExtension->iFeedback )
                 {
                 // Edit feedback is given if PenInput will open on up event
                 iExtension->iFeedback->InstantFeedback( this,
-                                                        ETouchFeedbackEditor,
+                                                        ETouchFeedbackEdit,
                                                         ETouchFeedbackVibra,
                                                         aPointerEvent );
                 }
@@ -937,7 +942,8 @@
     editorState->SetFlags( EAknEditorFlagNoLRNavigation |
                            EAknEditorFlagLatinInputModesOnly |
                            EAknEditorFlagNoT9 |
-                           EAknEditorFlagUseSCTNumericCharmap );
+                           EAknEditorFlagUseSCTNumericCharmap |
+                           EAknEditorFlagAvkonSecretEditor );
 
     editorState->SetDefaultInputMode(EAknEditorSecretAlphaInputMode);
     editorState->SetCurrentInputMode(EAknEditorSecretAlphaInputMode);
@@ -1049,7 +1055,26 @@
                     ret = KErrGeneral;
                     }
                 break;
-
+            case ELockQuerySCT:
+                {
+                if ( iExtension )
+                    {
+                    iExtension->iLockQuerySCT = aFeatureParam;
+                    CAknEdwinState* edwinState = STATIC_CAST( CAknEdwinState*,State(KNullUid) );
+                    if ( iExtension->iLockQuerySCT && edwinState )
+                        {
+                        edwinState->SetSpecialCharacterTableResourceId(
+                                R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_FOR_LOCKCODE_SYMBOL_INPUT );
+                        TRAP_IGNORE( edwinState->ReportAknEdStateEventL( 
+                            MAknEdStateObserver::EAknEdwinStateEventStateUpdate ) );
+                        }
+                    }
+                else
+                    {
+                    ret = KErrGeneral;
+                    }
+                }
+                break;
             default:
                 ret = KErrNotSupported;
                 break;
@@ -1101,7 +1126,18 @@
                     ret = KErrGeneral;
                     }
                 break;
-
+            case ELockQuerySCT:
+                {
+                if ( iExtension )
+                    {
+                    aFeatureParam = iExtension->iLockQuerySCT;
+                    }
+                else
+                    {
+                    ret = KErrGeneral;
+                    }
+                }
+                break;
             default:
                 ret = KErrNotSupported;
                 break;
@@ -1119,7 +1155,8 @@
         {
         EDisablePenInput,
         ELaunchPenInputAutomatic,
-        EPartialScreenInput
+        EPartialScreenInput,
+        ELockQuerySCT       
         };
         
     TBool ret = EFalse;
@@ -1137,28 +1174,31 @@
     }
 
 void CEikSecretEditor::SetCursorFormat()
-    {    
-    iExtension->iCursor.iType = TTextCursor::ETypeRectangle;        
-    iExtension->iCursor.iFlags = 0;    
-    iExtension->iCursor.iHeight = AknLayoutUtils::CursorHeightFromFont( 
-        iFont->FontSpecInTwips() );
-    iExtension->iCursor.iAscent = AknLayoutUtils::CursorAscentFromFont( 
-        iFont->FontSpecInTwips() );
-    iExtension->iCursor.iWidth  = AknLayoutUtils::CursorWidthFromFont ( 
-        iFont->FontSpecInTwips() );
-    iExtension->iCursor.iColor = KRgbWhite;
-    if ( !iExtension->iWindowSet )
-        {
-#ifdef RD_UI_TRANSITION_EFFECTS_PHASE2
-        CRedirectionListener* listener = ( CRedirectionListener* )
-        CAknTransitionUtils::GetData( (TInt) this );
-        listener->SetWindows( &( iCoeEnv->RootWin() ), DrawableWindow() );
-#else           
-        iExtension->iWg = &( iCoeEnv->RootWin() );
-        iExtension->iWindow = DrawableWindow();
-#endif
-        iExtension->iWindowSet = ETrue;
-        }
+    { 
+	if ( iExtension )
+		{
+		iExtension->iCursor.iType = TTextCursor::ETypeRectangle;        
+		iExtension->iCursor.iFlags = 0;    
+		iExtension->iCursor.iHeight = AknLayoutUtils::CursorHeightFromFont( 
+			iFont->FontSpecInTwips() );
+		iExtension->iCursor.iAscent = AknLayoutUtils::CursorAscentFromFont( 
+			iFont->FontSpecInTwips() );
+		iExtension->iCursor.iWidth  = AknLayoutUtils::CursorWidthFromFont ( 
+			iFont->FontSpecInTwips() );
+		iExtension->iCursor.iColor = KRgbWhite;
+		if ( !iExtension->iWindowSet )
+			{
+	#ifdef RD_UI_TRANSITION_EFFECTS_PHASE2
+			CRedirectionListener* listener = ( CRedirectionListener* )
+			CAknTransitionUtils::GetData( (TInt) this );
+			listener->SetWindows( &( iCoeEnv->RootWin() ), DrawableWindow() );
+	#else           
+			iExtension->iWg = &( iCoeEnv->RootWin() );
+			iExtension->iWindow = DrawableWindow();
+	#endif
+			iExtension->iWindowSet = ETrue;
+			}
+		}
     }
 
 TPoint CEikSecretEditor::CursorPos()
@@ -1169,19 +1209,22 @@
     TInt textWidth( iRevealSecretText ? 
         iFont->TextWidthInPixels( *iSecCharArr ) : 
         iFont->CharWidthInPixels( KSecretChar ) * pos );
-    TInt x;
-    if ( iAlign == CGraphicsContext::ELeft )
-    	{
-        x = iExtension->iTextRect.iTl.iX + textWidth;
-    	}
-    else if (iAlign == CGraphicsContext::ECenter)
+    TInt x( 0 );
+    if ( iExtension )
     	{
-        x = iExtension->iTextRect.iTl.iX +
-            (iExtension->iTextRect.Width() + textWidth) / 2;
-    	}
-    else
-    	{
-    	x = iExtension->iTextRect.iBr.iX;
+		if ( iAlign == CGraphicsContext::ELeft )
+			{
+			x = iExtension->iTextRect.iTl.iX + textWidth;
+			}
+		else if (iAlign == CGraphicsContext::ECenter )
+			{
+			x = iExtension->iTextRect.iTl.iX +
+				(iExtension->iTextRect.Width() + textWidth) / 2;
+			}
+		else
+			{
+			x = iExtension->iTextRect.iBr.iX;
+			}
     	}
     TInt y( Rect().iTl.iY + iAscent );    
     return TPoint( x, y );
@@ -1236,11 +1279,11 @@
         TInt flags( edwinState->Flags() );
         if ( aEnable )
             {
-            flags &= ~EEikEdwinAvkonDisableCursor;
+            flags |= EAknEditorFlagTextCursorVisible;
             }
         else
             {
-            flags |= EEikEdwinAvkonDisableCursor;
+            flags &= ~EAknEditorFlagTextCursorVisible;
             }
         edwinState->SetFlags( flags );
         }    
@@ -1248,21 +1291,24 @@
 
 void CEikSecretEditor::UpdateCursor()
     {
-#ifdef RD_UI_TRANSITION_EFFECTS_PHASE2
-    CRedirectionListener* listener = ( CRedirectionListener* )
-        CAknTransitionUtils::GetData( (TInt) this );
-    listener->UpdateCursor( iExtension->iCursor );
-#else
-    if ( iExtension->iCursorEnabled )
-        {                
-        if ( iExtension->iWindow )
-            {            
-            iExtension->iWg->SetTextCursor( *iExtension->iWindow, CursorPos(), 
-                iExtension->iCursor );            
+    if ( iExtension )
+        {
+    #ifdef RD_UI_TRANSITION_EFFECTS_PHASE2
+        CRedirectionListener* listener = ( CRedirectionListener* )
+            CAknTransitionUtils::GetData( (TInt) this );
+        listener->UpdateCursor( iExtension->iCursor );
+    #else
+        if ( iExtension->iCursorEnabled )
+            {                
+            if ( iExtension->iWindow )
+                {            
+                iExtension->iWg->SetTextCursor( *iExtension->iWindow, CursorPos(), 
+                    iExtension->iCursor );            
+                }
+            iExtension->iCursorEnabled = ETrue;
             }
-        iExtension->iCursorEnabled = ETrue;
+    #endif   
         }
-#endif       
     }
 
 EXPORT_C void CEikSecretEditor::FocusChanged( TDrawNow /*aDrawNow*/ )