telutils/dialpad/src/dialpadinputfield.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
equal deleted inserted replaced
18:594d59766373 19:7d48bed6ce0c
       
     1 /*!
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: Input field
       
    15 *
       
    16 */
       
    17 
       
    18 #include <QGraphicsLinearLayout>
       
    19 
       
    20 #include <hblineedit.h>
       
    21 #include <hbinputeditorinterface.h>
       
    22 #include <hbinputstandardfilters.h>
       
    23 #include <hbdeviceprofile.h>
       
    24 
       
    25 #include "dialpadinputfield.h"
       
    26 #include "dialpadbutton.h"
       
    27 
       
    28 static const QLatin1String HbBackspaceIcon("qtg_mono_backspace2");
       
    29 static const int DialpadAutoRepeatInterval = 150; // ms
       
    30 static const int DialpadAutoRepeatDelay = 1000; // ms
       
    31 static const qreal DialpadComponentMargin = 0.75; // units
       
    32 static const qreal DialpadBackspaceWidth = 9.4; // units
       
    33 static const qreal DialpadInputFieldHeight = 6.3; // units
       
    34 static const int DialpadMaxEditStringLenght = 100;
       
    35 
       
    36 DialpadInputField::DialpadInputField(QGraphicsItem* parent)
       
    37     : HbWidget(parent)
       
    38 {
       
    39     // create editor
       
    40     mNumberEditor = new HbLineEdit(this);
       
    41     HbEditorInterface editorInterface(mNumberEditor);
       
    42     editorInterface.setFilter(HbPhoneNumberFilter::instance());
       
    43     editorInterface.setInputConstraints(HbEditorConstraintIgnoreFocus);
       
    44     mNumberEditor->setMaxLength(DialpadMaxEditStringLenght);
       
    45     mNumberEditor->setMinRows(1);
       
    46     mNumberEditor->setMaxRows(1);    
       
    47     mNumberEditor->setAdjustFontSizeToFitHeight(true);
       
    48 
       
    49     // create backspace button
       
    50     mBackspace = new DialpadButton(this);
       
    51     mBackspace->setButtonType(DialpadButton::FunctionButton); // for css
       
    52     mBackspace->setFocusPolicy(Qt::NoFocus);
       
    53     mBackspace->setFlag(QGraphicsItem::ItemIsFocusable,false);
       
    54     mBackspace->setIcon(HbIcon(HbBackspaceIcon));
       
    55     mBackspace->setEnabled(false);
       
    56     QString buttonName;
       
    57     buttonName.setNum(Qt::Key_Backspace);
       
    58     mBackspace->setObjectName(buttonName);
       
    59     mBackspace->setAutoRepeat(true);
       
    60     mBackspace->setAutoRepeatInterval(DialpadAutoRepeatInterval);
       
    61     mBackspace->setAutoRepeatDelay(DialpadAutoRepeatDelay);
       
    62 
       
    63     connect(mNumberEditor,SIGNAL(contentsChanged()),
       
    64             SLOT(onEditorContentChanged()));
       
    65 
       
    66     // set input field layout
       
    67     qreal unit = HbDeviceProfile::current().unitValue();
       
    68     mHeight = (int) DialpadInputFieldHeight * unit;
       
    69     QGraphicsLinearLayout* layout = new QGraphicsLinearLayout;
       
    70     layout->addItem(mNumberEditor);
       
    71     layout->setAlignment(mNumberEditor,Qt::AlignVCenter);
       
    72     layout->addItem(mBackspace);
       
    73     layout->setContentsMargins(0,0,0,0);
       
    74     layout->setSpacing(DialpadComponentMargin* unit);
       
    75     // layout parameters
       
    76     mBackspace->setPreferredWidth(DialpadBackspaceWidth * unit);
       
    77     mBackspace->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding);
       
    78     setLayout(layout);
       
    79 }
       
    80 
       
    81 DialpadInputField::~DialpadInputField()
       
    82 {
       
    83 }
       
    84 
       
    85 HbLineEdit& DialpadInputField::editor() const
       
    86 {
       
    87     return *mNumberEditor;
       
    88 }
       
    89 
       
    90 DialpadButton& DialpadInputField::backspaceButton() const
       
    91 {
       
    92     return *mBackspace;
       
    93 }
       
    94 
       
    95 void DialpadInputField::onEditorContentChanged()
       
    96 {
       
    97     mBackspace->setEnabled(mNumberEditor->text().length());
       
    98 }
       
    99 
       
   100 QSizeF DialpadInputField::sizeHint(
       
   101     Qt::SizeHint which,
       
   102     const QSizeF & constraint) const
       
   103 {
       
   104     Q_UNUSED(which);
       
   105     Q_UNUSED(constraint);
       
   106 
       
   107     // input field height is fixed
       
   108     QSizeF sh;
       
   109     sh.setHeight(mHeight);
       
   110     return sh;
       
   111 }