diff -r 7516d6d86cf5 -r ed14f46c0e55 src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectutils.cpp --- 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 #include #include -#include #include #include #include @@ -64,11 +63,11 @@ */ int HbFeedbackEffectUtils::parentItemType(const HbWidget *widget) { - int graphicsItemType = 0; - if (const HbWidget *parent = dynamic_cast(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(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(widget)) { - QGraphicsItem* graphicsItem = trackPoint->mainWindow()->scene()->focusItem(); - - if (graphicsItem->isWidget() && (static_cast(graphicsItem)->inherits("QGraphicsWebView"))) { - QVariant v; - v = graphicsItem->scene()->inputMethodQuery( Qt::ImCursorPosition ); - if ( v.isValid() && v.canConvert()) { - 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(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;