windowing/windowserver/test/tanim/ANIM.CPP
author hgs
Tue, 22 Jun 2010 15:21:29 +0300
changeset 103 2717213c588a
permissions -rw-r--r--
201024
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
103
hgs
parents:
diff changeset
     1
// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     2
// All rights reserved.
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     7
//
hgs
parents:
diff changeset
     8
// Initial Contributors:
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    10
//
hgs
parents:
diff changeset
    11
// Contributors:
hgs
parents:
diff changeset
    12
//
hgs
parents:
diff changeset
    13
// Description:
hgs
parents:
diff changeset
    14
// Test code to tun ANIMDLL.DLL
hgs
parents:
diff changeset
    15
// 
hgs
parents:
diff changeset
    16
//
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <e32std.h>
hgs
parents:
diff changeset
    19
#include <w32std.h>
hgs
parents:
diff changeset
    20
#include <e32svr.h>
hgs
parents:
diff changeset
    21
#include "../tlib/testbase.h"
hgs
parents:
diff changeset
    22
#include "TANIM.H"
hgs
parents:
diff changeset
    23
#include "ANIMDLL.H"
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#define NONEXISTENT_DLL_NAME	_L("Z:\\NONEXISTENT.DLL")
hgs
parents:
diff changeset
    26
#define ANIM_BITMAP		_L("Z:\\WSTEST\\TANIM.MBM")
hgs
parents:
diff changeset
    27
#define ANIM_DLL_NAME	_L("ANIDLL.DLL")
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
enum TAnimPanic
hgs
parents:
diff changeset
    30
	{
hgs
parents:
diff changeset
    31
	EAnimPanicBadLoadFailed,
hgs
parents:
diff changeset
    32
	};
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
class CTAnimClient;
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
class TestAnim : public RAnim
hgs
parents:
diff changeset
    37
	{
hgs
parents:
diff changeset
    38
public:
hgs
parents:
diff changeset
    39
	TestAnim(RAnimDll &aDll);
hgs
parents:
diff changeset
    40
	TInt Construct(RWindowBase &aWin,const TPoint &aPos,CFbsBitmap *aBit1,CFbsBitmap *aBit2,CFbsBitmap *aMask,TInt aInterval, CFbsFont *aFont);
hgs
parents:
diff changeset
    41
	void Set(const TPoint &aPos, TInt aInterval);
hgs
parents:
diff changeset
    42
	void TextPos(const TPoint &aPos);
hgs
parents:
diff changeset
    43
	void SetPolyRectL(const TRect &aRect);
hgs
parents:
diff changeset
    44
	void ToggleMask();
hgs
parents:
diff changeset
    45
	};
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
class CTAnimWindow2 : public CTBlankWindow
hgs
parents:
diff changeset
    48
	{
hgs
parents:
diff changeset
    49
public:
hgs
parents:
diff changeset
    50
	CTAnimWindow2(RAnimDll &aAnimDll);
hgs
parents:
diff changeset
    51
	~CTAnimWindow2();
hgs
parents:
diff changeset
    52
	void ConstructL(CTWinBase &parent, const TPoint &aPos, const TSize &aSize);
hgs
parents:
diff changeset
    53
	void ConstructExtLD(CTWinBase &aParent, const TPoint &aPos, const TSize &aSize);
hgs
parents:
diff changeset
    54
private:
hgs
parents:
diff changeset
    55
	TestAnim iAnim;
hgs
parents:
diff changeset
    56
	CFbsBitmap iAnimBitmap1;
hgs
parents:
diff changeset
    57
	CFbsBitmap iAnimBitmap2;
hgs
parents:
diff changeset
    58
	};
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
class CTAnimWindow1 : public CTTitledWindow
hgs
parents:
diff changeset
    61
	{
hgs
parents:
diff changeset
    62
public:
hgs
parents:
diff changeset
    63
	CTAnimWindow1(RAnimDll &aAnimDll);
hgs
parents:
diff changeset
    64
	~CTAnimWindow1();
hgs
parents:
diff changeset
    65
	void ConstructL(CTWinBase &parent);
hgs
parents:
diff changeset
    66
	void Draw();
hgs
parents:
diff changeset
    67
	void AdjustAnimRect(TInt xMove,TInt yMove,TInt modifiers);
hgs
parents:
diff changeset
    68
	void AdjustPolyRectL(TInt xMove,TInt yMove,TInt modifiers);
hgs
parents:
diff changeset
    69
	void ToggleMask();
hgs
parents:
diff changeset
    70
	TInt SubType();
hgs
parents:
diff changeset
    71
private:
hgs
parents:
diff changeset
    72
	TestAnim iAnim;
hgs
parents:
diff changeset
    73
	TPoint iAnimPos;
hgs
parents:
diff changeset
    74
	TRect iAnimPolyRect;
hgs
parents:
diff changeset
    75
	CFbsBitmap iAnimBitmap1;
hgs
parents:
diff changeset
    76
	CFbsBitmap iAnimBitmap2;
hgs
parents:
diff changeset
    77
	CFbsBitmap iMask;
hgs
parents:
diff changeset
    78
	};
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
class CTAnimWindowGroup : public CTWindowGroup
hgs
parents:
diff changeset
    81
	{
hgs
parents:
diff changeset
    82
public:
hgs
parents:
diff changeset
    83
	CTAnimWindowGroup(CTClient *aClient);
hgs
parents:
diff changeset
    84
	void CursorKeyL(TInt xMove,TInt yMove,TInt modifiers);
hgs
parents:
diff changeset
    85
	void KeyL(const TKeyEvent &aKey, const TTime &aTime);
hgs
parents:
diff changeset
    86
	TInt iCursorMode;
hgs
parents:
diff changeset
    87
	};
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
class CTAnimClient : public CTClient
hgs
parents:
diff changeset
    90
	{
hgs
parents:
diff changeset
    91
public:
hgs
parents:
diff changeset
    92
	CTAnimClient();
hgs
parents:
diff changeset
    93
	~CTAnimClient();
hgs
parents:
diff changeset
    94
	void ConstructL();
hgs
parents:
diff changeset
    95
	void KeyL(const TKeyEvent &aKey,const TTime &aTime);
hgs
parents:
diff changeset
    96
	void ExitL();
hgs
parents:
diff changeset
    97
	void ErrorTests();
hgs
parents:
diff changeset
    98
	CTBaseWin *CreateTestWindowL(TPoint pos,TSize size,CTWinBase *parent, TInt aType);
hgs
parents:
diff changeset
    99
private:
hgs
parents:
diff changeset
   100
	TInt iNum;
hgs
parents:
diff changeset
   101
	RAnimDll iAnimDll;
hgs
parents:
diff changeset
   102
	};
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
const TInt Xmove=8;
hgs
parents:
diff changeset
   105
const TInt Ymove=6;
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
void AnimPanic(TInt aPanic)
hgs
parents:
diff changeset
   108
	{
hgs
parents:
diff changeset
   109
	User::Panic(_L("ANIM"),aPanic);
hgs
parents:
diff changeset
   110
	}
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
//
hgs
parents:
diff changeset
   113
//  Anim class
hgs
parents:
diff changeset
   114
//
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
TestAnim::TestAnim(RAnimDll &aDll) : RAnim(aDll)
hgs
parents:
diff changeset
   117
	{
hgs
parents:
diff changeset
   118
	}
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
TInt TestAnim::Construct(RWindowBase &aWin, const TPoint &aPos, CFbsBitmap *aBit1,CFbsBitmap *aBit2,CFbsBitmap *aMask, TInt aInterval, CFbsFont *aFont)
hgs
parents:
diff changeset
   121
	{
hgs
parents:
diff changeset
   122
	TPckgBuf<CTAParams> params;
hgs
parents:
diff changeset
   123
	params().pos=aPos;
hgs
parents:
diff changeset
   124
	params().interval=aInterval;
hgs
parents:
diff changeset
   125
	params().bit1=aBit1->Handle();
hgs
parents:
diff changeset
   126
	params().bit2=aBit2->Handle();
hgs
parents:
diff changeset
   127
	params().mask=aMask->Handle();
hgs
parents:
diff changeset
   128
	params().font=aFont->Handle();
hgs
parents:
diff changeset
   129
	return(RAnim::Construct(aWin,0,params));
hgs
parents:
diff changeset
   130
	}
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
void TestAnim::Set(const TPoint &aPos, TInt aInterval)
hgs
parents:
diff changeset
   133
	{
hgs
parents:
diff changeset
   134
	TPckgBuf<CTAParams> params;
hgs
parents:
diff changeset
   135
	params().pos=aPos;
hgs
parents:
diff changeset
   136
	params().interval=aInterval;
hgs
parents:
diff changeset
   137
	Command(EADllOpcodeMove,params);
hgs
parents:
diff changeset
   138
	}
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
void TestAnim::TextPos(const TPoint &aPos)
hgs
parents:
diff changeset
   141
	{
hgs
parents:
diff changeset
   142
	TPckgBuf<TPoint> params;
hgs
parents:
diff changeset
   143
	params()=aPos;
hgs
parents:
diff changeset
   144
	Command(EADllTextPos,params);
hgs
parents:
diff changeset
   145
	}
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
void TestAnim::SetPolyRectL(const TRect &aRect)
hgs
parents:
diff changeset
   148
	{
hgs
parents:
diff changeset
   149
	TPckgC<TRect> params(aRect);
hgs
parents:
diff changeset
   150
	User::LeaveIfError(CommandReply(EADllOpcodePolyLineRect,params));
hgs
parents:
diff changeset
   151
	}
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
void TestAnim::ToggleMask()
hgs
parents:
diff changeset
   154
	{
hgs
parents:
diff changeset
   155
	Command(EADllToggleBitmapMask);
hgs
parents:
diff changeset
   156
	}
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
//
hgs
parents:
diff changeset
   159
// Individual window sub-classes
hgs
parents:
diff changeset
   160
//
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
CTAnimWindow1::CTAnimWindow1(RAnimDll &aAnimDll) : CTTitledWindow(), 
hgs
parents:
diff changeset
   163
	iAnim(aAnimDll)
hgs
parents:
diff changeset
   164
	{
hgs
parents:
diff changeset
   165
	}
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
CTAnimWindow1::~CTAnimWindow1()
hgs
parents:
diff changeset
   168
	{
hgs
parents:
diff changeset
   169
	iAnim.Close();
hgs
parents:
diff changeset
   170
	}
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
void CTAnimWindow1::ConstructL(CTWinBase &parent)
hgs
parents:
diff changeset
   173
	{
hgs
parents:
diff changeset
   174
	CTTitledWindow::ConstructL(parent);
hgs
parents:
diff changeset
   175
	User::LeaveIfError(iAnimBitmap1.Load(ANIM_BITMAP,EMbmTanimAnim1));
hgs
parents:
diff changeset
   176
	User::LeaveIfError(iAnimBitmap2.Load(ANIM_BITMAP,EMbmTanimAnim2));
hgs
parents:
diff changeset
   177
	User::LeaveIfError(iMask.Load(ANIM_BITMAP,EMbmTanimMask));
hgs
parents:
diff changeset
   178
	iAnimPos=TPoint(10,10);
hgs
parents:
diff changeset
   179
	User::LeaveIfError(iAnim.Construct(iWin, iAnimPos,&iAnimBitmap1,&iAnimBitmap2,&iMask,1,iFont));
hgs
parents:
diff changeset
   180
	iAnimPolyRect=TRect(TPoint(10,40),TSize(50,50));
hgs
parents:
diff changeset
   181
	iAnim.SetPolyRectL(iAnimPolyRect);
hgs
parents:
diff changeset
   182
	iAnim.TextPos(TPoint(20,50));
hgs
parents:
diff changeset
   183
	}
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
void CTAnimWindow1::Draw()
hgs
parents:
diff changeset
   186
	{
hgs
parents:
diff changeset
   187
	TInt i;
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
	CTTitledWindow::Draw();
hgs
parents:
diff changeset
   190
	iGc->SetPenColor(TRgb::Gray16(8));
hgs
parents:
diff changeset
   191
	TInt hgt=iSize.iHeight-iTitleHeight;
hgs
parents:
diff changeset
   192
	for(i=0;i<iSize.iWidth;i+=30)
hgs
parents:
diff changeset
   193
		{
hgs
parents:
diff changeset
   194
		iGc->DrawLine(TPoint(i,iTitleHeight),TPoint(iSize.iWidth,iTitleHeight+(hgt*i)/iSize.iWidth));
hgs
parents:
diff changeset
   195
		iGc->DrawLine(TPoint(iSize.iWidth-i,iTitleHeight+hgt),TPoint(iSize.iWidth,iTitleHeight+(hgt*i)/iSize.iWidth));
hgs
parents:
diff changeset
   196
		iGc->DrawLine(TPoint(iSize.iWidth-i,iTitleHeight+hgt),TPoint(0,iTitleHeight+hgt-(hgt*i)/iSize.iWidth));
hgs
parents:
diff changeset
   197
		iGc->DrawLine(TPoint(i,iTitleHeight),TPoint(0,iTitleHeight+hgt-(hgt*i)/iSize.iWidth));
hgs
parents:
diff changeset
   198
		}
hgs
parents:
diff changeset
   199
	}
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
void CTAnimWindow1::AdjustAnimRect(TInt xMove,TInt yMove,TInt modifiers)
hgs
parents:
diff changeset
   202
	{
hgs
parents:
diff changeset
   203
	if (modifiers&EModifierCtrl)	// 4 times the movement
hgs
parents:
diff changeset
   204
		{
hgs
parents:
diff changeset
   205
		xMove<<=2;
hgs
parents:
diff changeset
   206
		yMove<<=2;
hgs
parents:
diff changeset
   207
		}
hgs
parents:
diff changeset
   208
	iAnimPos+=TPoint(xMove,yMove);
hgs
parents:
diff changeset
   209
	iAnim.Set(iAnimPos,5);
hgs
parents:
diff changeset
   210
	}
hgs
parents:
diff changeset
   211
hgs
parents:
diff changeset
   212
void CTAnimWindow1::AdjustPolyRectL(TInt xMove,TInt yMove,TInt modifiers)
hgs
parents:
diff changeset
   213
	{
hgs
parents:
diff changeset
   214
	if (modifiers&EModifierCtrl)	// 4 times the movement
hgs
parents:
diff changeset
   215
		{
hgs
parents:
diff changeset
   216
		xMove<<=2;
hgs
parents:
diff changeset
   217
		yMove<<=2;
hgs
parents:
diff changeset
   218
		}
hgs
parents:
diff changeset
   219
	if (modifiers&EModifierShift)	// 4 times the movement
hgs
parents:
diff changeset
   220
		iAnimPolyRect.Grow(xMove,yMove);
hgs
parents:
diff changeset
   221
	else
hgs
parents:
diff changeset
   222
		iAnimPolyRect.Move(TPoint(xMove,yMove));
hgs
parents:
diff changeset
   223
	iAnim.SetPolyRectL(iAnimPolyRect);
hgs
parents:
diff changeset
   224
	}
hgs
parents:
diff changeset
   225
hgs
parents:
diff changeset
   226
void CTAnimWindow1::ToggleMask()
hgs
parents:
diff changeset
   227
	{
hgs
parents:
diff changeset
   228
	iAnim.ToggleMask();
hgs
parents:
diff changeset
   229
	}
hgs
parents:
diff changeset
   230
hgs
parents:
diff changeset
   231
TInt CTAnimWindow1::SubType()
hgs
parents:
diff changeset
   232
	{
hgs
parents:
diff changeset
   233
	return(69);
hgs
parents:
diff changeset
   234
	}
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
// CTAnimWindow2 //
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
CTAnimWindow2::CTAnimWindow2(RAnimDll &aAnimDll) : CTBlankWindow(), 
hgs
parents:
diff changeset
   239
	iAnim(aAnimDll)
hgs
parents:
diff changeset
   240
	{
hgs
parents:
diff changeset
   241
	}
hgs
parents:
diff changeset
   242
hgs
parents:
diff changeset
   243
CTAnimWindow2::~CTAnimWindow2()
hgs
parents:
diff changeset
   244
	{
hgs
parents:
diff changeset
   245
	iAnim.Close();
hgs
parents:
diff changeset
   246
	}
hgs
parents:
diff changeset
   247
hgs
parents:
diff changeset
   248
void CTAnimWindow2::ConstructL(CTWinBase &parent, const TPoint &aPos, const TSize &aSize)
hgs
parents:
diff changeset
   249
	{
hgs
parents:
diff changeset
   250
	CTBlankWindow::ConstructL(parent);
hgs
parents:
diff changeset
   251
	iWin.SetColor(TRgb(128,128,128));
hgs
parents:
diff changeset
   252
	iWin.SetVisible(EFalse);
hgs
parents:
diff changeset
   253
	SetExt(aPos,aSize);
hgs
parents:
diff changeset
   254
	iWin.Activate();
hgs
parents:
diff changeset
   255
	User::LeaveIfError(iAnimBitmap1.Load(ANIM_BITMAP,EMbmTanimAnim1));
hgs
parents:
diff changeset
   256
	User::LeaveIfError(iAnimBitmap2.Load(ANIM_BITMAP,EMbmTanimAnim2));
hgs
parents:
diff changeset
   257
	User::LeaveIfError(iAnim.Construct(iWin, TPoint(10,10), &iAnimBitmap1, &iAnimBitmap2, &iAnimBitmap1, 1, iFont));
hgs
parents:
diff changeset
   258
	iWin.SetVisible(ETrue);
hgs
parents:
diff changeset
   259
	}
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
void CTAnimWindow2::ConstructExtLD(CTWinBase &aParent, const TPoint &aPos, const TSize &aSize)
hgs
parents:
diff changeset
   262
//
hgs
parents:
diff changeset
   263
// Call ConstructL, SetExt and either of these fail destroy this and leave
hgs
parents:
diff changeset
   264
//
hgs
parents:
diff changeset
   265
	{
hgs
parents:
diff changeset
   266
	TRAPD(err,ConstructL(aParent, aPos, aSize));
hgs
parents:
diff changeset
   267
	if (err!=KErrNone)
hgs
parents:
diff changeset
   268
		{
hgs
parents:
diff changeset
   269
		delete this;
hgs
parents:
diff changeset
   270
		User::Leave(err);
hgs
parents:
diff changeset
   271
		}
hgs
parents:
diff changeset
   272
	}
hgs
parents:
diff changeset
   273
hgs
parents:
diff changeset
   274
//
hgs
parents:
diff changeset
   275
// End of CTAnimWindow class //
hgs
parents:
diff changeset
   276
//
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
CTAnimWindowGroup::CTAnimWindowGroup(CTClient *aClient) : CTWindowGroup(aClient)
hgs
parents:
diff changeset
   279
	{
hgs
parents:
diff changeset
   280
	}
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
void CTAnimWindowGroup::CursorKeyL(TInt xMove,TInt yMove,TInt modifiers)
hgs
parents:
diff changeset
   283
	{
hgs
parents:
diff changeset
   284
	if (iCursorMode==0)
hgs
parents:
diff changeset
   285
		iCurWin->AdjustSizeL(xMove,yMove,modifiers);
hgs
parents:
diff changeset
   286
	else if (iCurWin->SubType()==69)
hgs
parents:
diff changeset
   287
		{
hgs
parents:
diff changeset
   288
		if (iCursorMode==1)
hgs
parents:
diff changeset
   289
			((CTAnimWindow1 *)iCurWin)->AdjustAnimRect(xMove,yMove,modifiers);
hgs
parents:
diff changeset
   290
		else
hgs
parents:
diff changeset
   291
			((CTAnimWindow1 *)iCurWin)->AdjustPolyRectL(xMove,yMove,modifiers);
hgs
parents:
diff changeset
   292
		}
hgs
parents:
diff changeset
   293
	}
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
void CTAnimWindowGroup::KeyL(const TKeyEvent &aKey,const TTime &aTime)
hgs
parents:
diff changeset
   296
	{
hgs
parents:
diff changeset
   297
	if (aKey.iModifiers&EModifierCtrl)
hgs
parents:
diff changeset
   298
		{
hgs
parents:
diff changeset
   299
		TInt type=0;
hgs
parents:
diff changeset
   300
		switch(aKey.iCode)
hgs
parents:
diff changeset
   301
			{
hgs
parents:
diff changeset
   302
			case 1:
hgs
parents:
diff changeset
   303
				type=1;
hgs
parents:
diff changeset
   304
				break;
hgs
parents:
diff changeset
   305
			case 2:
hgs
parents:
diff changeset
   306
				type=2;
hgs
parents:
diff changeset
   307
				break;
hgs
parents:
diff changeset
   308
			}
hgs
parents:
diff changeset
   309
		if (type!=0)
hgs
parents:
diff changeset
   310
			{
hgs
parents:
diff changeset
   311
			TPoint pos;
hgs
parents:
diff changeset
   312
			TSize size;
hgs
parents:
diff changeset
   313
			pos.iX=iCurWin->Size().iWidth>>2;
hgs
parents:
diff changeset
   314
			pos.iY=iCurWin->Size().iHeight>>2;
hgs
parents:
diff changeset
   315
			size.iWidth=iCurWin->Size().iWidth>>1;
hgs
parents:
diff changeset
   316
			size.iHeight=iCurWin->Size().iHeight>>1;
hgs
parents:
diff changeset
   317
			SetCurrentWindow(((CTAnimClient *)iClient)->CreateTestWindowL(pos,size,iCurWin,type));
hgs
parents:
diff changeset
   318
			return;
hgs
parents:
diff changeset
   319
			}
hgs
parents:
diff changeset
   320
		}
hgs
parents:
diff changeset
   321
	if (aKey.iModifiers&EModifierFunc)
hgs
parents:
diff changeset
   322
		{
hgs
parents:
diff changeset
   323
		switch(aKey.iCode)
hgs
parents:
diff changeset
   324
			{
hgs
parents:
diff changeset
   325
			case 'x':
hgs
parents:
diff changeset
   326
				((CTAnimClient *)iClient)->ExitL();
hgs
parents:
diff changeset
   327
				break;
hgs
parents:
diff changeset
   328
			}
hgs
parents:
diff changeset
   329
		}
hgs
parents:
diff changeset
   330
	else switch(aKey.iCode)
hgs
parents:
diff changeset
   331
		{
hgs
parents:
diff changeset
   332
		case ' ':
hgs
parents:
diff changeset
   333
			iCursorMode=(iCursorMode+1)%3;
hgs
parents:
diff changeset
   334
			break;
hgs
parents:
diff changeset
   335
		case 8:
hgs
parents:
diff changeset
   336
			CTWin::Delete(iCurWin);
hgs
parents:
diff changeset
   337
			break;
hgs
parents:
diff changeset
   338
		case 9:
hgs
parents:
diff changeset
   339
			if (aKey.iModifiers&EModifierShift)
hgs
parents:
diff changeset
   340
				SetCurrentWindow(iCurWin->Prev());
hgs
parents:
diff changeset
   341
			else
hgs
parents:
diff changeset
   342
				SetCurrentWindow(iCurWin->Next());
hgs
parents:
diff changeset
   343
			break;
hgs
parents:
diff changeset
   344
		case 13:
hgs
parents:
diff changeset
   345
			if (iCurWin->SubType()==69)
hgs
parents:
diff changeset
   346
				((CTAnimWindow1 *)iCurWin)->ToggleMask();
hgs
parents:
diff changeset
   347
			break;
hgs
parents:
diff changeset
   348
		case EKeyLeftArrow:
hgs
parents:
diff changeset
   349
			CursorKeyL(-Xmove,0,aKey.iModifiers);
hgs
parents:
diff changeset
   350
			break;
hgs
parents:
diff changeset
   351
		case EKeyRightArrow:
hgs
parents:
diff changeset
   352
			CursorKeyL(Xmove,0,aKey.iModifiers);
hgs
parents:
diff changeset
   353
			break;
hgs
parents:
diff changeset
   354
		case EKeyUpArrow:
hgs
parents:
diff changeset
   355
			CursorKeyL(0,-Ymove,aKey.iModifiers);
hgs
parents:
diff changeset
   356
			break;
hgs
parents:
diff changeset
   357
		case EKeyDownArrow:
hgs
parents:
diff changeset
   358
			CursorKeyL(0,Ymove,aKey.iModifiers);
hgs
parents:
diff changeset
   359
			break;
hgs
parents:
diff changeset
   360
		default:
hgs
parents:
diff changeset
   361
			iCurWin->WinKeyL(aKey,aTime);
hgs
parents:
diff changeset
   362
			break;
hgs
parents:
diff changeset
   363
		}
hgs
parents:
diff changeset
   364
	}
hgs
parents:
diff changeset
   365
hgs
parents:
diff changeset
   366
//
hgs
parents:
diff changeset
   367
hgs
parents:
diff changeset
   368
CTAnimClient::CTAnimClient()
hgs
parents:
diff changeset
   369
	{
hgs
parents:
diff changeset
   370
	}
hgs
parents:
diff changeset
   371
hgs
parents:
diff changeset
   372
CTBaseWin *CTAnimClient::CreateTestWindowL(TPoint pos,TSize size,CTWinBase *parent, TInt type)
hgs
parents:
diff changeset
   373
	{
hgs
parents:
diff changeset
   374
	CTBaseWin *win;
hgs
parents:
diff changeset
   375
	if (type==1)
hgs
parents:
diff changeset
   376
		{
hgs
parents:
diff changeset
   377
		win=new(ELeave) CTAnimWindow1(iAnimDll);
hgs
parents:
diff changeset
   378
		win->ConstructExtLD(*parent,pos,size);
hgs
parents:
diff changeset
   379
		win->Activate();
hgs
parents:
diff changeset
   380
		}
hgs
parents:
diff changeset
   381
	else
hgs
parents:
diff changeset
   382
		{
hgs
parents:
diff changeset
   383
		win=new(ELeave) CTAnimWindow2(iAnimDll);
hgs
parents:
diff changeset
   384
		win->ConstructExtLD(*parent,pos,size);
hgs
parents:
diff changeset
   385
		}
hgs
parents:
diff changeset
   386
	win->AssignGC(*iGc);
hgs
parents:
diff changeset
   387
	return(win);
hgs
parents:
diff changeset
   388
	}
hgs
parents:
diff changeset
   389
hgs
parents:
diff changeset
   390
CTAnimClient::~CTAnimClient()
hgs
parents:
diff changeset
   391
	{
hgs
parents:
diff changeset
   392
	DestroyWindows();
hgs
parents:
diff changeset
   393
	iAnimDll.Close();
hgs
parents:
diff changeset
   394
	}
hgs
parents:
diff changeset
   395
hgs
parents:
diff changeset
   396
void CTAnimClient::ErrorTests()
hgs
parents:
diff changeset
   397
	{
hgs
parents:
diff changeset
   398
	RAnimDll animDll=RAnimDll(iWs);
hgs
parents:
diff changeset
   399
	if (animDll.Load(NONEXISTENT_DLL_NAME)!=KErrNotFound)
hgs
parents:
diff changeset
   400
		AnimPanic(EAnimPanicBadLoadFailed);
hgs
parents:
diff changeset
   401
	animDll.Close();		// Close should be harmless, but unnecassary
hgs
parents:
diff changeset
   402
	RAnimDll animDll2=RAnimDll(iWs);
hgs
parents:
diff changeset
   403
	if (animDll2.Load(NONEXISTENT_DLL_NAME)!=KErrNotFound)
hgs
parents:
diff changeset
   404
		AnimPanic(EAnimPanicBadLoadFailed);
hgs
parents:
diff changeset
   405
	}
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
void CTAnimClient::ConstructL()
hgs
parents:
diff changeset
   408
	{
hgs
parents:
diff changeset
   409
	CTClient::ConstructL();
hgs
parents:
diff changeset
   410
hgs
parents:
diff changeset
   411
	iGroup=new(ELeave) CTAnimWindowGroup(this);
hgs
parents:
diff changeset
   412
	iGroup->ConstructL();
hgs
parents:
diff changeset
   413
	
hgs
parents:
diff changeset
   414
	ErrorTests();
hgs
parents:
diff changeset
   415
hgs
parents:
diff changeset
   416
	iAnimDll=RAnimDll(iWs);
hgs
parents:
diff changeset
   417
	User::LeaveIfError(iAnimDll.Load(ANIM_DLL_NAME));
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
	CreateTestWindowL(TPoint(30,20),TSize(220,140),iGroup, 1);
hgs
parents:
diff changeset
   420
	CreateTestWindowL(TPoint(260,60),TSize(60,40),iGroup, 2);
hgs
parents:
diff changeset
   421
	iGroup->SetCurrentWindow(iGroup->Child());
hgs
parents:
diff changeset
   422
	}
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
void CTAnimClient::ExitL()
hgs
parents:
diff changeset
   425
	{
hgs
parents:
diff changeset
   426
	CActiveScheduler::Stop();
hgs
parents:
diff changeset
   427
	User::Leave(0);		// Signals RunL not to do another Request()
hgs
parents:
diff changeset
   428
	}
hgs
parents:
diff changeset
   429
hgs
parents:
diff changeset
   430
GLDEF_C CTClient *CreateClientL()
hgs
parents:
diff changeset
   431
	{
hgs
parents:
diff changeset
   432
	return(new(ELeave) CTAnimClient());
hgs
parents:
diff changeset
   433
	}
hgs
parents:
diff changeset
   434
hgs
parents:
diff changeset
   435
GLDEF_C TInt E32Main()
hgs
parents:
diff changeset
   436
	{
hgs
parents:
diff changeset
   437
	return(TestLibStartUp(CreateClientL));
hgs
parents:
diff changeset
   438
	}