securitydialogs/lockapp/inc/lockappkeycapturecontroller.h
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/securitydialogs/lockapp/inc/lockappkeycapturecontroller.h	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,140 @@
+/*
+* Copyright (c) 2007 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:  Key capture controller
+ *
+*/
+
+
+#ifndef __LOCKAPPKEYCAPTURECONTROLLER_H__
+#define __LOCKAPPKEYCAPTURECONTROLLER_H__
+
+//  INCLUDES
+#include <e32base.h>
+#include <e32keys.h>
+
+// enumerated type for captured key events
+enum TPhoneKeyCaptureType
+    {
+    EKeyCaptureEvent,
+    EKeyCaptureUpAndDownEvents,
+    EKeyCaptureAllEvents
+    };
+
+// Key capture data structure
+class TPhoneKeyCapture
+    {
+    public:
+        TStdScanCode iKey; // primary identifier
+        TKeyCode iKeyCode;
+        TPhoneKeyCaptureType iType;
+        TInt32 iHandle;
+        TInt32 iHandleForUpAndDown;
+    };
+
+// FORWARD DECLARATIONS
+class RWindowGroup;
+
+/**
+ *  CLockAppKeyCaptureController class is a simple key capture utily that
+ *  provides a way to capture/release keys for the current window group.
+ *
+ *  @lib    lockapp
+ *  @since  5.0
+ *  @author Joona Petrell
+ *  @author Tamas Koteles
+ */
+class CLockAppKeyCaptureController : public CBase
+    {
+    public:
+
+        /**
+         * Initialize the utility
+         */
+        static CLockAppKeyCaptureController* InitL( RWindowGroup& aWindowGroup );
+
+        /**
+         * Destroy the utility
+         */
+        static void Destroy( );
+
+        /**
+         * Set key to be captured
+         */
+        static void CaptureKey( TUint32 aKey, TUint32 aKeyCode, TPhoneKeyCaptureType aType );
+
+        /**
+         * Set key to be released
+         */
+        static void ReleaseKey( TUint32 aKey );
+
+    private:
+
+        /**
+         * C++ default constructor.
+         */
+        CLockAppKeyCaptureController( RWindowGroup& aWindowGroup );
+
+        /**
+         * Destructor.
+         */
+        virtual ~CLockAppKeyCaptureController( );
+
+    private:
+
+        /**
+         * Set key to be captured
+         */
+        void StartCapturingKey( TUint32 aKey, TUint32 aKeyCode, TPhoneKeyCaptureType aType );
+
+        /**
+         * Set key not to be captured
+         */
+        void StopCapturingKey( TUint32 aKey );
+
+        /**
+         * May be used to ask whether a key has been set to be captured or not
+         * @param aKey is the iScanCode of the key
+         * @return ETrue if the key is currently captured via this mechanism
+         */
+        TBool IsKeyCaptured( TUint32 aKey ) const;
+
+        /**
+         * Set key not to be captured
+         * @param aKeyCapture is the key not to be captured
+         */
+        void StopKeyCapture( TPhoneKeyCapture aKeyCapture );
+
+    private:
+
+        /**
+         * Private instance of the utility
+         */
+        static CLockAppKeyCaptureController* instance;
+
+        /**
+         * Array of keycodes currently captured which includes the window
+         * server handles for the captured keys.
+         */
+        RArray<TPhoneKeyCapture> iCapturedKeys;
+
+        /**
+         * application's window group
+         */
+        RWindowGroup& iWindowGroup;
+
+    };
+
+#endif  // LOCKAPPKEYCAPTURECONTROLLER_H
+
+// End of File