src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectutils.cpp
changeset 5 627c4a0fd0e7
parent 3 11d3954df52a
child 7 923ff622b8b9
equal deleted inserted replaced
3:11d3954df52a 5:627c4a0fd0e7
    29 #include <hbtoolbutton.h>
    29 #include <hbtoolbutton.h>
    30 #include <hbabstractbutton.h>
    30 #include <hbabstractbutton.h>
    31 #include <hbabstractedit.h>
    31 #include <hbabstractedit.h>
    32 #include <hbtextedit.h>
    32 #include <hbtextedit.h>
    33 #include <hblineedit.h>
    33 #include <hblineedit.h>
       
    34 #include <hbinputvirtualrocker.h>
    34 #include <hbabstractslidercontrol.h>
    35 #include <hbabstractslidercontrol.h>
    35 #include <hbprogressslider.h>
    36 #include <hbprogressslider.h>
    36 #include <hbscrollbar.h>
    37 #include <hbscrollbar.h>
    37 #include <hbabstractviewitem.h>
    38 #include <hbabstractviewitem.h>
    38 #include <hbabstractitemview.h>
    39 #include <hbabstractitemview.h>
   237                         effect = HbFeedback::BasicButton;
   238                         effect = HbFeedback::BasicButton;
   238                     }
   239                     }
   239                 }
   240                 }
   240             }
   241             }
   241 
   242 
   242             if (widget->type() == HbPrivate::ItemType_NavigationButton
   243             if (widget->type() == HbPrivate::ItemType_NavigationButton || 
   243                 // Commented out until use cases are clarified
   244                 widget->type() == Hb::ItemType_ToolButton) {
   244                 /*|| widget->type() == HbPrivate::ItemType_IndicatorButton*/) {
       
   245                 effect = HbFeedback::BasicButton;
   245                 effect = HbFeedback::BasicButton;
   246             }
   246             }
   247             
   247             
   248             // input widget special case
   248             // input widget special case
   249             if (widget->type() == Hb::ItemType_InputButtonGroup) {
   249             if (widget->type() == Hb::ItemType_InputButtonGroup) {
   251             } 
   251             } 
   252             else if (widget->type() == Hb::ItemType_InputFunctionButton) {
   252             else if (widget->type() == Hb::ItemType_InputFunctionButton) {
   253                 effect = HbFeedback::BasicKeypad;
   253                 effect = HbFeedback::BasicKeypad;
   254             } 
   254             } 
   255             else if (widget->type() == Hb::ItemType_CheckBox) {
   255             else if (widget->type() == Hb::ItemType_CheckBox) {
   256                 effect = HbFeedback::None; // Checkbox deferred to release
   256                 effect = HbFeedback::BasicButton;
   257             }
   257             }
   258 
   258 
   259             // title pane specific special case
   259             // title pane specific special case
   260             if (widget->type() == HbPrivate::ItemType_TitlePane) {
   260             if (widget->type() == HbPrivate::ItemType_TitlePane) {
   261                 if (isOptionsMenuEmpty(widget)) {
   261                 if (isOptionsMenuEmpty(widget)) {
   267         case HbFeedbackEffectUtils::List:
   267         case HbFeedbackEffectUtils::List:
   268             if (modifiers & (Hb::ModifierExpandedItem | Hb::ModifierCollapsedItem)) {
   268             if (modifiers & (Hb::ModifierExpandedItem | Hb::ModifierCollapsedItem)) {
   269                 effect = HbFeedback::BasicItem;
   269                 effect = HbFeedback::BasicItem;
   270             }
   270             }
   271             else {
   271             else {
       
   272                 effect = HbFeedback::BasicItem;
       
   273             }
       
   274             if (widget->type() == Hb::ItemType_DataFormViewItem) {
   272                 effect = HbFeedback::SensitiveItem;
   275                 effect = HbFeedback::SensitiveItem;
   273             }
   276             }
       
   277             else if (widget->type() == HbPrivate::ItemType_DataGroup) {
       
   278                 effect = HbFeedback::None;
       
   279             }
       
   280 
   274             break;
   281             break;
   275         
   282         
   276         case HbFeedbackEffectUtils::Grid:
   283         case HbFeedbackEffectUtils::Grid:
   277             effect = HbFeedback::SensitiveItem;
   284             effect = HbFeedback::BasicItem;
   278             break;
   285             break;
   279 
   286 
   280         case HbFeedbackEffectUtils::Slider:
   287         case HbFeedbackEffectUtils::Slider:
   281 
   288 
   282             // slider track default
   289             // slider track default
   283             effect = HbFeedback::SensitiveSlider;
   290             effect = HbFeedback::BasicSlider;
   284 
   291 
   285             // special cases
   292             // special cases
   286             if (const HbProgressSlider *progressSlider = qobject_cast<const HbProgressSlider *>(widget)) {
   293             if (const HbProgressSlider *progressSlider = qobject_cast<const HbProgressSlider *>(widget)) {
   287                 Q_UNUSED(progressSlider)
   294                 Q_UNUSED(progressSlider)
   288                 effect = HbFeedback::BasicSlider;
   295                 effect = HbFeedback::BasicSlider;
   291                 effect = HbFeedback::SensitiveSlider;
   298                 effect = HbFeedback::SensitiveSlider;
   292             }
   299             }
   293 
   300 
   294             // slider handle
   301             // slider handle
   295             if (modifiers & Hb::ModifierSliderHandle) {
   302             if (modifiers & Hb::ModifierSliderHandle) {
   296                 effect = HbFeedback::SensitiveSlider;
   303                 effect = HbFeedback::BasicSlider;
   297             }
   304             }
   298 
   305 
   299             // slider elements
   306             // slider elements
   300             if (modifiers & Hb::ModifierSliderElement) {
   307             if (modifiers & Hb::ModifierSliderElement) {
   301                 effect = HbFeedback::SensitiveButton;
   308                 effect = HbFeedback::BasicButton;
   302             }
   309             }
   303             break;
   310             break;
   304 
   311 
   305         case HbFeedbackEffectUtils::Popup:
   312         case HbFeedbackEffectUtils::Popup:
   306 
   313 
   322 
   329 
   323     // item view specific special cases
   330     // item view specific special cases
   324     if ( const HbAbstractViewItem * viewItem = qobject_cast<const HbAbstractViewItem *>(widget)) {
   331     if ( const HbAbstractViewItem * viewItem = qobject_cast<const HbAbstractViewItem *>(widget)) {
   325         const HbAbstractItemView* itemView = viewItem->itemView();
   332         const HbAbstractItemView* itemView = viewItem->itemView();
   326         if (itemView) {
   333         if (itemView) {
   327             // checkable item is checked with a press
   334             // Different press feedbacks for single and multiselection list items
   328             switch (itemView->selectionMode()) {
   335             switch (itemView->selectionMode()) {
   329                 case HbAbstractItemView::SingleSelection:
   336                 case HbAbstractItemView::SingleSelection:
   330                 case HbAbstractItemView::MultiSelection: {
   337                 case HbAbstractItemView::MultiSelection: {
   331                     effect = HbFeedback::SensitiveItem;
   338                     effect = HbFeedback::BasicButton;
   332                     break;
   339                     break;
   333                 }
   340                 }
   334                 case HbAbstractItemView::NoSelection:
   341                 case HbAbstractItemView::NoSelection:
   335                     if (const HbListView * listView = qobject_cast<const HbListView *>(itemView)) {
   342                     if (const HbListView * listView = qobject_cast<const HbListView *>(itemView)) {
   336                         if (listView->arrangeMode()
   343                         if (listView->arrangeMode()
   341                     break;
   348                     break;
   342                 default:
   349                 default:
   343                     break;
   350                     break;
   344             }
   351             }
   345 
   352 
   346             // radio button list works like a normal list item
   353             // radio button list behaves like an item view on press
   347             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
   354             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
   348                 effect = HbFeedback::SensitiveItem;
   355                 effect = HbFeedback::BasicItem;
   349             }
   356             }
   350             else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) {
   357             else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) {
   351                 effect = HbFeedback::SensitiveItem;
   358                 effect = HbFeedback::SensitiveItem;
   352             }
   359             }
   353 
   360 
   360                     effect = HbFeedback::SensitiveItem;
   367                     effect = HbFeedback::SensitiveItem;
   361                 }
   368                 }
   362             }
   369             }
   363         }
   370         }
   364     }
   371     }
       
   372 
       
   373     if (widget->type() == Hb::ItemType_VirtualTrackPoint) {
       
   374         effect = HbFeedback::BasicButton;
       
   375     }
       
   376 
   365     if (modifiers & Hb::ModifierScrolling) {
   377     if (modifiers & Hb::ModifierScrolling) {
   366         effect = HbFeedback::StopFlick;
   378         effect = HbFeedback::StopFlick;
   367     }
   379     }
   368 
   380 
   369     return effect;
   381     return effect;
   403                         effect = HbFeedback::BasicButton;
   415                         effect = HbFeedback::BasicButton;
   404                     }
   416                     }
   405                 }
   417                 }
   406             }
   418             }
   407 
   419 
   408             if (widget->type() == HbPrivate::ItemType_NavigationButton
   420             if (widget->type() == HbPrivate::ItemType_NavigationButton || 
   409                 // Commented out until use cases are clarified
   421                 widget->type() == Hb::ItemType_ToolButton) {
   410                 /*|| widget->type() == HbPrivate::ItemType_IndicatorButton*/) {
       
   411                 effect = HbFeedback::BasicButton;
   422                 effect = HbFeedback::BasicButton;
   412             }
   423             }
   413 
   424 
   414             // input widget special case
   425             // input widget special case
   415             if (widget->type() == Hb::ItemType_InputButtonGroup
   426             if (widget->type() == Hb::ItemType_InputButtonGroup
   416              || widget->type() == Hb::ItemType_InputFunctionButton) {
   427              || widget->type() == Hb::ItemType_InputFunctionButton) {
   417                 effect = HbFeedback::SensitiveKeypad;
   428                 effect = HbFeedback::SensitiveKeypad;
   418             } else if (widget->type() == Hb::ItemType_CheckBox) {
   429             } else if (widget->type() == Hb::ItemType_CheckBox) {
   419                 effect = HbFeedback::Checkbox; // deferred from press
   430                 effect = HbFeedback::Checkbox;
   420             }
   431             }
   421 
   432 
   422             // title pane specific special case
   433             // title pane specific special case
   423             if (widget->type() == HbPrivate::ItemType_TitlePane) {
   434             if (widget->type() == HbPrivate::ItemType_TitlePane) {
   424                 if (isOptionsMenuEmpty(widget)) {
   435                 effect = HbFeedback::None;
   425                     effect = HbFeedback::None;
       
   426                 }
       
   427             }
   436             }
   428 
   437 
   429             if (widget->type() == Hb::ItemType_ComboBox) {
   438             if (widget->type() == Hb::ItemType_ComboBox) {
   430                 effect = HbFeedback::PopupOpen;
   439                 effect = HbFeedback::PopupOpen;
   431             }
   440             }
   435         case HbFeedbackEffectUtils::List:
   444         case HbFeedbackEffectUtils::List:
   436             if (modifiers & (Hb::ModifierExpandedItem | Hb::ModifierCollapsedItem)) {
   445             if (modifiers & (Hb::ModifierExpandedItem | Hb::ModifierCollapsedItem)) {
   437                 effect = HbFeedback::BasicItem;
   446                 effect = HbFeedback::BasicItem;
   438             }
   447             }
   439             else {
   448             else {
   440                 effect = HbFeedback::SensitiveItem;
   449                 effect = HbFeedback::BasicItem;
   441             }
   450             }
   442             // menu items give popop closed feedback on release
   451             // menu items give popup close feedback on release
   443             if (widget->type() == Hb::ItemType_MenuItem) {
   452             if (widget->type() == Hb::ItemType_MenuItem) {
   444                 effect = HbFeedback::None;
   453                 effect = HbFeedback::None;
   445             }
   454             }
       
   455             else if (widget->type() == Hb::ItemType_DataFormViewItem) {
       
   456                 effect = HbFeedback::None;
       
   457             }
   446             break;
   458             break;
   447 
   459 
   448         case HbFeedbackEffectUtils::Grid:
   460         case HbFeedbackEffectUtils::Grid:
   449             effect = HbFeedback::SensitiveItem;
   461             effect = HbFeedback::BasicItem;
   450             break;
   462             break;
   451  
   463  
   452          case HbFeedbackEffectUtils::Slider:
   464          case HbFeedbackEffectUtils::Slider:
   453 
   465 
   454             // slider track default
   466             // slider track default
   455              effect = HbFeedback::SensitiveSlider;
   467              effect = HbFeedback::BasicSlider;
   456 
   468 
   457             // slider handle
   469             // slider handle
   458             if (modifiers & Hb::ModifierSliderHandle) {
   470             if (modifiers & Hb::ModifierSliderHandle) {
   459                 effect = HbFeedback::SensitiveSlider;
   471                 effect = HbFeedback::BasicSlider;
   460             }
   472             }
   461 
   473 
   462             // slider elements
   474             // slider elements
   463             if (modifiers & Hb::ModifierSliderElement) {
   475             if (modifiers & Hb::ModifierSliderElement) {
   464                 effect = HbFeedback::SensitiveButton;
   476                 effect = HbFeedback::None;
   465             }
   477             }
   466             break;
   478             break;
   467 
   479 
   468         case HbFeedbackEffectUtils::Editor:
   480         case HbFeedbackEffectUtils::Editor:
   469             effect = HbFeedback::None;
   481             effect = HbFeedback::None;
   477     if ( const HbAbstractViewItem * viewItem = qobject_cast<const HbAbstractViewItem *>(widget)) {
   489     if ( const HbAbstractViewItem * viewItem = qobject_cast<const HbAbstractViewItem *>(widget)) {
   478         const HbAbstractItemView* itemView = viewItem->itemView();
   490         const HbAbstractItemView* itemView = viewItem->itemView();
   479         if (itemView) {
   491         if (itemView) {
   480             switch (itemView->selectionMode()) {
   492             switch (itemView->selectionMode()) {
   481                 case HbAbstractItemView::SingleSelection:
   493                 case HbAbstractItemView::SingleSelection:
   482                     effect = HbFeedback::Checkbox; // deferred from press
   494                     effect = HbFeedback::Checkbox;
   483                     break;
   495                     break;
   484                 case HbAbstractItemView::MultiSelection: {
   496                 case HbAbstractItemView::MultiSelection: {
   485                     effect = HbFeedback::None;
   497                     effect = HbFeedback::None;
   486                     break;
   498                     break;
   487                 }
   499                 }
   501 
   513 
   502                     break;
   514                     break;
   503                 }
   515                 }
   504             }
   516             }
   505 
   517 
   506             // radio button list works like a normal list item
   518             // radio button list has checkbox feedback behaviour on release
   507             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
   519             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
   508                 effect = HbFeedback::SensitiveItem;
   520                 effect = HbFeedback::Checkbox;
   509             }
   521             }
   510             else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) {
   522             else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) {
   511                 effect = HbFeedback::SensitiveItem;
   523                 effect = HbFeedback::SensitiveItem;
   512             }
   524             }
   513 
   525 
   598         }
   610         }
   599     }
   611     }
   600     if (widget->type() == Hb::ItemType_VirtualTrackPoint) {
   612     if (widget->type() == Hb::ItemType_VirtualTrackPoint) {
   601         effect = HbFeedback::Editor;
   613         effect = HbFeedback::Editor;
   602     }
   614     }
       
   615 
   603     if (widget->type() == Hb::ItemType_Menu) {
   616     if (widget->type() == Hb::ItemType_Menu) {
   604         effect = HbFeedback::ItemScroll;
   617         effect = HbFeedback::ItemScroll;
   605     }
   618     }
       
   619 
   606     return effect;
   620     return effect;
   607 }
   621 }
   608 
   622 
   609 /*!
   623 /*!
   610     Returns the instant feedback effect on editor highlighting.
   624     Returns the instant feedback effect on editor highlighting.
   660             else {
   674             else {
   661                 effect = HbFeedback::TextSelection;
   675                 effect = HbFeedback::TextSelection;
   662             }
   676             }
   663         }
   677         }
   664     }
   678     }
       
   679     else if (const HbInputVirtualRocker *trackPoint = qobject_cast<const HbInputVirtualRocker *>(widget)) {
       
   680 
       
   681         QGraphicsItem* graphicsItem = trackPoint->mainWindow()->scene()->focusItem();
       
   682 
       
   683         if (graphicsItem->isWidget() && (static_cast<QGraphicsWidget*>(graphicsItem)->inherits("QGraphicsWebView"))) {
       
   684             QVariant v;
       
   685             v = graphicsItem->scene()->inputMethodQuery( Qt::ImCursorPosition );
       
   686             if ( v.isValid() && v.canConvert<int>()) {
       
   687                 int index;
       
   688                 index = v.toInt();
       
   689                 QVariant varSurrText;
       
   690                 varSurrText = graphicsItem->scene()->inputMethodQuery( Qt::ImSurroundingText );
       
   691                 if ( varSurrText.isValid() ) {
       
   692                     QString text = varSurrText.toString();
       
   693                     // Index (current cursor position) can be equal to the
       
   694                     // length of the string (for e.g. when the cursor is at the end)
       
   695                     // So we make sure we bring index within the bounds of the string
       
   696                     if (!text.isEmpty() && index <= text.count()) {
       
   697                         dist = abs(index - previousCursorPosition);
       
   698 
       
   699                         if (previousCursorPosition < index || index == text.count()) {
       
   700                             index--;
       
   701                         }
       
   702                         QChar character = text.at(index);
       
   703                         emptyline = character.category() == QChar::Separator_Paragraph;
       
   704 
       
   705                         if (emptyline) {
       
   706                             effect = HbFeedback::EmptyLineSelection;
       
   707                         }
       
   708                         else if (dist > 1) {
       
   709                             effect = HbFeedback::LineSelection;
       
   710                         }
       
   711                         else if (character.isSpace()) {
       
   712                             effect = HbFeedback::BlankSelection;
       
   713                         }
       
   714                         else {
       
   715                             effect = HbFeedback::TextSelection;
       
   716                         }
       
   717                     }
       
   718                 }
       
   719             }
       
   720         }
       
   721     }
   665     return effect;
   722     return effect;
   666 }
   723 }
   667 
   724 
   668 /*!
   725 /*!
   669     Checks if feedback is allowed for certain types of popup widgets.
   726     Checks if feedback is allowed for certain types of popup widgets.
   670 */
   727 */
   671 bool HbFeedbackEffectUtils::isFeedbackAllowedForPopup(const HbWidget *widget)
   728 bool HbFeedbackEffectUtils::isFeedbackAllowedForPopup(const HbWidget *widget)
   672 {
   729 {
   673     bool feedbackAllowed(false);
   730     bool feedbackAllowed(false);
       
   731     
   674     if (widgetFamily(widget) == HbFeedbackEffectUtils::Popup) {
   732     if (widgetFamily(widget) == HbFeedbackEffectUtils::Popup) {
   675         feedbackAllowed = true;
   733         feedbackAllowed = true;
   676         if (widget->type() == HbPrivate::ItemType_ToolTipLabel
   734         if (widget->type() == HbPrivate::ItemType_ToolTipLabel
   677          || widget->type() == Hb::ItemType_InputCharPreviewPane
   735          || widget->type() == Hb::ItemType_InputCharPreviewPane) {
   678          || widget->type() == Hb::ItemType_InputVkbWidget) {
       
   679             feedbackAllowed = false;
   736             feedbackAllowed = false;
   680         }
   737         }
   681         else if (QString(widget->metaObject()->className()) == "HbSelectionControl") {
   738         else if (QString(widget->metaObject()->className()) == "HbSelectionControl") {
   682             feedbackAllowed = false;
   739             feedbackAllowed = false;
   683         }
   740         }
   684     }
   741     }
   685     else if (QString(widget->metaObject()->className()) == "HbComboDropDown") {
   742     else if (QString(widget->metaObject()->className()) == "HbComboDropDown") {
   686         feedbackAllowed = true;
   743         feedbackAllowed = true;
   687     }
   744     }
       
   745 
   688     return feedbackAllowed;
   746     return feedbackAllowed;
       
   747 }
       
   748 
       
   749 /*!
       
   750     Returns the instant feedback effect for popup open event.
       
   751 */
       
   752 HbFeedback::InstantEffect HbFeedbackEffectUtils::instantOnPopupOpened(const HbWidget *widget) {
       
   753 
       
   754     HbFeedback::InstantEffect effect = HbFeedback::None;
       
   755 
       
   756     if (QString(widget->metaObject()->className()) == "HbDeviceNotificationDialogWidget") {
       
   757         effect = HbFeedback::PopUp;
       
   758     }
       
   759     else {
       
   760         effect = HbFeedback::PopupOpen;
       
   761     }
       
   762     return effect;
       
   763 }
       
   764 
       
   765 /*!
       
   766     Returns the instant feedback effect for popup close event.
       
   767 */
       
   768 HbFeedback::InstantEffect HbFeedbackEffectUtils::instantOnPopupClosed(const HbWidget *widget) {
       
   769 
       
   770     HbFeedback::InstantEffect effect = HbFeedback::None;
       
   771 
       
   772     if (QString(widget->metaObject()->className()) == "HbDeviceNotificationDialogWidget") {
       
   773         effect = HbFeedback::None;
       
   774     }
       
   775     else {
       
   776         effect = HbFeedback::PopupClose;
       
   777     }
       
   778     
       
   779     return effect;
   689 }
   780 }
   690 
   781 
   691 /*!
   782 /*!
   692     Returns the instant feedback effect on key press interaction.
   783     Returns the instant feedback effect on key press interaction.
   693 */
   784 */
   700 /*!
   791 /*!
   701     Returns the instant feedback effect on selection changed events.
   792     Returns the instant feedback effect on selection changed events.
   702 */
   793 */
   703 HbFeedback::InstantEffect HbFeedbackEffectUtils::instantOnSelectionChanged(const HbWidget *widget, Hb::InteractionModifiers modifiers)
   794 HbFeedback::InstantEffect HbFeedbackEffectUtils::instantOnSelectionChanged(const HbWidget *widget, Hb::InteractionModifiers modifiers)
   704 {
   795 {
   705     Q_UNUSED(modifiers);
       
   706     HbFeedback::InstantEffect effect = HbFeedback::None;
   796     HbFeedback::InstantEffect effect = HbFeedback::None;
   707 
   797 
   708     if (const HbAbstractViewItem * viewItem = qobject_cast<const HbAbstractViewItem *>(widget)) {
   798     if (const HbAbstractViewItem * viewItem = qobject_cast<const HbAbstractViewItem *>(widget)) {
   709         const HbAbstractItemView* itemView = viewItem->itemView();
   799         const HbAbstractItemView* itemView = viewItem->itemView();
   710         if (itemView) {
   800         if (itemView) {
   713                     // Single selection is handled with a release
   803                     // Single selection is handled with a release
   714                     effect = HbFeedback::None;
   804                     effect = HbFeedback::None;
   715                     break;
   805                     break;
   716                 }
   806                 }
   717                 case HbAbstractItemView::MultiSelection: {
   807                 case HbAbstractItemView::MultiSelection: {
   718                     effect = HbFeedback::MultipleCheckbox;
   808                     effect = HbFeedback::Checkbox;
   719                     break;
   809                     break;
   720                 }
   810                 }
   721                 default:
   811                 default:
   722                     break;
   812                     break;
   723             }
   813             }
   724 		}
   814 		}
   725 	}
   815 	}
       
   816     else if (const HbAbstractItemView* itemView = qobject_cast<const HbAbstractItemView*>(widget)) {
       
   817         if (itemView->selectionMode() == HbAbstractItemView::MultiSelection && (modifiers & Hb::ModifierScrolling)) {
       
   818             effect = HbFeedback::MultipleCheckbox;
       
   819         }
       
   820     }
   726     return effect;
   821     return effect;
   727 }
   822 }
   728 
   823 
   729 /*!
   824 /*!
   730     Returns the instant continuous feedback effect for a continuous interaction.
   825     Returns the instant continuous feedback effect for a continuous interaction.
   852   Returns the default modalities to be used when playing feedback effect asociated with this \a widget, \a interaction, \a modifiers.
   947   Returns the default modalities to be used when playing feedback effect asociated with this \a widget, \a interaction, \a modifiers.
   853 */
   948 */
   854 HbFeedback::Modalities HbFeedbackEffectUtils::modalities(const HbWidget *widget, Hb::InstantInteraction interaction, Hb::InteractionModifiers modifiers )
   949 HbFeedback::Modalities HbFeedbackEffectUtils::modalities(const HbWidget *widget, Hb::InstantInteraction interaction, Hb::InteractionModifiers modifiers )
   855 {
   950 {
   856     Q_UNUSED(modifiers)
   951     Q_UNUSED(modifiers)
       
   952     Q_UNUSED(widget)
   857 
   953 
   858     HbFeedback::Modalities modalities = 0;
   954     HbFeedback::Modalities modalities = 0;
   859 
   955 
   860     switch( interaction ) {
   956     switch( interaction ) {
   861 
   957 
   867         modalities =  HbFeedback::Tactile;
   963         modalities =  HbFeedback::Tactile;
   868         break;
   964         break;
   869 
   965 
   870     case Hb::InstantClicked:
   966     case Hb::InstantClicked:
   871         modalities = HbFeedback::Tactile;
   967         modalities = HbFeedback::Tactile;
   872         if(widget->type() == Hb::ItemType_CheckBox) {
       
   873             modalities |= HbFeedback::Audio;
       
   874         }
       
   875         break;
   968         break;
   876 
   969 
   877     case Hb::InstantKeyRepeated:
   970     case Hb::InstantKeyRepeated:
   878         modalities = HbFeedback::Tactile | HbFeedback::Audio;
   971         modalities = HbFeedback::Tactile | HbFeedback::Audio;
   879         break;
   972         break;