telutils/dialpad/src/dialpadinputfield.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telutils/dialpad/src/dialpadinputfield.cpp	Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,111 @@
+/*!
+* Copyright (c) 2009 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: Input field
+*
+*/
+
+#include <QGraphicsLinearLayout>
+
+#include <hblineedit.h>
+#include <hbinputeditorinterface.h>
+#include <hbinputstandardfilters.h>
+#include <hbdeviceprofile.h>
+
+#include "dialpadinputfield.h"
+#include "dialpadbutton.h"
+
+static const QLatin1String HbBackspaceIcon("qtg_mono_backspace2");
+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 int DialpadMaxEditStringLenght = 100;
+
+DialpadInputField::DialpadInputField(QGraphicsItem* parent)
+    : HbWidget(parent)
+{
+    // create editor
+    mNumberEditor = new HbLineEdit(this);
+    HbEditorInterface editorInterface(mNumberEditor);
+    editorInterface.setFilter(HbPhoneNumberFilter::instance());
+    editorInterface.setInputConstraints(HbEditorConstraintIgnoreFocus);
+    mNumberEditor->setMaxLength(DialpadMaxEditStringLenght);
+    mNumberEditor->setMinRows(1);
+    mNumberEditor->setMaxRows(1);    
+    mNumberEditor->setAdjustFontSizeToFitHeight(true);
+
+    // create backspace button
+    mBackspace = new DialpadButton(this);
+    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);
+
+    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);
+}
+
+DialpadInputField::~DialpadInputField()
+{
+}
+
+HbLineEdit& DialpadInputField::editor() const
+{
+    return *mNumberEditor;
+}
+
+DialpadButton& DialpadInputField::backspaceButton() const
+{
+    return *mBackspace;
+}
+
+void DialpadInputField::onEditorContentChanged()
+{
+    mBackspace->setEnabled(mNumberEditor->text().length());
+}
+
+QSizeF DialpadInputField::sizeHint(
+    Qt::SizeHint which,
+    const QSizeF & constraint) const
+{
+    Q_UNUSED(which);
+    Q_UNUSED(constraint);
+
+    // input field height is fixed
+    QSizeF sh;
+    sh.setHeight(mHeight);
+    return sh;
+}