javauis/eswt_qt/eswtuitestutils/src/s60utils.cpp
changeset 35 85266cc22c7f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/eswt_qt/eswtuitestutils/src/s60utils.cpp	Fri Jun 11 13:33:44 2010 +0300
@@ -0,0 +1,146 @@
+#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 "com_nokia_mj_impl_uitestutils_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