diff -r 000000000000 -r f979ecb2b13e notepad/notepad1/LibSrc/NpdEdwinSkinTest.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/notepad/notepad1/LibSrc/NpdEdwinSkinTest.cpp Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,203 @@ +/* +* 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 Notepad/Template Editor. +* +*/ + + +#include +#include +#include +#include +#include "NpdEdwin.h" +#include "NpdLibPanic.h" +#include "NpdLib.laf" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CNotepadEdwin::LafSizeChanged +// Called from CNotepadEditorLaf::SizeChanged(). +// ----------------------------------------------------------------------------- +// +void CNotepadEdwin::LafSizeChanged(const TRect& aRect) + { + iLayoutShadow.LayoutRect( aRect, + NOTEPAD_EDITOR_SHADOW_C, //TInt C + NOTEPAD_EDITOR_SHADOW_L, //TInt l + NOTEPAD_EDITOR_SHADOW_T, //TInt t + AknLayoutUtilsNoValue, //TInt r + AknLayoutUtilsNoValue, //TInt b + NOTEPAD_EDITOR_SHADOW_W, //TInt W + NOTEPAD_EDITOR_SHADOW_H ); //TInt H + iLayoutOutline.LayoutRect( aRect, + NOTEPAD_EDITOR_OUTLINE_C, //TInt C + NOTEPAD_EDITOR_OUTLINE_L, //TInt l + NOTEPAD_EDITOR_OUTLINE_T, //TInt t + AknLayoutUtilsNoValue, //TInt r + AknLayoutUtilsNoValue, //TInt b + NOTEPAD_EDITOR_OUTLINE_W, //TInt W + NOTEPAD_EDITOR_OUTLINE_H ); //TInt H + iLayoutInside.LayoutRect( aRect, + NOTEPAD_EDITOR_INSIDE_C, //TInt C + NOTEPAD_EDITOR_INSIDE_L, //TInt l + NOTEPAD_EDITOR_INSIDE_T, //TInt t + AknLayoutUtilsNoValue, //TInt r + AknLayoutUtilsNoValue, //TInt b + NOTEPAD_EDITOR_INSIDE_W, //TInt W + NOTEPAD_EDITOR_INSIDE_H ); //TInt H + } + +// ----------------------------------------------------------------------------- +// CNotepadEdwin::InitNotepadEditorL +// ----------------------------------------------------------------------------- +// +void CNotepadEdwin::InitNotepadEditorL( + const TRect& aRect, + CNotepadViewerLaf& aLafControl ) + { + iLaf = &aLafControl; + AknLayoutUtils::LayoutControl( iLaf, + aRect, 0, 0, 0, AknLayoutUtilsNoValue, AknLayoutUtilsNoValue, + aRect.Width(), aRect.Height() ); + AknLayoutUtils::LayoutEdwin(this, aRect, + NOTEPAD_EDITOR_LAYOUT_FONT, //TInt font + NOTEPAD_EDITOR_LAYOUT_C, // TInt C + NOTEPAD_EDITOR_LAYOUT_L, // TInt l + NOTEPAD_EDITOR_LAYOUT_R, // TInt r + NOTEPAD_EDITOR_LAYOUT_B, // TInt B + NOTEPAD_EDITOR_LAYOUT_W, // TInt W + NOTEPAD_EDITOR_LAYOUT_J, // TInt J + NOTEPAD_EDITOR_LAYOUT_LINES, // TInt aNumberOfLinesShown + NOTEPAD_EDITOR_LAYOUT_NEXTB); // TInt aNextLineBaseline + + // SetBackgroundColorL() contains modification to + // Edwin's CParaFormat which was created by + // AknLayoutUtils::LayoutEdwin(...), so iEditor->SetBackgroundColorL() + // must be called after AknLayoutUtils::LayoutEdwin(...). + // + SetBackgroundColorL(); + + // EdwinEvent is used for dynamically changing Laf bitmap + // + AddEdwinObserverL(this); + + Text()->SetHasChanged(EFalse); + SetAmountToFormat(); // to show fast even if large text + SetCanDrawOutsideRect(); // Redraw after Chinese FEP + } + +// ----------------------------------------------------------------------------- +// CNotepadEdwin::ChangeDecorationGraphicsL +// ----------------------------------------------------------------------------- +// +void CNotepadEdwin::ChangeDecorationGraphicsL() + { + __ASSERT_DEBUG( iLaf, + Panic(ENotepadLibraryPanicNoControlForDecorationGraphics) ); + TPoint p; + iLaf->SetImage(iLayout->PosInBand(0, p) ? 0 : 1); + } + +// ----------------------------------------------------------------------------- +// CNotepadEdwin::HandleEdwinEventL +// from MEikEdwinObserver +// ----------------------------------------------------------------------------- +// +void CNotepadEdwin::HandleEdwinEventL( + CEikEdwin* /*aEdwin*/, + TEdwinEvent aEventType ) + { + __ASSERT_DEBUG( iLaf, + Panic(ENotepadLibraryPanicNoControlForDecorationGraphics) ); + if ( aEventType == EEventNavigation ) + { + ChangeDecorationGraphicsL(); + } + } + +// ----------------------------------------------------------------------------- +// CNotepadEdwin::SetBackgroundColorL +// ----------------------------------------------------------------------------- +// +void CNotepadEdwin::SetBackgroundColorL() + { + TRgb bgcolor(iLayoutInside.Color()); + CEikEdwin::SetBackgroundColorL(bgcolor); + iTextView->SetBackgroundColor(bgcolor); + CGlobalText* text = STATIC_CAST(CGlobalText*, Text()); + CParaFormat* paraFormat = CParaFormat::NewLC(); + TParaFormatMask paraFormatMask; + text->GetParaFormatL(paraFormat, paraFormatMask, + 0, text->DocumentLength()); + paraFormat->iFillColor = bgcolor; + paraFormatMask.SetAttrib(EAttFillColor); + text->ApplyParaFormatL(paraFormat,paraFormatMask, + 0, text->DocumentLength()); + CleanupStack::PopAndDestroy(); // paraFormat + TResourceReader rr; + iCoeEnv->CreateResourceReaderLC(rr, R_NOTEPAD_CURSOR_COLOR); + TRgb cursorColor(AKN_LAF_COLOR(rr.ReadInt16())); + CleanupStack::PopAndDestroy(); // rr + iTextView->SetCursorXorColor( + TRgb( cursorColor.Value() ^ bgcolor.Value() ) ); + NotifyNewFormatL(); + } + +// ----------------------------------------------------------------------------- +// CNotepadEdwin::HandleResourceChange +// from CCoeControl +// ----------------------------------------------------------------------------- +// +void CNotepadEdwin::HandleResourceChange(TInt aType) + { + CEikEdwin::HandleResourceChange( aType ); + if( aType == KEikColorResourceChange ) + { + TRAPD(r, SetBackgroundColorL()); + } + } + +// ----------------------------------------------------------------------------- +// CNotepadEdwin::Draw +// from CCoeControl +// ----------------------------------------------------------------------------- +// +#include +#include +#include +void CNotepadEdwin::Draw(const TRect& aRect) const + { +MAknsSkinInstance* skin = AknsUtils::SkinInstance(); +CFbsBitmap* bitmap = AknsUtils::GetCachedBitmap( skin, KAknsIIDSkinBmpMainPaneUsual); + CWindowGc& gc = SystemGc(); + if (bitmap) { +TSize size(bitmap->SizeInPixels()); +RDebug::Print(_L("size=(%d, %d)"), size.iWidth, size.iHeight); + TRect rect(iAvkonAppUi->ClientRect()); + TAknLayoutRect layout; + layout.LayoutRect(TRect(0, 0, 176, 164), 221, 0, 0, + AknLayoutUtilsNoValue, + AknLayoutUtilsNoValue, + 176, 164); + layout.DrawImage(gc, bitmap, 0); +// iLayoutShadow.DrawImage(gc, bitmap, 0); + } + iLayoutShadow.DrawRect(gc); + iLayoutOutline.DrawOutLineRect(gc); + iLayoutInside.DrawRect(gc); + CEikEdwin::Draw(aRect); + } + +// End of File