diff -r f1bdd6b078d1 -r 2cb9bae34d17 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/insertionpoint.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/insertionpoint.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,246 +0,0 @@ -/* -* 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 "insertionpoint.h" -#include "aknfepchineseuidataconv.h" - -//Cursor position offset -const TInt KCursorPosCorrectionX = 0; -//define the timer -const TInt KTimer = 500000; - -// --------------------------------------------------------- -// Cancel and destroy. -// --------------------------------------------------------- -CInsertionPoint::~CInsertionPoint() - { - Cancel(); // Cancel any request, if outstanding - iTimer.Close(); // Destroy the RTimer object - // Delete instance variables if any - } - -// --------------------------------------------------------- -// NewL function. -// --------------------------------------------------------- -CInsertionPoint* CInsertionPoint::NewL( CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CInsertionPoint* self = CInsertionPoint::NewLC( aLafDataMgr ); - CleanupStack::Pop( self ); // self; - return self; - } - -// --------------------------------------------------------- -// NewLC funciton. -// --------------------------------------------------------- -CInsertionPoint* CInsertionPoint::NewLC( CAknFepUiLayoutDataMgr* aLafDataMgr ) - { - CInsertionPoint* self = new ( ELeave ) CInsertionPoint( aLafDataMgr ); - CleanupStack::PushL( self ) ; - self->ConstructL(); - return self; - } - -// --------------------------------------------------------- -// Set iRefreshObserver member. -// --------------------------------------------------------- -void CInsertionPoint::SetRefreshObserver(MRefreshObserver* aObserver) - { - iRefreshObserver = aObserver; - } - -// --------------------------------------------------------- -// Set the position of cursor. -// --------------------------------------------------------- -void CInsertionPoint::SetPosition(TInt aOffSet) - { - iOffSet = aOffSet; - isVisible = ETrue; - iRefreshObserver->Refresh(); - TPoint point(iTextRect.iTl.iX -1 + iOffSet + KCursorPosCorrectionX, - iCursorRect.iTl.iY); - iCursorRect = TRect(point, TSize(iWidth, iHeight) ) ; - } - -// --------------------------------------------------------- -// Set the rect where visual text will be displayed. -// --------------------------------------------------------- -void CInsertionPoint::SetTextRect(TRect aRect) - { - iTextRect = aRect; - TPoint point(iTextRect.iTl.iX + iOffSet + KCursorPosCorrectionX, - iCursorRect.iTl.iY); - iCursorRect = TRect(point, TSize(iWidth, iHeight) ) ; - if ( 0 == iHeight ) - { - iHeight = - CAknFepChineseUIDataConv::AnyToInt( iLafDataMgr->RequestData(EEEPCursorHeight)); - iWidth = 1; - } - } - -// --------------------------------------------------------- -// Set the height of cursor. -// --------------------------------------------------------- -void CInsertionPoint::SetHeight() - { - TPoint point(iTextRect.iTl.iX + iOffSet + KCursorPosCorrectionX, - iTextRect.iTl.iY - 1 + iTextRect.Height() / 2 - iHeight / 2); - iCursorRect = TRect(point, TSize(iWidth, iHeight) ) ; - } - -// --------------------------------------------------------- -// Draw the cursor on the screen. -// --------------------------------------------------------- -void CInsertionPoint::Draw(CWindowGc& aGc) - { - if (isActive) - { - if ( !this->isVisible) - { - return; - } - else - { - aGc.SetBrushStyle(CGraphicsContext::ESolidBrush) ; - aGc.SetBrushColor(iActiveBrushColor) ; - aGc.SetPenColor(iActivePenColor) ; - aGc.SetPenStyle(CGraphicsContext::ESolidPen) ; - aGc.SetPenSize(TSize( 1, 1) ) ; - aGc.DrawRect(iCursorRect) ; - aGc.SetBrushStyle(CGraphicsContext::ENullBrush) ; - } - } - else - { - aGc.SetBrushStyle(CGraphicsContext::ESolidBrush) ; - aGc.SetBrushColor(iInactiveBrushColor) ; - aGc.SetPenColor(iInactivePenColor) ; - aGc.SetPenStyle(CGraphicsContext::ESolidPen) ; - aGc.SetPenSize(TSize( 1, 1) ) ; - aGc.DrawRect(iCursorRect) ; - aGc.SetBrushStyle(CGraphicsContext::ENullBrush) ; - } - } - -// --------------------------------------------------------- -// Active the cursor into active state. -// --------------------------------------------------------- -void CInsertionPoint::Active() - { - Cancel(); - iTimer.Cancel(); - iTimer.After(iStatus, KTimer); // Set for 1 sec later - SetActive(); // Tell scheduler a request is active - isActive = ETrue; - this->iRefreshObserver->Refresh(); - } - -// --------------------------------------------------------- -// Deactive the cursor into deactive state. -// --------------------------------------------------------- -void CInsertionPoint::Deactive() - { - Cancel(); - isActive = EFalse; - this->iRefreshObserver->Refresh(); - } - -// --------------------------------------------------------- -// Insertion Point. -// --------------------------------------------------------- -CInsertionPoint::CInsertionPoint( CAknFepUiLayoutDataMgr* aLafDataMgr ) : - CActive(EPriorityStandard) - { - iState = EUninitialized; - isVisible = ETrue; - iHeight = 0; - iWidth = 0; - iOffSet = 0; - isActive = EFalse; - iRefreshObserver = NULL; - iLafDataMgr = aLafDataMgr; - } - -// --------------------------------------------------------- -// Two-phrase constructor. -// --------------------------------------------------------- -void CInsertionPoint::ConstructL() - { - User::LeaveIfError(iTimer.CreateLocal() ) ; // Initialize timer - CActiveScheduler::Add( this); // Add to scheduler - iActiveBrushColor = KRgbBlack; - iActivePenColor = KRgbBlack; - iInactiveBrushColor = KRgbGray; - iInactivePenColor = KRgbGray; - } - -// --------------------------------------------------------- -// The callback function used by CActiveScheduler. -// --------------------------------------------------------- -void CInsertionPoint::RunL() - { - if (iState == EUninitialized) - { - // Do something the first time RunL() is called - iState = EInitialized; - } - else - if (iState != EError) - { - // Do something - isVisible = isVisible ? EFalse : ETrue; - if (iRefreshObserver) - { - this->iRefreshObserver->Refresh(); - } - } - - iTimer.Cancel(); - iTimer.After( iStatus, KTimer ) ; // Set for 1 sec later - SetActive(); // Tell scheduler a request is active - } - -// --------------------------------------------------------- -// How to cancel me. -// --------------------------------------------------------- -void CInsertionPoint::DoCancel() - { - iTimer.Cancel(); - } - -// --------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------- -TInt CInsertionPoint::RunError(TInt aError) - { - return aError; - } - -// --------------------------------------------------------- -// Start the cursor with glint if actived or with gray color if deactived. -// --------------------------------------------------------- -void CInsertionPoint::StartL( TTimeIntervalMicroSeconds32 aDelay ) - { - Cancel(); // Cancel any request, just to be sure - iState = EUninitialized; - iTimer.Cancel(); - iTimer.After(iStatus, aDelay) ; // Set for later - SetActive(); // Tell scheduler a request is active - } - -// End of file