src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectutils.cpp
changeset 21 4633027730f5
parent 7 923ff622b8b9
child 23 e6ad4ef83b23
equal deleted inserted replaced
7:923ff622b8b9 21:4633027730f5
    62 /*!
    62 /*!
    63     Finds out the graphics item type of the parent widget.
    63     Finds out the graphics item type of the parent widget.
    64 */
    64 */
    65 int HbFeedbackEffectUtils::parentItemType(const HbWidget *widget)
    65 int HbFeedbackEffectUtils::parentItemType(const HbWidget *widget)
    66 {
    66 {
    67     int graphicsItemType = 0;
    67     QGraphicsItem *parent = widget->parentItem();
    68     if (const HbWidget *parent = dynamic_cast<const HbWidget *>(widget->parentItem())) {
    68     if(parent)
    69         graphicsItemType = parent->type();
    69         return parent->type();
    70     }
    70     else
    71     return graphicsItemType;
    71         return 0;
    72 }
    72 }
    73 
    73 
    74 /*!
    74 /*!
    75     Returns the widget family for a widget.
    75     Returns the widget family for a widget.
    76 */
    76 */
   266             if (widget->type() == HbPrivate::ItemType_TitlePane) {
   266             if (widget->type() == HbPrivate::ItemType_TitlePane) {
   267                 if (isOptionsMenuEmpty(widget)) {
   267                 if (isOptionsMenuEmpty(widget)) {
   268                     effect = HbFeedback::None;
   268                     effect = HbFeedback::None;
   269                 }
   269                 }
   270             }
   270             }
       
   271 
       
   272             if (widget->type() == Hb::ItemType_ComboBox) {
       
   273                 effect = HbFeedback::BasicButton;
       
   274             }
       
   275 
   271             break;
   276             break;
   272 
   277 
   273         case HbFeedbackEffectUtils::List:
   278         case HbFeedbackEffectUtils::List:
   274             if (modifiers & (Hb::ModifierExpandedItem | Hb::ModifierCollapsedItem)) {
   279             if (modifiers & (Hb::ModifierExpandedItem | Hb::ModifierCollapsedItem)) {
   275                 effect = HbFeedback::BasicItem;
   280                 effect = HbFeedback::BasicItem;
   276             }
   281             }
   277             else {
   282             else {
   278                 effect = HbFeedback::BasicItem;
   283                 effect = HbFeedback::BasicItem;
   279             }
   284             }
   280             if (widget->type() == Hb::ItemType_DataFormViewItem) {
   285             if (widget->type() == Hb::ItemType_DataFormViewItem ||
   281                 effect = HbFeedback::SensitiveItem;
   286                 widget->type() == HbPrivate::ItemType_DataGroup) {
   282             }
       
   283             else if (widget->type() == HbPrivate::ItemType_DataGroup) {
       
   284                 effect = HbFeedback::None;
   287                 effect = HbFeedback::None;
   285             }
   288             }
   286 
       
   287             break;
   289             break;
   288         
   290         
   289         case HbFeedbackEffectUtils::Grid:
   291         case HbFeedbackEffectUtils::Grid:
   290             effect = HbFeedback::BasicItem;
   292             effect = HbFeedback::BasicItem;
   291             break;
   293             break;
   324                 effect = HbFeedback::None;
   326                 effect = HbFeedback::None;
   325             }
   327             }
   326             break;
   328             break;
   327 
   329 
   328         case HbFeedbackEffectUtils::Editor:
   330         case HbFeedbackEffectUtils::Editor:
   329             effect = HbFeedback::Editor;
   331             if (const HbAbstractEdit* editor = qobject_cast<const HbAbstractEdit *>(widget)) {
       
   332                 if(editor->isReadOnly() && (Hb::TextCursorHidden == editor->cursorVisibility())) {
       
   333                     // cannot edit nor select
       
   334                     effect = HbFeedback::None;
       
   335                 } else {
       
   336                     effect = HbFeedback::Editor;
       
   337                 }
       
   338             }
   330             break;
   339             break;
   331 
   340 
   332         default:
   341         default:
   333             break;
   342             break;
   334     }
   343     }
   358 
   367 
   359             // radio button list behaves like an item view on press
   368             // radio button list behaves like an item view on press
   360             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
   369             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
   361                 effect = HbFeedback::BasicItem;
   370                 effect = HbFeedback::BasicItem;
   362             }
   371             }
   363             else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) {
   372             else if(viewItem->type() == Hb::ItemType_DatePickerViewItem ||
       
   373                     viewItem->type() == Hb::ItemType_TumbleViewItem) {
   364                 effect = HbFeedback::BasicItem;
   374                 effect = HbFeedback::BasicItem;
   365             }
   375             }
   366 
   376 
   367             // expandable or collapsable items give a BasicItem feedback
   377             // expandable or collapsable items give a BasicItem feedback
   368             if (const HbTreeViewItem* treeItem = qobject_cast<const HbTreeViewItem *>(widget)) {
   378             if (const HbTreeViewItem* treeItem = qobject_cast<const HbTreeViewItem *>(widget)) {
   370                     effect = HbFeedback::BasicItem;
   380                     effect = HbFeedback::BasicItem;
   371                 }
   381                 }
   372                 else {
   382                 else {
   373                     effect = HbFeedback::BasicItem;
   383                     effect = HbFeedback::BasicItem;
   374                 }
   384                 }
       
   385             }
       
   386             // Combo box drop down list
       
   387             if (QString(widget->metaObject()->className()) == "HbComboListViewItem") {
       
   388                 effect = HbFeedback::BasicItem;
   375             }
   389             }
   376         }
   390         }
   377     }
   391     }
   378 
   392 
   379     if (widget->type() == Hb::ItemType_VirtualTrackPoint || QString(widget->metaObject()->className()) == "HbSelectionControl") {
   393     if (widget->type() == Hb::ItemType_VirtualTrackPoint || QString(widget->metaObject()->className()) == "HbSelectionControl") {
   466                 effect = HbFeedback::None;
   480                 effect = HbFeedback::None;
   467             }
   481             }
   468             else if (widget->type() == Hb::ItemType_DataFormViewItem) {
   482             else if (widget->type() == Hb::ItemType_DataFormViewItem) {
   469                 effect = HbFeedback::None;
   483                 effect = HbFeedback::None;
   470             }
   484             }
       
   485 
   471             break;
   486             break;
   472 
   487 
   473         case HbFeedbackEffectUtils::Grid:
   488         case HbFeedbackEffectUtils::Grid:
   474             effect = HbFeedback::BasicItem;
   489             effect = HbFeedback::BasicItem;
   475             break;
   490             break;
   530 
   545 
   531             // radio button list has checkbox feedback behaviour on release
   546             // radio button list has checkbox feedback behaviour on release
   532             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
   547             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
   533                 effect = HbFeedback::Checkbox;
   548                 effect = HbFeedback::Checkbox;
   534             }
   549             }
   535             else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) {
   550             else if(viewItem->type() == Hb::ItemType_DatePickerViewItem ||
       
   551                     viewItem->type() == Hb::ItemType_TumbleViewItem) {
   536                 effect = HbFeedback::BasicItem;
   552                 effect = HbFeedback::BasicItem;
   537             }
   553             }
   538             else if (widget->type() == Hb::ItemType_NotificationDialog) {
   554             else if (widget->type() == Hb::ItemType_NotificationDialog) {
   539                 effect = HbFeedback::BasicItem;
   555                 effect = HbFeedback::BasicItem;
   540             }
   556             }
   541 
   557 
   542             if (modifiers & Hb::ModifierExpandedItem || modifiers & Hb::ModifierCollapsedItem) {
   558             if (modifiers & Hb::ModifierExpandedItem || modifiers & Hb::ModifierCollapsedItem) {
   543                 effect = HbFeedback::BasicItem;
   559                 effect = HbFeedback::BasicItem;
   544             }
   560             }
       
   561 
       
   562             // Combo box drop down list
       
   563             if (QString(widget->metaObject()->className()) == "HbComboListViewItem") {
       
   564                 effect = HbFeedback::BasicItem;
       
   565             }
   545         }
   566         }
   546     }
   567     }
   547 
   568 
   548     return effect;
   569     return effect;
   549 }
   570 }
   565         case HbFeedbackEffectUtils::Button:
   586         case HbFeedbackEffectUtils::Button:
   566             effect = HbFeedback::SensitiveButton;
   587             effect = HbFeedback::SensitiveButton;
   567 
   588 
   568             // input widget special case
   589             // input widget special case
   569             if (widget->type() == Hb::ItemType_InputButtonGroup && modifiers & Hb::ModifierInputFunctionButton) {
   590             if (widget->type() == Hb::ItemType_InputButtonGroup && modifiers & Hb::ModifierInputFunctionButton) {
   570                 effect = HbFeedback::BasicKeypad;
   591                 effect = HbFeedback::SensitiveKeypad;
   571             }
   592             }
   572             else if (widget->type() == Hb::ItemType_InputButtonGroup) {
   593             else if (widget->type() == Hb::ItemType_InputButtonGroup) {
   573                 effect = HbFeedback::SensitiveKeypad;
   594                 effect = HbFeedback::SensitiveKeypad;
   574             }
   595             }
   575 
   596