36 #include <hblistview.h> |
36 #include <hblistview.h> |
37 #include <hbgridview.h> |
37 #include <hbgridview.h> |
38 #include <hbmainwindow.h> |
38 #include <hbmainwindow.h> |
39 #include <hbabstractedit.h> |
39 #include <hbabstractedit.h> |
40 #include "hbmenucontainer_p.h" |
40 #include "hbmenucontainer_p.h" |
41 #include "hbinputvirtualrocker.h" |
|
42 #include <hbnamespace_p.h> |
41 #include <hbnamespace_p.h> |
|
42 #include <hbglobal_p.h> // remove with HB_DEPRECATED |
43 |
43 |
44 /* |
44 /* |
45 Constructor |
45 Constructor |
46 */ |
46 */ |
47 HbFeedbackEffectEngine::HbFeedbackEffectEngine() : activelyScrollingItemView(0), previousCursorPosition(0) |
47 HbFeedbackEffectEngine::HbFeedbackEffectEngine() : activelyScrollingItemView(0), previousCursorPosition(0) |
103 propertyName = "rotated90DegreesFeedbackEffect"; |
103 propertyName = "rotated90DegreesFeedbackEffect"; |
104 break; |
104 break; |
105 case Hb::InstantSelectionChanged: |
105 case Hb::InstantSelectionChanged: |
106 propertyName = "selectionChangedFeedbackEffect"; |
106 propertyName = "selectionChangedFeedbackEffect"; |
107 break; |
107 break; |
108 case Hb::InstantMultitouchActivated: |
108 case Hb::InstantAdvancedGestureActivated: |
109 propertyName = "multitouchActivatedFeedbackEffect"; |
109 propertyName = "advancedGestureActivatedFeedbackEffect"; |
110 break; |
110 break; |
111 default: |
111 default: |
112 propertyName = "defaultFeedbackEffect"; |
112 propertyName = "defaultFeedbackEffect"; |
113 break; |
113 break; |
114 } |
114 } |
176 propertyName = "rotated90DegreesFeedbackModalities"; |
176 propertyName = "rotated90DegreesFeedbackModalities"; |
177 break; |
177 break; |
178 case Hb::InstantSelectionChanged: |
178 case Hb::InstantSelectionChanged: |
179 propertyName = "selectionChangedFeedbackModalities"; |
179 propertyName = "selectionChangedFeedbackModalities"; |
180 break; |
180 break; |
181 case Hb::InstantMultitouchActivated: |
181 case Hb::InstantAdvancedGestureActivated: |
182 propertyName = "multitouchActivatedFeedbackModalities"; |
182 propertyName = "advancedGestureActivatedFeedbackModalities"; |
183 break; |
183 break; |
184 default: |
184 default: |
185 propertyName = "defaultFeedbackModalities"; |
185 propertyName = "defaultFeedbackModalities"; |
186 break; |
186 break; |
187 } |
187 } |
457 if (const HbAbstractEdit *edit = qobject_cast<const HbAbstractEdit *>(widget)) { |
457 if (const HbAbstractEdit *edit = qobject_cast<const HbAbstractEdit *>(widget)) { |
458 if (edit->cursorPosition() != previousCursorPosition) { |
458 if (edit->cursorPosition() != previousCursorPosition) { |
459 effect = HbFeedbackEffectUtils::instantOnEditorHighlight(edit, previousCursorPosition) ; |
459 effect = HbFeedbackEffectUtils::instantOnEditorHighlight(edit, previousCursorPosition) ; |
460 previousCursorPosition = edit->cursorPosition(); |
460 previousCursorPosition = edit->cursorPosition(); |
461 } |
461 } |
462 } |
|
463 else if (const HbInputVirtualRocker *trackPoint = qobject_cast<const HbInputVirtualRocker *>(widget)) { |
|
464 if (trackPoint && trackPoint->mainWindow() && trackPoint->mainWindow()->scene() && |
|
465 trackPoint->mainWindow()->scene()->focusItem()) { |
|
466 |
|
467 QGraphicsItem* graphicsItem = trackPoint->mainWindow()->scene()->focusItem(); |
|
468 |
|
469 if (graphicsItem->isWidget()) { |
|
470 if (static_cast<QGraphicsWidget*>(graphicsItem)->inherits("HbAbstractEdit")) { |
|
471 if (HbAbstractEdit* edit = static_cast<HbAbstractEdit*>(graphicsItem)) { |
|
472 if (edit->cursorPosition() != previousCursorPosition) { |
|
473 effect = HbFeedbackEffectUtils::instantOnEditorHighlight(edit, previousCursorPosition); |
|
474 previousCursorPosition = edit->cursorPosition(); |
|
475 } |
|
476 } |
|
477 } |
|
478 else if (static_cast<QGraphicsWidget*>(graphicsItem)->inherits("QGraphicsWebView") ) |
|
479 { |
|
480 // This takes care of the case when the track point is used on a QGraphicsWebView (for e.g. cWRT) |
|
481 QVariant v; |
|
482 v = graphicsItem->scene()->inputMethodQuery( Qt::ImCursorPosition ); |
|
483 if ( v.isValid() && v.canConvert<int>()) { |
|
484 int currentCursorPosition = v.toInt(); |
|
485 if (currentCursorPosition != previousCursorPosition) { |
|
486 effect = HbFeedbackEffectUtils::instantOnEditorHighlight(trackPoint, previousCursorPosition); |
|
487 previousCursorPosition = currentCursorPosition; |
|
488 } |
|
489 } |
|
490 } |
|
491 } |
|
492 } |
|
493 } else { |
462 } else { |
494 effect = HbFeedbackEffectUtils::instantOnDrag(widget, modifiers()); |
463 effect = HbFeedbackEffectUtils::instantOnDrag(widget, modifiers()); |
495 } |
464 } |
496 } |
465 } |
497 |
466 |
637 /* |
606 /* |
638 Called by the feedback manager when a touch gesture with more than one finger is detected. |
607 Called by the feedback manager when a touch gesture with more than one finger is detected. |
639 */ |
608 */ |
640 void HbFeedbackEffectEngine::multitouchActivated(const HbWidget *widget) |
609 void HbFeedbackEffectEngine::multitouchActivated(const HbWidget *widget) |
641 { |
610 { |
|
611 HB_DEPRECATED("HbFeedbackEffectEngine::multitouchActivated(const HbWidget*) is deprecated. Use HbFeedbackEffectEngine::advancedGestureActivated(const HbWidget*) instead"); |
|
612 advancedGestureActivated(widget); |
|
613 } |
|
614 |
|
615 /* |
|
616 Called by the feedback manager when a touch gesture with more than one finger is detected. |
|
617 */ |
|
618 void HbFeedbackEffectEngine::advancedGestureActivated(const HbWidget *widget) |
|
619 { |
642 HbFeedback::InstantEffect effect = HbFeedback::None ; |
620 HbFeedback::InstantEffect effect = HbFeedback::None ; |
643 HbFeedback::Modalities modalities = 0 ; |
621 HbFeedback::Modalities modalities = 0 ; |
644 Hb::InstantInteraction interaction = Hb::InstantMultitouchActivated; |
622 Hb::InstantInteraction interaction = Hb::InstantAdvancedGestureActivated; |
645 |
623 |
646 if(widgetOverridesEffect( widget, interaction)) { |
624 if(widgetOverridesEffect( widget, interaction)) { |
647 effect = overrider.newInstantEffect; |
625 effect = overrider.newInstantEffect; |
648 } else { |
626 } else { |
649 effect = HbFeedback::MultitouchActivate; |
627 effect = HbFeedback::AdvancedGestureActivate; |
650 } |
628 } |
651 |
629 |
652 if(widgetOverridesModalities(widget,interaction)) { |
630 if(widgetOverridesModalities(widget,interaction)) { |
653 modalities = overrider.newModalities ; |
631 modalities = overrider.newModalities ; |
654 } else { |
632 } else { |