notepad/notepad1/LibSrc/NpdEditorLaf.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 10:12:19 +0200
changeset 0 f979ecb2b13e
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2002 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:  Implementation of paper lines of Notepad/Template Editor.
*
*/


// INCLUDE FILES
#include <AknUtils.h>
#include <NpdLib.rsg>
#include <barsread.h>
#include <applayout.cdl.h>
#include <eikrted.h>    // for CRichTextEditor
#include <aknlayoutscalable_apps.cdl.h>
#include <aknappui.h>
#include "NpdEditorLaf.h"
#include "NpdEdwin.h"
#include "NpdLibPanic.h"


const TInt KNotepadEditorLines(6);

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CNotepadEditorLaf::CNotepadEditorLaf
// public Constructor
// -----------------------------------------------------------------------------
//
CNotepadEditorLaf::CNotepadEditorLaf(CEikDialog* aParent)
    : CNotepadViewerLaf(aParent)
    {
    }

// -----------------------------------------------------------------------------
// CNotepadEditorLaf::~CNotepadEditorLaf
// Destructor
// -----------------------------------------------------------------------------
//
CNotepadEditorLaf::~CNotepadEditorLaf()
    {
    iRects.Close();
    }

// -----------------------------------------------------------------------------
// CNotepadEditorLaf::AddRectsAndLayout
// from CNotepadViewerLaf (called from SizeChanged)
// -----------------------------------------------------------------------------
//
void CNotepadEditorLaf::AddRectsAndLayout(const TRect& aRect, RRegion& aRegion)
    {
    CNotepadViewerLaf::AddRectsAndLayout(aRect, aRegion);
	TAknLayoutRect mainNotesPane;
	TAknLayoutRect lineLayout;
	TAknLayoutRect line;
	TAknLayoutScalableParameterLimits textLimits ;

	if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
		{
		TRect tempMainPane;
		TRect statusPane;
		AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane,tempMainPane);
		AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane,statusPane);
		TRect mainPane(TPoint(0, 0), tempMainPane.Size());
		mainNotesPane.LayoutRect(mainPane, AknLayoutScalable_Apps::main_notes_pane().LayoutLine());
		lineLayout.LayoutRect(mainNotesPane.Rect(),AknLayoutScalable_Apps::list_notes_pane().LayoutLine());
		textLimits = AknLayoutScalable_Apps::list_notes_text_pane_ParamLimits();
		}
	TInt lineCount = textLimits.LastRow() - textLimits.FirstRow() + 1;
	// The array iRects should be reset, when there is a change 
	// in the no of lines after a layout switch
	if ( iRects.Count() != lineCount )
		{
		iRects.Reset();
   		for (TInt j(textLimits.FirstRow()); j <= textLimits.LastRow(); j++)
			{
    		iRects.Append(TAknLayoutRect());
			}
		}
	if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
		{
		for ( TInt i(textLimits.FirstRow()); i <= textLimits.LastRow(); i++ )
			{
			line.LayoutRect(lineLayout.Rect(),AknLayoutScalable_Apps::list_notes_text_pane(i).LayoutLine());
			iRects[i].LayoutRect(line.Rect() ,AknLayoutScalable_Apps::list_notes_text_pane_g1().LayoutLine());
			aRegion.AddRect(iRects[i].Rect());
			}
		}
	else
		{
		for ( TInt i(0); i < KNotepadEditorLines; i++ )
			{
			iRects[i].LayoutRect(aRect,AppLayout::Note_writing_layout_elements_Line_5(i));
			aRegion.AddRect(iRects[i].Rect());
			}
		}
    }

// -----------------------------------------------------------------------------
// CNotepadEditorLaf::ConstructFromResourceL
// from CCoeControl
// -----------------------------------------------------------------------------
//
void CNotepadEditorLaf::ConstructFromResourceL(TResourceReader& aReader)
    {
	TAknLayoutScalableParameterLimits textLimits ;  
    CNotepadViewerLaf::ConstructFromResourceL(aReader); 
    
    if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
		{
		textLimits = AknLayoutScalable_Apps::list_notes_text_pane_ParamLimits();
	    for (TInt i(textLimits.FirstRow()); i <= textLimits.LastRow(); i++)
		    {
	        User::LeaveIfError(iRects.Append(TAknLayoutRect()));
			}
		}
	else
		{
    	for (TInt i(0); i < KNotepadEditorLines; i++)
        	{
        	User::LeaveIfError(iRects.Append(TAknLayoutRect()));
        	}
		}
    }

// -----------------------------------------------------------------------------
// CNotepadEditorLaf::Draw
// from CCoeControl
// -----------------------------------------------------------------------------
//
void CNotepadEditorLaf::Draw(const TRect& aRect) const
    {
    CNotepadViewerLaf::Draw(aRect);
    CWindowGc& gc = SystemGc();
    for ( TInt i(iRects.Count() - 1); i >= 0; i-- )
        {
        iRects[i].DrawRect(gc);
        }
    }

// End of File