telutils/dialpad/src/dialpadinputfield.cpp
changeset 50 2313cb430f28
parent 32 1f002146abb4
child 53 25b8d29b7c59
--- a/telutils/dialpad/src/dialpadinputfield.cpp	Thu Sep 02 21:00:29 2010 +0300
+++ b/telutils/dialpad/src/dialpadinputfield.cpp	Fri Sep 17 08:33:29 2010 +0300
@@ -21,6 +21,7 @@
 #include <hbinputeditorinterface.h>
 #include <hbinputstandardfilters.h>
 #include <hbdeviceprofile.h>
+#include <hbmainwindow.h>
 
 #include "dialpadinputfield.h"
 #include "dialpadbutton.h"
@@ -29,15 +30,21 @@
 static const int DialpadAutoRepeatInterval = 150; // ms
 static const int DialpadAutoRepeatDelay = 1000; // ms
 static const qreal DialpadComponentMargin = 0.75; // units
-static const qreal DialpadBackspaceWidth = 9.4; // units
-static const qreal DialpadInputFieldHeight = 6.3; // units
+static const qreal DialpadBackspaceWidthV = 9.8; // units
+static const qreal DialpadBackspaceWidthH = 8.6; // units
+static const qreal DialpadInputFieldHeightV = 7.2; // units
+static const qreal DialpadInputFieldHeightH = 6.6; // units
 static const int DialpadMaxEditStringLenght = 100;
 
-DialpadInputField::DialpadInputField(QGraphicsItem* parent)
-    : HbWidget(parent)
+DialpadInputField::DialpadInputField(
+    const HbMainWindow& mainWindow,
+    QGraphicsItem* parent)
+    : HbWidget(parent),
+      mMainWindow(mainWindow)
 {
     // create editor
     mNumberEditor = new HbLineEdit(this);
+    mNumberEditor->setObjectName(QLatin1String("numberEdit"));
     HbEditorInterface editorInterface(mNumberEditor);
     editorInterface.setFilter(HbPhoneNumberFilter::instance());
     editorInterface.setInputConstraints(HbEditorConstraintIgnoreFocus);
@@ -45,37 +52,32 @@
     mNumberEditor->setMinRows(1);
     mNumberEditor->setMaxRows(1);    
     mNumberEditor->setAdjustFontSizeToFitHeight(true);
+    mNumberEditor->setFontSpec(HbFontSpec(HbFontSpec::Primary));
 
     // create backspace button
     mBackspace = new DialpadButton(this);
+    mBackspace->setObjectName(QLatin1String("backspaceButton"));
     mBackspace->setButtonType(DialpadButton::FunctionButton); // for css
     mBackspace->setFocusPolicy(Qt::NoFocus);
     mBackspace->setFlag(QGraphicsItem::ItemIsFocusable,false);
     mBackspace->setIcon(HbIcon(HbBackspaceIcon));
     mBackspace->setEnabled(false);
-    QString buttonName;
-    buttonName.setNum(Qt::Key_Backspace);
-    mBackspace->setObjectName(buttonName);
     mBackspace->setAutoRepeat(true);
     mBackspace->setAutoRepeatInterval(DialpadAutoRepeatInterval);
     mBackspace->setAutoRepeatDelay(DialpadAutoRepeatDelay);
+    mBackspace->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding);
 
     connect(mNumberEditor,SIGNAL(contentsChanged()),
             SLOT(onEditorContentChanged()));
 
     // set input field layout
-    qreal unit = HbDeviceProfile::current().unitValue();
-    mHeight = (int) DialpadInputFieldHeight * unit;
     QGraphicsLinearLayout* layout = new QGraphicsLinearLayout;
     layout->addItem(mNumberEditor);
     layout->setAlignment(mNumberEditor,Qt::AlignVCenter);
     layout->addItem(mBackspace);
     layout->setContentsMargins(0,0,0,0);
-    layout->setSpacing(DialpadComponentMargin* unit);
-    // layout parameters
-    mBackspace->setPreferredWidth(DialpadBackspaceWidth * unit);
-    mBackspace->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding);
     setLayout(layout);
+    updateLayout(mMainWindow.orientation());
 }
 
 DialpadInputField::~DialpadInputField()
@@ -92,6 +94,26 @@
     return *mBackspace;
 }
 
+void DialpadInputField::updateLayout(Qt::Orientation orientation)
+{
+    Q_ASSERT(layout());
+
+    qreal unit = HbDeviceProfile::profile(&mMainWindow).unitValue();
+
+    QGraphicsLinearLayout* mainLayout =
+        static_cast<QGraphicsLinearLayout*>(layout());
+
+    mainLayout->setSpacing(DialpadComponentMargin* unit);
+
+    if (orientation==Qt::Vertical) {
+        mHeight = DialpadInputFieldHeightV * unit;
+        mBackspace->setPreferredWidth(DialpadBackspaceWidthV * unit);
+    } else {
+        mHeight = DialpadInputFieldHeightH * unit;
+        mBackspace->setPreferredWidth(DialpadBackspaceWidthH * unit);
+    }
+}
+
 void DialpadInputField::onEditorContentChanged()
 {
     mBackspace->setEnabled(mNumberEditor->text().length());