--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/msgeditor/viewsrc/MsgEditorCustomDraw.cpp Wed Nov 03 09:52:46 2010 +0530
@@ -0,0 +1,258 @@
+/*
+* Copyright (c) 2006 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: MsgEditorCustomDraw implementation
+*
+*/
+
+
+
+// ========== INCLUDE FILES ================================
+#include "MsgEditorCustomDraw.h"
+
+#include <gulicon.h>
+#include <AknUtils.h>
+#include <eikedwin.h>
+#include "MsgEditor.hrh" // for typedefs
+
+#include <AknsUtils.h>
+#include <applayout.cdl.h>
+#include <aknlayoutscalable_apps.cdl.h>
+
+#include <msgeditor.mbg>
+
+#include "MsgEditorCommon.h"
+
+// ========== EXTERNAL DATA STRUCTURES =====================
+
+// ========== EXTERNAL FUNCTION PROTOTYPES =================
+
+// ========== CONSTANTS ====================================
+
+// ========== MACROS =======================================
+
+// ========== LOCAL CONSTANTS AND MACROS ===================
+
+// ========== MODULE DATA STRUCTURES =======================
+
+// ========== LOCAL FUNCTION PROTOTYPES ====================
+
+// ========== LOCAL FUNCTIONS ==============================
+
+// ========== MEMBER FUNCTIONS =============================
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::NewL
+// ---------------------------------------------------------
+//
+CMsgEditorCustomDraw* CMsgEditorCustomDraw::NewL( const MFormCustomDraw* aParentCustomDraw,
+ const CEikEdwin* aParentControl,const TInt aControlType )
+ {
+ CMsgEditorCustomDraw* self = new (ELeave) CMsgEditorCustomDraw( aParentCustomDraw,
+ aParentControl,aControlType );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::ConstructL
+// ---------------------------------------------------------
+//
+void CMsgEditorCustomDraw::ConstructL()
+ {
+ iIcon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
+ KAknsIIDQgnGrafLineMessageHorizontal,
+ KMsgEditorMbm,
+ EMbmMsgeditorQgn_graf_line_message_horizontal,
+ EMbmMsgeditorQgn_graf_line_message_horizontal_mask );
+
+ ResolveLayouts();
+ }
+
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::CMsgEditorCustomDraw
+// ---------------------------------------------------------
+//
+CMsgEditorCustomDraw::CMsgEditorCustomDraw( const MFormCustomDraw* aParentCustomDraw,
+ const CEikEdwin* aParentControl,const TInt aControlType ) :
+ iParentCustomDraw( aParentCustomDraw ),
+ iParentControl( aParentControl ),
+ iControlType(aControlType)
+ {
+ }
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::~CMsgEditorCustomDraw
+// ---------------------------------------------------------
+//
+CMsgEditorCustomDraw::~CMsgEditorCustomDraw()
+ {
+ delete iIcon;
+ }
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::ResolveLayouts
+// ---------------------------------------------------------
+//
+void CMsgEditorCustomDraw::ResolveLayouts()
+ {
+ TRect dataPane = MsgEditorCommons::MsgDataPane();
+
+ TAknLayoutRect msgTextPane;
+ msgTextPane.LayoutRect( dataPane,
+ AknLayoutScalable_Apps::msg_text_pane( 0 ).LayoutLine() );
+
+ TAknLayoutRect msgBodyPane;
+ msgBodyPane.LayoutRect( msgTextPane.Rect(),
+ AknLayoutScalable_Apps::msg_body_pane().LayoutLine() );
+
+ TAknLayoutRect lineLayout;
+ lineLayout.LayoutRect( msgBodyPane.Rect(),
+ AknLayoutScalable_Apps::msg_body_pane_g1().LayoutLine() );
+
+ AknIconUtils::SetSize( iIcon->Bitmap(),
+ lineLayout.Rect().Size(),
+ EAspectRatioNotPreserved );
+
+ TInt lineOffset = MsgEditorCommons::MsgBaseLineOffset();
+
+ iLineDelta = MsgEditorCommons::MsgBaseLineDelta();
+
+ // Calculate first line rectangle's correct position.
+ iFirstLineRect = TRect( TPoint( lineLayout.Rect().iTl.iX,
+ lineOffset + iLineDelta - lineLayout.Rect().Height() ),
+ lineLayout.Rect().Size() );
+ }
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::DrawBackground
+// ---------------------------------------------------------
+//
+void CMsgEditorCustomDraw::DrawBackground( const TParam& aParam,
+ const TRgb& aRgb,
+ TRect& aDrawn ) const
+ {
+ iParentCustomDraw->DrawBackground( aParam, aRgb, aDrawn );
+
+ if ( !iParentControl->IsReadOnly() || iControlType == EMsgAttachmentControl)
+ {
+ DrawEditorLines( aParam );
+ }
+ }
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::DrawBackground
+// ---------------------------------------------------------
+//
+void CMsgEditorCustomDraw::DrawLineGraphics( const TParam& aParam,
+ const TLineInfo& aLineInfo ) const
+ {
+ iParentCustomDraw->DrawLineGraphics( aParam, aLineInfo );
+ }
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::DrawText
+// ---------------------------------------------------------
+//
+void CMsgEditorCustomDraw::DrawText( const TParam& aParam,
+ const TLineInfo& aLineInfo,
+ const TCharFormat& aFormat,
+ const TDesC& aText,
+ const TPoint& aTextOrigin,
+ TInt aExtraPixels ) const
+ {
+ iParentCustomDraw->DrawText( aParam,
+ aLineInfo,
+ aFormat,
+ aText,
+ aTextOrigin,
+ aExtraPixels );
+ }
+
+// 107-24185 : Emoticon support for SMS and MMS
+
+// -----------------------------------------------------------------------------
+// CMsgEditorCustomDraw::DrawText
+// -----------------------------------------------------------------------------
+//
+void CMsgEditorCustomDraw::DrawText( const TParam& aParam,
+ const TLineInfo& aLineInfo, const TCharFormat& aFormat, const TDesC& aText,
+ const TInt aStart, const TInt aEnd, const TPoint& aTextOrigin,
+ TInt aExtraPixels ) const
+ {
+ iParentCustomDraw->DrawText( aParam, aLineInfo, aFormat,
+ aText.Mid( aStart, aEnd - aStart ), aTextOrigin, aExtraPixels );
+ }
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::DrawText
+// ---------------------------------------------------------
+//
+TRgb CMsgEditorCustomDraw::SystemColor( TUint aColorIndex, TRgb aDefaultColor ) const
+ {
+ return iParentCustomDraw->SystemColor( aColorIndex, aDefaultColor );
+ }
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::DrawEditorLines
+// ---------------------------------------------------------
+//
+void CMsgEditorCustomDraw::DrawEditorLines( const TParam& aParam ) const
+ {
+ TRect currentRect( iFirstLineRect );
+
+ while ( currentRect.iBr.iY <= aParam.iDrawRect.iBr.iY )
+ {
+ if ( currentRect.iTl.iY >= aParam.iDrawRect.iTl.iY )
+ {
+ aParam.iGc.DrawBitmapMasked( currentRect,
+ iIcon->Bitmap(),
+ TRect( TPoint( 0 ,0 ), currentRect.Size() ),
+ iIcon->Mask(),
+ ETrue );
+ }
+
+ currentRect.Move( 0, iLineDelta );
+ }
+ }
+
+// ---------------------------------------------------------
+// CMsgEditorCustomDraw::SkinChanged
+//
+//
+// ---------------------------------------------------------
+//
+void CMsgEditorCustomDraw::SkinChanged()
+ {
+ CGulIcon* newIcon = NULL;
+ TRAP_IGNORE( newIcon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
+ KAknsIIDQgnGrafLineMessageHorizontal,
+ KMsgEditorMbm,
+ EMbmMsgeditorQgn_graf_line_message_horizontal,
+ EMbmMsgeditorQgn_graf_line_message_horizontal_mask ) );
+
+ if ( newIcon )
+ {
+ delete iIcon;
+ iIcon = newIcon;
+
+ ResolveLayouts();
+ }
+ }
+
+// End of File