uifw/ganes/src/HgTextFind.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/ganes/src/HgTextFind.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,281 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:     
+*
+*/
+
+#include "HgTextFind.h"
+#include <ganes/HgScroller.h>
+#include "HgConstants.h"
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::NewL()
+// -----------------------------------------------------------------------------
+//
+CHgTextFind* CHgTextFind::NewL(CHgScroller& aScroller)
+    {
+    CHgTextFind* self = new (ELeave) CHgTextFind( aScroller );
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::~CHgTextFind()
+// -----------------------------------------------------------------------------
+//
+CHgTextFind::~CHgTextFind()
+    {
+    delete iState;
+    iBuf.Close();
+    iSearchDesc.Close();
+    delete iTimer;
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::CHgTextFind()
+// -----------------------------------------------------------------------------
+//
+CHgTextFind::CHgTextFind( CHgScroller& aScroller ) 
+    : iScroller( aScroller)
+    {
+            
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::ConstructL()
+    {
+    iState = new (ELeave) CAknEdwinState();
+    iState->SetObjectProvider(&iScroller);
+    iState->SetDefaultCase( EAknEditorUpperCase );
+    iState->SetFlags(
+            EAknEditorFlagFixedCase |
+            EAknEditorFlagNoT9 |
+            EAknEditorFlagNoEditIndicators |
+            EAknEditorFlagNoLRNavigation |
+            EAknEditorFlagSupressShiftMenu
+            );
+    
+    iBuf.CreateL( KMaxPopupTextLength );
+    iSearchDesc.CreateL( KMaxSearchLenght );
+    iTimer = CPeriodic::New( CActive::EPriorityLow );
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::StartFepInlineEditL()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::StartFepInlineEditL( const TDesC& aInitialInlineText, 
+        TInt /*aPositionOfInsertionPointInInlineText*/, 
+        TBool /*aCursorVisibility*/, const MFormCustomDraw* /*aCustomDraw*/,
+        MFepInlineTextFormatRetriever& /*aInlineTextFormatRetriever*/, 
+        MFepPointerEventHandlerDuringInlineEdit& /*aPointerEventHandlerDuringInlineEdit*/ )
+    {
+    iTimer->Cancel();
+    if( iBuf.Length() + aInitialInlineText.Length() < iBuf.MaxLength() )
+        iBuf.Append(aInitialInlineText);
+    iScroller.DrawNow();
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::UpdateFepInlineTextL()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::UpdateFepInlineTextL( const TDesC& aNewInlineText, 
+        TInt /*aPositionOfInsertionPointInInlineText*/ )
+    {
+    iTimer->Cancel();
+    if( iBuf.Length() + aNewInlineText.Length() < iBuf.MaxLength() )
+        {
+        if(iBuf.Length())
+            {
+            if( aNewInlineText.Length() )
+                {
+                iBuf.Replace(iBuf.Length()-1, aNewInlineText.Length(), aNewInlineText);
+                iScroller.DrawNow();
+                }
+            else
+                {
+                iBuf.Delete(iBuf.Length()-1, 1);
+                }
+            }
+        else
+            {
+            iBuf.Append(aNewInlineText);
+            iScroller.DrawNow();
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::SetInlineEditingCursorVisibilityL()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::SetInlineEditingCursorVisibilityL( TBool /*aCursorVisibility*/ )
+    {
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::CancelFepInlineEdit()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::CancelFepInlineEdit()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::DocumentLengthForFep()
+// -----------------------------------------------------------------------------
+//
+TInt CHgTextFind::DocumentLengthForFep() const
+    {
+    return iBuf.Length();
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::DocumentMaximumLengthForFep()
+// -----------------------------------------------------------------------------
+//
+TInt CHgTextFind::DocumentMaximumLengthForFep() const
+    {
+    return iBuf.MaxLength();
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::SetCursorSelectionForFepL()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::SetCursorSelectionForFepL( const TCursorSelection& /*aCursorSelection*/ )
+    {
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::GetCursorSelectionForFep()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::GetCursorSelectionForFep( TCursorSelection& /*aCursorSelection*/ ) const
+    {
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::GetEditorContentForFep()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::GetEditorContentForFep( TDes& /*aEditorContent*/,
+        TInt /*aDocumentPosition*/, TInt /*aLengthToRetrieve*/ ) const
+    {
+    
+    }
+    
+// -----------------------------------------------------------------------------
+// CHgTextFind::GetFormatForFep()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::GetFormatForFep( TCharFormat& /*aFormat*/, TInt /*aDocumentPosition*/ ) const
+    {
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::GetScreenCoordinatesForFepL()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::GetScreenCoordinatesForFepL( TPoint& /*aLeftSideOfBaseLine*/,
+        TInt& /*aHeight*/, TInt& /*aAscent*/, TInt /*aDocumentPosition*/ ) const
+    {
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::Extension1()
+// -----------------------------------------------------------------------------
+//
+MCoeFepAwareTextEditor_Extension1* CHgTextFind::Extension1(TBool& aSetToTrue)
+    {
+    aSetToTrue = ETrue;
+    return this;
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::SetStateTransferingOwnershipL()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::SetStateTransferingOwnershipL( CState* /*aState*/, TUid /*aTypeSafetyUid*/ )
+// this function must only transfer ownership after it has successfully done everything that can leave
+    {
+    
+    }
+// -----------------------------------------------------------------------------
+// CHgTextFind::State()
+// -----------------------------------------------------------------------------
+//
+MCoeFepAwareTextEditor_Extension1::CState* CHgTextFind::State( TUid /*aTypeSafetyUid */ )
+    {
+    return iState;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::DoCommitFepInlineEditL()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::DoCommitFepInlineEditL()
+    {
+    iSearchDesc.Copy(iBuf);
+    iSearchDesc.UpperCase();
+    iScroller.HightlightItem(iSearchDesc);
+    iTimer->Cancel();
+    iTimer->Start(KSearchEndTimeOut, KSearchEndTimeOut,
+            TCallBack(CHgTextFind::SearchTimerCallback, this));
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::SearchTimerCallback()
+// -----------------------------------------------------------------------------
+//
+TInt CHgTextFind::SearchTimerCallback( TAny* aSelf )
+    {
+    CHgTextFind* self = (CHgTextFind*)aSelf;
+    self->ClearSearchDesc();
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::ClearSearchDesc()
+// -----------------------------------------------------------------------------
+//
+void CHgTextFind::ClearSearchDesc()
+    {
+    iBuf.Zero();
+    iTimer->Cancel();
+    iScroller.DrawDeferred();
+    }
+
+// -----------------------------------------------------------------------------
+// CHgTextFind::Text()
+// -----------------------------------------------------------------------------
+//
+const TDesC& CHgTextFind::Text()
+    {
+    return iBuf;
+    }
+
+