--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lafagnosticuifoundation/cone/tef/twindowposition/twindowposition.cpp Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,322 @@
+// Copyright (c) 2007-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:
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <eikstart.h>
+#include <e32cmn.h>
+#include "twindowposition.h"
+
+TPoint KWindowPosition(0,0);
+TPoint windowPosition;
+
+//
+// CCoeConD
+//
+void CCoeConD::ConstructL(const CCoeControl& aParent)
+ {
+ CreateWindowL(&aParent);
+ }
+
+//
+// CCoeConC
+//
+CCoeConC::CCoeConC(CCoeConB& aParent) : iParent(aParent)
+ {
+ }
+
+void CCoeConC::ConstructL()
+ {
+ //C is window owning
+ //ViewPort
+ iCoeConD = new (ELeave) CCoeConD;
+ iCoeConD->ConstructL(iParent);
+ CreateWindowL(iCoeConD);
+ //ViewPort
+ SetParent(&iParent);
+ SetComponentsToInheritVisibility();
+ CopyControlContextFrom(&iParent);
+ }
+
+CCoeConC::~CCoeConC()
+ {
+ if (iCoeConD)
+ delete iCoeConD;
+ }
+
+void CCoeConC::Draw(const TRect& aRect) const
+ {
+ CWindowGc& gc = SystemGc();
+ gc.SetDrawMode(CGraphicsContext::EDrawModePEN);
+ gc.SetBrushColor(TRgb(150,250,20));
+ gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+ gc.DrawRect(aRect);
+ windowPosition.SetXY(aRect.iTl.iX, aRect.iTl.iY);
+ }
+
+void CCoeConC::SetViewPortRect(TRect aRect )
+ {
+ iCoeConD->SetRect(aRect);
+ }
+
+TInt CCoeConC::CountComponentControls() const
+ {
+ return 1;
+ }
+
+CCoeControl* CCoeConC::ComponentControl(TInt aIndex ) const
+ {
+ if( aIndex == 0 )
+ {
+ return iCoeConD;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+//
+//
+// CCoeConB
+//
+//
+CCoeConB::CCoeConB():CCoeControl()
+ {
+ }
+
+void CCoeConB::ConstructL(CCoeControl* aParent)
+ {
+ //B is non-window-owning control
+ TPoint pos(0,10);
+ TSize sizeB(480,50);
+ iCoeConC = new (ELeave) CCoeConC(*this);
+ iCoeConC->ConstructL();
+ SetComponentsToInheritVisibility();
+ iCoeConC->SetViewPortRect(Rect());
+ iCoeConC->SetSize(sizeB);
+ SetParent(aParent);
+ ActivateL();
+ }
+
+CCoeConB::~CCoeConB()
+ {
+ if (iCoeConC)
+ delete iCoeConC;
+ }
+
+void CCoeConB::Draw(const TRect& aRect) const
+ {
+ CWindowGc& gc = SystemGc();
+ gc.SetDrawMode(CGraphicsContext::EDrawModePEN);
+ gc.SetBrushColor(TRgb(200,200,40));
+ gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+ gc.DrawRect(aRect);
+ }
+
+TInt CCoeConB::CountComponentControls() const
+ {
+ return 1;
+ }
+
+CCoeControl* CCoeConB::ComponentControl(TInt aIndex ) const
+ {
+ if( aIndex == 0 )
+ {
+ return iCoeConC;
+ }
+ else
+ {
+ return NULL;
+ }
+ }
+
+//
+//
+// CCoeConTestView - control 'A'
+//
+//
+CCoeConTestView::CCoeConTestView():CCoeControl()
+ {
+ }
+
+void CCoeConTestView::ConstructL(const TRect& /*aRect*/)
+ {
+ CreateWindowL(); //A is window owning
+ TPoint pos(0,10);
+ TSize sizeB(480,100);
+ SetPosition(pos);
+ iCoeControlB = new (ELeave) CCoeConB();
+ //Swap order here need to set container window first
+ iCoeControlB->SetContainerWindowL(Window());
+ iCoeControlB->SetExtent(pos,sizeB);
+ iCoeControlB->ConstructL(this);
+ ActivateL();
+ }
+
+CCoeConTestView::~CCoeConTestView()
+ {
+ if (iCoeControlB)
+ delete iCoeControlB;
+ }
+
+void CCoeConTestView::Draw(const TRect& aRect) const
+ {
+ // Draw main application window
+ CWindowGc& gc = SystemGc();
+ gc.SetDrawMode(CGraphicsContext::EDrawModePEN);
+ gc.SetBrushColor(TRgb(200,200,200));
+ gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+ gc.DrawRect(aRect);
+ }
+
+void CCoeConTestView::DrawCoeConB() const
+ {
+ // Draw the window owning and non-window owning controls
+ iCoeControlB->DrawNow();
+ TInt exitReason;
+ if (windowPosition == KWindowPosition)
+ {
+ exitReason = KErrNone;
+ }
+ else
+ {
+ exitReason = KErrWindowPosDoesNotMatch;
+ }
+ RProcess().Terminate(exitReason);
+ }
+
+TInt CCoeConTestView::CountComponentControls() const
+ {
+ return 1;
+ }
+
+CCoeControl* CCoeConTestView::ComponentControl(TInt aIndex) const
+ {
+ if (aIndex == 0)
+ {
+ return iCoeControlB;
+ }
+ else
+ {
+ return NULL;
+ }
+
+ }
+/*
+void CCoeConTestView::ClearScr()
+ {
+ CWindowGc& gc = SystemGc();
+ gc.SetDrawMode(CGraphicsContext::EDrawModePEN);
+ gc.SetBrushColor(TRgb(200,200,200));
+ gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+ gc.Clear();
+ }
+*/
+//
+//
+// CCoeConTestAppUi
+//
+//
+CCoeConTestAppUi::CCoeConTestAppUi() : CTestAppUi(NULL, KNullDesC)
+ {
+ }
+
+void CCoeConTestAppUi::ConstructL()
+ {
+ CTestAppUi::ConstructL();
+ iAppView = new(ELeave) CCoeConTestView;
+ iAppView->ConstructL(ClientRect());
+ AutoTestManager().StartAutoTest();
+ }
+
+CCoeConTestAppUi::~CCoeConTestAppUi()
+ {
+ if (iAppView)
+ {
+ delete iAppView;
+ }
+ }
+
+void CCoeConTestAppUi::TestWindowPosition()
+ {
+ iAppView->DrawCoeConB();
+ }
+
+void CCoeConTestAppUi::RunTestStepL(TInt aNumStep)
+ {
+ switch(aNumStep)
+ {
+ case 1:
+ {
+ TRAPD(err, TestWindowPosition());
+ if (err == KErrNone)
+ {
+ AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass);
+ }
+ else
+ {
+ AutoTestManager().FinishAllTestCases(CAutoTestManager::EFailed);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+//
+//
+// CCoeConTestDocument
+//
+//
+CCoeConTestDocument::CCoeConTestDocument(CEikApplication& aApp)
+ : CEikDocument(aApp)
+ {
+ }
+
+CEikAppUi* CCoeConTestDocument::CreateAppUiL()
+ {
+ return new(ELeave) CCoeConTestAppUi;
+ }
+
+//
+//
+// CCoeConTestApp
+//
+//
+TUid CCoeConTestApp::AppDllUid() const
+ {
+ return KUidCoeControlTestApp;
+ }
+
+CApaDocument* CCoeConTestApp::CreateDocumentL()
+ {
+ return new(ELeave) CCoeConTestDocument(*this);
+ }
+
+LOCAL_C CApaApplication* NewApplication()
+ {
+ return new CCoeConTestApp;
+ }
+
+GLDEF_C TInt E32Main()
+ {
+ return EikStart::RunApplication(NewApplication);
+ }