lafagnosticuifoundation/cone/tef/twindowposition/twindowposition.cpp
changeset 0 2f259fa3e83a
--- /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);
+	}