telutils/dialpad/tsrc/dialpadtest/dialpadtestview.cpp
changeset 13 e32024264ebb
parent 12 ae8abd0db65c
child 15 d7fc66ccd6fb
--- a/telutils/dialpad/tsrc/dialpadtest/dialpadtestview.cpp	Fri Mar 19 09:40:14 2010 +0200
+++ b/telutils/dialpad/tsrc/dialpadtest/dialpadtestview.cpp	Fri Apr 16 15:31:58 2010 +0300
@@ -29,9 +29,10 @@
 
 #include "dialpadtestview.h"
 #include "dialpad.h"
+#include "dialpadkeyhandler.h"
 
 DialpadTestView::DialpadTestView( HbMainWindow& mainWindow ) :
-    mMainWindow(mainWindow)
+    mMainWindow(mainWindow), mTapOutsideDismiss(0)
 {
     setTitle("DialpadTest");
 
@@ -52,6 +53,8 @@
             SIGNAL(orientationChanged(Qt::Orientation)),
             SLOT(onOrientationChange(Qt::Orientation)));
 
+    menu()->addAction("Tap outside dismiss",this,SLOT(setTapOutsideDismiss()));
+
     // create view widget (recent calls list mockup)
     createListWidget();
 
@@ -66,6 +69,9 @@
     mLongPressTimer = new QTimer(this);
     mLongPressTimer->setSingleShot(true);
     connect(mLongPressTimer,SIGNAL(timeout()),this,SLOT(handleLongKeyPress()));
+    
+    mKeyhandler = new DialpadKeyHandler(mDialpad, mMainWindow, this);
+    
     mMainWindow.installEventFilter(this);
 }
 
@@ -99,10 +105,16 @@
 
     if (mMainWindow.orientation() == Qt::Horizontal) {
         // dialpad takes half of the screen
-        mDialpad->setPos(QPointF(screenRect.width()/2,
-                                 this->scenePos().y()));
-        mDialpad->setPreferredSize(screenRect.width()/2,
-                                   (screenRect.height()-scenePos().y()));
+        if (layoutDirection() == Qt::LeftToRight) {
+            mDialpad->setPos(QPointF(screenRect.width()/2,
+                                     this->scenePos().y()));
+            mDialpad->setPreferredSize(screenRect.width()/2,
+                                       (screenRect.height()-scenePos().y()));
+        } else {
+            mDialpad->setPos(QPointF(0,this->scenePos().y()));
+            mDialpad->setPreferredSize(screenRect.width()/2,
+                                       (screenRect.height()-scenePos().y()));
+        }
     } else {
         qreal screenHeight = screenRect.height();
         mDialpad->setPos(0, screenHeight/2.25);
@@ -143,7 +155,7 @@
         phoneNum.append(index);
         listItem->setSecondaryText(phoneNum);
         HbIcon icon(":/qgn_prop_pb_comm_call_large.svg");
-        listItem->setDecorationIcon(icon);
+        listItem->setIcon(icon);
         mListWidget->addItem(listItem);
     }
     setWidget(mListWidget);
@@ -184,6 +196,15 @@
     return false;
 }
 
+bool DialpadTestView::event(QEvent * event)
+{
+    if (event->type() == QEvent::LayoutDirectionChange) {
+        setDialpadPosition();
+    }
+
+    return HbView::event(event);
+}
+
 void DialpadTestView::handleLongKeyPress()
 {
     HbMessageBox msgBox;
@@ -213,3 +234,9 @@
 
     msgBox.exec();
 }
+
+void DialpadTestView::setTapOutsideDismiss()
+{
+    mTapOutsideDismiss = !mTapOutsideDismiss;
+    mDialpad->setTapOutsideDismiss(mTapOutsideDismiss);
+}