notepad/notepad1/LibSrc/NpdEdwinSkinTest.cpp
changeset 0 f979ecb2b13e
--- /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 <AknUtils.h>
+#include <txtglobl.h>
+#include <barsread.h>
+#include <NpdLib.rsg>
+#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 <aknsutils.h>
+#include <aknsDrawUtils.h>
+#include <aknappui.h>
+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