realtimenetprots/sipfw/SampleApp/gameUI_techview/Src/SIPExGameContainer.cpp
changeset 0 307788aac0a8
--- /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
+