windowing/windowserver/tlib/TLDIALOG.CPP
changeset 116 171fae344dd4
parent 103 2717213c588a
--- a/windowing/windowserver/tlib/TLDIALOG.CPP	Tue Jun 22 15:21:29 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,463 +0,0 @@
-// Copyright (c) 1994-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:
-// Base classes used for building window server test code
-// 
-//
-
-#include <e32std.h>
-#include <w32std.h>
-#include <e32svr.h>
-#include <e32def_private.h>
-#include "TLIB.H"
-
-const TInt ButtonGap=20;
-const TInt ButtonBorderGap=10;
-const TInt ButtonBorderMargin=3;
-const TInt TextMargin=5;
-const TInt KAutoDelaySeconds=60; 
-
-NONSHARABLE_CLASS(CTAutoKey): public CActive
-	{
-public:
-	static CTAutoKey* NewL(RWsSession& aWs);
-	~CTAutoKey();
-	void Activate(TInt aDelay);
-	
-	void RunL();
-	void DoCancel();
-	
-private:
-	CTAutoKey(RWsSession& aWs);
-	void ConstructL();	
-	
-	RTimer iTimer;
-	TInt iDelay;
-	RWsSession& iWs;
-	};
-
-EXPORT_C CTDialog::CTDialog() : CTTitledWindow(), iNumButtons(1)
-	{
-	iButton[0].Copy(_L("Continue"));	// Default button
-	}
-
-EXPORT_C CTDialog::~CTDialog()
-	{
-	if (iIsActive)
-		CActiveScheduler::Stop();
-	delete iAutoKey;
-	}
-
-EXPORT_C void CTDialog::ConstructLD(CTWinBase &aParent,CWindowGc &aGc)
-	{
-	iOldFocus=aParent.Group()->CurWin();
-	TRAPD(err,CTTitledWindow::ConstructL(aParent));
-	if (err!=KErrNone)
-		{
-		delete this;
-		User::Leave(err);
-		}
-	iActivated=ETrue;
-	iWin.SetBackgroundColor(TRgb::Gray256(238));	// Light gray
-	AssignGC(aGc);
-	iWin.SetPointerCapture(ETrue);
-	Group()->SetCurrentWindow(this, ETrue);
-	iAutoKey=CTAutoKey::NewL(Client()->iWs);
-	}
-
-EXPORT_C void CTDialog::RelinquishFocus()
-	{
-	Group()->SetCurrentWindow(iOldFocus);
-	}
-
-EXPORT_C TInt CTDialog::Display()
-	{
-	TInt result;
-
-	SetWindowSize();
-	if (iWinActive)
-		BaseWin()->SetVisible(ETrue);
-	else
-		{
-		Activate();
-		iWinActive=ETrue;
-		}
-	if (iTakeFocus)
-		Group()->SetCurrentWindow(this);
-	Group()->GroupWin()->SetOrdinalPosition(0);
-	iResultPtr=&result;
-	CTClient *client=Client();
-	if (client->QueueRead())
-		{
-		client->iWs.Flush();
-		client=NULL;
-		}
-	iIsActive=ETrue;
-	iAutoKey->Activate(KAutoDelaySeconds);
-	CActiveScheduler::Start();
-	if (client)
-		client->CancelRead();
-	return(result);
-	}
-
-EXPORT_C void CTDialog::SetFlags(TUint aFlags)
-	{
-	iFlags=aFlags;
-	}
-
-void CTDialog::SetMaxWid(TInt &aMax, TInt aWid)
-	{
-	if (aWid>aMax)
-		aMax=aWid;
-	}
-
-EXPORT_C void CTDialog::SetWindowSize()
-	{
-	if (iActivated)
-		{
-		TInt max=0;
-		SetMaxWid(max,iFont->TextWidthInPixels(iTitle));
-		SetMaxWid(max,iFont->TextWidthInPixels(iLine1));
-		SetMaxWid(max,iFont->TextWidthInPixels(iLine2));
-		max+=TextMargin*2;
-		iButWid=0;
-		if (iNumButtons>0)
-			{
-			for(TInt index=0;index<iNumButtons;index++)
-				SetMaxWid(iButWid,iFont->TextWidthInPixels(iButton[index]));
-			iButWid+=ButtonBorderMargin*2;
-			SetMaxWid(max,iButWid*iNumButtons+ButtonGap*(iNumButtons-1)+ButtonBorderGap*2);
-			}
-		TSize parSize=Parent()->Size();
-		TSize size(max,iFont->HeightInPixels()*8);
-		TPoint pos((parSize.iWidth-size.iWidth)/2,(parSize.iHeight-size.iHeight)/2);
-		if (iFlags&EDialogDisplayAtBottom)
-			pos.iY*=2;
-		if (iFlags&EDialogDisplayAtLeft)
-			pos.iX=0;
-		SetExt(pos,size);
-		Invalidate();
-		}
-	}
-
-EXPORT_C void CTDialog::SetLine1(const TDesC &aLine1)
-	{
-	iLine1.Copy(aLine1);
-	}
-
-EXPORT_C void CTDialog::SetLine2(const TDesC &aLine2)
-	{
-	iLine2.Copy(aLine2);
-	}
-
-EXPORT_C void CTDialog::SetNumButtons(TInt aNum)
-	{
-	if ((TUint)aNum>3)
-		TbPanic(EDialogButtonCount);
-	iNumButtons=aNum;
-	}
-
-EXPORT_C void CTDialog::SetButtonText(TInt aNum,const TDesC &aButton)
-	{
-	if ((TUint)aNum>(TUint)iNumButtons)
-		TbPanic(EDialogButtonIndex);
-	iButton[aNum].Copy(aButton);
-	}
-
-TRect CTDialog::ButtonRect(TInt aIndex) const
-	{
-	TInt chunk=(iSize.iWidth-ButtonBorderMargin*2)/iNumButtons;
-	TInt midPos=ButtonBorderMargin+chunk*aIndex+chunk/2;
-	return(TRect(midPos-iButWid/2,iFont->HeightInPixels()*6,midPos+iButWid/2,iFont->HeightInPixels()*7+ButtonBorderMargin*2));
-	}
-
-EXPORT_C void CTDialog::Draw()
-	{
-	CTTitledWindow::Draw();
-	iGc->SetPenColor(TRgb::Gray16(0));
-	iGc->DrawText(iLine1, TPoint((iSize.iWidth-iFont->TextWidthInPixels(iLine1))/2,iFont->HeightInPixels()*3));
-	iGc->DrawText(iLine2, TPoint((iSize.iWidth-iFont->TextWidthInPixels(iLine2))/2,iFont->HeightInPixels()*4+2));
-	if (iNumButtons!=0)
-		{
-		for(TInt index=0;index<iNumButtons;index++)
-			{
-			TRect rect=ButtonRect(index);
-			iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
-			iGc->SetBrushColor(TRgb::Gray256(255));
-			iGc->DrawRect(rect);
-			iGc->DrawRect(rect);
-			iGc->SetBrushStyle(CGraphicsContext::ENullBrush);
-			TInt midPos=(rect.iTl.iX+rect.iBr.iX)/2;
-			iGc->DrawText(iButton[index], TPoint((midPos-iFont->TextWidthInPixels(iButton[index])/2),
-									iFont->HeightInPixels()*6+iFont->AscentInPixels()+ButtonBorderMargin));
-			}
-		}
-	}
-
-EXPORT_C void CTDialog::WinKeyL(const TKeyEvent &aKey,const TTime&)
-	{
-	switch(aKey.iCode)
-		{
-		case EKeyEscape:
-		case '0':
-			ButtonPressL(0);
-			break;
-		case EKeyEnter:
-		case '1':
-			ButtonPressL(iNumButtons>1 ? 1 : 0);	// Same as ESC on a single button dialog
-			break;
-		case ' ':
-		case '2':
-			ButtonPressL(2);
-			break;
-		}
-	}
-
-EXPORT_C void CTDialog::PointerL(const TPointerEvent &aPointer,const TTime &aTime)
-	{
-	if (aPointer.iType==TPointerEvent::EButton1Up)
-		{
-		if (iButtonClickOn>0)
-			{
-			ButtonPressL(iButtonClickOn-1);
-			return;
-			}
-		}
-	else if (aPointer.iType==TPointerEvent::EButton1Down)
-		{
-		for(TInt index=0;index<iNumButtons;index++)
-			if (ButtonRect(index).Contains(aPointer.iPosition))
-				{
-				if (iFlags&EDialogWaitForButtonUp)
-					iButtonClickOn=index+1;
-				else
-					{
-					ButtonPressL(index);
-					return;
-					}
-				}
-		}
-	CTTitledWindow::PointerL(aPointer, aTime);
-	}
-
-EXPORT_C void CTDialog::ButtonPressL(TInt aButton)
-	{
-	if (aButton<iNumButtons)
-		{
-		SetResult(aButton);
-		CTTitledWindow::Delete(this);
-		}
-	}
-
-void CTDialog::SetResult(TInt aButton)
-	{
-	if (iResultPtr)
-		*iResultPtr=aButton;
-	}
-
-// Simple display dialog //
-
-class CDisplayDialog : public CTDialog
-	{		  
-public:
-	CDisplayDialog(CTWindowGroup *aGroupWin,CWindowGc *aGc);
-	void ConstructLD();
-private:
-	CTWindowGroup *iGroupWin;
-	CWindowGc *iGc;
-	};
-
-CDisplayDialog::CDisplayDialog(CTWindowGroup *aGroupWin,CWindowGc *aGc) : CTDialog(),
-	iGroupWin(aGroupWin),
-	iGc(aGc)
-	{
-	}
-
-void CDisplayDialog::ConstructLD()
-	{
-	CTDialog::ConstructLD(*iGroupWin, *iGc);
-	}
-
-EXPORT_C void DisplayDialog(CTClient *aClient, const TWindowTitle &aTitle, const TDesC &aLine1, const TDesC &aLine2)
-	{
-	CDisplayDialog *dialog=NULL;
-	dialog=new(ELeave) CDisplayDialog(aClient->iGroup, aClient->iGc);
-	TRAPD(err,dialog->ConstructLD());
-	if (err==KErrNone)
-		{
-		dialog->SetTitle(aTitle);
-		dialog->SetLine1(aLine1);
-		dialog->SetLine2(aLine2);
-		dialog->SetNumButtons(1);
-		dialog->SetButtonText(0,_L("Okay"));
-		if (dialog->Display()!=0)		// delete dialog
-			TbPanic(EDialogDisplay);
-		}
-	}
-
-void doDisplayDialog(TInt aScreenNumber,const TWindowTitle &aTitle, const TDesC &aLine1, const TDesC &aLine2, CTClient *&aClient, const RWindowGroup *aGroup)
-	{
-	aClient=new(ELeave) CTClient();
-	aClient->SetScreenNumber(aScreenNumber);
-	aClient->ConstructL();
-//
-	aClient->iGroup=new(ELeave) CTWindowGroup(aClient);
-	aClient->iGroup->ConstructL();
-	aClient->iGroup->GroupWin()->SetOrdinalPosition(0,10);
-	if (aGroup)
-		aClient->iGroup->GroupWin()->SetOwningWindowGroup(aGroup->Identifier());
-//
-	TRAP_IGNORE(DisplayDialog(aClient, aTitle, aLine1, aLine2));
-	}
-
-void doDisplayDialog(const TWindowTitle &aTitle, const TDesC &aLine1, const TDesC &aLine2, CTClient *&aClient, const RWindowGroup *aGroup)
-	{
-	doDisplayDialog(KDefaultScreen,aTitle,aLine1,aLine2,aClient,aGroup);
-	}
-
-EXPORT_C void DisplayDialog(TInt aScreenNumber,const TWindowTitle &aTitle, const TDesC &aLine1, const TDesC &aLine2, const RWindowGroup *aGroup)
-	{
-	CTClient *client=NULL;
-	TRAP_IGNORE(doDisplayDialog(aScreenNumber,aTitle,aLine1,aLine2,client,aGroup));
-	delete client;
-	}
-
-EXPORT_C void DisplayDialog(const TWindowTitle &aTitle, const TDesC &aLine1, const TDesC &aLine2, const RWindowGroup *aGroup)
-	{
-	DisplayDialog(KDefaultScreen,aTitle,aLine1,aLine2,aGroup);
-	}
-
-
-
-//CInfoDialog
-
-EXPORT_C CInfoDialog::CInfoDialog(CTWindowGroup *aGroupWin,CWindowGc *aGc) :CTDialog(), iGroupWin(aGroupWin), iGc(aGc)
-	{}
-
-EXPORT_C void CInfoDialog::ButtonPressL(TInt aButton)
-	{
-	if (aButton==0)
-		{
-		SetResult(0);
-		BaseWin()->SetVisible(EFalse);
-		CActiveScheduler::Stop();
-		}
-	}
-
-EXPORT_C void CInfoDialog::ConstructLD()
-	{
-	_LIT(OK,"Okay");
-	CTDialog::ConstructLD(*iGroupWin, *iGc);
-	SetNumButtons(1);
-	SetButtonText(0,OK);
-	SetTakeFocus();
-	}
-
-EXPORT_C void CInfoDialog::TimerResults()
-	{
-	TProfile profile[eTimes];
-	// TProfile only has default constructor -
-	// constructor of TProfile does not initialize its members
-	for (TInt jj=0; jj<eTimes; jj++)
-		{
-		profile[jj].iTime=0;
-		profile[jj].iCount=0;
-		}
-	__PROFILE_DISPLAY(eTimes)
-	TBuf<64> times;
-	TBuf<32> counts;
-	TInt ii=1;
-	FOREVER
-		{
-		AppendProfileTime(times,profile[ii].iTime);
-		AppendProfileCount(counts,profile[ii].iCount);
-		if (++ii==eTimes)
-			break;
-		AddComma(times);
-		AddComma(counts);
-		}
-	SetLine1(times);
-	SetLine2(counts);
-	times.Zero();
-	AppendProfileTime(times,profile[0].iTime);
-	SetTitle(times);
-	}
-
-void CInfoDialog::AppendProfileTime(TDes &aDes, TInt aNum)
-	{
-	_LIT(ThreeDP,"%d.%03d");
-	aDes.AppendFormat(ThreeDP,aNum/eSeconds,(aNum%eSeconds)/1000);
-	}
-
-void CInfoDialog::AppendProfileCount(TDes &aDes, TInt aNum)
-	{
-	_LIT(Int,"%d");
-	aDes.AppendFormat(Int,aNum);
-	}
-
-void CInfoDialog::AddComma(TDes &aDes)
-	{
-	_LIT(Comma,", ");
-	aDes.Append(Comma);
-	}
-
-CTAutoKey::CTAutoKey(RWsSession& aWs): CActive(0), iWs(aWs)
-	{
-	CActiveScheduler::Add(this);
-	}
-	
-CTAutoKey::~CTAutoKey()
-	{
-	Cancel();
-	iTimer.Close();
-	}
-	
-void CTAutoKey::ConstructL()
-	{
-	User::LeaveIfError(iTimer.CreateLocal());
-	}
-	
-CTAutoKey* CTAutoKey::NewL(RWsSession& aWs)
-	{
-	CTAutoKey* self=new(ELeave) CTAutoKey(aWs);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop();
-	return self;
-	}
-	
-void CTAutoKey::Activate(TInt aDelay)
-	{
-	if (IsActive())
-		Cancel();
-	
-	iDelay=aDelay*1000000;
-	iTimer.After(iStatus,iDelay);
-	SetActive();
-	}
-void CTAutoKey::RunL()
-	{
-	// simulate key event, only needed to run once
-	TKeyEvent keyEvent;
-	keyEvent.iCode=EKeyEnter;
-	keyEvent.iScanCode=EKeyEnter;
-	keyEvent.iModifiers=0;
-	keyEvent.iRepeats=0;
-	iWs.SimulateKeyEvent(keyEvent);
-	iWs.Flush();
-	}
-	
-void CTAutoKey::DoCancel()
-	{
-	iTimer.Cancel();
-	}