--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lafagnosticuifoundation/cone/tef/TConeTransparency.cpp Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,229 @@
+// Copyright (c) 2008-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:
+// Tests semi-transparent window owning control with background display properly when having a child window
+// owning semi-transparent control.
+// Creats a window application with two semi-transparent window owning parent controls both with background.
+// A semi-transparent child window owning control is created for each parent control. One of the child control
+// enables transparent property properly, the other does not.
+// The child control which enables transparent property properly should not cause the background of parent control
+// to redraw thus in all circumstance its parent control background drawing count should be less than the one doesn't
+// enable transparent control with provided function.
+//
+//
+
+/**
+ @file
+ @internalComponent - Internal Symbian test code
+ @SYMTestCaseID UIF-Cone-TConeTransparency
+ @SYMPREQ 000
+ @SYMTestCaseDesc
+ @SYMTestPriority Medium
+ @SYMTestStatus Implemented
+ @SYMTestActions
+ @SYMTestExpectedResults
+*/
+
+
+#include <coeaui.h>
+#include <coemain.h>
+#include <coedef.h>
+#include <coesndpy.h>
+#include <basched.h>
+#include <bassnd.h>
+#include <coeccntx.h>
+#include <ecom/ecom.h>
+#include "TConeTransparency.h"
+#include "gdi.h"
+
+//From MCoeControlBackground, has a mutable iBackgroundDrawnCount to measure how many times the background is drawn
+void CTransparencyParentControl::Draw(CWindowGc &aGc, const CCoeControl &/*aControl*/, const TRect &aRect) const
+ {
+
+ aGc.SetClippingRect(aRect);
+ aGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+ aGc.SetBrushColor(TRgb(255,0,0,127));
+ for(TInt i = 0; i < aRect.Width(); i+=10)
+ {
+ TRect stripe(aRect.iTl.iX + i, aRect.iTl.iY, aRect.iTl.iX + i+5, aRect.iBr.iY);
+ aGc.DrawRect(stripe);
+ }
+ aGc.CancelClippingRect();
+ iBackgroundDrawnCount++;
+ }
+
+//Draw the control
+void CTransparentControl::Draw(const TRect& aRect) const
+ {
+
+ CWindowGc& gc=SystemGc();
+
+ TRect rc = Rect();
+
+ gc.SetClippingRect(aRect);
+
+ gc.SetPenColor(TRgb(0,0,0,127));
+ gc.SetBrushColor(TRgb(255,0,0,127));
+ gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+ gc.DrawEllipse(rc);
+ gc.CancelClippingRect();
+
+ }
+
+
+//Construct the main background control. A parent control with a child control
+void CTransparencyParentControl::ConstructL(TBool aEnableTransparencyProperly)
+ {
+ CreateWindowL();
+ TInt xPosOffset = 0;
+ if(aEnableTransparencyProperly)
+ xPosOffset = 300;
+ SetExtent(TPoint(20+xPosOffset ,20),TSize(200,200));
+ SetBackground(this);
+
+ iControl = new (ELeave) CTransparentControl();
+ iControl->CreateWindowL(this);
+ iControl->SetExtent(TPoint(50,36),TSize(128,128));
+ if(aEnableTransparencyProperly)
+ {
+ iControl->EnableWindowTransparency();
+ }
+ else
+ {
+ iControl->Window().SetTransparencyAlphaChannel();
+ iControl->Window().SetBackgroundColor(~0);
+ }
+
+ iControl->ActivateL();
+
+ ActivateL();
+ }
+
+
+//Destruction of the main control content
+CTransparencyParentControl::~CTransparencyParentControl()
+ {
+ delete iControl;
+ }
+
+
+//Standard implementation
+CTConeTransparencyAppUi::CTConeTransparencyAppUi(CTmsTestStep* aStep) :
+CTestCoeAppUi(aStep)
+{}
+
+//Destruction of the application
+CTConeTransparencyAppUi::~CTConeTransparencyAppUi()
+ {
+ RemoveFromStack(iViewControl1);
+ delete iViewControl1;
+ RemoveFromStack(iViewControl2);
+ delete iViewControl2;
+ }
+
+
+//Standard Implementation
+void CTConeTransparencyAppUi::ConstructL()
+ {
+ CTestCoeAppUi::ConstructL();
+
+ iViewControl1=new(ELeave) CTransparencyParentControl();
+ iViewControl1->ConstructL(EFalse);
+ iViewControl2=new(ELeave) CTransparencyParentControl();
+ iViewControl2->ConstructL(ETrue);
+ AddToStackL(iViewControl1);
+ AddToStackL(iViewControl2);
+
+ AutoTestManager().StartAutoTest();
+ }
+
+//Standard Implementation
+TKeyResponse CTConeTransparencyAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
+ {
+ TKeyResponse ret=EKeyWasNotConsumed;
+ if (aType==EEventKey && aKeyEvent.iCode==CTRL('e'))
+ {
+ CBaActiveScheduler::Exit();
+ ret=EKeyWasConsumed;
+ }
+ return ret;
+ }
+
+//The test case/steps, a proper semi-transparent window owning child control should not cause its parent
+//window owning control's background to redraw
+void CTConeTransparencyAppUi::RunTestStepL(TInt /*aStepNum*/)
+ {
+ SetTestStepID(_L("@SYMTestCaseID UIF-Cone-TConeTransparency"));
+ TInt firstViewBgDrawnCount = iViewControl1->BgDrawnCount();
+ TInt secondViewBgDrawnCount = iViewControl2->BgDrawnCount();
+ INFO_PRINTF2(_L("Background of left picture was drawn %i time(s)"), firstViewBgDrawnCount);
+ INFO_PRINTF2(_L("Background of right picture was drawn %i time(s)"), secondViewBgDrawnCount);
+ if(firstViewBgDrawnCount > secondViewBgDrawnCount)
+ AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass);
+ else
+ {
+ INFO_PRINTF1(_L("Background of left picture was drawn fewer times than that of right, but shouldn't be."));
+ AutoTestManager().FinishAllTestCases(CAutoTestManager::EFailed);
+ }
+ RecordTestResultL();
+ CloseTMSGraphicsStep();
+ }
+
+
+
+//Construct application
+void CTConeTransparencyStep::ConstructAppL(CCoeEnv* aCoe)
+ { // runs inside a TRAP harness
+ aCoe->ConstructL();
+ CTConeTransparencyAppUi* appUi= new (ELeave) CTConeTransparencyAppUi(this);
+ aCoe->SetAppUi(appUi);
+ appUi->ConstructL();
+
+ }
+
+//Default implementation
+CTConeTransparencyStep::CTConeTransparencyStep()
+ {
+ SetTestStepName(KTConeTransparencyStep);
+ }
+
+//Default implementation
+CTConeTransparencyStep::~CTConeTransparencyStep()
+ {}
+
+//Default implementation
+TVerdict CTConeTransparencyStep::doTestStepL() // main function called by E32
+ {
+ INFO_PRINTF1(_L("Test Started"));
+
+ PreallocateHALBuffer();
+
+ __UHEAP_MARK;
+ CCoeEnv* coe=new(ELeave) CCoeEnv;
+ TRAPD(err,ConstructAppL(coe));
+
+ if (!err)
+ coe->ExecuteD();
+ else
+ {
+ SetTestStepResult(EFail);
+ delete coe;
+ }
+
+ REComSession::FinalClose();
+
+ __UHEAP_MARKEND;
+
+ INFO_PRINTF1(_L("Test Finished"));
+ return TestStepResult();
+ }