diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SampleApp/gameUI_techview/Src/SIPExGameContainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SampleApp/gameUI_techview/Src/SIPExGameContainer.cpp Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,334 @@ + +// Copyright (c) 2004-2009 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: +// + + + +// INCLUDES +#include "SIPExGameContainer.h" +#include "SIPExGameView.h" +#include "SIPExApp.h" +#include "SIPExGameConstants.h" + +#include +#include +#include // CGlobalTextEditor +#include +#include // CGlobalText + +// CONSTANTS +const TInt KUndefinedControlId( -3000 ); +const TInt KComponentCount( 3 ); +const TUid KViewUid = { 0x00000001 }; + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::NewL +// Static constructor +// ----------------------------------------------------------------------------- +// +CSIPExGameContainer* CSIPExGameContainer::NewL( + const TRect& aRect, + CSIPExEngine& aGameData ) + { + CSIPExGameContainer* self = CSIPExGameContainer::NewLC( aRect, aGameData ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::NewLC +// Static constructor. On return the instance is left to the CleanupStack. +// ----------------------------------------------------------------------------- +// +CSIPExGameContainer* CSIPExGameContainer::NewLC( + const TRect& aRect, + CSIPExEngine& aGameData ) + { + CSIPExGameContainer* self = new ( ELeave ) CSIPExGameContainer; + CleanupStack::PushL( self ); + self->ConstructL( aRect, aGameData ); + return self; + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::~CSIPExGameContainer +// Destructor +// ----------------------------------------------------------------------------- +// +CSIPExGameContainer::~CSIPExGameContainer() + { + delete iStatusLbl; + delete iGameView; + delete iEditor; + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::ConstructL +// Symbian 2nd phase constructor that might leave. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::ConstructL( + const TRect& aRect, + CSIPExEngine& aGameData ) + { + iGameEngine = &aGameData; + // Create a window for this application view + CreateWindowL(); + + // Set the windows size + SetRect( aRect ); + // Indicate that the control is blank + SetBlank(); + // Set the control's border + SetBorder( TGulBorder::EFlatContainer ); + + // Initialize controls + CreateGameViewL(); + CreateStateViewEditorL(); + + // Activate the window, which makes it ready to be drawn + ActivateL(); + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::CSIPExGameContainer +// C++ default constructor +// ----------------------------------------------------------------------------- +// +CSIPExGameContainer::CSIPExGameContainer() + { + // no implementation required + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::CountRects +// Calculates rectangles for all different areas. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::CountRects() + { + iGameAreaRect = TRect( TPoint( 20, 30 ), TSize( 220, 205 ) ); + iStatusLblRect = TRect( TPoint( 20, 5 ), TSize( 220, 25 ) ); + iEditorRect = TRect( TPoint( 265, 5 ), TSize( 230, 230 ) ); + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::CreateStateViewEditorL +// Creates the state window and status label. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::CreateStateViewEditorL() + { + iEditor = new (ELeave) CEikGlobalTextEditor(); + TInt flags( EEikEdwinNoAutoSelection | + EEikEdwinJustAutoCurEnd | + EEikEdwinLineCursor | + EEikEdwinNoHorizScrolling ); + // The max number of characters in editor 1k + iEditor->ConstructL( this, 7, 1024, flags, EGulFontControlAll, EGulAllFonts ); + iEditor->SetContainerWindowL( *this ); + iEditor->SetRect( iEditorRect ); + iEditor->ActivateL(); + iEditor->CreateScrollBarFrameL(); + iEditor->ScrollBarFrame()->SetScrollBarVisibilityL( + CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); + + iStatusLbl = new (ELeave) CEikLabel(); + iStatusLbl->SetContainerWindowL( *this ); + iStatusLbl->SetRect( iStatusLblRect ); + iStatusLbl->ActivateL(); + iStatusLbl->SetTextL( KNullDesC ); + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::CreateGameViewL +// Creates the game board view. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::CreateGameViewL() + { + iGameView = CSIPExGameView::NewL( iGameAreaRect, this, *iGameEngine ); + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::CountComponentControls +// From CCoeControl. +// ----------------------------------------------------------------------------- +// +TInt CSIPExGameContainer::CountComponentControls() const + { + return KComponentCount; + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::ComponentControl +// From CCoeControl. +// ----------------------------------------------------------------------------- +// +CCoeControl* CSIPExGameContainer::ComponentControl( TInt aIndex ) const + { + switch( aIndex ) + { + case 0: + return iEditor; + case 1: + return iGameView; + case 2: + return iStatusLbl; + + default: + { + _LIT( KPanicCntx, "SIP Example" ); + __ASSERT_ALWAYS( + EFalse, User::Panic( KPanicCntx(), KUndefinedControlId ) ); + } + } + return NULL; + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::Draw +// From CCoeControl. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::Draw( const TRect& aRect ) const + { + CEikBorderedControl::Draw( aRect ); + CWindowGc& gc = SystemGc(); + + // Ensure that the border is not overwritten + // by future drawing operations + gc.SetClippingRect( Border().InnerRect( Rect() ) ); + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::SizeChanged +// From CCoeControl. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::SizeChanged() + { + CountRects(); + + if( iGameView ) + { + iGameView->SetRect( iGameAreaRect ); + } + if( iEditor ) + { + iEditor->SetRect( iEditorRect ); + } + if( iStatusLbl ) + { + iStatusLbl->SetRect( iStatusLblRect ); + } + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::ShowInfoL +// From MSIPExStateViewNotifier. +// Appends the text to the globaltexteditor. After each line the line break is +// added. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::ShowInfoL( const TDesC& aText ) + { + CGlobalText* globalText = iEditor->GlobalText(); + globalText->InsertL( globalText->DocumentLength(), aText ); + globalText->InsertL( + globalText->DocumentLength(), CEditableText::ELineBreak ); + + TCharFormat charFormat; + TCharFormatMask charMask; + iEditor->ApplyCharFormatL( charFormat, charMask ); + + iEditor->MoveCursorL( TCursorPosition::EFPageDown, EFalse ); + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::ShowInfoL +// From MSIPExStateViewNotifier. +// Converts the 8-bit descriptor to 16-bit desc. and calls the overwritten +// ShowInfoL +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::ShowInfoL( const TDesC8& aText ) + { + HBufC* buf = HBufC::NewLC( aText.Length() ); + buf->Des().Copy( aText ); + ShowInfoL( *buf ); + CleanupStack::PopAndDestroy( buf ); + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::ShowStatusInfoL +// From MSIPExStateViewNotifier. Updates the game status label text. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::ShowStatusInfoL( const TDesC& aText ) + { + iStatusLbl->SetTextL( aText ); + DrawNow(); + } + +// ----------------------------------------------------------------------------- +// CSIPExGameContainer::OfferKeyEventL +// From CCoeControl. Redirect the keyevent to the game view. +// ----------------------------------------------------------------------------- +// +TKeyResponse CSIPExGameContainer::OfferKeyEventL( + const TKeyEvent& aKeyEvent, + TEventCode aType ) + { + return iGameView->OfferKeyEventL( aKeyEvent, aType ); + } + +// ----------------------------------------------------------------------------- +// CSIPProfileListContainer::ViewId +// From MCoeView. +// ----------------------------------------------------------------------------- +// +TVwsViewId CSIPExGameContainer::ViewId() const + { + TVwsViewId id; + id.iAppUid = KUidSIPExApp; + id.iViewUid = KViewUid; + return id; + } + +// ----------------------------------------------------------------------------- +// CSIPProfileListContainer::ViewActivatedL +// From MCoeView. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::ViewActivatedL( + const TVwsViewId& /*aPrevViewId*/, + TUid /*aCustomMessageId*/,const TDesC8& /*aCustomMessage*/) + { + // Not used. Implemented to get around the focus disapearing problem. + } + +// ----------------------------------------------------------------------------- +// CSIPProfileListContainer::ViewDeactivated +// From MCoeView. +// ----------------------------------------------------------------------------- +// +void CSIPExGameContainer::ViewDeactivated() + { + // Not used. Implemented to get around the focus disapearing problem. + } + +// End of file +