--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/notepad/notepad1/LibSrc/NpdViewerLaf.cpp Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,357 @@
+/*
+* 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 Decoration graphics of Editor.
+*
+*/
+
+
+// INCLUDE FILES
+#include <AknUtils.h>
+#include <AknIconArray.h>
+#include <gulicon.h>
+#include <AknsUtils.h>
+#include <AknIconUtils.h>
+#include <AknsDrawUtils.h>
+#include <AknsFrameBackgroundControlContext.h>
+#include <applayout.cdl.h>
+#include <skinlayout.cdl.h>
+#include <data_caging_path_literals.hrh>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <aknappui.h>
+#include <NpdLib.rsg>
+#include <npdlib.mbg>
+#include <eikdialg.h>
+#include <aknlayout.cdl.h>
+#include "NpdLib.hrh"
+#include "NpdViewerLaf.h"
+#include "NpdEditorDialog.h"
+#include "NpdEdwin.h"
+
+
+_LIT(KNpdMbmDrive, "Z:");
+_LIT(KNpdLibMbmFile, "npdlib.mbm");
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CNotepadViewerLaf::CNotepadViewerLaf
+// public Constructor
+// -----------------------------------------------------------------------------
+//
+CNotepadViewerLaf::CNotepadViewerLaf(CEikDialog* aParent)
+ : CCoeControl(), iParent(aParent)
+ {
+ // Note: These two lines are for enabling Window Server Autoflush. This
+ // allows you to execute drawing code step-by-step and see the
+ // the changes as they happen.
+ //
+ // To enable autoflush, uncomment the code lines below, and press
+ // CTRL+SHIFT+ALT+F in the emulator.
+ //RWsSession &ws = iEikonEnv->WsSession();
+ //ws.SetAutoFlush( ETrue );
+
+ iSkinUsed = ETrue;
+ iBgContext = NULL;
+ iStartPage = ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CNotepadViewerLaf::~CNotepadViewerLaf
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CNotepadViewerLaf::~CNotepadViewerLaf()
+ {
+ delete iTopPageIcon;
+ delete iTopPageMask;
+ delete iMidPageIcon;
+ delete iMidPageMask;
+ delete iBgContext;
+ if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
+ {
+ delete iTopLeftCornerIcon;
+ delete iTopRightCornerIcon;
+ delete iTopLeftCornerMask;
+ delete iTopRightCornerMask;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CNotepadViewerLaf::SetImage
+// public new function
+// -----------------------------------------------------------------------------
+//
+void CNotepadViewerLaf::SetImage( TBool aOnTopOfPage )
+ {
+ if ( aOnTopOfPage != iStartPage )
+ {
+ iStartPage = aOnTopOfPage;
+ DrawNow();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CNotepadViewerLaf::AddRectsAndLayout
+// -----------------------------------------------------------------------------
+//
+void CNotepadViewerLaf::AddRectsAndLayout(const TRect& aRect, RRegion& aRegion)
+ {
+ if(iSkinUsed)
+ {
+ TAknLayoutRect upperEdgeSkinTl;
+ TAknLayoutRect upperEdgeSkinTr;
+
+ upperEdgeSkinTl.LayoutRect( aRect, SkinLayout::Notepad_skin_element_placing_Line_2() ); // <CDL LAYOUT>
+ upperEdgeSkinTr.LayoutRect( aRect, SkinLayout::Notepad_skin_element_placing_Line_3() ); // <CDL LAYOUT>
+
+ TRect pageTopRect( aRect.iTl/*upperEdgeSkinTl.Rect().iTl*/, upperEdgeSkinTr.Rect().iBr );
+ aRegion.AddRect(pageTopRect);
+ }
+ else
+ {
+// aRegion.AddRect(aRect, AppLayout::Note_writing_layout_elements_Line_4());
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CNotepadViewerLaf::ConstructFromResourceL
+// public from CCoeControl
+// -----------------------------------------------------------------------------
+//
+void CNotepadViewerLaf::ConstructFromResourceL(TResourceReader& /*aReader*/)
+ {
+ TInt ignor;
+ TRAP(ignor,
+ iBgContext = CAknsFrameBackgroundControlContext::NewL( KAknsIIDQsnFrNotepad, TRect(0,0,0,0), TRect(0,0,0,0), EFalse );
+ );
+
+ if (iBgContext)
+ {
+ TFileName mbmfile(KNpdMbmDrive);
+
+ //mbmfile.Append(KDC_RESOURCE_FILES_DIR);
+
+ mbmfile.Append(KDC_APP_BITMAP_DIR);
+ mbmfile.Append(KNpdLibMbmFile);
+
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ AknsUtils::CreateIconL(skin,KAknsIIDQsnFrNotepadSideT,iTopPageIcon,iTopPageMask,mbmfile,EMbmNpdlibQsn_fr_notepad_side_t,EMbmNpdlibQsn_fr_notepad_side_t_mask );
+ AknsUtils::CreateIconL(skin,KAknsIIDQsnFrNotepadContSideT,iMidPageIcon,iMidPageMask,mbmfile,EMbmNpdlibQsn_fr_notepad_cont_side_t ,EMbmNpdlibQsn_fr_notepad_cont_side_t_mask );
+ if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
+ {
+ AknsUtils::CreateIconL(skin,KAknsIIDQsnFrNotepadCornerTl,iTopLeftCornerIcon,iTopLeftCornerMask,mbmfile,EMbmNpdlibQsn_fr_notepad_corner_tl ,EMbmNpdlibQsn_fr_notepad_corner_tl_mask );
+ AknsUtils::CreateIconL(skin,KAknsIIDQsnFrNotepadCornerTr,iTopRightCornerIcon,iTopRightCornerMask,mbmfile,EMbmNpdlibQsn_fr_notepad_corner_tr ,EMbmNpdlibQsn_fr_notepad_corner_tr_mask );
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CNotepadViewerLaf::SetContainerWindowL
+// cf. CEikEdwin::SetContainerWindowL.
+// -----------------------------------------------------------------------------
+//
+void CNotepadViewerLaf::SetContainerWindowL(const CCoeControl& aContainer)
+ {
+ if ( !OwnsWindow() )
+ {
+ CreateWindowL(&aContainer); // include SetMopParent
+ }
+ else
+ {
+ CCoeControl::SetContainerWindowL(aContainer);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CNotepadViewerLaf::SizeChanged
+// protected from CCoeControl
+// -----------------------------------------------------------------------------
+//
+void CNotepadViewerLaf::SizeChanged()
+ {
+ TRect rect( iParent->Rect() );
+
+ RRegion region;
+ AddRectsAndLayout(rect, region);
+ Window().SetShape(region);
+ region.Close();
+ if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
+ {
+ TAknLayoutRect bgLayout;
+ TAknLayoutRect mainNotesPane;
+ 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());
+ bgLayout.LayoutRect(mainNotesPane.Rect(), AknLayoutScalable_Apps::bg_notes_pane().LayoutLine());
+ iTlCornerLayout.LayoutRect(bgLayout.Rect(), AknLayoutScalable_Apps::bg_notes_pane_g2().LayoutLine());
+ iTrCornerLayout.LayoutRect(bgLayout.Rect(), AknLayoutScalable_Apps::bg_notes_pane_g3().LayoutLine());
+ iBitmapLayout.LayoutRect(bgLayout.Rect(), AknLayoutScalable_Apps::notes_bg_pane_g6().LayoutLine());
+ }
+ else
+ {
+ iBitmapLayout.LayoutRect(rect, AppLayout::Note_writing_layout_elements_Line_4());
+ }
+ AknIconUtils::SetSize(iTopPageIcon, iBitmapLayout.Rect().Size());
+ AknIconUtils::SetSize(iMidPageIcon, iBitmapLayout.Rect().Size());
+ AknIconUtils::SetSize(iTopPageMask, iBitmapLayout.Rect().Size());
+ AknIconUtils::SetSize(iMidPageMask, iBitmapLayout.Rect().Size());
+ if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
+ {
+ AknIconUtils::SetSize(iTopLeftCornerIcon, iTlCornerLayout.Rect().Size());
+ AknIconUtils::SetSize(iTopRightCornerIcon, iTrCornerLayout.Rect().Size());
+ AknIconUtils::SetSize(iTopLeftCornerMask, iTlCornerLayout.Rect().Size());
+ AknIconUtils::SetSize(iTopRightCornerMask, iTrCornerLayout.Rect().Size());
+ }
+
+ TAknLayoutRect mainpaneSkinCenter;
+ mainpaneSkinCenter.LayoutRect( rect, SkinLayout::Notepad_skin_element_placing_Line_1() ); // <CDL LAYOUT>
+ iBgContext->SetFrameRects(rect,mainpaneSkinCenter.Rect());// = CAknsFrameBackgroundControlContext::NewL( KAknsIIDQsnFrNotepad, iBackgroundRect, TRect(0,0,0,0), EFalse );
+ SetPosition(rect.iTl);
+ }
+
+// -----------------------------------------------------------------------------
+// CNotepadViewerLaf::Draw
+// private from CCoeControl
+// -----------------------------------------------------------------------------
+//
+void CNotepadViewerLaf::Draw(const TRect& aRect) const
+ {
+ CWindowGc& gc = SystemGc();
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ TRect main_pane = iParent->Rect();
+ TBool skinUsed = ETrue;
+ gc.Clear(aRect);
+ if(iBgContext)
+ {
+ skinUsed = AknsDrawUtils::Background( skin, iBgContext, gc, iBitmapLayout.Rect());
+ if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
+ {
+ iTlCornerLayout.DrawImage(SystemGc(), iTopLeftCornerIcon, iTopLeftCornerMask);
+ iTrCornerLayout.DrawImage(SystemGc(), iTopRightCornerIcon, iTopRightCornerMask);
+ }
+
+ if (skinUsed)
+ {
+ if(!iStartPage)
+ {
+ TAknLayoutRect line2Rect;
+ TAknLayoutRect line6Rect;
+ TAknLayoutRect line3Rect;
+ if( AknLayoutUtils::ScalableLayoutInterfaceAvailable() )
+ {
+ TRect tempMainPane;
+ TRect statusPane;
+ AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane,tempMainPane);
+ AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane,statusPane);
+ TRect mainPane(TPoint(0, 0), tempMainPane.Size());
+ TAknLayoutRect mainNotesPane;
+ mainNotesPane.LayoutRect(mainPane,
+ AknLayoutScalable_Apps::main_notes_pane().LayoutLine());
+
+ line2Rect.LayoutRect( mainNotesPane.Rect(),
+ SkinLayout::Notepad_skin_element_placing_Line_2() );
+ line6Rect.LayoutRect( mainNotesPane.Rect(),
+ SkinLayout::Notepad_skin_element_placing_Line_6() );
+ line3Rect.LayoutRect( mainNotesPane.Rect(),
+ SkinLayout::Notepad_skin_element_placing_Line_3() );
+ }
+ else
+ {
+ TRect application = iAvkonAppUi->ApplicationRect();
+ TAknLayoutRect scrLayout;
+ scrLayout.LayoutRect(application,AknLayout::screen());
+ TAknLayoutRect statusPaneLayout;
+ TAknLayoutRect controlPaneLayout;
+ statusPaneLayout.LayoutRect( scrLayout.Rect(), AknLayout::status_pane(scrLayout.Rect(), 0) );
+ controlPaneLayout.LayoutRect( scrLayout.Rect(), AknLayout::control_pane(scrLayout.Rect()) );
+ TRect clientRect( TPoint(0,0), TSize(scrLayout.Rect().Width() , scrLayout.Rect().Height()-statusPaneLayout.Rect().Height()-controlPaneLayout.Rect().Height() ) );
+ line2Rect.LayoutRect(clientRect,SkinLayout::Notepad_skin_element_placing_Line_2());
+ line6Rect.LayoutRect(clientRect,SkinLayout::Notepad_skin_element_placing_Line_6());
+ line3Rect.LayoutRect(clientRect,SkinLayout::Notepad_skin_element_placing_Line_3());
+ }
+ AknsDrawUtils::DrawCachedImage(skin, gc,
+ line2Rect.Rect(), KAknsIIDQsnFrNotepadCornerTl );
+ AknsDrawUtils::DrawCachedImage(skin, gc,
+ line6Rect.Rect(), KAknsIIDQsnFrNotepadSideT );
+ AknsDrawUtils::DrawCachedImage(skin, gc,
+ line3Rect.Rect(), KAknsIIDQsnFrNotepadCornerTr );
+ }
+ }
+ }
+ if(!skinUsed || !iBgContext)
+ {
+
+ AknsDrawUtils::DrawCachedImage(AknsUtils::SkinInstance(), gc, main_pane, KAknsIIDQsnBgAreaMain );
+
+ if(iStartPage)
+ {
+ iBitmapLayout.DrawImage(SystemGc(), iTopPageIcon, iTopPageMask);
+ }
+ else
+ {
+ iBitmapLayout.DrawImage(SystemGc(), iMidPageIcon, iMidPageMask);
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CNotepadEdwin::MopSupplyObject(TTypeUid aId)
+// Handles a change to the control's resources.
+// ---------------------------------------------------------
+//
+TTypeUid::Ptr CNotepadViewerLaf::MopSupplyObject(TTypeUid aId)
+ {
+ if(aId.iUid == MAknsControlContext::ETypeId)
+ {
+ return MAknsControlContext::SupplyMopObject(aId, iBgContext);
+ }
+ return CCoeControl::MopSupplyObject(aId);
+ }
+
+void CNotepadViewerLaf::HandleResourceChange(TInt aType)
+ {
+ if(aType == KAknsMessageSkinChange)
+ {
+ if(iBgContext)
+ {
+ delete iBgContext;
+ iBgContext = NULL;
+ }
+ TInt ignor;
+
+ TRAP(ignor,
+ iBgContext = CAknsFrameBackgroundControlContext::NewL( KAknsIIDQsnFrNotepad, TRect(0,0,0,0), TRect(0,0,0,0), EFalse );
+ );
+
+ if (iBgContext)
+ {
+ TFileName mbmfile(KNpdMbmDrive);
+ mbmfile.Append(KDC_APP_BITMAP_DIR);
+ mbmfile.Append(KNpdLibMbmFile);
+
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ TRAP_IGNORE( AknsUtils::CreateIconL(skin,KAknsIIDQsnFrNotepadSideT,iTopPageIcon,iTopPageMask,mbmfile,EMbmNpdlibQsn_fr_notepad_side_t,EMbmNpdlibQsn_fr_notepad_side_t_mask ) );
+ TRAP_IGNORE( AknsUtils::CreateIconL(skin,KAknsIIDQsnFrNotepadContSideT,iMidPageIcon,iMidPageMask,mbmfile,EMbmNpdlibQsn_fr_notepad_cont_side_t ,EMbmNpdlibQsn_fr_notepad_cont_side_t_mask ) );
+ }
+
+ SizeChanged();
+ DrawDeferred();
+
+ }
+
+ }
+// End of File