src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectutils.cpp
changeset 21 4633027730f5
parent 7 923ff622b8b9
child 23 e6ad4ef83b23
--- a/src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectutils.cpp	Tue Jul 06 14:36:53 2010 +0300
+++ b/src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectutils.cpp	Wed Aug 18 10:05:37 2010 +0300
@@ -64,11 +64,11 @@
 */
 int HbFeedbackEffectUtils::parentItemType(const HbWidget *widget)
 {
-    int graphicsItemType = 0;
-    if (const HbWidget *parent = dynamic_cast<const HbWidget *>(widget->parentItem())) {
-        graphicsItemType = parent->type();
-    }
-    return graphicsItemType;
+    QGraphicsItem *parent = widget->parentItem();
+    if(parent)
+        return parent->type();
+    else
+        return 0;
 }
 
 /*!
@@ -268,6 +268,11 @@
                     effect = HbFeedback::None;
                 }
             }
+
+            if (widget->type() == Hb::ItemType_ComboBox) {
+                effect = HbFeedback::BasicButton;
+            }
+
             break;
 
         case HbFeedbackEffectUtils::List:
@@ -277,13 +282,10 @@
             else {
                 effect = HbFeedback::BasicItem;
             }
-            if (widget->type() == Hb::ItemType_DataFormViewItem) {
-                effect = HbFeedback::SensitiveItem;
-            }
-            else if (widget->type() == HbPrivate::ItemType_DataGroup) {
+            if (widget->type() == Hb::ItemType_DataFormViewItem ||
+                widget->type() == HbPrivate::ItemType_DataGroup) {
                 effect = HbFeedback::None;
             }
-
             break;
         
         case HbFeedbackEffectUtils::Grid:
@@ -326,7 +328,14 @@
             break;
 
         case HbFeedbackEffectUtils::Editor:
-            effect = HbFeedback::Editor;
+            if (const HbAbstractEdit* editor = qobject_cast<const HbAbstractEdit *>(widget)) {
+                if(editor->isReadOnly() && (Hb::TextCursorHidden == editor->cursorVisibility())) {
+                    // cannot edit nor select
+                    effect = HbFeedback::None;
+                } else {
+                    effect = HbFeedback::Editor;
+                }
+            }
             break;
 
         default:
@@ -360,7 +369,8 @@
             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
                 effect = HbFeedback::BasicItem;
             }
-            else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) {
+            else if(viewItem->type() == Hb::ItemType_DatePickerViewItem ||
+                    viewItem->type() == Hb::ItemType_TumbleViewItem) {
                 effect = HbFeedback::BasicItem;
             }
 
@@ -373,6 +383,10 @@
                     effect = HbFeedback::BasicItem;
                 }
             }
+            // Combo box drop down list
+            if (QString(widget->metaObject()->className()) == "HbComboListViewItem") {
+                effect = HbFeedback::BasicItem;
+            }
         }
     }
 
@@ -468,6 +482,7 @@
             else if (widget->type() == Hb::ItemType_DataFormViewItem) {
                 effect = HbFeedback::None;
             }
+
             break;
 
         case HbFeedbackEffectUtils::Grid:
@@ -532,7 +547,8 @@
             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
                 effect = HbFeedback::Checkbox;
             }
-            else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) {
+            else if(viewItem->type() == Hb::ItemType_DatePickerViewItem ||
+                    viewItem->type() == Hb::ItemType_TumbleViewItem) {
                 effect = HbFeedback::BasicItem;
             }
             else if (widget->type() == Hb::ItemType_NotificationDialog) {
@@ -542,6 +558,11 @@
             if (modifiers & Hb::ModifierExpandedItem || modifiers & Hb::ModifierCollapsedItem) {
                 effect = HbFeedback::BasicItem;
             }
+
+            // Combo box drop down list
+            if (QString(widget->metaObject()->className()) == "HbComboListViewItem") {
+                effect = HbFeedback::BasicItem;
+            }
         }
     }
 
@@ -567,7 +588,7 @@
 
             // input widget special case
             if (widget->type() == Hb::ItemType_InputButtonGroup && modifiers & Hb::ModifierInputFunctionButton) {
-                effect = HbFeedback::BasicKeypad;
+                effect = HbFeedback::SensitiveKeypad;
             }
             else if (widget->type() == Hb::ItemType_InputButtonGroup) {
                 effect = HbFeedback::SensitiveKeypad;