diff -r 000000000000 -r 094583676ce7 wvuing/wvuiave/AppSrc/CCAChatInfoArray.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/wvuiave/AppSrc/CCAChatInfoArray.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,189 @@ +/* +* 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: Array of chat info structure + * +*/ + + +// INCLUDE FILES +#include "CCAChatInfoArray.h" +#include "ChatDefinitions.h" +#include +#include +#include + +// ================= MEMBER FUNCTIONS ======================= +// --------------------------------------------------------- +// CCAChatInfoArray::CCAChatInfoArray() +// C++ default constructor can NOT contain any code, that +// might leave. +// --------------------------------------------------------- +// + +CCAChatInfoArray::CCAChatInfoArray() + { + } +// --------------------------------------------------------- +// CCAChatInfoArray::ConstructL() +//Symbian OS default constructor can leave. +// +// --------------------------------------------------------- +// +void CCAChatInfoArray::ConstructL() + { + iLine = HBufC::NewL( KMaxLengthOfHBufC + KMaxTabLength ); + iTextFields = new ( ELeave ) CDesCArrayFlat( KArrayGranularity ); + iLineWidthArray = new ( ELeave ) CArrayFixFlat( KArrayGranularity ); + + iFont = LatinBold13(); // LAF + + TAknLayoutRect temp, layout; + TAknLayoutText myLayoutText; + + TRect myMainPaneRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, + myMainPaneRect ); + + layout.LayoutRect( myMainPaneRect, AknLayoutScalable_Avkon::main_pane( 1 ) ); + temp.LayoutRect( layout.Rect(), AknLayoutScalable_Avkon::popup_menu_window( 13 ) ); + layout.LayoutRect( temp.Rect(), AknLayoutScalable_Avkon::listscroll_menu_pane( 0 ) ); + temp.LayoutRect( layout.Rect(), AknLayoutScalable_Avkon::list_menu_pane( 0 ) ); + myLayoutText.LayoutText( temp.Rect(), AknLayoutScalable_Avkon::list_single_heading_pane_t1_cp2( 0 ) ); + + iFont = myLayoutText.Font(); + + iSubCellWidth = myLayoutText.TextRect().Size().iWidth; // * 4 / 11; + + } + +// --------------------------------------------------------- +// CCAChatInfoArray::SetLineWidthArrayL() +// Sets the linewidth array full of integers +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CCAChatInfoArray::SetLineWidthArrayL( CArrayFix* aLineWidthArray, + const TDesC& aTextField ) + { + + + TInt maxSize( iFont->TextWidthInPixels( aTextField ) / iSubCellWidth ); + for ( TInt i( 0 ); i <= maxSize; ++i ) + { + aLineWidthArray->AppendL( iSubCellWidth ); + } + } + +// --------------------------------------------------------- +// CCAChatInfoArray::NewL() +// +// --------------------------------------------------------- +// + +CCAChatInfoArray* CCAChatInfoArray::NewL() + { + CCAChatInfoArray* self = new ( ELeave ) CCAChatInfoArray; + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + + return self; + } + +// --------------------------------------------------------- +// CCAChatInfoArray::~CCAChatInfoArray() +// Destructor +// --------------------------------------------------------- +// +CCAChatInfoArray::~CCAChatInfoArray() + { + delete iLine; + delete iTextFields; + delete iLineWidthArray; + } + +// --------------------------------------------------------- +// CCAChatInfoArray::AddLabelAndTextL() +// Add labels and field texts to array +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CCAChatInfoArray::AddLabelAndTextL( TInt aLabelResourceId, + const TDesC& aFieldText, + TBool /*aWrap*/ ) + { + SetLineWidthArrayL( iLineWidthArray, aFieldText ); + + //temp array that contains TPtrC values. Number 1 is granularity + CArrayFixFlat* tempArray = new ( ELeave ) CArrayFixFlat( 1 ); + CleanupStack::PushL( tempArray ); + AknTextUtils::WrapToArrayL( aFieldText, *iLineWidthArray, *iFont, + *tempArray ); + + HBufC* itemBuf = HBufC::NewLC( KMaxLengthOfHBufC ); + TPtr itemPtr( itemBuf->Des() ); + + HBufC* label = CEikonEnv::Static()-> + AllocReadResourceLC( aLabelResourceId ); + + TInt arrayCount( tempArray->Count() ); + for ( TInt i( 0 ); i < arrayCount; i++ ) + { + itemPtr.Copy( tempArray->At( i ).Left( itemPtr.MaxLength() ) ); + itemPtr.Insert( 0, KTabulator ); + if ( i == 0 ) + { + itemPtr.Insert( 0, *label ); + } + iTextFields->AppendL( *itemBuf ); + itemPtr.Zero(); + } + CleanupStack::PopAndDestroy( 3, tempArray ); // itemBuf, label, tempArray + } + +// --------------------------------------------------------- +// CCAChatInfoArray::MdcaCount() const +// Returns number of items that are in array +// (other items were commented in a header). +// --------------------------------------------------------- +// +TInt CCAChatInfoArray::MdcaCount() const + { + __ASSERT_ALWAYS( iTextFields, + User::Panic( KPanicText, EChatInfoArrayNotExists ) ); + return iTextFields->MdcaCount(); + } + +// --------------------------------------------------------- +// CCAChatInfoArray::MdcaPoint( TInt aIndex ) const +// Returns formatted descriptor for given index +// (other items were commented in a header). +// --------------------------------------------------------- +// +TPtrC CCAChatInfoArray::MdcaPoint( TInt aIndex ) const + { + __ASSERT_ALWAYS( iTextFields, + User::Panic( KPanicText, EChatInfoArrayNotExists ) ); + + __ASSERT_DEBUG( aIndex >= 0, + User::Panic( KPanicText, EChatInfoArrayIndexOutOfBounds ) ); + + __ASSERT_DEBUG( aIndex < iTextFields->MdcaCount(), + User::Panic( KPanicText, EChatInfoArrayIndexOutOfBounds ) ) ; + + return iTextFields->MdcaPoint( aIndex ); + } + +// End of File