src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectutils.cpp
changeset 34 ed14f46c0e55
parent 7 923ff622b8b9
--- a/src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectutils.cpp	Mon Oct 04 17:49:30 2010 +0300
+++ b/src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectutils.cpp	Mon Oct 18 18:23:13 2010 +0300
@@ -31,7 +31,6 @@
 #include <hbabstractedit.h>
 #include <hbtextedit.h>
 #include <hblineedit.h>
-#include <hbinputvirtualrocker.h>
 #include <hbabstractslidercontrol.h>
 #include <hbprogressslider.h>
 #include <hbscrollbar.h>
@@ -64,11 +63,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;
 }
 
 /*!
@@ -105,7 +104,7 @@
         case Hb::ItemType_MenuItem:
        
         case Hb::ItemType_AbstractItemView:
-              	
+                
         case Hb::ItemType_ListView:
 
         case Hb::ItemType_ListViewItem:
@@ -268,6 +267,11 @@
                     effect = HbFeedback::None;
                 }
             }
+
+            if (widget->type() == Hb::ItemType_ComboBox) {
+                effect = HbFeedback::BasicButton;
+            }
+
             break;
 
         case HbFeedbackEffectUtils::List:
@@ -277,13 +281,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 +327,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:
@@ -341,7 +349,7 @@
             switch (itemView->selectionMode()) {
                 case HbAbstractItemView::SingleSelection:
                 case HbAbstractItemView::MultiSelection: {
-                    effect = HbFeedback::BasicButton;
+                    effect = HbFeedback::BasicItem;
                     break;
                 }
                 case HbAbstractItemView::NoSelection:
@@ -360,8 +368,9 @@
             if (viewItem->type() == Hb::ItemType_RadioButtonListViewItem) {
                 effect = HbFeedback::BasicItem;
             }
-            else if(viewItem->type() == Hb::ItemType_TumbleViewItem ) {
-                effect = HbFeedback::BasicItem;
+            else if(viewItem->type() == Hb::ItemType_DatePickerViewItem ||
+                    viewItem->type() == Hb::ItemType_TumbleViewItem) {
+                effect = HbFeedback::None;
             }
 
             // expandable or collapsable items give a BasicItem feedback
@@ -373,6 +382,10 @@
                     effect = HbFeedback::BasicItem;
                 }
             }
+            // Combo box drop down list
+            if (QString(widget->metaObject()->className()) == "HbComboListViewItem") {
+                effect = HbFeedback::BasicItem;
+            }
         }
     }
 
@@ -468,17 +481,26 @@
             else if (widget->type() == Hb::ItemType_DataFormViewItem) {
                 effect = HbFeedback::None;
             }
+
             break;
 
         case HbFeedbackEffectUtils::Grid:
-            effect = HbFeedback::BasicItem;
+            if (widget->type() == HbPrivate::ItemType_ColorGridViewItem) {
+                effect = HbFeedback::None;
+            }
+            else {
+                effect = HbFeedback::BasicItem;
+            }
             break;
  
-         case HbFeedbackEffectUtils::Slider:
+        case HbFeedbackEffectUtils::Slider:
 
-            // slider track default
-             effect = HbFeedback::BasicSlider;
-
+            if (widget->type() == Hb::ItemType_ScrollBar) {
+                effect = HbFeedback::None;
+            }
+            else {  // slider track default
+                effect = HbFeedback::BasicSlider;
+            }
             // slider handle
             if (modifiers & Hb::ModifierSliderHandle) {
                 effect = HbFeedback::BasicSlider;
@@ -488,6 +510,7 @@
             if (modifiers & Hb::ModifierSliderElement) {
                 effect = HbFeedback::None;
             }
+
             break;
 
         case HbFeedbackEffectUtils::Editor:
@@ -532,7 +555,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 +566,11 @@
             if (modifiers & Hb::ModifierExpandedItem || modifiers & Hb::ModifierCollapsedItem) {
                 effect = HbFeedback::BasicItem;
             }
+
+            // Combo box drop down list
+            if (QString(widget->metaObject()->className()) == "HbComboListViewItem") {
+                effect = HbFeedback::None;
+            }
         }
     }
 
@@ -567,7 +596,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;
@@ -691,49 +720,7 @@
             }
         }
     }
-    else if (const HbInputVirtualRocker *trackPoint = qobject_cast<const HbInputVirtualRocker *>(widget)) {
 
-        QGraphicsItem* graphicsItem = trackPoint->mainWindow()->scene()->focusItem();
-
-        if (graphicsItem->isWidget() && (static_cast<QGraphicsWidget*>(graphicsItem)->inherits("QGraphicsWebView"))) {
-            QVariant v;
-            v = graphicsItem->scene()->inputMethodQuery( Qt::ImCursorPosition );
-            if ( v.isValid() && v.canConvert<int>()) {
-                int index;
-                index = v.toInt();
-                QVariant varSurrText;
-                varSurrText = graphicsItem->scene()->inputMethodQuery( Qt::ImSurroundingText );
-                if ( varSurrText.isValid() ) {
-                    QString text = varSurrText.toString();
-                    // Index (current cursor position) can be equal to the
-                    // length of the string (for e.g. when the cursor is at the end)
-                    // So we make sure we bring index within the bounds of the string
-                    if (!text.isEmpty() && index <= text.count()) {
-                        dist = abs(index - previousCursorPosition);
-
-                        if (previousCursorPosition < index || index == text.count()) {
-                            index--;
-                        }
-                        QChar character = text.at(index);
-                        emptyline = character.category() == QChar::Separator_Paragraph;
-
-                        if (emptyline) {
-                            effect = HbFeedback::EmptyLineSelection;
-                        }
-                        else if (dist > 1) {
-                            effect = HbFeedback::LineSelection;
-                        }
-                        else if (character.isSpace()) {
-                            effect = HbFeedback::BlankSelection;
-                        }
-                        else {
-                            effect = HbFeedback::TextSelection;
-                        }
-                    }
-                }
-            }
-        }
-    }
     return effect;
 }
 
@@ -820,19 +807,20 @@
                     break;
                 }
                 case HbAbstractItemView::MultiSelection: {
-                    effect = HbFeedback::Checkbox;
+                    if (modifiers & Hb::ModifierScrolling) {
+                        effect = HbFeedback::MultipleCheckbox;
+                    }
+                    else {
+                        effect = HbFeedback::Checkbox;
+                    }
                     break;
                 }
                 default:
                     break;
             }
-		}
-	}
-    else if (const HbAbstractItemView* itemView = qobject_cast<const HbAbstractItemView*>(widget)) {
-        if (itemView->selectionMode() == HbAbstractItemView::MultiSelection && (modifiers & Hb::ModifierScrolling)) {
-            effect = HbFeedback::MultipleCheckbox;
         }
     }
+
     return effect;
 }
 
@@ -1017,7 +1005,7 @@
         modalities =  HbFeedback::Tactile;
         break;
 
-    case Hb::InstantMultitouchActivated:
+    case Hb::InstantAdvancedGestureActivated:
         modalities = HbFeedback::Tactile | HbFeedback::Audio;
         break;