src/hbplugins/feedback/feedbackeffectplugin/hbfeedbackeffectengine.cpp
changeset 23 e6ad4ef83b23
parent 21 4633027730f5
child 28 b7da29130b0e
equal deleted inserted replaced
21:4633027730f5 23:e6ad4ef83b23
    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  {