diff -r 594d59766373 -r 7d48bed6ce0c telutils/dialpad/src/dialpadinputfield.cpp --- /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 + +#include +#include +#include +#include + +#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; +}