--- /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 <sipex.rsg>
+#include <eiklabel.h>
+#include <eikgted.h> // CGlobalTextEditor
+#include <eikenv.h>
+#include <txtglobl.h> // 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
+