diff -r 000000000000 -r 72b543305e3a email/imum/Utils/Src/IMSWizardControl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/imum/Utils/Src/IMSWizardControl.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,212 @@ +/* +* 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: +* Control class for mailbox wizard help screen +* +*/ + + +// INCLUDE FILES + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "IMSWizardControl.h" + + +// MEMBER FUNCTIONS + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// + +CIMSWizardControl::CIMSWizardControl() +{ +} + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CIMSWizardControl::~CIMSWizardControl() +{ + delete iEditor; + iEditor = NULL; +} + + + +// --------------------------------------------------------------------------- +// CIMSWizardControl::ConstructFromResourceL() +// From CoeControl +// --------------------------------------------------------------------------- +// +void CIMSWizardControl::ConstructFromResourceL( TResourceReader& aReader ) +{ + iEditor = new ( ELeave ) CEikRichTextEditor; + iEditor->SetContainerWindowL( *this ); + + iEditor->ConstructFromResourceL( aReader ); + + // get help screen text + + HBufC* helpText = StringLoader::LoadLC( R_IMUM_WIZARD_HELP_SCREEN ); + + iEditor->SetTextL( helpText ); + CleanupStack::PopAndDestroy( helpText ); + +} + +// --------------------------------------------------------------------------- +// CIMSWizardControl::SizeChanged() +// From CCoeControl +// --------------------------------------------------------------------------- +// +void CIMSWizardControl::SizeChanged() +{ + TRect clientrect = Rect(); + + // create akn layout rectancular + TAknLayoutRect r; + // first create whole messaging main pane + r.LayoutRect( clientrect, AknLayoutScalable_Apps::main_messa_pane( ) ); + // listscroll pane for text rows + r.LayoutRect( r.Rect(), AknLayoutScalable_Apps::listscroll_mce_pane( ) ); + // one text line pane + r.LayoutRect( r.Rect(), AknLayoutScalable_Apps::mce_text_pane( 0 ) ); + + // count of text rows + TInt count = + AknLayoutScalable_Apps::list_single_mce_message_pane_ParamLimits( + ).LastRow(); + // array contains all text rows in help screen + RArray array; + + + for( int i = 0; i < count; i++ ) + { + // pane area for one text row + TAknWindowComponentLayout windowComponentWiz = + AknLayoutScalable_Apps::list_single_mce_message_pane(i); + // smaller pane for text itself + TAknTextComponentLayout textComponentWiz = + AknLayoutScalable_Apps::list_single_mce_message_pane_t1(); + + // composition of two latter componets + TAknTextComponentLayout textCompCompositionWiz = + TAknWindowComponentLayout::ComposeText( + windowComponentWiz, textComponentWiz ); + + TRAPD(error, array.AppendL( textCompCompositionWiz ) ); + // if error in append function, then just exit the loop + if ( error != KErrNone ) + { + break; + } + } + + TAknMultiLineTextLayout multilineLayout + = TAknTextComponentLayout::Multiline( array ); + + AknLayoutUtils::LayoutEdwin( + iEditor, + r.Rect(), + multilineLayout, + EAknsCIQsnTextColorsCG6 ); + + array.Close(); +} + +// --------------------------------------------------------------------------- +// CIMSWizardControl::Draw() +// From CCoeControl. +// --------------------------------------------------------------------------- +// +void CIMSWizardControl::Draw( const TRect& aRect ) const +{ + // draw function for background + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = iBgContext; + CWindowGc& gc = SystemGc(); + // if we couldn't get background from layouts, then just set some + // defaults + if ( !AknsDrawUtils::Background( skin, cc, this, gc, aRect ) ) + { + gc.SetPenStyle( CGraphicsContext::ENullPen ); + gc.SetBrushColor( AKN_LAF_COLOR( 0 ) ); + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.DrawRect( Rect() ); + } +} + +// --------------------------------------------------------------------------- +// CIMSWizardControl::CountComponentControls() +// From CCoeControl +// --------------------------------------------------------------------------- +// +TInt CIMSWizardControl::CountComponentControls() const +{ + if ( iEditor ) + { + return 1; + } + return 0; +} + +// --------------------------------------------------------------------------- +// CIMSWizardControl::CountComponentControls() +// From CCoeControl +// --------------------------------------------------------------------------- +// +CCoeControl* CIMSWizardControl::ComponentControl( TInt aIndex ) const +{ + if ( aIndex == 0 ) + { + return iEditor; + } + return NULL; +} + +// --------------------------------------------------------------------------- +// CIMSWizardControl::HandleResourceChange() +// From CCoeControl +// --------------------------------------------------------------------------- +// +void CIMSWizardControl::HandleResourceChange( TInt aType ) +{ +CCoeControl::HandleResourceChange( aType ); + if ( aType == KAknsMessageSkinChange || + aType == KEikDynamicLayoutVariantSwitch ) + { + SizeChanged(); + } +} + +void CIMSWizardControl::SetBackgroundContext( MAknsControlContext* aContext ) +{ + iBgContext = aContext; + TRAP_IGNORE( iEditor->SetSkinBackgroundControlContextL( iBgContext ) ); +}