telutils/dialpad/tsrc/unit/shared/dialpadtestutil.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telutils/dialpad/tsrc/unit/shared/dialpadtestutil.cpp	Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,132 @@
+/*!
+* Copyright (c) 2010 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: Dialpad test utility
+*
+*/
+
+#include <QGraphicsWidget>
+#include <QtTest/QtTest>
+#include <hbmainwindow.h>
+
+#include "dialpadtestutil.h"
+
+const int WAIT_TIME = 300;
+
+DialpadTestUtil::DialpadTestUtil(HbMainWindow& mainWindow, QObject* parent) :
+    QObject(parent), mMainWindow(mainWindow)
+{
+    mKeyNames.insert(Qt::Key_1,"keypad");
+    mKeyNames.insert(Qt::Key_2,"keypad");
+    mKeyNames.insert(Qt::Key_3,"keypad");
+    mKeyNames.insert(Qt::Key_4,"keypad");
+    mKeyNames.insert(Qt::Key_5,"keypad");
+    mKeyNames.insert(Qt::Key_6,"keypad");
+    mKeyNames.insert(Qt::Key_7,"keypad");
+    mKeyNames.insert(Qt::Key_8,"keypad");
+    mKeyNames.insert(Qt::Key_9,"keypad");
+    mKeyNames.insert(Qt::Key_Asterisk,"keypad");
+    mKeyNames.insert(Qt::Key_0,"keypad");
+    mKeyNames.insert(Qt::Key_NumberSign,"keypad");
+    mKeyNames.insert(Qt::Key_Backspace,"16777219");
+    mKeyNames.insert(Qt::Key_Yes,"16842753");
+}
+
+DialpadTestUtil::~DialpadTestUtil()
+{      
+}
+
+QGraphicsWidget* DialpadTestUtil::getWidgetByName(const QString& name)
+{
+    QGraphicsWidget* widget = 0;
+
+    QList<QGraphicsItem*> items = mMainWindow.scene()->items();
+    foreach (QGraphicsItem* item, items) {
+        if (item->isWidget()) {
+            QGraphicsWidget *w = static_cast<QGraphicsWidget*>(item);
+            if (w->objectName()==name) {
+                widget = w;
+            }
+        }
+    }
+
+    return widget;
+}
+
+QPointF DialpadTestUtil::keyPosition(QGraphicsWidget* widget, int key)
+{
+    QPointF keyPos;
+    QRectF rect = widget->rect();
+
+    // 3 x 4 grid
+    int cellWidth = rect.width() / 3;
+    int cellHeight = rect.height() / 4;
+
+    if (key==Qt::Key_Asterisk) {
+        keyPos = QPointF( 0.5 * cellWidth, 3.5 * cellHeight );
+    } else if (key==Qt::Key_NumberSign) {
+        keyPos = QPointF( 2.5 * cellWidth, 3.5 * cellHeight );
+    } else if (key==Qt::Key_0) {
+        keyPos = QPointF( 1.5 * cellWidth, 3.5 * cellHeight );
+    } else {
+        int normalized = key - 49;
+        // qDebug() << normalized;
+        int column = normalized % 3;
+        int row = (normalized / 3);
+        // qDebug() << column << row;
+
+        keyPos = QPointF((column+0.5)*cellWidth,(row+0.5)*cellHeight);
+    }
+
+    return keyPos;
+}
+
+void DialpadTestUtil::mouseClickDialpad(int key, MouseEventType type, bool pause)
+{
+    QString name = mKeyNames.value(key);
+
+    QGraphicsWidget* widget = getWidgetByName(name);
+
+    if ( widget ) {
+        QPointF widgetPos;
+
+        if (name=="keypad") {
+            widgetPos = widget->scenePos() +
+                        keyPosition(widget, key);
+        } else {
+            widgetPos = widget->scenePos() +
+                        widget->rect().center();
+        }
+
+        QPoint windowPos = mMainWindow.mapFromScene( widgetPos );
+
+        if (type==Press) {
+            QTest::mousePress( mMainWindow.viewport(), Qt::LeftButton,
+                               0, windowPos );
+        } else if (type==Release) {
+            QTest::mouseRelease( mMainWindow.viewport(), Qt::LeftButton,
+                                 0, windowPos );
+        } else {
+            QTest::mouseClick( mMainWindow.viewport(), Qt::LeftButton,
+                               0, windowPos );
+        }
+
+        if (pause) {
+            QTest::qWait( WAIT_TIME );
+        }
+    } else {
+        QFAIL( "Button could not be accessed!" );
+    }
+}
+
+