diff -r 000000000000 -r 72b543305e3a messagingappbase/msgeditor/viewsrc/MsgDummyHeaderCleaner.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/msgeditor/viewsrc/MsgDummyHeaderCleaner.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,123 @@ +/* +* Copyright (c) 2005 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: MsgDummyHeaderCleaner implementation +* +*/ + + + +// ========== INCLUDE FILES ================================ + +#include // for CEikonEnv +#include // for AknUtils +#include // for CAknEnv +#include + +#include // LAF +#include +#include + +#include // for Skinned drawing +#include + +#include "MsgEditorCommon.h" +#include "MsgBaseControl.h" +#include "MsgHeader.h" +#include "MsgDummyHeaderCleaner.h" + +// --------------------------------------------------------- +// CMsgDummyHeaderCleaner::CMsgDummyHeaderCleaner +// --------------------------------------------------------- +CMsgDummyHeaderCleaner::CMsgDummyHeaderCleaner( const CMsgHeader* aParent ) + : iParent( aParent ) + { + } + +// --------------------------------------------------------- +// CMsgDummyHeaderCleaner::ConstructL +// --------------------------------------------------------- +void CMsgDummyHeaderCleaner::ConstructL( ) + { + SetContainerWindowL( *iParent ); + + // Lets check the position of the dashed bar + TRect dataPane = MsgEditorCommons::MsgDataPane(); + iDashBar.LayoutRect( + dataPane, + AknLayoutScalable_Avkon::bg_list_pane_g4( 2 ).LayoutLine() ); + } + +// --------------------------------------------------------- +// CMsgDummyHeaderCleaner::Draw +// --------------------------------------------------------- +void CMsgDummyHeaderCleaner::Draw(const TRect& /*aRect*/) const + { + CWindowGc& gc = SystemGc(); + + TRect rect( iParent->Rect() ); + + // The rect clearing will be divided into two parts: + // First one is the rect on the left side of the dashed bar in the header + // ie. the area on top of the label (eg. To) + // The second one is the rect on right side of the dashed bar + // ie. on top of the field itself (eg. To ) + TRect rectLabel( + 0, + 0, + iDashBar.Rect( ).iTl.iX-1, + MsgEditorCommons::MsgBaseLineOffset( ) ); + + TRect rectField( + iDashBar.Rect( ).iBr.iX+1, + 0, + rect.iBr.iX, + MsgEditorCommons::MsgBaseLineOffset( ) ); + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); + + // Either draw the skin context or just clear it + if ( !AknsDrawUtils::Background( skin, cc, this, gc, rectLabel ) ) + { + gc.SetBrushColor( AKN_LAF_COLOR( 0 ) ); + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.SetPenStyle( CGraphicsContext::ENullPen ); + gc.DrawRect( rectLabel ); + } + + if ( !AknsDrawUtils::Background( skin, cc, this, gc, rectField ) ) + { + gc.SetBrushColor( AKN_LAF_COLOR( 0 ) ); + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.SetPenStyle( CGraphicsContext::ENullPen ); + gc.DrawRect( rectField ); + } + } + +// --------------------------------------------------------- +// CMsgDummyHeaderCleaner::HandleResourceChange +// --------------------------------------------------------- +void CMsgDummyHeaderCleaner::HandleResourceChange( TInt aType ) + { + CCoeControl::HandleResourceChange( aType ); + if ( aType == KEikDynamicLayoutVariantSwitch ) + { + TRect dataPane = MsgEditorCommons::MsgDataPane(); + iDashBar.LayoutRect( + dataPane, + AknLayoutScalable_Avkon::bg_list_pane_g4( 2 ).LayoutLine() ); + } + } + +// End of File