diff -r 43e37759235e -r 51a74ef9ed63 Symbian3/SDK/Source/GUID-10A03A8E-E967-4F9C-B911-2F06031C6ADC.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/SDK/Source/GUID-10A03A8E-E967-4F9C-B911-2F06031C6ADC.dita Wed Mar 31 11:11:55 2010 +0100 @@ -0,0 +1,86 @@ + + + + + +Using +area registry based feedback +

To use area registry based feedback, you must usually first call MTouchFeedback::Instance (unless +you get a reference to it via another class).

+

It is recommended that you store the returned pointer as a member variable +in those places where it is needed frequently. This is because the pointer +is fetched from thread local storage, which can be somewhat time-consuming.

+

To add feedback areas to the area registry, use the SetFeedbackArea function. +Usually the best place to do this is SizeChanged function, +because that is also the place to update feedback areas in case of a layout +change.

+

You can also use the same SetFeedbackArea function +for updating the feedback area (the API implementation adds the area to the +registry on the first time, and then just does updates on subsequent calls +to this function).

+

If you want to change the feedback area or type without giving all the +parameters again, use the functions ChangeFeedbackArea and ChangeFeedbackType for +the updates.

+

Also notice that you have to be prepared in case your control is moved +with CCoeControl::SetPosition function. For this you need +to override CCoeControl::PositionChanged, and update the +feedback area there the same way as in the SizeChanged function. +Moreover, notice that this is necessary only for those non-window-owning controls, +which produce area registry based feedback.

+

Feedback areas of a specific control will be automatically disabled in +case the control becomes dimmed by CCoeControl::SetDimmed( ETrue ) or +invisible by CCoeControl::MakeVisible( EFalse ). Feedback +will be re-enabled again when control becomes both undimmed and visible. This +functionality is based on using the object provider hierarchy, and thus it +does not work in case the object provider parent has not been set for the +control.

+

If you need to disable a control’s feedback area temporarily (for other +reasons than dimming or visibility), call EnableFeedbackForControl with +second parameter EFalse to disable the feedback. You can +then re-enable feedback by calling EnableFeedbackForControl with +second parameter ETrue. Disabling of control’s feedback also +affects direct feedback if it is generated with the overloaded version, which +takes the control’s pointer as the second parameter.

+

In some special cases it may be necessary to only disable audio- or vibra +feedback for some controls. For this purpose there is a specific overload +of EnableFeedbackForControl function.

+

You must remove your control's feedback areas at the latest when you destroy +the control. To do this, call the function RemoveFeedbackForControl . +This also resets the feedback disabling information for the deleted control. +If needed, you can remove individual feedback areas with the RemoveFeedbackArea function +any time, but you must still call RemoveFeedbackForControl you +destroy the control.

+

The example below illustrates using tactile feedback based on the area +registry.

+
    +
  1. Add the library touchfeedback.lib into +your .mmp file, and then add the following include to your .cpp file:

    #include <touchfeedback.h>
  2. +
  3. Update the area registry +in the SizeChanged function.

    You don’t need +to check if you have already the area added to the registry or not, because +you can use the SetFeedbackArea function anyway. (On the +first time this function adds area to the registry, and on the second it updates +the area.)

    MTouchFeedback* feedback = MTouchFeedback::Instance(); + +if ( feedback ) + { + feedback->SetFeedbackArea( + this, + 0, + Rect(), + ETouchFeedbackBasic, + ETouchEventStylusDown ); + } +

    The second parameter given to the SetFeedbackArea function +is an index number, which is used to distinguish the feedback areas of same +control from each other (in case the control has many feedback areas). You +can choose the index numbers freely. It is recommended that you always use +zero as the index if your control only has one feedback area.

  4. +
+
\ No newline at end of file