telutils/dialpad/src/dialpadkeypad.cpp
changeset 13 e32024264ebb
parent 12 ae8abd0db65c
child 15 d7fc66ccd6fb
--- a/telutils/dialpad/src/dialpadkeypad.cpp	Fri Mar 19 09:40:14 2010 +0200
+++ b/telutils/dialpad/src/dialpadkeypad.cpp	Fri Apr 16 15:31:58 2010 +0300
@@ -32,6 +32,8 @@
 
 static const int DialpadRowCount = 5;
 static const int DialpadColumnCount = 3;
+static const QString handsetIcon("qtg_mono_call");
+static const QString vmbxIcon("qtg_mono_voice_mailbox");
 
 static const int DialpadButtonToKeyCodeTable[DialpadButtonCount] =
 {
@@ -44,9 +46,12 @@
 };
 
 DialpadKeypad::DialpadKeypad(
+    const HbMainWindow& mainWindow,
     DialpadInputField& inputField,
     QGraphicsItem* parent) :
-    HbWidget(parent), mInputField(inputField),
+    HbWidget(parent),
+    mMainWindow(mainWindow),
+    mInputField(inputField),
     mLongPressDuration(0)
 {
     // create signal mappers
@@ -86,14 +91,14 @@
 
         if (keyCode==Qt::Key_Yes) {
             button->setStyle(mCallButtonStyle);
-            HbIcon callIcon(":/qtg_mono_answer_call.svg"); // todo correct icon
+            HbIcon callIcon(handsetIcon); // todo correct icon
             button->setIcon(callIcon);
         } else {
             button->setStyle(mNormalButtonStyle);
         }
 
         if (keyCode==Qt::Key_1) {
-            HbIcon mboxIcon(":/qtg_mono_voice_mailbox.svg");
+            HbIcon mboxIcon(vmbxIcon);
             button->setIcon(mboxIcon);
         }
 
@@ -258,7 +263,7 @@
 void DialpadKeypad::postKeyEvent(QEvent::Type type, int key)
 {
     QKeyEvent *keyEvent = new QKeyEvent(type, key, Qt::NoModifier);
-    HbApplication::postEvent(hbInstance->allMainWindows().at(0),keyEvent);
+    HbApplication::postEvent(const_cast<HbMainWindow*>(&mMainWindow),keyEvent);
 }
 
 void DialpadKeypad::sendKeyEventToEditor(QEvent::Type type, int key)
@@ -297,18 +302,21 @@
 {
     HbWidget::showEvent(event);
 
-    // set fixed row and column dimensions
-    QSizeF effectiveSize(rect().width(),
-                         rect().height());
-
-    qreal width = effectiveSize.width() / DialpadColumnCount;
-    qreal height = effectiveSize.height() / DialpadRowCount;
+    if (parentWidget()->isVisible()) {
+        // first show event comes before dialpad is open
+        // set fixed row and column dimensions
+        QSizeF effectiveSize(rect().width(),
+                             rect().height());
 
-    for (int i=0; i < DialpadColumnCount ;i++) {
-        mGridLayout->setColumnFixedWidth(i, width);
-    }
+        qreal width = effectiveSize.width() / DialpadColumnCount;
+        qreal height = effectiveSize.height() / DialpadRowCount;
 
-    for (int i=0; i < DialpadRowCount ;i++) {
-        mGridLayout->setRowFixedHeight(i, height);
+        for (int i=0; i < DialpadColumnCount ;i++) {
+            mGridLayout->setColumnFixedWidth(i, width);
+        }
+
+        for (int i=0; i < DialpadRowCount ;i++) {
+            mGridLayout->setRowFixedHeight(i, height);
+        }
     }
 }