--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/frontendprocessor/test/feps/TFEP2.H Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,340 @@
+// Copyright (c) 1997-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:
+//
+
+#if !defined(__TFEP2_H__)
+#define __TFEP2_H__
+
+#if !defined(__E32STD_H__)
+#include <e32std.h>
+#endif
+
+#if !defined(__E32BASE_H__)
+#include <e32base.h>
+#endif
+
+#if !defined(__GDI_H__)
+#include <gdi.h>
+#endif
+
+#if !defined(__W32STD_H__)
+#include <w32std.h>
+#endif
+
+#if !defined(__COEMAIN_H__)
+#include <coemain.h>
+#endif
+
+#if !defined(__COECNTRL_H__)
+#include <coecntrl.h>
+#endif
+
+#if !defined(__FEPBASE_H__)
+#include <fepbase.h>
+#endif
+
+#if !defined(__EIKDIALG_H__)
+#include <techview/eikdialg.h>
+#endif
+
+class CTstFep;
+
+class CTstScribbleWindow : public CCoeControl // this needs to be a separate control as it needs to be a window with "pointer-buffers" enabled
+ {
+public:
+ static CTstScribbleWindow* NewL(CTstFep& aFep, RWindowTreeNode& aParent);
+ virtual ~CTstScribbleWindow();
+ void SetPointerBufferEnabled(TBool aPointerBufferEnabled);
+ void HandleTimeOutL();
+ void CancelTransactionAndDrawNow();
+ void CancelTransaction(TBool& aChangeWasMade);
+ // from CCoeControl
+ virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+ virtual void HandlePointerBufferReadyL();
+private:
+ typedef CArrayFix<TPoint> CPolyLine;
+ enum {ENumberOfPointsInBuffer=32};
+ enum
+ {
+ EFlagPointerIsDown =0x00000001,
+ EFlagPointerBufferActuallyEnabled =0x00000002
+ };
+ class CTimeOutTimer : public CTimer
+ {
+ public:
+ static CTimeOutTimer* NewL(CTstScribbleWindow& aScribbleWindow);
+ virtual ~CTimeOutTimer();
+ private:
+ CTimeOutTimer(CTstScribbleWindow& aScribbleWindow);
+ virtual void RunL();
+ private:
+ CTstScribbleWindow& iScribbleWindow;
+ };
+private:
+ CTstScribbleWindow(CTstFep& aFep);
+ void ConstructL(RWindowTreeNode& aParent);
+ // from CCoeControl
+ virtual void Draw(const TRect& aRect) const;
+private:
+ CTstFep& iFep;
+ TUint iFlags;
+ RPointerArray<CPolyLine> iArrayOfPolyLines;
+ CTimeOutTimer* iTimeOutTimer;
+ };
+
+struct STstBitmapHandles;
+class CFbsBitmap;
+
+class CTstWholeScreenScribbleArea : public CBase
+ {
+public:
+ static CTstWholeScreenScribbleArea* NewL(RWsSession& aWindowServerSession, RWindowGroup& aWindowGroup, const TSize& aScreenSize, TDisplayMode aDisplayMode, const TDesC& aDllName);
+ ~CTstWholeScreenScribbleArea();
+ inline void RequestNotificationOfStartOfTransaction(TRequestStatus& aRequestStatus) {iHandWritingRecognizer.RequestNotificationOfStartOfTransaction(aRequestStatus);}
+ inline void CancelRequestForNotificationOfStartOfTransaction() {iHandWritingRecognizer.CancelRequestForNotificationOfStartOfTransaction();}
+ inline void RequestCharacters(TRequestStatus& aRequestStatus, TDes8& aCharacterBuffer, TBool aUpperCase) {iHandWritingRecognizer.RequestCharacters(aRequestStatus, aCharacterBuffer, aUpperCase);}
+ inline void CancelRequestForCharacters() {iHandWritingRecognizer.CancelRequestForCharacters();}
+ inline void SetUpperCase(TBool aUpperCase) {iHandWritingRecognizer.SetUpperCase(aUpperCase);}
+private:
+ enum
+ {
+ EFlagMutexIsConstructed=0x00000001
+ };
+ class RHandWritingRecognizer : public RAnim
+ {
+ public:
+ inline RHandWritingRecognizer() {}
+ inline RHandWritingRecognizer(RAnimDll& aAnimDll) :RAnim(aAnimDll) {}
+ void ConstructL(const RWsSprite& aSprite, STstBitmapHandles& aBitmapHandles);
+ void FinishConstructionL();
+ void RequestNotificationOfStartOfTransaction(TRequestStatus& aRequestStatus);
+ void CancelRequestForNotificationOfStartOfTransaction();
+ void RequestCharacters(TRequestStatus& aRequestStatus, TDes8& aCharacterBuffer, TBool aUpperCase);
+ void CancelRequestForCharacters();
+ void SetUpperCase(TBool aUpperCase);
+ };
+private:
+ CTstWholeScreenScribbleArea(RWsSession& aWindowServerSession);
+ void ConstructL(RWindowGroup& aWindowGroup, const TSize& aScreenSize, TDisplayMode aDisplayMode, const TDesC& aDllName);
+ static CFbsBitmap* CreateBitmapL(TInt aHandleOfBitmapToUse, const TSize& aScreenSize, TDisplayMode aDisplayMode);
+ static void SignalMutex(TAny* aMutex);
+private:
+ TUint iFlags;
+ RMutex iMutex;
+ TSpriteMember iSpriteMember;
+ RAnimDll iDll;
+ RWsSprite iSprite;
+ RHandWritingRecognizer iHandWritingRecognizer;
+ };
+
+class CFont;
+
+class CTstControl : public CCoeControl
+ {
+public:
+ static CTstControl* NewL(CTstFep& aFep);
+ virtual ~CTstControl();
+ void CancelTransaction();
+ void IsOnHasChangedState();
+ void OfferPointerEventL(CCoeFep::TEventResponse& aEventResponse, const TPointerEvent& aPointerEvent, const CCoeControl* aWindowOwningControl);
+ void OfferPointerBufferReadyEventL(CCoeFep::TEventResponse& aEventResponse, const CCoeControl* aWindowOwningControl);
+ inline TBool UpperCase() const {return (iFlags&EFlagUpperCase);}
+ static TInt NumberOfAttributes();
+ static TUid AttributeAtIndex(TInt aIndex);
+ void WriteAttributeDataToStreamL(TUid aAttributeUid, RWriteStream& aStream) const;
+ void ReadAttributeDataFromStreamL(TUid aAttributeUid, RReadStream& aStream);
+ static void WriteAttributeDataToStreamL(TUid aAttributeUid, RWriteStream& aStream, TBool aUpperCase, TBool aWholeScreen, TBool aPointerBufferEnabled);
+ static void ReadAttributeDataFromStreamL(TUid aAttributeUid, RReadStream& aStream, TBool& aUpperCase, TBool& aWholeScreen, TBool& aPointerBufferEnabled);
+ void HandleGainingForeground();
+ void HandleLosingForeground();
+ void HandleChangeInFocus();
+ void HandleDestructionOfFocusedItem();
+private:
+ typedef void (*FChangeFunction)(CTstControl& aControl, TBool& aChangeWasMade, TInt aParameter);
+ enum {EArrowHeadSize=4};
+ enum {EMaximumLengthOfDisplayOfContextInformation=15};
+ enum
+ {
+ ETstUpperCaseUid=0x10003eab,
+ ETstWholeScreenUid=0x1000550c,
+ ETstPointerBufferEnabledUid=0x10004d18
+ };
+ enum
+ {
+ EFlagForeground =0x00000001,
+ EFlagWindowIsBeingDragged =0x00000002,
+ EFlagUpperCase =0x00000004,
+ EFlagWholeScreen =0x00000008,
+ EFlagPointerBufferEnabled =0x00000010,
+ EFlagActuallyWholeScreen =0x00000020
+ };
+ enum
+ {
+ EHeightOfScribbleWindow =60,
+ EGapLeftOfEachLine =1,
+ EGapAboveTopLine =1,
+ EGapBetweenEachLine =1,
+ EGapBelowBottomLine =1
+ };
+ class CHandlerForStartOfTransaction : public CActive
+ {
+ public:
+ static CHandlerForStartOfTransaction* NewL(CTstWholeScreenScribbleArea& aWholeScreenScribbleArea, CCoeEnv& aConeEnvironment);
+ virtual ~CHandlerForStartOfTransaction();
+ private:
+ CHandlerForStartOfTransaction(CTstWholeScreenScribbleArea& aWholeScreenScribbleArea, CCoeEnv& aConeEnvironment);
+ void RequestNotificationOfStartOfTransaction();
+ virtual void DoCancel();
+ virtual void RunL();
+ private:
+ CTstWholeScreenScribbleArea& iWholeScreenScribbleArea;
+ CCoeEnv& iConeEnvironment;
+ };
+ class CHandlerForCharacters : public CActive
+ {
+ public:
+ static CHandlerForCharacters* NewL(CTstWholeScreenScribbleArea& aWholeScreenScribbleArea, CTstFep& aFep, TBool aForeground);
+ virtual ~CHandlerForCharacters();
+ inline void SetWholeScreen(TBool aWholeScreen) {SetFlagAffectingWhetherActive(EFlagWholeScreen, aWholeScreen);}
+ inline void SetIsOn(TBool aIsOn) {SetFlagAffectingWhetherActive(EFlagIsOn, aIsOn);}
+ inline void SetForeground(TBool aForeground) {SetFlagAffectingWhetherActive(EFlagForeground, aForeground);}
+ void SetUpperCase(TBool aUpperCase);
+ private:
+ enum {EMaximumLengthOfCharacterBuffer=4*sizeof(TUint)};
+ enum
+ {
+ EFlagWholeScreen =0x00000001,
+ EFlagIsOn =0x00000002,
+ EFlagForeground =0x00000004,
+ EFlagUpperCase =0x00000008
+ };
+ private:
+ CHandlerForCharacters(CTstWholeScreenScribbleArea& aWholeScreenScribbleArea, CTstFep& aFep, TBool aForeground);
+ void SetFlagAffectingWhetherActive(TUint aFlagAffectingWhetherActive, TBool aSetting); // aFlag may be passed EFlagWholeScreen, EFlagIsOn or EFlagForeground
+ void RequestCharacters();
+ static TInt NumberOfCharactersInBuffer(const CBase* aCharacterBuffer); // aCharacterBuffer is really a TDesC8
+ static const TAny* CharacterInBuffer(const CBase* aCharacterBuffer, TInt aIndex); // aCharacterBuffer is really a TDesC8
+ virtual void DoCancel();
+ virtual void RunL();
+ private:
+ CTstWholeScreenScribbleArea& iWholeScreenScribbleArea;
+ CTstFep& iFep;
+ TUint iFlags;
+ TBuf8<EMaximumLengthOfCharacterBuffer> iCharacterBuffer;
+ };
+private:
+ CTstControl(CTstFep& aFep);
+ void ConstructL();
+ static void SetForeground(CTstControl& aControl, TBool& aChangeWasMade, TInt aParameter);
+ static void SetFocus(CTstControl& aControl, TBool& aChangeWasMade, TInt aParameter);
+ static void SetUpperCase(CTstControl& aControl, TBool& aChangeWasMade, TInt aParameter);
+ static void SetWholeScreen(CTstControl& aControl, TBool& aChangeWasMade, TInt aParameter);
+ static void SetPointerBufferEnabled(CTstControl& aControl, TBool& aChangeWasMade, TInt aParameter);
+ static void SetInputCapabilities(CTstControl& aControl, TBool& aChangeWasMade, TInt aParameter);
+ static void SetFlag(CTstControl& aControl, TBool& aChangeWasMade, TInt aParameter, TUint aFlag);
+ void DoSetWholeScreen(TBool aWholeScreen);
+ void ChangeSetupAndDrawNow(FChangeFunction aChangeFunction, TInt aParameter=0);
+public:
+ // from CCoeControl
+ virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode);
+private:
+ // from CCoeControl
+ virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+ virtual TInt CountComponentControls() const;
+ virtual CCoeControl* ComponentControl(TInt aIndex) const;
+ virtual void Draw(const TRect& aRect) const;
+private:
+ CTstFep& iFep;
+ TUint iFlags;
+ TCoeInputCapabilities iInputCapabilities;
+ CTstScribbleWindow* iScribbleWindow;
+ CTstWholeScreenScribbleArea* iWholeScreenScribbleArea;
+ CHandlerForStartOfTransaction* iHandlerForStartOfTransaction;
+ CHandlerForCharacters* iHandlerForCharacters;
+ CFont* iStatusFont;
+ TPoint iPositionOnWindowBeingDragged;
+ };
+
+class CTstFep : public CCoeFep
+ {
+public:
+ CTstFep(CCoeEnv& aConeEnvironment);
+ void ConstructL(const CCoeFepParameters& aFepParameters);
+ virtual ~CTstFep();
+ inline void SimulateKeyEventsL(const TArray<TUint>& aArrayOfCharacters) {CCoeFep::SimulateKeyEventsL(aArrayOfCharacters);}
+ inline void WriteAttributeDataAndBroadcastL(TUid aAttributeUid) {CCoeFep::WriteAttributeDataAndBroadcastL(aAttributeUid);}
+ inline TBool IsOn() const {return CCoeFep::IsOn();}
+ inline TBool UpperCase() const {return iControl->UpperCase();}
+private:
+ // from CCoeFep
+ virtual void CancelTransaction();
+ virtual void IsOnHasChangedState();
+ virtual void OfferKeyEventL(TEventResponse& aEventResponse, const TKeyEvent& aKeyEvent, TEventCode aEventCode);
+ virtual void OfferPointerEventL(TEventResponse& aEventResponse, const TPointerEvent& aPointerEvent, const CCoeControl* aWindowOwningControl);
+ virtual void OfferPointerBufferReadyEventL(TEventResponse& aEventResponse, const CCoeControl* aWindowOwningControl);
+ // from MFepAttributeStorer (via CCoeFep)
+ virtual TInt NumberOfAttributes() const;
+ virtual TUid AttributeAtIndex(TInt aIndex) const;
+ virtual void WriteAttributeDataToStreamL(TUid aAttributeUid, RWriteStream& aStream) const;
+ virtual void ReadAttributeDataFromStreamL(TUid aAttributeUid, RReadStream& aStream);
+ // from MCoeForegroundObserver (via CCoeFep)
+ virtual void HandleGainingForeground();
+ virtual void HandleLosingForeground();
+ // from MCoeFocusObserver (via CCoeFep)
+ virtual void HandleChangeInFocus();
+ virtual void HandleDestructionOfFocusedItem();
+private:
+ CTstControl* iControl;
+ };
+
+class TTstResourceFileId : public TCleanupItem
+ {
+public:
+ TTstResourceFileId(CCoeEnv& aConeEnvironment, TInt aResourceFileId);
+private:
+ static void UnloadResourceFile(TAny* aThis);
+private:
+ CCoeEnv& iConeEnvironment;
+ TInt iResourceFileId;
+ };
+
+class CTstSettingsDialog : public CEikDialog, private MFepAttributeStorer
+ {
+public:
+ CTstSettingsDialog();
+private:
+ TUint CheckBoxStateAsFlag(TInt aControlId, TUint aFlag) const;
+ void SetCheckBoxState(TInt aControlId, TUint aFlag);
+ // from CEikDialog
+ virtual TBool OkToExitL(TInt aButtonId);
+ virtual void PreLayoutDynInitL();
+ // from MFepAttributeStorer
+ virtual TInt NumberOfAttributes() const;
+ virtual TUid AttributeAtIndex(TInt aIndex) const;
+ virtual void WriteAttributeDataToStreamL(TUid aAttributeUid, RWriteStream& aStream) const;
+ virtual void ReadAttributeDataFromStreamL(TUid aAttributeUid, RReadStream& aStream);
+private:
+ enum
+ {
+ EFlagUpperCase =0x00000001,
+ EFlagWholeScreen =0x00000002,
+ EFlagPointerBufferEnabled =0x00000004
+ };
+private:
+ TUint iFlags;
+ TUid iUid;
+ };
+
+#endif
+