uifw/eikctl/src/EIKMFNE.CPP
branchRCL_3
changeset 55 aecbbf00d063
parent 51 fcdfafb36fe7
child 56 d48ab3b357f1
--- a/uifw/eikctl/src/EIKMFNE.CPP	Thu Aug 19 10:11:06 2010 +0300
+++ b/uifw/eikctl/src/EIKMFNE.CPP	Tue Aug 31 15:28:30 2010 +0300
@@ -104,128 +104,6 @@
     User::Panic(KPanicCat, aPanic);
     }
 
-NONSHARABLE_CLASS(CEikTimeEditorExtension) : public CBase, 
-	public CAknExtendedInputCapabilities::MAknEventObserver 
-    {
-public:
-    static CEikTimeEditorExtension* NewL();
-    virtual ~CEikTimeEditorExtension();
-private: 
-    CEikTimeEditorExtension();
-
-    void ConstructL();
-public:
-    /**
-     * From CAknExtendedInputCapabilities::MAknEventObserver
-     * Handle an event
-     *
-     * @since S60 v9.2
-     * @param aEvent An event, see TInputCapabilitiesEvent
-     * @param aParams Event dependent parameters
-     */
-
-    void HandleInputCapabilitiesEventL( TInt aEvent, TAny* aParams );
-public:
-    CEikTimeEditor * iEditor;
-    };
-
-CEikTimeEditorExtension* CEikTimeEditorExtension::NewL()
-    {
-	CEikTimeEditorExtension* self = new (ELeave) CEikTimeEditorExtension();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-
-CEikTimeEditorExtension::~CEikTimeEditorExtension()
-    {
-
-    }
-
-CEikTimeEditorExtension::CEikTimeEditorExtension()
-    {
-    }
-
-void CEikTimeEditorExtension::ConstructL()
-    {
-    }
-
-void CEikTimeEditorExtension::HandleInputCapabilitiesEventL( TInt aEvent, TAny* /*aParams*/ )
-	{
-    switch ( aEvent )
-        {
-        case CAknExtendedInputCapabilities::MAknEventObserver::EChangeAmPm:
-        	if ( iEditor )
-	            {
-        	    iEditor->ChangeAmPm();
-	            }
-            break;
-        }
-    return;
-	}
-
-
-NONSHARABLE_CLASS(CEikTimeAndDateEditorExtension) : public CBase, 
-	public CAknExtendedInputCapabilities::MAknEventObserver 
-    {
-public:
-    static CEikTimeAndDateEditorExtension* NewL();
-    virtual ~CEikTimeAndDateEditorExtension();
-private: 
-    CEikTimeAndDateEditorExtension();
-
-    void ConstructL();
-public:
-    /**
-     * From CAknExtendedInputCapabilities::MAknEventObserver
-     * Handle an event
-     *
-     * @since S60 v9.2
-     * @param aEvent An event, see TInputCapabilitiesEvent
-     * @param aParams Event dependent parameters
-     */
-
-    void HandleInputCapabilitiesEventL( TInt aEvent, TAny* aParams );
-public:
-    CEikTimeAndDateEditor * iEditor;
-    };
-
-CEikTimeAndDateEditorExtension* CEikTimeAndDateEditorExtension::NewL()
-    {
-	CEikTimeAndDateEditorExtension* self = new (ELeave) CEikTimeAndDateEditorExtension();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-
-CEikTimeAndDateEditorExtension::~CEikTimeAndDateEditorExtension()
-    {
-
-    }
-
-CEikTimeAndDateEditorExtension::CEikTimeAndDateEditorExtension()
-    {
-    }
-
-void CEikTimeAndDateEditorExtension::ConstructL()
-    {
-    }
-
-void CEikTimeAndDateEditorExtension::HandleInputCapabilitiesEventL( TInt aEvent, TAny* /*aParams*/ )
-	{
-    switch ( aEvent )
-        {
-        case CAknExtendedInputCapabilities::MAknEventObserver::EChangeAmPm:
-        	if ( iEditor )
-	            {
-        	    iEditor->ChangeAmPm();
-	            }
-            break;
-        }
-    return;
-	}
 NONSHARABLE_CLASS(CEikMfneExtension) : public CBase, public MCoeFepAwareTextEditor 
     {
 public:
@@ -277,6 +155,7 @@
         iExtendedInputCapabilitiesProvider;
     TInt iClipGcToRect; // Mainly for 0/1 values
     TInt iDisablePenInput; // Mainly for 0/1 values
+    TBool iTwiceTap;   
     TBool iCursorShown; 
     TBool iFingerSupport;
     TInt iFingerParam;
@@ -287,7 +166,6 @@
     MTouchFeedback* iFeedback;
     TBool iLaunchPenInputAutomatic;
     TBool iPartialScreenInput;
-    TBool iChangeAmPm;
     };
 
 // Implementation of the extension
@@ -1734,7 +1612,7 @@
     if ( !ConsumesUpAndDownKeys() && (code==EKeyDownArrow || code==EKeyUpArrow))
         return EKeyWasNotConsumed;
 
-    if ((aType==EEventKey) && (iCurrentField!=ENullIndex) && iExtension &&
+    if ((aType==EEventKey) && (iCurrentField!=ENullIndex) && 
         ( aKeyEvent.iRepeats == 0 || code == EKeyLeftArrow || 
             code == EKeyRightArrow || code == EKeyDownArrow || code == EKeyUpArrow ) )
         {
@@ -1864,7 +1742,7 @@
     {
     const CFont& font=*Font();
     TBool drawAllFields = ETrue;
-    if ( aHandleDeHighlight && iExtension )
+    if (aHandleDeHighlight)
         {
         iFields[iCurrentField]->HandleDeHighlight(font, *iEikonEnv, aDataAltered, aError);
         iExtension->iValidateValueCallBack.CallBack();
@@ -1966,7 +1844,7 @@
             return;
             }
         }
-    if ( aAlignment >= ELayoutAlignNone )
+    if ( aAlignment >= ELayoutAlignNone && iExtension )
         {
         iAlignment = aAlignment;
         TUint capabilities = iExtension->
@@ -2053,7 +1931,6 @@
                     iExtension->iDisablePenInput = !( iExtension->iFingerSupport );                    
                     iExtension->iFingerParam = aFeatureParam; 
                     iExtension->iHighlightAll = ( iExtension->iFingerSupport &&
-                        !iExtension->iTouchActivated &&
                         aFeatureParam == EnableWithAllHighlight );                  
                     }
                 else
@@ -2091,26 +1968,6 @@
                     ret = KErrGeneral;
                     }
                 break;
-            case EChangeAmPm:
-                if ( iExtension )
-                    {
-                    iExtension->iChangeAmPm = aFeatureParam;
-                    TUint caps( iExtension->iExtendedInputCapabilities->Capabilities() );
-                    if ( aFeatureParam )
-                        {
-                        caps |= CAknExtendedInputCapabilities::EInputEditorAmPm;
-                        }
-                    else
-                        {
-                        caps &= ~CAknExtendedInputCapabilities::EInputEditorAmPm;
-                        }
-                    iExtension->iExtendedInputCapabilities->SetCapabilities( caps );
-                    }
-                else
-                    {
-                    ret = KErrGeneral;
-                    }
-                break;
             default:
                 ret = KErrNotSupported;
                 break;
@@ -2183,16 +2040,6 @@
                     ret = KErrGeneral;
                     }
                 break;
-            case EChangeAmPm:
-                if ( iExtension )
-                    {
-                    aFeatureParam = iExtension->iChangeAmPm;
-                    }
-                else
-                    {
-                    ret = KErrGeneral;
-                    }
-                break;
             default:
                 ret = KErrNotSupported;
                 break;
@@ -2213,8 +2060,7 @@
         EDisablePenInput,
         EFingerSupport,
         ELaunchPenInputAutomatic,
-        EPartialScreenInput,
-        EChangeAmPm
+        EPartialScreenInput
         };
         
     TBool ret = EFalse;
@@ -2407,12 +2253,18 @@
             }
         if (newField==ENullIndex)
             newField=iCurrentField;
+        if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+            {
+            iExtension->iTwiceTap = ( iExtension->iFingerSupport ? ETrue : 
+                newField == iCurrentField );            
+            }
 
         if (iExtension && aPointerEvent.iType == TPointerEvent::EButton1Down)
             {
             // Edit feedback on down event in current field, 
             // Edit feedback when changing fields
-            TTouchLogicalFeedback feedback = ETouchFeedbackEdit;
+            TTouchLogicalFeedback feedback = 
+                ( iExtension->iTwiceTap ? ETouchFeedbackEditor : ETouchFeedbackEditor );
             iExtension->iFeedback->InstantFeedback( this, feedback );
             }
         TBool createPopoutIfRequired=((newField==iCurrentField) && aPointerEvent.iType==TPointerEvent::EButton1Down && IsFocused());
@@ -2427,10 +2279,10 @@
         }
     else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
         {
-        if ( iExtension && !iExtension->iDisablePenInput )
+        if ( iExtension && !iExtension->iDisablePenInput && iExtension->iTwiceTap )
             {
             iExtension->iFeedback->InstantFeedback( this,
-                ETouchFeedbackEdit,
+                ETouchFeedbackEditor,
                 ETouchFeedbackVibra,
                 aPointerEvent );
             LaunchPenInputL();
@@ -2594,7 +2446,7 @@
             {
             if (i>=aFirstField)
                 {
-                if (focused && iExtension && ( iExtension->iHighlightAll || ( i == iCurrentField 
+                if (focused && ( iExtension->iHighlightAll || ( i == iCurrentField 
                     && iFields[i]->HighlightType() == CEikMfneField::EInverseVideo
                     && iFields[i]->FieldText().Length() > 0 ) ) && !isEmpty )
                     {
@@ -2603,7 +2455,10 @@
                     }
                 else 
                     {
-
+                    if (IsDimmed())
+                        SetGcToDimmedVideo(aGc);
+                    else
+                        SetGcToNormalVideo(aGc);
 
                     // Note!! This is taking responsibility away from the CEikMfne Field for drawing
                     // Skin background is drawn for the fields here
@@ -2638,15 +2493,6 @@
                         // Set up null brush GC here for the upcoming draw
                         aGc.SetBrushStyle(CGraphicsContext::ENullBrush);
                         }
-                    // set aGc for drawing field text
-                    if ( IsDimmed() )
-                        {
-                        SetGcToDimmedVideo( aGc );
-                        }
-                    else
-                        {
-                        SetGcToNormalVideo( aGc );
-                        }
                     }
                 // This draw must only draw the text with a null brush or draw block highlight 
                 iFields[i]->Draw(aGc, font, topLeftOfField);
@@ -2857,15 +2703,12 @@
     GetCursorInfo( cursorPosition, cursorHeight, cursorWidth, cursorAscent );
 
     iEikonEnv->DrawCursor(this, cursorPosition, cursorWidth, cursorAscent, cursorHeight);
-    if ( iExtension )
-    	{
-        iExtension->iCursorShown = ETrue;
-    	}
+    iExtension->iCursorShown = ETrue;
     }
 
 void CEikMfne::HideCursor()
     {
-    if ( iExtension && iExtension->iCursorShown )
+    if ( iExtension->iCursorShown )
         {
         iEikonEnv->HideCursor(this);
         iExtension->iCursorShown = EFalse;
@@ -3307,8 +3150,7 @@
     void SetUninitialised(TBool aUninitialised);
     TBool IsUninitialised() const;
     void RefreshFromLocale(const CFont& aFont);
-    void ChangeAmPm();
-    TBool HasAmPm();
+
 private:
     void AddAmPmFieldsIfNecessaryL(CEikMfne& aOwner, TAmPm aAmPm, TLocalePos aPos);
 private:
@@ -3579,25 +3421,7 @@
         (iAmPm && iAmPm->IsUninitialised());
     }
 
-void CTimeEditor::ChangeAmPm()
-	{
-	if ( iAmPm && HasAmPm() )
-		{
-	    if ( iAmPm->IdOfCurrentSymbolicItem() == EPm )
-	    	{
-	        iAmPm->SetCurrentSymbolicItemToId(EAm);
-	    	}
-	    else
-	    	{
-            iAmPm->SetCurrentSymbolicItemToId(EPm);
-	    	}
-		}
-	}
-
-TBool CTimeEditor::HasAmPm()
-	{
-	return iAmPm && ( iFlags&EIn12HourFormat );
-	}
+
 // CDateEditor
 
 class CDateEditor : public CBase
@@ -3995,9 +3819,7 @@
 EXPORT_C CEikTimeEditor::~CEikTimeEditor()
     {
     AKNTASHOOK_REMOVE();
-    iExtension->iExtendedInputCapabilities->UnregisterObserver(iTimeExtension);
     delete iTimeEditor;
-    delete iTimeExtension;
     }
 
 EXPORT_C void CEikTimeEditor::ConstructL(const TTime& aMinimumTime, const TTime& aMaximumTime, const TTime& aInitialTime, TUint32 aFlags)
@@ -4008,10 +3830,6 @@
     iTimeEditor->ConstructFieldsL(*this, aInitialTime, *Font());
     iTimeEditor->RefreshFromLocale(*Font());
     DoSetMinimumAndMaximum(aMinimumTime, aMaximumTime);
-    iTimeExtension = CEikTimeEditorExtension::NewL();
-    iTimeExtension->iEditor = this;
-    iExtension->iExtendedInputCapabilities->RegisterObserver(iTimeExtension);
-    SetFeature( CEikMfne::EChangeAmPm, iTimeEditor->HasAmPm() );
     }
 
 EXPORT_C void CEikTimeEditor::SetMinimumAndMaximum(const TTime& aMinimumTime, const TTime& aMaximumTime)
@@ -4107,19 +3925,6 @@
     return iTimeEditor->IsUninitialised();
     }
 
-void CEikTimeEditor::ChangeAmPm( )
-	{
-	TInt para( 0 );
-    GetFeature( CEikMfne::EChangeAmPm, para );
-	if ( para )
-		{
-	    iTimeEditor->ChangeAmPm();
-	    DrawDeferred();
-	    TRAP_IGNORE ( ReportEventL( MCoeControlObserver::EEventStateChanged ) );
-        ReportUpdate();
-		}
-	return;
-	}
 // CEikDateEditor
 
 EXPORT_C CEikDateEditor::CEikDateEditor()
@@ -4184,24 +3989,18 @@
     return(Date());
     }
 
-EXPORT_C TKeyResponse CEikDateEditor::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-	TKeyResponse ret = EKeyWasNotConsumed;
-    if ( iDateEditor->OfferKeyEventL( aKeyEvent, aType ) == EKeyWasConsumed )
-    	{
-        ret = EKeyWasConsumed;
-    	}
-    else 
+EXPORT_C TKeyResponse CEikDateEditor::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+    {
+    if (iDateEditor->OfferKeyEventL(aKeyEvent, aType)==EKeyWasConsumed)
+        return EKeyWasConsumed;
+    if ( ( aType==EEventKey)&& 
+           ( aKeyEvent.iCode == EKeyLeftArrow || aKeyEvent.iCode == EKeyRightArrow || 
+             aKeyEvent.iCode == EKeyDownArrow || aKeyEvent.iCode == EKeyUpArrow ) )
     	{
-	    ret = CEikMfne::OfferKeyEventL( aKeyEvent, aType );
-	    if ( ( aType == EEventKey ) && 
-		     ( aKeyEvent.iCode == EKeyDownArrow || aKeyEvent.iCode == EKeyUpArrow ) )
-		    {
-		    iDateEditor->UpdateMaxDay( *Font() );
-		    this->DrawDeferred();
-		    }
+        iDateEditor->UpdateMaxDay( *Font() );
     	}
-    return ret;
+
+    return CEikMfne::OfferKeyEventL(aKeyEvent, aType);
     }
 
 EXPORT_C void CEikDateEditor::ConstructFromResourceL(TResourceReader& aResourceReader)
@@ -4302,10 +4101,8 @@
 EXPORT_C CEikTimeAndDateEditor::~CEikTimeAndDateEditor()
     {
     AKNTASHOOK_REMOVE();
-    iExtension->iExtendedInputCapabilities->UnregisterObserver(iTimeDateExtension);
     delete iTimeEditor;
     delete iDateEditor;
-    delete iTimeDateExtension;
     }
 
 EXPORT_C void CEikTimeAndDateEditor::ConstructL(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate,
@@ -4351,10 +4148,6 @@
     // do stuff that can only be done when all leaving functions have successfully been done
     if (aInterveningText)
         interveningText->SetText(aInterveningText);
-    iTimeDateExtension = CEikTimeAndDateEditorExtension::NewL();
-    iTimeDateExtension->iEditor = this;
-    iExtension->iExtendedInputCapabilities->RegisterObserver(iTimeDateExtension);
-    SetFeature( CEikMfne::EChangeAmPm, iTimeEditor->HasAmPm() );
     }
 
 EXPORT_C void CEikTimeAndDateEditor::SetMinimumAndMaximum(const TTime& aMinimumTimeAndDate, const TTime& aMaximumTimeAndDate)
@@ -4494,19 +4287,6 @@
     {
     }
 
-void CEikTimeAndDateEditor::ChangeAmPm( )
-	{
-	TInt para( 0 );
-    GetFeature( CEikMfne::EChangeAmPm, para );
-	if ( para )
-		{
-	    iTimeEditor->ChangeAmPm();
-	    DrawDeferred();
-	    TRAP_IGNORE ( ReportEventL( MCoeControlObserver::EEventStateChanged ) );
-        ReportUpdate();
-		}
-	return;
-	}
 
 // CEikDurationEditor
 
@@ -4798,19 +4578,10 @@
 EXPORT_C void CEikMfne::MakeVisible( TBool aVisible )
     {
     CEikBorderedControl::MakeVisible( aVisible );
-    if ( !aVisible && iExtension && iExtension->iCursorShown )
+    if ( !aVisible && iExtension->iCursorShown )
         {
         HideCursor();
         }
-    
-    if ( iExtension && !aVisible )
-        {
-        TRAP_IGNORE (
-            iExtension->iExtendedInputCapabilities->ReportEventL( 
-                CAknExtendedInputCapabilities::MAknEventObserver::EClosePenInputRequest, 
-                0 );
-            )
-        }
     }
 
 void CEikMfne::SetValidateCallBack( TCallBack aCallBack )