telutils/dialpad/src/dialpadinputfield.cpp
changeset 50 2313cb430f28
parent 32 1f002146abb4
child 53 25b8d29b7c59
equal deleted inserted replaced
45:61f927bc9441 50:2313cb430f28
    19 
    19 
    20 #include <hblineedit.h>
    20 #include <hblineedit.h>
    21 #include <hbinputeditorinterface.h>
    21 #include <hbinputeditorinterface.h>
    22 #include <hbinputstandardfilters.h>
    22 #include <hbinputstandardfilters.h>
    23 #include <hbdeviceprofile.h>
    23 #include <hbdeviceprofile.h>
       
    24 #include <hbmainwindow.h>
    24 
    25 
    25 #include "dialpadinputfield.h"
    26 #include "dialpadinputfield.h"
    26 #include "dialpadbutton.h"
    27 #include "dialpadbutton.h"
    27 
    28 
    28 static const QLatin1String HbBackspaceIcon("qtg_mono_backspace2");
    29 static const QLatin1String HbBackspaceIcon("qtg_mono_backspace2");
    29 static const int DialpadAutoRepeatInterval = 150; // ms
    30 static const int DialpadAutoRepeatInterval = 150; // ms
    30 static const int DialpadAutoRepeatDelay = 1000; // ms
    31 static const int DialpadAutoRepeatDelay = 1000; // ms
    31 static const qreal DialpadComponentMargin = 0.75; // units
    32 static const qreal DialpadComponentMargin = 0.75; // units
    32 static const qreal DialpadBackspaceWidth = 9.4; // units
    33 static const qreal DialpadBackspaceWidthV = 9.8; // units
    33 static const qreal DialpadInputFieldHeight = 6.3; // units
    34 static const qreal DialpadBackspaceWidthH = 8.6; // units
       
    35 static const qreal DialpadInputFieldHeightV = 7.2; // units
       
    36 static const qreal DialpadInputFieldHeightH = 6.6; // units
    34 static const int DialpadMaxEditStringLenght = 100;
    37 static const int DialpadMaxEditStringLenght = 100;
    35 
    38 
    36 DialpadInputField::DialpadInputField(QGraphicsItem* parent)
    39 DialpadInputField::DialpadInputField(
    37     : HbWidget(parent)
    40     const HbMainWindow& mainWindow,
       
    41     QGraphicsItem* parent)
       
    42     : HbWidget(parent),
       
    43       mMainWindow(mainWindow)
    38 {
    44 {
    39     // create editor
    45     // create editor
    40     mNumberEditor = new HbLineEdit(this);
    46     mNumberEditor = new HbLineEdit(this);
       
    47     mNumberEditor->setObjectName(QLatin1String("numberEdit"));
    41     HbEditorInterface editorInterface(mNumberEditor);
    48     HbEditorInterface editorInterface(mNumberEditor);
    42     editorInterface.setFilter(HbPhoneNumberFilter::instance());
    49     editorInterface.setFilter(HbPhoneNumberFilter::instance());
    43     editorInterface.setInputConstraints(HbEditorConstraintIgnoreFocus);
    50     editorInterface.setInputConstraints(HbEditorConstraintIgnoreFocus);
    44     mNumberEditor->setMaxLength(DialpadMaxEditStringLenght);
    51     mNumberEditor->setMaxLength(DialpadMaxEditStringLenght);
    45     mNumberEditor->setMinRows(1);
    52     mNumberEditor->setMinRows(1);
    46     mNumberEditor->setMaxRows(1);    
    53     mNumberEditor->setMaxRows(1);    
    47     mNumberEditor->setAdjustFontSizeToFitHeight(true);
    54     mNumberEditor->setAdjustFontSizeToFitHeight(true);
       
    55     mNumberEditor->setFontSpec(HbFontSpec(HbFontSpec::Primary));
    48 
    56 
    49     // create backspace button
    57     // create backspace button
    50     mBackspace = new DialpadButton(this);
    58     mBackspace = new DialpadButton(this);
       
    59     mBackspace->setObjectName(QLatin1String("backspaceButton"));
    51     mBackspace->setButtonType(DialpadButton::FunctionButton); // for css
    60     mBackspace->setButtonType(DialpadButton::FunctionButton); // for css
    52     mBackspace->setFocusPolicy(Qt::NoFocus);
    61     mBackspace->setFocusPolicy(Qt::NoFocus);
    53     mBackspace->setFlag(QGraphicsItem::ItemIsFocusable,false);
    62     mBackspace->setFlag(QGraphicsItem::ItemIsFocusable,false);
    54     mBackspace->setIcon(HbIcon(HbBackspaceIcon));
    63     mBackspace->setIcon(HbIcon(HbBackspaceIcon));
    55     mBackspace->setEnabled(false);
    64     mBackspace->setEnabled(false);
    56     QString buttonName;
       
    57     buttonName.setNum(Qt::Key_Backspace);
       
    58     mBackspace->setObjectName(buttonName);
       
    59     mBackspace->setAutoRepeat(true);
    65     mBackspace->setAutoRepeat(true);
    60     mBackspace->setAutoRepeatInterval(DialpadAutoRepeatInterval);
    66     mBackspace->setAutoRepeatInterval(DialpadAutoRepeatInterval);
    61     mBackspace->setAutoRepeatDelay(DialpadAutoRepeatDelay);
    67     mBackspace->setAutoRepeatDelay(DialpadAutoRepeatDelay);
       
    68     mBackspace->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding);
    62 
    69 
    63     connect(mNumberEditor,SIGNAL(contentsChanged()),
    70     connect(mNumberEditor,SIGNAL(contentsChanged()),
    64             SLOT(onEditorContentChanged()));
    71             SLOT(onEditorContentChanged()));
    65 
    72 
    66     // set input field layout
    73     // set input field layout
    67     qreal unit = HbDeviceProfile::current().unitValue();
       
    68     mHeight = (int) DialpadInputFieldHeight * unit;
       
    69     QGraphicsLinearLayout* layout = new QGraphicsLinearLayout;
    74     QGraphicsLinearLayout* layout = new QGraphicsLinearLayout;
    70     layout->addItem(mNumberEditor);
    75     layout->addItem(mNumberEditor);
    71     layout->setAlignment(mNumberEditor,Qt::AlignVCenter);
    76     layout->setAlignment(mNumberEditor,Qt::AlignVCenter);
    72     layout->addItem(mBackspace);
    77     layout->addItem(mBackspace);
    73     layout->setContentsMargins(0,0,0,0);
    78     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     setLayout(layout);
       
    80     updateLayout(mMainWindow.orientation());
    79 }
    81 }
    80 
    82 
    81 DialpadInputField::~DialpadInputField()
    83 DialpadInputField::~DialpadInputField()
    82 {
    84 {
    83 }
    85 }
    88 }
    90 }
    89 
    91 
    90 DialpadButton& DialpadInputField::backspaceButton() const
    92 DialpadButton& DialpadInputField::backspaceButton() const
    91 {
    93 {
    92     return *mBackspace;
    94     return *mBackspace;
       
    95 }
       
    96 
       
    97 void DialpadInputField::updateLayout(Qt::Orientation orientation)
       
    98 {
       
    99     Q_ASSERT(layout());
       
   100 
       
   101     qreal unit = HbDeviceProfile::profile(&mMainWindow).unitValue();
       
   102 
       
   103     QGraphicsLinearLayout* mainLayout =
       
   104         static_cast<QGraphicsLinearLayout*>(layout());
       
   105 
       
   106     mainLayout->setSpacing(DialpadComponentMargin* unit);
       
   107 
       
   108     if (orientation==Qt::Vertical) {
       
   109         mHeight = DialpadInputFieldHeightV * unit;
       
   110         mBackspace->setPreferredWidth(DialpadBackspaceWidthV * unit);
       
   111     } else {
       
   112         mHeight = DialpadInputFieldHeightH * unit;
       
   113         mBackspace->setPreferredWidth(DialpadBackspaceWidthH * unit);
       
   114     }
    93 }
   115 }
    94 
   116 
    95 void DialpadInputField::onEditorContentChanged()
   117 void DialpadInputField::onEditorContentChanged()
    96 {
   118 {
    97     mBackspace->setEnabled(mNumberEditor->text().length());
   119     mBackspace->setEnabled(mNumberEditor->text().length());