telutils/dialpad/src/dialpad.cpp
changeset 50 2313cb430f28
parent 45 61f927bc9441
child 51 12bc758d6a02
equal deleted inserted replaced
45:61f927bc9441 50:2313cb430f28
    35 #include "dialpadbutton.h"
    35 #include "dialpadbutton.h"
    36 #include "dialpadmultitaphandler.h"
    36 #include "dialpadmultitaphandler.h"
    37 #include "dialpadbackground.h"
    37 #include "dialpadbackground.h"
    38 #include "dialpadbutton.h"
    38 #include "dialpadbutton.h"
    39 
    39 
    40 static const QLatin1String backgroundGraphics("qtg_fr_input_v_bg");
    40 static const QLatin1String backgroundGraphicsV("qtg_fr_input_v_bg");
    41 static const QLatin1String backgroundGraphicsH("qtg_fr_input_h_bg");
    41 static const QLatin1String backgroundGraphicsH("qtg_fr_input_h_bg");
    42 static const QLatin1String minimizeIcon("qtg_graf_input_v_swipe");
    42 static const QLatin1String minimizeIconV("qtg_graf_input_v_swipe");
    43 static const QLatin1String minimizeIconH("qtg_graf_input_h_swipe");
    43 static const QLatin1String minimizeIconH("qtg_graf_input_h_swipe");
    44 static const int DialpadCloseAnimDuration = 200; // ms
    44 static const int DialpadCloseAnimDuration = 200; // ms
    45 static const int DialpadOpenAnimDuration = 200; // ms
    45 static const int DialpadOpenAnimDuration = 200; // ms
    46 static const qreal DialpadComponentMargin = 0.75; // units
    46 static const qreal DialpadComponentMargin = 0.75; // units
    47 static const qreal DialpadCloseHandleHeight = 2.23; // units
    47 static const qreal DialpadCloseHandleHeight = 2.23; // units
    48 static const qreal DialpadCloseHandleWidth = 18.8; // units
    48 static const qreal DialpadCloseHandleWidth = 18.8; // units
    49 static const qreal DialpadCallButtonHeight = 8.75; // units, same as numeric buttons
       
    50 static const qreal DialpadCallButtonHeightH = 7.25; // units
       
    51 
    49 
    52 static const QLatin1String handsetIcon("qtg_mono_call");
    50 static const QLatin1String handsetIcon("qtg_mono_call");
    53 static const QLatin1String vmbxIcon("qtg_mono_voice_mailbox");
    51 static const QLatin1String vmbxIcon("qtg_mono_voice_mailbox");
    54 
    52 
    55 const QLatin1String DIALPAD_TO_PRT_FXML(":/dialpad_to_prt.fxml");
    53 const QLatin1String DIALPAD_TO_PRT_FXML(":/dialpad_to_prt.fxml");
    82     initialize();
    80     initialize();
    83 }
    81 }
    84 
    82 
    85 void Dialpad::initialize()
    83 void Dialpad::initialize()
    86 {
    84 {
       
    85     setObjectName(QLatin1String("dialpad"));
    87     setFocusPolicy(Qt::StrongFocus);
    86     setFocusPolicy(Qt::StrongFocus);
    88     setFlag(QGraphicsItem::ItemIsFocusable,true);
    87     setFlag(QGraphicsItem::ItemIsFocusable,true);
    89     setFlag(QGraphicsItem::ItemHasNoContents, false);
    88     setFlag(QGraphicsItem::ItemHasNoContents, false);
    90 
    89 
    91     // create input field
    90     // create input field
    92     mInputField = new DialpadInputField(this);
    91     mInputField = new DialpadInputField(mMainWindow,this);
    93 
    92 
    94     // create keypad
    93     // create keypad
    95     mKeypad = new DialpadKeypad(mMainWindow,*mInputField,this);
    94     mKeypad = new DialpadKeypad(mMainWindow,*mInputField,this);
    96 
    95 
    97     // layouting params
    96     // layouting params
    98     qreal unit = HbDeviceProfile::current().unitValue();
    97     qreal unit = HbDeviceProfile::profile(&mMainWindow).unitValue();
    99     qreal margin = DialpadComponentMargin * unit;
    98     qreal margin = DialpadComponentMargin * unit;
   100     mCloseHandleHeight = DialpadCloseHandleHeight * unit;
    99     mCloseHandleHeight = DialpadCloseHandleHeight * unit;
   101     mCloseHandleWidth = DialpadCloseHandleWidth * unit;
   100     mCloseHandleWidth = DialpadCloseHandleWidth * unit;
   102 
       
   103     mKeypad->callButton().setPreferredHeight(DialpadCallButtonHeight*unit);
       
   104     mKeypad->callButton().setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
       
   105 
   101 
   106     // create popup background
   102     // create popup background
   107     mBackgroundDrawer = new HbFrameDrawer();
   103     mBackgroundDrawer = new HbFrameDrawer();
   108     mIconDrawer = new HbFrameDrawer();
   104     mIconDrawer = new HbFrameDrawer();
   109 
   105 
   110     // popup layout
   106     // popup layout
   111     QGraphicsLinearLayout* popupLayout =
   107     QGraphicsLinearLayout* popupLayout =
   112         new QGraphicsLinearLayout(Qt::Vertical);
   108         new QGraphicsLinearLayout(Qt::Vertical);
   113     popupLayout->addItem(mInputField);
   109     popupLayout->addItem(mInputField);
   114     popupLayout->addItem(mKeypad);
   110     popupLayout->addItem(mKeypad);
   115     popupLayout->addItem(&mKeypad->callButton());
       
   116     popupLayout->setContentsMargins(margin, mCloseHandleHeight, margin, margin);
   111     popupLayout->setContentsMargins(margin, mCloseHandleHeight, margin, margin);
   117     popupLayout->setSpacing(0);
   112     popupLayout->setSpacing(0);
   118     popupLayout->setItemSpacing(0,margin);
   113     popupLayout->setItemSpacing(0,margin);
   119     setLayout(popupLayout);
   114     setLayout(popupLayout);
   120     setLayoutDirection(Qt::LeftToRight);
   115     setLayoutDirection(Qt::LeftToRight);
   177     Q_UNUSED(option);
   172     Q_UNUSED(option);
   178     Q_UNUSED(widget);
   173     Q_UNUSED(widget);
   179 
   174 
   180     // paint popup background
   175     // paint popup background
   181     if ( mOrientation == Qt::Vertical ) {
   176     if ( mOrientation == Qt::Vertical ) {
   182         mBackgroundDrawer->setFrameGraphicsName(backgroundGraphics);
   177         mBackgroundDrawer->setFrameGraphicsName(backgroundGraphicsV);
   183         mIconDrawer->setFrameGraphicsName(minimizeIcon);
   178         mIconDrawer->setFrameGraphicsName(minimizeIconV);
   184         mBackgroundDrawer->setFrameType(HbFrameDrawer::ThreePiecesVertical);
   179         mBackgroundDrawer->setFrameType(HbFrameDrawer::ThreePiecesVertical);
   185         mBackgroundDrawer->setBorderWidths(0.0, mCloseHandleHeight, 0.0, 0.0);
   180         mBackgroundDrawer->setBorderWidths(0.0, mCloseHandleHeight, 0.0, 0.0);
   186     } else {
   181     } else {
   187         mBackgroundDrawer->setFrameGraphicsName(backgroundGraphicsH);
   182         mBackgroundDrawer->setFrameGraphicsName(backgroundGraphicsH);
   188         mIconDrawer->setFrameGraphicsName(minimizeIconH);
   183         mIconDrawer->setFrameGraphicsName(minimizeIconH);
   225     return mIsOpen;
   220     return mIsOpen;
   226 }
   221 }
   227 
   222 
   228 bool Dialpad::isCallButtonEnabled() const
   223 bool Dialpad::isCallButtonEnabled() const
   229 {
   224 {
   230     return mKeypad->callButton().isEnabled();
   225     return mKeypad->isCallButtonEnabled();
   231 }
   226 }
   232 
   227 
   233 void Dialpad::openDialpad()
   228 void Dialpad::openDialpad()
   234 {
   229 {
   235     mKeypad->resetButtons();
   230     mKeypad->resetButtons();
   256         setPos(mPosition.x()+width,mPosition.y());
   251         setPos(mPosition.x()+width,mPosition.y());
   257     }
   252     }
   258 
   253 
   259     if (mOrientation!=previousOrientation) {
   254     if (mOrientation!=previousOrientation) {
   260         updateLayout((Qt::Orientation)mOrientation);
   255         updateLayout((Qt::Orientation)mOrientation);
       
   256         mInputField->updateLayout((Qt::Orientation)mOrientation);
   261     }
   257     }
   262 
   258 
   263     show();
   259     show();
   264 
   260 
   265     setFocusProxy(&mInputField->editor());
   261     setFocusProxy(&mInputField->editor());
   408 }
   404 }
   409 
   405 
   410 void Dialpad::orientationChangeFinished(Qt::Orientation current)
   406 void Dialpad::orientationChangeFinished(Qt::Orientation current)
   411 {
   407 {
   412     updateLayout(current);
   408     updateLayout(current);
       
   409     mInputField->updateLayout(current);
   413 
   410 
   414     show();
   411     show();
   415 
   412 
   416     // run orientation change effect
   413     // run orientation change effect
   417     if (current==Qt::Horizontal) {
   414     if (current==Qt::Horizontal) {
   439 
   436 
   440 void Dialpad::updateLayout(Qt::Orientation orientation)
   437 void Dialpad::updateLayout(Qt::Orientation orientation)
   441 {
   438 {
   442     Q_ASSERT(layout());
   439     Q_ASSERT(layout());
   443 
   440 
   444     qreal unit = HbDeviceProfile::current().unitValue();
   441     qreal unit = HbDeviceProfile::profile(&mMainWindow).unitValue();
   445     qreal margin = DialpadComponentMargin * unit;
   442     qreal margin = DialpadComponentMargin * unit;
   446 
   443 
   447     QGraphicsLinearLayout* mainLayout =
   444     QGraphicsLinearLayout* mainLayout =
   448         static_cast<QGraphicsLinearLayout*>(layout());
   445         static_cast<QGraphicsLinearLayout*>(layout());
   449 
   446 
   451     if (orientation==Qt::Vertical) {
   448     if (orientation==Qt::Vertical) {
   452         mainLayout->setContentsMargins(margin,
   449         mainLayout->setContentsMargins(margin,
   453                                        mCloseHandleHeight,
   450                                        mCloseHandleHeight,
   454                                        margin,
   451                                        margin,
   455                                        margin);
   452                                        margin);
   456         mKeypad->callButton().setPreferredHeight(DialpadCallButtonHeight*unit);
       
   457     } else {
   453     } else {
   458         mainLayout->setContentsMargins(mCloseHandleHeight,
   454         mainLayout->setContentsMargins(mCloseHandleHeight,
   459                                        margin,
   455                                        margin,
   460                                        margin,
   456                                        margin,
   461                                        margin);
   457                                        margin);
   462         mKeypad->callButton().setPreferredHeight(DialpadCallButtonHeightH*unit);
       
   463     }
   458     }
   464 }
   459 }
   465 
   460 
   466 void Dialpad::gestureEvent(QGestureEvent *event)
   461 void Dialpad::gestureEvent(QGestureEvent *event)
   467 {
   462 {