Bug 3539. Update localisation mappings for phone.
/*
* Copyright (c) 2002-2010 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: Declares window owning control for editor lines.
*
*/
// INCLUDE FILES
#include <AknsDrawUtils.h>
#include <eikenv.h>
#include "UssdEditorLines.h"
#include "UssdLayout.h"
// CONSTANTS
// ============================ MEMBER FUNCTIONS ===============================
// -----------------------------------------------------------------------------
// CUssdEditorLines::CUssdEditorLines
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CUssdEditorLines::CUssdEditorLines()
{
}
// -----------------------------------------------------------------------------
// CUssdEditorLines::ConstructL
// Symbian 2nd phase constructor can leave.
//
// -----------------------------------------------------------------------------
//
void CUssdEditorLines::ConstructL( const CCoeControl* aParent )
{
// Create an own window
CreateWindowL( aParent );
// This window draws editor row lines, so enable window
// transparency to display the editor window content as background
// for this line-window.
EnableWindowTransparency();
// enabled drag event to editor for highlighting the text.
EnableDragEvents();
// Create region buffer.
iRegBuf = new ( ELeave ) RRegionBuf< KUssdMaxNumberOfEditorLines >;
// Create rects
iRects = new ( ELeave ) CArrayPtrFlat<TAknLayoutRect>( KUssdMaxNumberOfEditorLines );
iRects->SetReserveL( KUssdMaxNumberOfEditorLines );
TAknLayoutRect* rect = NULL;
for ( TInt i = 0 ; i < KUssdMaxNumberOfEditorLines ; i++ )
{
rect = new ( ELeave ) TAknLayoutRect;
iRects->InsertL( i , rect ); // Can't leave
}
SetRect( aParent->Rect() );
SetFocus( ETrue );
// activate control
ActivateL();
}
// Destructor
CUssdEditorLines::~CUssdEditorLines()
{
if ( iRects )
{
iRects->ResetAndDestroy() ;
delete iRects;
}
if ( iRegBuf )
{
iRegBuf->Close() ;
delete iRegBuf;
}
}
// -----------------------------------------------------------------------------
// CUssdEditorLines::SizeChanged
// Called by framework when the view size is changed
//
// -----------------------------------------------------------------------------
//
void CUssdEditorLines::SizeChanged()
{
// Move rectangles to right position
for ( TInt i = 0;
iRects && i < iRects->Count() && i < UssdLayout::NumberOfEditorLines();
i++ )
{
iRects->At( i )->LayoutRect( Rect() ,
UssdLayout::MessageWritingLayoutElements6( i+1 ) );
}
}
// -----------------------------------------------------------------------------
// CUssdEditorLines::Draw
//
// -----------------------------------------------------------------------------
//
void CUssdEditorLines::Draw( const TRect& /*aRect*/ ) const
{
// Take the colour from some ramdom line.
// Here it is taken from the first line.
TRgb lineColour( KRgbWhite );
if ( iRects->Count() )
{
lineColour = iRects->At( 0 )->Color();
}
// Get skin colour if set.
MAknsSkinInstance* skin = AknsUtils::SkinInstance();
TRgb skinColor;
TInt error =
AknsUtils::GetCachedColor(
skin,
skinColor,
KAknsIIDQsnLineColors,
EAknsCIQsnLineColorsCG6 );
if ( error == KErrNone )
{
lineColour = skinColor;
}
CWindowGc& gc = SystemGc();
gc.SetBrushColor( lineColour );
// Draw row lines by clearing rectangles corresponding to row locations.
TInt count( iRects->Count() );
TInt lines( UssdLayout::NumberOfEditorLines() );
for ( TInt i = 0; iRects && i < count && i < lines; i++ )
{
gc.Clear( iRects->At( i )->Rect() );
}
}
// -----------------------------------------------------------------------------
// CUssdEditorLines::HandlePointerEventL
//
// -----------------------------------------------------------------------------
//
void CUssdEditorLines::HandlePointerEventL(const TPointerEvent& aPointerEvent)
{
// Temporary variant for text editor.
CCoeControl *editor( Parent() ? Parent()->ComponentControl( 0 ) : NULL );
// Redirect pointer event to CEikEdwin, so as that CEikEdwin can popup
// virtual keyboard when user gives a click input.
if ( editor )
{
editor->HandlePointerEventL( aPointerEvent );
}
}
// End of File