javauis/eswt_qt/s60utils/native/s60utils.cpp
changeset 21 2a9601315dfc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/eswt_qt/s60utils/native/s60utils.cpp	Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,162 @@
+/*
+* Copyright (c) 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: 
+*
+*/
+#include <e32debug.h>
+#include <e32base.h>
+#include <e32event.h>
+#include <eikenv.h>
+#include <coemain.h>
+#include <e32property.h>
+#include <screensaverinternalpskeys.h>
+#include <e32keys.h>
+
+//#include <QApplication>
+
+#include "s60utils.h"
+// Note following modifilers are from X11 instead of Symbian
+static const TInt Shift                           = (1<<0);
+static const TInt CapsLock                        = (1<<1);
+static const TInt Control                         = (1<<2);
+static const TInt Alt                             = (1<<3);
+static const TInt NumLock                         = (1<<4);
+static const TInt ScrllLock                       = (1<<4);
+static const TInt AltGr                           = (1<<7);
+
+
+static TInt symbianKeyCode(TInt aX11Modifier)
+    {
+    TInt keyCode(0);
+    if( (aX11Modifier & Shift) > 0 )
+        {
+        keyCode = EStdKeyLeftShift;
+        }
+    else if( (aX11Modifier & CapsLock) > 0 )
+        {
+        keyCode = EStdKeyCapsLock;
+        }
+    else if( (aX11Modifier & Control) > 0 )
+        {
+        keyCode = EStdKeyLeftCtrl;
+        }
+    else if( (aX11Modifier & Alt) > 0 )
+        {
+        keyCode = EStdKeyLeftAlt;
+        }
+    else if( (aX11Modifier & NumLock) > 0 )
+        {
+        keyCode = EStdKeyNumLock;
+        }
+    else if( (aX11Modifier & ScrllLock) > 0 )
+        {
+        keyCode = EStdKeyScrollLock;
+        }
+    else if( (aX11Modifier & AltGr) > 0 )
+        {
+        keyCode = EStdKeyRightAlt;
+        }
+    return keyCode;
+    }
+
+JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_uitestutils_S60Utils_S60SendKeyToFocusWindow
+  (JNIEnv *, jclass, jint aKeyCode, jint aModifier, jint aPressOrRelease)
+    {
+    RDebug::Print(_L("S60UITestUtils : S60SendKeyToFocusWindow, keycode=%d"), aKeyCode);
+    
+    User::ResetInactivityTime();// Reset user inactivity timers
+
+    if(aModifier > 0 && aPressOrRelease == com_nokia_mj_impl_uitestutils_S60Utils_PRESS)
+        {
+        TRawEvent mevent;
+        TInt keyCode = symbianKeyCode( aModifier);
+        mevent.Set(TRawEvent::EKeyDown, keyCode);
+        UserSvr::AddEvent(mevent);
+        User::After(100000);
+        }
+    
+	TRawEvent event;
+	
+	if (aPressOrRelease == com_nokia_mj_impl_uitestutils_S60Utils_PRESS)
+	    {
+	    event.Set(TRawEvent::EKeyDown, aKeyCode);
+	    }
+	else
+	    {
+	    event.Set(TRawEvent::EKeyUp, aKeyCode);
+	    }
+	
+	UserSvr::AddEvent(event);
+    User::After(100000);
+    if(aModifier > 0 && aPressOrRelease == com_nokia_mj_impl_uitestutils_S60Utils_RELEASE)
+        {
+        TRawEvent mevent;
+        TInt keyCode = symbianKeyCode(aModifier);
+        mevent.Set(TRawEvent::EKeyUp, keyCode);
+        UserSvr::AddEvent(mevent);
+        User::After(100000);
+        }
+
+	return 0;
+    }
+
+JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_uitestutils_S60Utils_S60KeysymToKeycode
+  (JNIEnv *, jclass, jint)
+    {
+    return 0;
+    }
+
+JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_uitestutils_S60Utils_S60SendPointerEvent
+  (JNIEnv *, jclass, jint aX, jint aY, jint /*aButton*/, jint aPressOrRelease)
+    {
+    User::ResetInactivityTime();// Reset user inactivity timers
+	
+	TRawEvent event;
+	
+	if (aPressOrRelease == com_nokia_mj_impl_uitestutils_S60Utils_PRESS) {
+	    event.Set(TRawEvent::EButton1Down, aX, aY);
+	} else {
+	    event.Set(TRawEvent::EButton1Up, aX, aY);
+    }   
+	UserSvr::AddEvent(event);
+	return 0;
+    }
+
+JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_uitestutils_S60Utils_S60SendPointerMoveEvent
+  (JNIEnv *, jclass, jint aX, jint aY, jint)
+    {
+    User::ResetInactivityTime();// Reset user inactivity timers
+	TRawEvent event;
+	event.Set(TRawEvent::EPointerMove, aX, aY);
+	UserSvr::AddEvent(event);
+    return 0;
+    }
+
+JNIEXPORT void JNICALL Java_com_nokia_mj_impl_uitestutils_S60Utils_S60DisableScreensaver
+  (JNIEnv *, jclass)
+    {
+    RProperty::Set( KPSUidScreenSaver, KScreenSaverAllowScreenSaver, 1 );
+    }
+    
+JNIEXPORT void JNICALL Java_com_nokia_mj_impl_uitestutils_S60Utils_S60SetDoubleclickInterval
+  (JNIEnv *, jclass, jint aInterval)
+    {
+    // Commented out for now. This can be taken into use once Qt doesn't need WSD to be allowed
+    /*QApplication* app = static_cast<QApplication*>(QCoreApplication::instance());
+    if ( app )
+        {
+        app->setDoubleClickInterval( aInterval );
+        }*/
+    }
+    
\ No newline at end of file