diff -r ff3b6d0fd310 -r ae8abd0db65c telutils/dialpad/src/dialpadinputfield.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telutils/dialpad/src/dialpadinputfield.cpp Fri Mar 19 09:40:14 2010 +0200 @@ -0,0 +1,117 @@ +/*! +* 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 "dialpadbuttonstyle.h" +#include "dialpadbutton.h" + +static const QString HbBackspaceIcon(":/inputmethods/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 DialpadBackspaceHeight = 9.4; // units +static const qreal DialpadInputFieldHeight = 6.3; // units + +DialpadInputField::DialpadInputField(QGraphicsItem* parent) + : HbWidget(parent) +{ + // create editor + mNumberEditor = new HbLineEdit(this); + HbEditorInterface editorInterface(mNumberEditor); + editorInterface.setFilter(HbPhoneNumberFilter::instance()); + editorInterface.setUpAsPhoneNumberEditor(); + editorInterface.setConstraints(HbEditorConstraintIgnoreFocus); + + // create backspace button + mBackspace = new DialpadButton(this); + mFunctionButtonStyle = new DialpadButtonStyle(); + mFunctionButtonStyle->setButtonStyle( + DialpadButtonStyle::FunctionButtonStyle); + mBackspace->setStyle(mFunctionButtonStyle); + 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(DialpadBackspaceHeight * unit); + mBackspace->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding); + setLayout(layout); + + HbFontSpec editFont(HbFontSpec::Primary); + // 85% of input field height + editFont.setTextHeight(mHeight*0.85); + mNumberEditor->setFontSpec(editFont); +} + +DialpadInputField::~DialpadInputField() +{ + delete mFunctionButtonStyle; +} + +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; +}