imstutils/imconversationview/imcvuiapp/src/cimcvapptextviewcontrol.cpp
changeset 15 81eeb8c83ce5
parent 0 5e5d6b214f4f
--- a/imstutils/imconversationview/imcvuiapp/src/cimcvapptextviewcontrol.cpp	Tue Feb 02 10:12:18 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,865 +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:
-* Export help related files.
-*
-*/
-
-
-// INCLUDE FILES
-#include    "cimcvapptextviewcontrol.h"
-
-#include 	"cimcvappcustomdraw.h"
-#include    <frmtview.h>    // CTextView
-#include    <AknUtils.h>
-#include    <avkon.mbg>
-#include    <aknappui.h>
-#include 	"mimcvapptextview.h"
-#include    <aknlayoutscalable_apps.cdl.h>
-#include    <AknsBasicBackgroundControlContext.h>
-#include    <AknsDrawUtils.h>
-#include 	"imcvlogger.h"
-#include 	"imcvuiapputils.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::CIMCVAppTextViewControl
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CIMCVAppTextViewControl::CIMCVAppTextViewControl() 
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::ConstructL( const TRect& aRect, 
-                                     const CCoeControl& aParent,
-                                     MLayDoc* aTextLayout )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::ConstructL()	start") ); 
-    CreateWindowL( &aParent );
-    
-    // get the drawing device
-    CWindowGc& gc = SystemGc();
-    CBitmapDevice* device = static_cast<CBitmapDevice*>( gc.Device() );    
-    
-    // create text layout and text view
-
-    iViewRect = aRect;
-    iClipping = new ( ELeave ) RRegion( aRect );
-    
-    iLayout = CTextLayout::NewL( aTextLayout, iViewRect.Width() );
-    iTextView = CTextView::NewL( iLayout, iViewRect,
-                device, device, &Window(), NULL, &iCoeEnv->WsSession() );
-
-    iTextView->EnableFlickerFreeRedraw();
-    iTextView->SetOpaque( ETrue );    
-    
-    // create our background drawer
-    iCustomDraw = new( ELeave )CIMCVAppCustomDraw( iViewRect );
-    iLayout->SetCustomDraw( iCustomDraw );
-
-    // and scrollbar
-    if( IMCVUiAppUtils::PenEnabled() )
-        {
-        // Observer
-        iScrollBar = new( ELeave )CEikScrollBarFrame( this, this );
-        }
-    else
-        {
-        // No observer
-        iScrollBar = new( ELeave )CEikScrollBarFrame( this, NULL );
-        }
-      
-   
-    if (AknLayoutUtils::DefaultScrollBarType(iAvkonAppUi) == CEikScrollBarFrame::EDoubleSpan)
-        { 
-        
-        // For EDoubleSpan type scrollbar
-        // If pen is supported, SB needs to own a window
-        iScrollBar->CreateDoubleSpanScrollBarsL( IMCVUiAppUtils::PenEnabled(), 
-                                                 EFalse, ETrue, EFalse );
-        iScrollBar->SetTypeOfVScrollBar(CEikScrollBarFrame::EDoubleSpan);
-        
-        }
-    else
-        {
-        // For EArrowHead type scrollbar
-        iScrollBar->SetTypeOfVScrollBar(CEikScrollBarFrame::EArrowHead);
-        }
-    iScrollBar->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, 
-                                         CEikScrollBarFrame::EOn );
-    TEikScrollBarModel vSbarModel;
-    vSbarModel.iThumbPosition = 0; // current position
-    vSbarModel.iScrollSpan = 0; // how many items
-    vSbarModel.iThumbSpan = 0; // ignored
-
-    iScrollBar->Tile( &vSbarModel );
-    iScrollBar->SetVFocusPosToThumbPos( vSbarModel.iThumbPosition );
-    
-    iBgContext = CAknsBasicBackgroundControlContext::NewL( 
-        KAknsIIDQsnBgAreaMain, Rect(), ETrue );
-    iCustomDraw->SetBackgroundContext( iBgContext, this );
-    
-    // set extensions
-    ActivateL();    
-    
-    // we're ready
-    static_cast<CCoeAppUi*>( iEikonEnv->AppUi() )->AddToStackL( this );
-    iAddedToStack = ETrue;
-    
-    // Enable draging
-    if ( DrawableWindow() && IMCVUiAppUtils::PenEnabled() )
-        {
-        EnableDragEvents();       
-        Window().SetPointerGrab( ETrue );
-        }
-        
-    // Enable draging
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::ConstructL()	end") ); 
-    }
-
-
-// Destructor
-CIMCVAppTextViewControl::~CIMCVAppTextViewControl()
-    {
-    if( iAddedToStack )
-        {
-        static_cast<CCoeAppUi*>( iEikonEnv->AppUi() )->RemoveFromStack( this );
-        }
-
-    delete iScrollBar;
-    delete iCustomDraw;
-    delete iTextView;
-    delete iLayout;
-    
-    delete iBgContext;
-    if( iClipping )
-        {
-        iClipping->Destroy();
-        iClipping  = NULL;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::UpdateScrollBarsL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::UpdateScrollBarsL( TBool aScrollDraw /*ETrue*/ )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::UpdateScrollBarsL()	start") ); 
-    TInt height = iLayout->FormattedHeightInPixels();
-    TInt span = iViewRect.Height();
-    TInt pos = iLayout->PixelsAboveBand();
-    
-    if( span < 0 )
-        {
-        span = 0;
-        }
-        
-    if( pos < 0 )
-        {
-        pos = 0;
-        }
-
-    TEikScrollBarModel vSbarModel;
-    vSbarModel.iThumbPosition = pos; // current position
-    vSbarModel.iScrollSpan = height; // total length
-    vSbarModel.iThumbSpan = span; // bar length
-
-    // Double span
-    if( iScrollBar && 
-        iScrollBar->TypeOfVScrollBar() == CEikScrollBarFrame::EDoubleSpan )
-        {
-        TAknDoubleSpanScrollBarModel vDsModel( vSbarModel );
-        iScrollBar->Tile( &vDsModel );
-        iScrollBar->SetVFocusPosToThumbPos( vDsModel.FocusPosition());
-        }
-    // ArrowHead
-    else
-        {
-        iScrollBar->Tile( &vSbarModel );
-        iScrollBar->SetVFocusPosToThumbPos( vSbarModel.iThumbPosition );
-        }
-
-   if( aScrollDraw )
-		{
-	    iScrollBar->DrawScrollBarsNow();
-	   	}
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::UpdateScrollBarsL()	end") ); 
-    }
-    
-void CIMCVAppTextViewControl::UpdateChatViewL ()
-{
-	UpdateViewL ();
-}
-
-
-void CIMCVAppTextViewControl:: SmileyDialogLaunched (TBool aLaunched)
-{
-	iSmileyDialogLaunched = aLaunched;
-}
-    
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::UpdateViewL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::UpdateViewL()
-    {
-	// do not refresh if smiley dialog is launched.
-	if (iSmileyDialogLaunched)
-		return;
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::UpdateViewL()	start") ); 
-    iTextView->FormatTextL();
-    iTextView->SetSelectionVisibilityL( EFalse );
-    TCursorSelection sel;
-    // Don't scroll if some item is highlighted
-    if ( !iIsHighlighted )
-        {
-        sel = TCursorSelection( iLayout->DocumentLength(), 0 );
-        ScrollVisibleL( sel, ETrue );
-         }
-    else
-        {
-        sel = iTextView->Selection();
-        ScrollVisibleL( sel, ETrue );
-         }
-        
-    DrawDeferred();
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::UpdateViewL()	end") ); 
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::SetHighlighted
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::SetHighlighted( TBool aIsHighlighted )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::SetHighlighted()	start") ); 
-    iIsHighlighted = aIsHighlighted;
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::SetHighlighted()	end") ); 
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::ScrollBarFrame
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-const CEikScrollBarFrame* CIMCVAppTextViewControl::ScrollBarFrame()
-    {
-    return iScrollBar;
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::ScrollBarFrame
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CIMCVAppTextViewControl::FindDocPos( TPoint aPoint )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::FindDocPos()	start") ); 
-    TTmPosInfo2 posInfo;
-    TBool found = EFalse;
-    
-    TRAPD( err, found = iTextView->FindXyPosL( aPoint, posInfo ) );
-    if ( err )
-        {
-        CActiveScheduler::Current()->Error( err );
-        // Return not found
-        return KErrNotFound;
-        }
-        
-    if ( found )
-        {
-  	         
-        return posInfo.iDocPos.iPos;
-        }
-    // not found
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::FindDocPos()	end") );
-    return KErrNotFound;
-    }
-    
-// ---------------------------------------------------------
-// CIMCVAppTextViewControl::MopSupplyObject
-//
-// ---------------------------------------------------------
-//
-TTypeUid::Ptr CIMCVAppTextViewControl::MopSupplyObject( TTypeUid aId )
-    {   
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::MopSupplyObject()	start") ); 
-    if ( aId.iUid == MAknsControlContext::ETypeId )
-        {
-        return MAknsControlContext::SupplyMopObject( aId, iBgContext );
-        }
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::MopSupplyObject()	end") );
-    return CCoeControl::MopSupplyObject( aId );
-    }
-
-// ---------------------------------------------------------
-// CIMCVAppTextViewControl::HandleScrollEventL
-//
-// ---------------------------------------------------------
-//
-void CIMCVAppTextViewControl::HandleScrollEventL( CEikScrollBar* /*aScrollBar*/,
-                                             TEikScrollEvent aEventType )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::HandleScrollEventL()	start") ); 
-    switch( aEventType )
-        {
-        case EEikScrollUp:
-            {
-            ScrollLinesL( 1 );
-            break;
-            }
-    	case EEikScrollDown:
-    	    {
-            ScrollLinesL( -1 );
-    	    break;
-    	    }
-    	case EEikScrollPageUp:
-    	    {
-            iTextView->ScrollDisplayL( TCursorPosition::EFPageUp );
-            UpdateScrollBarsL();
-            DrawDeferred();
-    	    break;
-    	    }
-    	case EEikScrollPageDown:
-    	    {
-            iTextView->ScrollDisplayL( TCursorPosition::EFPageDown );
-            UpdateScrollBarsL();
-            DrawDeferred();
-    	    break;
-    	    }
-    	case EEikScrollThumbDragVert:
-    	    {
-    	    // Get position values from scrollbar
-    	    const TEikScrollBarModel* model = 
-    	        iScrollBar->VerticalScrollBar()->Model();
-    	    TInt thumb = model->iThumbPosition;
-            if( CEikScrollBarFrame::EDoubleSpan == 
-                iScrollBar->TypeOfVScrollBar() )
-                {
-                const TAknDoubleSpanScrollBarModel* dsModel = 
-                    static_cast <const TAknDoubleSpanScrollBarModel*>( model );
-                thumb = dsModel->FocusPosition();
-                }
-    	    
-    	    // Scroll the textview according to scrollbar
-    	    TViewYPosQualifier yPosQua;
-    	    yPosQua.SetHotSpot( TViewYPosQualifier::EFViewTopOfLine );
-    	    TInt topPos = -thumb;
-    	    iTextView->SetViewL( 0, topPos, yPosQua );
-    	    break;
-    	    }
-    	case EEikScrollThumbReleaseVert:
-    	    {
-    	    // Nothing to do here because EEikScrollThumbDragVert gets 
-    	    // the scrollbar in correct state
-    	    break;
-    	    }
-    	default:
-    	    {
-    	    break;
-    	    }
-        }
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::HandleScrollEventL()	end") );
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::OfferKeyEventL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CIMCVAppTextViewControl::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                                 TEventCode aType )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::OfferKeyEventL()	start") ); 
-    // Commented because it generates so much log
-    // CHAT_DP( D_CHAT_LIT("CIMCVAppTextViewControl::OfferKeyEventL %d, type %d"), 
-    //          aKeyEvent, aType )
-    
-    if( aType != EEventKey )
-        {
-        return EKeyWasNotConsumed;
-        }
-
-    switch( aKeyEvent.iCode )
-        {
-        case EKeyDownArrow:
-            {
-			//scroll lines one line down
-            ScrollLinesL( -1 );
-            return EKeyWasConsumed;
-      
-            }
-        case EKeyUpArrow:
-            {
-			//scroll lines one line up
-            ScrollLinesL( 1 );
-            return EKeyWasConsumed;
-
-            }
-        default:
-            {
-            // No handling for other events
-            break;
-            }
-        }
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::OfferKeyEventL()	end") );
-    return EKeyWasNotConsumed;
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::HandlePointerEventL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::HandlePointerEventL( 
-    const TPointerEvent& aPointerEvent )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::HandlePointerEventL()	start") ); 
-    
-    if( !IMCVUiAppUtils::PenEnabled() )
-        {
-        return;
-        }
-
-    switch( iPenType )
-        {
-        case EPenForwardToChild:
-            {
-            // normal (CCoeControl) behaviour
-            CCoeControl::HandlePointerEventL( aPointerEvent );
-            break;
-            }
-        case EPenForwardToParent:
-            {
-            // forward all to parent
-            if( Parent() )
-                {
-                Parent()->HandlePointerEventL( aPointerEvent );
-                }
-            break;
-            }
-        // Process event ourself
-        case EPenProcessEvent:
-            {
-            ProcessStylusEventL( aPointerEvent );
-            break;
-            }
-        case EPenIgnoreEvent:
-            {
-            // Ignore all
-            break;
-            }
-        default:
-            {
-            // Can't be
-            break;
-            }
-        }
-    
-    
-	IM_CV_LOGS(TXT("CIMCVAppTextViewControl::HandlePointerEventL()	end") );
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::Draw
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::Draw( const TRect& aRect ) const
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::Draw()	start") ); 
-    CWindowGc& gc = SystemGc();    
-          
-    // Clip text control and scrollbar to prevent flickering
-    gc.SetClippingRegion( *iClipping );
-    
-	MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-	if (iBgContext)
-		{
-		// Draw the skin background
-		AknsDrawUtils::Background(
-			skin, iBgContext, this, gc, aRect);
-		}
-	else
-		{
-		// clear the area
-		gc.SetBrushColor( iEikonEnv->ControlColor( EColorWindowBackground, *this ) );
-		gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-		gc.Clear( aRect );
-		}		
-    
-    TRAP_IGNORE( iTextView->DrawL( aRect ) );
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::Draw()	end") );
-    }
-    
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::SizeChanged
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::SizeChanged()
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::SizeChanged()	start") ); 
-    TAknWindowLineLayout rpLayout( AknLayoutScalable_Apps::list_im_pane( 3 ) );
-    TAknLayoutRect rpLayoutRect;
-    rpLayoutRect.LayoutRect( Rect(), rpLayout );    
-    
-    // update rects
-    iViewRect = rpLayoutRect.Rect();
-    
-    iCustomDraw->SetRect( iViewRect );    
-    iTextView->SetViewRect( iViewRect );
-    iLayout->SetWrapWidth( iViewRect.Width() );
-    
-    if (AknLayoutUtils::DefaultScrollBarType(iAvkonAppUi) == CEikScrollBarFrame::EDoubleSpan)
-        {
-        // For EDoubleSpan type scrollbar
-        TAknWindowLineLayout sbLayout( AknLayoutScalable_Apps::scroll_pane_cp07( 3 ) );
-        AknLayoutUtils::LayoutVerticalScrollBar( iScrollBar, Rect(), sbLayout );
-        TAknLayoutRect sbLayoutRect;
-        sbLayoutRect.LayoutRect( Rect(), sbLayout );
-        }
-    if ( iBgContext )
-        {
-        iBgContext->SetRect( Parent()->Rect() );
-        iBgContext->SetParentPos( Parent()->PositionRelativeToScreen() );
-        }        
-
-    // Setup clipping region
-    iClipping->Clear();
-    iClipping->AddRect( Rect() );
-    
-    // clip text control
-    iClipping->SubRect( iTextView->ViewRect() );
- 
-    // clip scrollbar
-    if ( iScrollBar->TypeOfVScrollBar() == CEikScrollBarFrame::EDoubleSpan)
-        {    
-		//fix for the tsw bug id:EKYT-7B68G9 //start.
-        TAknWindowLineLayout sbLayout( AknLayoutScalable_Apps::scroll_pane_cp07( 3 ) );
-        AknLayoutUtils::LayoutVerticalScrollBar( iScrollBar, Rect(), sbLayout );
-        TAknLayoutRect sbLayoutRect;
-        sbLayoutRect.LayoutRect( Rect(), sbLayout );
-        iClipping->SubRect( sbLayoutRect.Rect() );
-		//fix for the tsw bug id:EKYT-7B68G9 //end.
-        }
-    
-    // and update view
-    TRAPD( err, ScrollLinesL( 0 );
-                UpdateViewL() );
-    if( err != KErrNone )
-        {
-        CActiveScheduler::Current()->Error( err );
-        }
-
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::SizeChanged()	end") );
-    }
-    
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::HandleFormatChangedL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::HandleFormatChangedL( TCursorSelection& aChanged, 
-                                               TBool aPreserveFocus /* = EFalse */ )
-    {
-	if (iSmileyDialogLaunched)
-		return;
-
-    // rich text has changed, inform viewer
-    iTextView->SetSelectionVisibilityL( EFalse );
-    
-    if( aPreserveFocus )
-        {
-        // Preserve focus
-        TCursorSelection sel = iTextView->Selection();
-        // This seems to be the only method which doesn't change focus.
-        // --> so it's possible to preserve focus without flicker
-        iTextView->HandleGlobalChangeNoRedrawL();
-        ScrollVisibleL( sel, EFalse );
-        DrawDeferred();
-
-        }
-    else
-        {
-        // Move focus along with changes
-        iTextView->HandleRangeFormatChangeL( aChanged, ETrue );
-		//ScrollVisibleL( aChanged, ETrue );
-		UpdateViewL ();
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::HandleInsertDeleteL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::HandleInsertDeleteL( TCursorSelection& aChanged, 
-                                              TInt aDeletedChars )
-    {
-	if (iSmileyDialogLaunched)
-		return;
-
-    // inform about insertion or deletion
-    iTextView->SetSelectionVisibilityL( EFalse );
-    iTextView->HandleInsertDeleteL( aChanged, aDeletedChars );
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::HandleAdditionL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::HandleAdditionL( TBool aFirst, 
-                                          TCursorSelection& aSelection, 
-                                          TBool aTop )
-    {
-    // inform about addition
-    if( aFirst )
-        {
-        iTextView->FormatTextL();
-        }
-    else
-        {
-        iTextView->HandleAdditionalCharactersAtEndL();    
-        } 
-
-		// if smiley dialog is launched, then dont draw.
-		if (iSmileyDialogLaunched)
-			return;
-
-	    ScrollVisibleL( aSelection, aTop );
-	    DrawDeferred();   
-		
-    }    
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::ScrollVisibleL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::ScrollVisibleL( TCursorSelection& aSelection, TBool aTop )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::ScrollVisibleL()	start") ); 
-	// if smiley dialog is launched, then dont draw.
-	if (iSmileyDialogLaunched)
-		return;
-		
-
-	TCursorSelection sel( aSelection );
-    if( !ParagraphFits( sel.LowerPos() ) )
-        {
-        // selection doesn't fit to screen
-        TInt pos( aTop ? aSelection.LowerPos() : aSelection.HigherPos() );
-        sel.SetSelection( pos, pos );
-        }
-
-    // scroll selection to screen
-    iTextView->SetSelectionVisibilityL( EFalse );
-    iTextView->SetSelectionL( sel );
-    
-    // and update scroll bars
-    UpdateScrollBarsL();    
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::ScrollVisibleL()	end") );
-    }
-    
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::ScrollSelectionL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TCursorSelection CIMCVAppTextViewControl::ScrollSelection()
-    {
-    return iTextView->Selection();    
-    }
-    
-    
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::ScrollLinesL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::ScrollLinesL( TInt aAmount )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::ScrollLinesL()	start")); 
-    iLayout->ScrollLinesL( aAmount );
-    UpdateScrollBarsL(); 
-    DrawDeferred();
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::ScrollLinesL()	end") );
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::IsVisible
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CIMCVAppTextViewControl::IsVisible( TInt aPos )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::IsVisible()		start") ); 
-    TTmDocPos pos( aPos, ETrue );
-    TTmLineInfo lineInfo;
-
-    if( !iLayout->PosInBand( pos, &lineInfo ) )
-        {
-        // current position outside
-        return EFalse;
-        }
-    
-    if( !ParagraphFits( aPos ) )
-        {
-        // paragraph doesn't fit to screen
-        // extend scrolling one line up and down
-                
-        // iLineNumber starts from 0 and FirstCharOnLine assumes first line to be 1
-        TInt lineNo( lineInfo.iLineNumber + 1 );
-        
-        // check previous line (if it exists)
-        if( lineNo > 1 )
-            {
-            pos.iPos = iLayout->FirstCharOnLine( lineNo - 1 );
-            
-            if( !iLayout->PosInBand( pos ) )
-                {
-                // previous line outside
-                return EFalse;
-                }    
-            }
-
-        // check next line
-        pos.iPos = iLayout->FirstCharOnLine( lineNo + 1 );
-        
-        return iLayout->PosInBand( pos );
-        }
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::IsVisible()	end") );
-    return ETrue;
-    }
-    
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::ParagraphFits
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CIMCVAppTextViewControl::ParagraphFits( TInt aPos )
-    {
-    return iLayout->ParagraphHeight( aPos ) <= iViewRect.Height();
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::RedrawL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::Redraw()
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::Redraw()	start" )); 
-    DrawDeferred();
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::Redraw()	end" ));
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::CountComponentControls
-// -----------------------------------------------------------------------------
-//
-TInt CIMCVAppTextViewControl::CountComponentControls() const
-    {
-    if (iScrollBar && iScrollBar->TypeOfVScrollBar() == CEikScrollBarFrame::EDoubleSpan)
-        {    
-        return 1;
-        }
-    else
-        {
-        return 0;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::ComponentControl
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CIMCVAppTextViewControl::ComponentControl(TInt aIndex) const
-    {
-    if (aIndex == 0 && iScrollBar && 
-    	iScrollBar->TypeOfVScrollBar() == CEikScrollBarFrame::EDoubleSpan)
-        {    
-        return iScrollBar->VerticalScrollBar();
-        }
-    else
-        {
-        return NULL;
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::SetPenBehaviour
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::SetPenBehaviour( TPenBehaviour aPen )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::SetPenBehaviour()	start" )); 
-    iPenType = aPen;
-	IM_CV_LOGS(TXT("CIMCVAppTextViewControl::SetPenBehaviour()	end" ));
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::PenBehaviour
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-MIMCVAppTextView::TPenBehaviour CIMCVAppTextViewControl::PenBehaviour()
-    {
-    return iPenType;
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::ProcessStylusEventL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::ProcessStylusEventL( 
-    const TPointerEvent& /*aPointerEvent*/ )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::ProcessStylusEventL()	start" )); 
-    // nothing to do. Let derived classes to handle text selection.
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::ProcessStylusEventL()	end" ));
-    }
-
-// -----------------------------------------------------------------------------
-// CIMCVAppTextViewControl::HandleGlobalChangeNoRedrawL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CIMCVAppTextViewControl::HandleGlobalChangeNoRedrawL(
-    TViewYPosQualifier aYPosQualifier /*= TViewYPosQualifier()*/ )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::HandleGlobalChangeNoRedrawL()	start" )); 
-    iTextView->HandleGlobalChangeNoRedrawL( aYPosQualifier );
-    IM_CV_LOGS(TXT("CIMCVAppTextViewControl::HandleGlobalChangeNoRedrawL()	end" ));
-    }
-    
-
-//  End of File