# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1276253833 -10800 # Node ID 4838b44af342128cf590beedd04d897a7f73e192 # Parent 8e4f1d64385257b0718ef0d45b60057a086bae0c Revision: 201021 Kit: 2010123 diff -r 8e4f1d643852 -r 4838b44af342 hapticsservices_pub/tactile_feedback_client_api/inc/touchlogicalfeedback.h --- a/hapticsservices_pub/tactile_feedback_client_api/inc/touchlogicalfeedback.h Mon May 03 12:47:28 2010 +0300 +++ b/hapticsservices_pub/tactile_feedback_client_api/inc/touchlogicalfeedback.h Fri Jun 11 13:57:13 2010 +0300 @@ -97,7 +97,11 @@ ETouchFeedbackRotateStep, ETouchFeedbackSensitiveSlider, ETouchFeedbackStopFlick, - ETouchFeedbackLongPress + ETouchFeedbackLongTap, + ETouchFeedbackSubMenuOpen, + ETouchFeedbackSubMenuClosed, + ETouchFeedbackOptionsMenuOpen, + ETouchFeedbackOptionsMenuClosed }; /** @@ -110,7 +114,8 @@ ETouchContinuousSlider, ETouchContinuousInput, ETouchContinuousPopup, - ETouchContinuousPinch + ETouchContinuousPinch, + ETouchDynamicSlider }; /** diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilearearegistry/src/tactilearearegistry.cpp --- a/tactilefeedback/tactilearearegistry/src/tactilearearegistry.cpp Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilearearegistry/src/tactilearearegistry.cpp Fri Jun 11 13:57:13 2010 +0300 @@ -158,6 +158,8 @@ const TTactileFeedbackDisconnectData& aData ) { // #1 + iTactileSemaphore.Wait(); + for ( TInt i=0; i < iChunkArray.Count(); i++ ) { if ( iChunkArray[i].iWindowGroupId == aData.iWindowGroupId ) @@ -170,6 +172,8 @@ break; } } + + iTactileSemaphore.Signal(); } diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackclient/cenrep/2000B494.txt Binary file tactilefeedback/tactilefeedbackclient/cenrep/2000B494.txt has changed diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackclient/conf/tactilefeedback.confml Binary file tactilefeedback/tactilefeedbackclient/conf/tactilefeedback.confml has changed diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackclient/conf/tactilefeedback_2000B494.crml Binary file tactilefeedback/tactilefeedbackclient/conf/tactilefeedback_2000B494.crml has changed diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackclient/src/touchfeedbackimpl.cpp --- a/tactilefeedback/tactilefeedbackclient/src/touchfeedbackimpl.cpp Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackclient/src/touchfeedbackimpl.cpp Fri Jun 11 13:57:13 2010 +0300 @@ -1732,7 +1732,7 @@ // range check. update when logical feedback types are changed. if (! ( aFeedback >= ETouchFeedbackNone || aFeedback <= ETouchFeedbackSensitive) || ! ( aFeedback >= ETouchFeedbackBasicButton || - aFeedback <= ETouchFeedbackLongPress ) ) + aFeedback <= ETouchFeedbackOptionsMenuClosed ) ) { return KErrArgument; } diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel1_A.ivt Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel1_A.ivt has changed diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel2_A.ivt Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel2_A.ivt has changed diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel3_A.ivt Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel3_A.ivt has changed diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel4_A.ivt Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel4_A.ivt has changed diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel5_A.ivt Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel5_A.ivt has changed diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/data/tactilefeedbackeffects.ivt Binary file tactilefeedback/tactilefeedbackresolver/data/tactilefeedbackeffects.ivt has changed diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/group/bld.inf --- a/tactilefeedback/tactilefeedbackresolver/group/bld.inf Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/group/bld.inf Fri Jun 11 13:57:13 2010 +0300 @@ -24,8 +24,17 @@ DEFAULT PRJ_EXPORTS -../data/tactilefeedbackeffects.ivt /epoc32/data/z/private/10003B20/TactileFeedbackEffects.ivt -../data/tactilefeedbackeffects.ivt /epoc32/release/winscw/udeb/Z/private/10003B20/TactileFeedbackEffects.ivt +// Tactile feedback effects files +../data/10.1_TactileFeedbackLevel1_A.ivt /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel1_A.ivt +../data/10.1_TactileFeedbackLevel1_A.ivt /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel1_A.ivt +../data/10.1_TactileFeedbackLevel2_A.ivt /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel2_A.ivt +../data/10.1_TactileFeedbackLevel2_A.ivt /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel2_A.ivt +../data/10.1_TactileFeedbackLevel3_A.ivt /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel3_A.ivt +../data/10.1_TactileFeedbackLevel3_A.ivt /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel3_A.ivt +../data/10.1_TactileFeedbackLevel4_A.ivt /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel4_A.ivt +../data/10.1_TactileFeedbackLevel4_A.ivt /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel4_A.ivt +../data/10.1_TactileFeedbackLevel5_A.ivt /epoc32/data/z/private/10003B20/10.1_TactileFeedbackLevel5_A.ivt +../data/10.1_TactileFeedbackLevel5_A.ivt /epoc32/release/winscw/udeb/Z/private/10003B20/10.1_TactileFeedbackLevel5_A.ivt // IBY file ../rom/tactilefeedbackresolver.iby CORE_IBY_EXPORT_PATH(mw, tactilefeedbackresolver.iby) diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackdomaincrkeys.h --- a/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackdomaincrkeys.h Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackdomaincrkeys.h Fri Jun 11 13:57:13 2010 +0300 @@ -58,9 +58,13 @@ * Possible values are: * Valid path to IVT file. * -* Default value: "z:\\private\\10003B20\\tactilefeedbackeffects.ivt" +* Default value: "z:\\private\\10003B20\\10.1_TactileFeedbackLevel*_A.ivt" **/ -const TUint32 KTactileHapticsIVTFile = 0x00000015; +const TUint32 KTactileHapticsLevel1IVTFile = 0x00000015; +const TUint32 KTactileHapticsLevel2IVTFile = 0x00000016; +const TUint32 KTactileHapticsLevel3IVTFile = 0x00000017; +const TUint32 KTactileHapticsLevel4IVTFile = 0x00000018; +const TUint32 KTactileHapticsLevel5IVTFile = 0x00000019; /** * Number of steps used to adjust vibra feedback strength @@ -70,7 +74,7 @@ * * Default value: 10 **/ -const TUint32 KTactileFeedbackVibraLevels = 0x00000016; +const TUint32 KTactileFeedbackVibraLevels = 0x0000001a; /** * Number of steps used to adjust audio feedback volume @@ -80,7 +84,7 @@ * * Default value: 3 **/ -const TUint32 KTactileFeedbackAudioLevels = 0x00000017; +const TUint32 KTactileFeedbackAudioLevels = 0x0000001b; #endif // TACTILEFEEDBACKDOMAINCRKEYS_H diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackprivatecrkeys.h --- a/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackprivatecrkeys.h Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackprivatecrkeys.h Fri Jun 11 13:57:13 2010 +0300 @@ -90,6 +90,30 @@ const TUint32 KTactileVibraIntensityBasicLevel3 = 0x00000022; /** +* Vibra intensity setting for logical feedback type ETouchFeedbackBasic +* and vibra effect level ETactileFeedbackVibraLevel4. +* +* Possible values are: +* Integers from 0 to 100. See HWRMVibra.h for more information. +* Zero intensity will disable this logical feedback type. +* +* Default value: 60 +**/ +const TUint32 KTactileVibraIntensityBasicLevel4 = 0x00000023; + +/** +* Vibra intensity setting for logical feedback type ETouchFeedbackBasic +* and vibra effect level ETactileFeedbackVibraLevel5. +* +* Possible values are: +* Integers from 0 to 100. See HWRMVibra.h for more information. +* Zero intensity will disable this logical feedback type. +* +* Default value: 80 +**/ +const TUint32 KTactileVibraIntensityBasicLevel5 = 0x00000024; + +/** * Vibra duration setting for logical feedback type ETouchFeedbackBasic * and vibra effect level ETactileFeedbackVibraLevel1. * @@ -101,7 +125,7 @@ * * Default value: 15 **/ -const TUint32 KTactileVibraDurationBasicLevel1 = 0x00000023; +const TUint32 KTactileVibraDurationBasicLevel1 = 0x00000025; /** * Vibra duration setting for logical feedback type ETouchFeedbackBasic @@ -115,7 +139,7 @@ * * Default value: 20 **/ -const TUint32 KTactileVibraDurationBasicLevel2 = 0x00000024; +const TUint32 KTactileVibraDurationBasicLevel2 = 0x00000026; /** * Vibra duration setting for logical feedback type ETouchFeedbackBasic @@ -129,7 +153,35 @@ * * Default value: 30 **/ -const TUint32 KTactileVibraDurationBasicLevel3 = 0x00000025; +const TUint32 KTactileVibraDurationBasicLevel3 = 0x00000027; + +/** +* Vibra duration setting for logical feedback type ETouchFeedbackBasic +* and vibra effect level ETactileFeedbackVibraLevel4. +* +* Duration is given in milliseconds, and zero value will disable this +* logical feedback type. +* +* Possible values are: +* Integer values from zero upwards. +* +* Default value: 40 +**/ +const TUint32 KTactileVibraDurationBasicLevel4 = 0x00000028; + +/** +* Vibra duration setting for logical feedback type ETouchFeedbackBasic +* and vibra effect level ETactileFeedbackVibraLevel5. +* +* Duration is given in milliseconds, and zero value will disable this +* logical feedback type. +* +* Possible values are: +* Integer values from zero upwards. +* +* Default value: 50 +**/ +const TUint32 KTactileVibraDurationBasicLevel5 = 0x00000029; /** @@ -142,7 +194,7 @@ * * Default value: 50 **/ -const TUint32 KTactileVibraIntensitySensitiveLevel1 = 0x00000026; +const TUint32 KTactileVibraIntensitySensitiveLevel1 = 0x0000002a; /** * Vibra intensity setting for logical feedback type ETouchFeedbackSensitive @@ -154,7 +206,7 @@ * * Default value: 100 **/ -const TUint32 KTactileVibraIntensitySensitiveLevel2 = 0x00000027; +const TUint32 KTactileVibraIntensitySensitiveLevel2 = 0x0000002b; /** * Vibra intensity setting for logical feedback type ETouchFeedbackSensitive @@ -166,7 +218,31 @@ * * Default value: 10 **/ -const TUint32 KTactileVibraIntensitySensitiveLevel3 = 0x00000028; +const TUint32 KTactileVibraIntensitySensitiveLevel3 = 0x0000002c; + +/** +* Vibra intensity setting for logical feedback type ETouchFeedbackSensitive +* and vibra effect level ETactileFeedbackVibraLevel4. +* +* Possible values are: +* Integers from 0 to 100. See HWRMVibra.h for more information. +* Zero intensity will disable this logical feedback type. +* +* Default value: 10 +**/ +const TUint32 KTactileVibraIntensitySensitiveLevel4 = 0x0000002d; + +/** +* Vibra intensity setting for logical feedback type ETouchFeedbackSensitive +* and vibra effect level ETactileFeedbackVibraLevel5. +* +* Possible values are: +* Integers from 0 to 100. See HWRMVibra.h for more information. +* Zero intensity will disable this logical feedback type. +* +* Default value: 10 +**/ +const TUint32 KTactileVibraIntensitySensitiveLevel5 = 0x0000002e; /** @@ -181,7 +257,7 @@ * * Default value: 5 **/ -const TUint32 KTactileVibraDurationSensitiveLevel1 = 0x00000029; +const TUint32 KTactileVibraDurationSensitiveLevel1 = 0x0000002f; /** * Vibra duration setting for logical feedback type ETouchFeedbackSensitive @@ -195,7 +271,7 @@ * * Default value: 10 **/ -const TUint32 KTactileVibraDurationSensitiveLevel2 = 0x0000002a; +const TUint32 KTactileVibraDurationSensitiveLevel2 = 0x00000030; /** * Vibra duration setting for logical feedback type ETouchFeedbackSensitive @@ -209,7 +285,35 @@ * * Default value: 15 **/ -const TUint32 KTactileVibraDurationSensitiveLevel3 = 0x0000002b; +const TUint32 KTactileVibraDurationSensitiveLevel3 = 0x00000031; + +/** +* Vibra duration setting for logical feedback type ETouchFeedbackSensitive +* and vibra effect level ETactileFeedbackVibraLevel4. +* +* Duration is given in milliseconds, and zero value will disable this +* logical feedback type. +* +* Possible values are: +* Integer values from zero upwards. +* +* Default value: 20 +**/ +const TUint32 KTactileVibraDurationSensitiveLevel4 = 0x00000032; + +/** +* Vibra duration setting for logical feedback type ETouchFeedbackSensitive +* and vibra effect level ETactileFeedbackVibraLevel5. +* +* Duration is given in milliseconds, and zero value will disable this +* logical feedback type. +* +* Possible values are: +* Integer values from zero upwards. +* +* Default value: 25 +**/ +const TUint32 KTactileVibraDurationSensitiveLevel5 = 0x00000033; @@ -259,6 +363,32 @@ const TUint32 KTactileAudioToneFreqBasicLevel3 = 0x00000042; /** +* Audio frequency setting for logical feedback type ETouchFeedbackBasic +* and audio effect level ETactileFeedbackAudioLevel4. +* +* Frequency is given in Hz. +* +* Possible values are: +* Positive integer values. +* +* Default value: 1100 +**/ +const TUint32 KTactileAudioToneFreqBasicLevel4 = 0x00000043; + +/** +* Audio frequency setting for logical feedback type ETouchFeedbackBasic +* and audio effect level ETactileFeedbackAudioLevel5. +* +* Frequency is given in Hz. +* +* Possible values are: +* Positive integer values. +* +* Default value: 1100 +**/ +const TUint32 KTactileAudioToneFreqBasicLevel5 = 0x00000044; + +/** * Audio duration setting for logical feedback type ETouchFeedbackBasic * and audio effect level ETactileFeedbackAudioLevel1. * @@ -269,7 +399,7 @@ * * Default value: 10 **/ -const TUint32 KTactileAudioToneDurationBasicLevel1 = 0x00000043; +const TUint32 KTactileAudioToneDurationBasicLevel1 = 0x00000045; /** * Audio duration setting for logical feedback type ETouchFeedbackBasic @@ -282,7 +412,7 @@ * * Default value: 10 **/ -const TUint32 KTactileAudioToneDurationBasicLevel2 = 0x00000044; +const TUint32 KTactileAudioToneDurationBasicLevel2 = 0x00000046; /** * Audio duration setting for logical feedback type ETouchFeedbackBasic @@ -295,7 +425,33 @@ * * Default value: 10 **/ -const TUint32 KTactileAudioToneDurationBasicLevel3 = 0x00000045; +const TUint32 KTactileAudioToneDurationBasicLevel3 = 0x00000047; + +/** +* Audio duration setting for logical feedback type ETouchFeedbackBasic +* and audio effect level ETactileFeedbackAudioLevel4. +* +* Duration is given in milliseconds. +* +* Possible values are: +* Zero (disables this feedback type) or positive integers +* +* Default value: 10 +**/ +const TUint32 KTactileAudioToneDurationBasicLevel4 = 0x00000048; + +/** +* Audio duration setting for logical feedback type ETouchFeedbackBasic +* and audio effect level ETactileFeedbackAudioLevel5. +* +* Duration is given in milliseconds. +* +* Possible values are: +* Zero (disables this feedback type) or positive integers +* +* Default value: 10 +**/ +const TUint32 KTactileAudioToneDurationBasicLevel5 = 0x00000049; /** * Audio volume setting for logical feedback type ETouchFeedbackBasic @@ -309,7 +465,7 @@ * * Default value: 20 **/ -const TUint32 KTactileAudioToneVolumeBasicLevel1 = 0x00000046; +const TUint32 KTactileAudioToneVolumeBasicLevel1 = 0x0000004a; /** * Audio volume setting for logical feedback type ETouchFeedbackBasic @@ -323,7 +479,7 @@ * * Default value: 40 **/ -const TUint32 KTactileAudioToneVolumeBasicLevel2 = 0x00000047; +const TUint32 KTactileAudioToneVolumeBasicLevel2 = 0x0000004b; /** * Audio volume setting for logical feedback type ETouchFeedbackBasic @@ -337,7 +493,35 @@ * * Default value: 60 **/ -const TUint32 KTactileAudioToneVolumeBasicLevel3 = 0x00000048; +const TUint32 KTactileAudioToneVolumeBasicLevel3 = 0x0000004c; + +/** +* Audio volume setting for logical feedback type ETouchFeedbackBasic +* and audio effect level ETactileFeedbackAudioLevel4. +* +* Volume level is given in percentages. 100% equals to +* CMdaAudioToneUtility::MaxVolume, and 0% will disable this feedback type. +* +* Possible values are: +* 0 - 100 +* +* Default value: 80 +**/ +const TUint32 KTactileAudioToneVolumeBasicLevel4 = 0x0000004d; + +/** +* Audio volume setting for logical feedback type ETouchFeedbackBasic +* and audio effect level ETactileFeedbackAudioLevel5. +* +* Volume level is given in percentages. 100% equals to +* CMdaAudioToneUtility::MaxVolume, and 0% will disable this feedback type. +* +* Possible values are: +* 0 - 100 +* +* Default value: 100 +**/ +const TUint32 KTactileAudioToneVolumeBasicLevel5 = 0x0000004e; /** @@ -351,7 +535,7 @@ * * Default value: 1100 **/ -const TUint32 KTactileAudioToneFreqSensitiveLevel1 = 0x00000049; +const TUint32 KTactileAudioToneFreqSensitiveLevel1 = 0x0000004f; /** * Audio frequency setting for logical feedback type ETouchFeedbackSensitive @@ -364,7 +548,7 @@ * * Default value: 1100 **/ -const TUint32 KTactileAudioToneFreqSensitiveLevel2 = 0x0000004a; +const TUint32 KTactileAudioToneFreqSensitiveLevel2 = 0x00000050; /** * Audio frequency setting for logical feedback type ETouchFeedbackSensitive @@ -377,7 +561,33 @@ * * Default value: 1100 **/ -const TUint32 KTactileAudioToneFreqSensitiveLevel3 = 0x0000004b; +const TUint32 KTactileAudioToneFreqSensitiveLevel3 = 0x00000051; + +/** +* Audio frequency setting for logical feedback type ETouchFeedbackSensitive +* and audio effect level ETactileFeedbackAudioLevel4. +* +* Frequency is given in Hz. +* +* Possible values are: +* Positive integer values. +* +* Default value: 1100 +**/ +const TUint32 KTactileAudioToneFreqSensitiveLevel4 = 0x00000052; + +/** +* Audio frequency setting for logical feedback type ETouchFeedbackSensitive +* and audio effect level ETactileFeedbackAudioLevel5. +* +* Frequency is given in Hz. +* +* Possible values are: +* Positive integer values. +* +* Default value: 1100 +**/ +const TUint32 KTactileAudioToneFreqSensitiveLevel5 = 0x00000053; /** @@ -391,7 +601,7 @@ * * Default value: 10 **/ -const TUint32 KTactileAudioToneDurationSensitiveLevel1 = 0x0000004c; +const TUint32 KTactileAudioToneDurationSensitiveLevel1 = 0x00000054; /** * Audio duration setting for logical feedback type ETouchFeedbackSensitive @@ -404,7 +614,7 @@ * * Default value: 10 **/ -const TUint32 KTactileAudioToneDurationSensitiveLevel2 = 0x0000004d; +const TUint32 KTactileAudioToneDurationSensitiveLevel2 = 0x00000055; /** * Audio duration setting for logical feedback type ETouchFeedbackSensitive @@ -417,7 +627,33 @@ * * Default value: 10 **/ -const TUint32 KTactileAudioToneDurationSensitiveLevel3 = 0x0000004e; +const TUint32 KTactileAudioToneDurationSensitiveLevel3 = 0x00000056; + +/** +* Audio duration setting for logical feedback type ETouchFeedbackSensitive +* and audio effect level ETactileFeedbackAudioLevel4. +* +* Duration is given in milliseconds. +* +* Possible values are: +* Zero (disables this feedback type) or positive integers +* +* Default value: 10 +**/ +const TUint32 KTactileAudioToneDurationSensitiveLevel4 = 0x00000057; + +/** +* Audio duration setting for logical feedback type ETouchFeedbackSensitive +* and audio effect level ETactileFeedbackAudioLevel5. +* +* Duration is given in milliseconds. +* +* Possible values are: +* Zero (disables this feedback type) or positive integers +* +* Default value: 10 +**/ +const TUint32 KTactileAudioToneDurationSensitiveLevel5 = 0x00000058; /** * Audio volume setting for logical feedback type ETouchFeedbackSensitive @@ -431,7 +667,7 @@ * * Default value: 10 **/ -const TUint32 KTactileAudioToneVolumeSensitiveLevel1 = 0x0000004f; +const TUint32 KTactileAudioToneVolumeSensitiveLevel1 = 0x00000059; /** * Audio volume setting for logical feedback type ETouchFeedbackSensitive @@ -445,7 +681,7 @@ * * Default value: 25 **/ -const TUint32 KTactileAudioToneVolumeSensitiveLevel2 = 0x00000050; +const TUint32 KTactileAudioToneVolumeSensitiveLevel2 = 0x0000005a; /** * Audio volume setting for logical feedback type ETouchFeedbackSensitive @@ -459,7 +695,35 @@ * * Default value: 40 **/ -const TUint32 KTactileAudioToneVolumeSensitiveLevel3 = 0x00000051; +const TUint32 KTactileAudioToneVolumeSensitiveLevel3 = 0x0000005b; + +/** +* Audio volume setting for logical feedback type ETouchFeedbackSensitive +* and audio effect level ETactileFeedbackAudioLevel4. +* +* Volume level is given in percentages. 100% equals to +* CMdaAudioToneUtility::MaxVolume, and 0% will disable this feedback type. +* +* Possible values are: +* 0 - 100 +* +* Default value: 55 +**/ +const TUint32 KTactileAudioToneVolumeSensitiveLevel4 = 0x0000005c; + +/** +* Audio volume setting for logical feedback type ETouchFeedbackSensitive +* and audio effect level ETactileFeedbackAudioLevel5. +* +* Volume level is given in percentages. 100% equals to +* CMdaAudioToneUtility::MaxVolume, and 0% will disable this feedback type. +* +* Possible values are: +* 0 - 100 +* +* Default value: 70 +**/ +const TUint32 KTactileAudioToneVolumeSensitiveLevel5 = 0x0000005d; // ============================================================================= // Configuration options related to audio .wav feedback diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackresolver.h --- a/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackresolver.h Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackresolver.h Fri Jun 11 13:57:13 2010 +0300 @@ -206,7 +206,16 @@ * the player plugin. */ void CreateAudioPlayerL( TUid aAudioUid ); - + + /** + * Return ETrue if aFeedback's priority is higher than current playing + * feedback, namely iLastFeedback. + * + * TODO: Currently, we only take Popup and Button effects into + * account. Ultimately, a complete priority queue should be set up. + */ + TBool IsHigherThanPlaying ( TTouchLogicalFeedback aFeedback ) const; + private: // data /** @@ -279,6 +288,12 @@ * EFalse - audio feedback is played first. */ TBool iVibraFirst; + + /** + * Name of the last played feedback. + * + */ + TTouchLogicalFeedback iLastFeedback; }; diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/plugins/tactileaudioplugin/src/tactileaudioplayer.cpp --- a/tactilefeedback/tactilefeedbackresolver/plugins/tactileaudioplugin/src/tactileaudioplayer.cpp Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactileaudioplugin/src/tactileaudioplayer.cpp Fri Jun 11 13:57:13 2010 +0300 @@ -138,7 +138,6 @@ case ETouchFeedbackBounceEffect: // flow through case ETouchFeedbackBasicSlider: // flow through case ETouchFeedbackEditor: // flow through - case ETouchFeedbackSensitiveKeypad: case ETouchFeedbackLineSelection: // flow through case ETouchFeedbackBlankSelection: // flow through case ETouchFeedbackTextSelection: // flow through @@ -149,11 +148,26 @@ case ETouchFeedbackItemScroll: // flow through case ETouchFeedbackCheckbox: // flow through case ETouchFeedbackMultitouchActivate: + case ETouchFeedbackBasicKeypad: + case ETouchFeedbackFlick: + case ETouchFeedbackItemDrop: + case ETouchFeedbackItemMoveOver: + case ETouchFeedbackItemPick: + case ETouchFeedbackMultipleCheckbox: + case ETouchFeedbackRotateStep: + case ETouchFeedbackStopFlick: + case ETouchFeedbackLongTap: + case ETouchFeedbackSubMenuOpen: + case ETouchFeedbackSubMenuClosed: + case ETouchFeedbackOptionsMenuOpen: + case ETouchFeedbackOptionsMenuClosed: volumeIndex = 0; break; case ETouchFeedbackSensitive: // flow through case ETouchFeedbackSensitiveButton: // flow through case ETouchFeedbackSensitiveItem: + case ETouchFeedbackSensitiveKeypad: + case ETouchFeedbackSensitiveSlider: volumeIndex = 1; break; default: diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/inc/tactilehapticsplayer.h --- a/tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/inc/tactilehapticsplayer.h Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/inc/tactilehapticsplayer.h Fri Jun 11 13:57:13 2010 +0300 @@ -118,6 +118,11 @@ void DoPlayFeedbackL( TTouchLogicalFeedback aFeedback ); /** + * Get IVT file Id via vibra level. + */ + TUint32 IVTFileId(); + + /** * Reads IVT data from file to buffer. * */ @@ -204,6 +209,11 @@ * Own. */ CProfileChangeNotifyHandler* iProfileHandler; + + /** + * Current vibra level. + */ + TInt iVibraLevel; }; diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/src/tactilehapticsplayer.cpp --- a/tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/src/tactilehapticsplayer.cpp Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/src/tactilehapticsplayer.cpp Fri Jun 11 13:57:13 2010 +0300 @@ -46,39 +46,44 @@ _LIT8( KTFSensitive, "TFSensitive"); _LIT8( KTFBasicButton, "TFBasicButton"); _LIT8( KTFSensitiveButton, "TFSensitiveButton"); -_LIT8( KTFBasicItem, "TFList"); // Mapped to IVT file version 9.2 -_LIT8( KTFSensitiveItem, "TFSensitiveList"); // Mapped to IVT file version 9.2 -_LIT8( KTFBounceEffect, "TFBoundaryList"); // Mapped to IVT file version 9.2 -_LIT8( KTFBasicSlider, "TFSlider"); // Mapped to IVT file version 9.2 -_LIT8( KTFEditor, "TFEdit"); // Mapped to IVT file version 9.2 +_LIT8( KTFBasicItem, "TFBasicItem"); // Mapped to IVT file version 9.2 +_LIT8( KTFSensitiveItem, "TFSensitiveItem"); // Mapped to IVT file version 9.2 +_LIT8( KTFBounceEffect, "TFBounceEffect"); // Mapped to IVT file version 9.2 +_LIT8( KTFBasicSlider, "TFBasicSlider"); // Mapped to IVT file version 9.2 +_LIT8( KTFEditor, "TFEditor"); // Mapped to IVT file version 9.2 _LIT8( KTFLineSelection, "TFLineSelection"); _LIT8( KTFBlankSelection, "TFBlankSelection"); _LIT8( KTFTextSelection, "TFTextSelection"); _LIT8( KTFEmptyLineSelection, "TFEmptyLineSelection"); _LIT8( KTFPopUp, "TFPopUp"); -_LIT8( KTFPopupOpen, "TFIncreasingPopUp"); // Mapped to IVT file version 9.2 -_LIT8( KTFPopupClose, "TFDecreasingPopUp"); // Mapped to IVT file version 9.2 -_LIT8( KTFItemScroll, "TFFlick"); // Mapped to IVT file version 9.2 +_LIT8( KTFPopupOpen, "TFPopupOpen"); // Mapped to IVT file version 9.2 +_LIT8( KTFPopupClose, "TFPopupClose"); // Mapped to IVT file version 9.2 +_LIT8( KTFItemScroll, "TFItemScroll"); // Mapped to IVT file version 9.2 _LIT8( KTFCheckbox, "TFCheckbox"); -_LIT8( KTFBasicKeypad, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFSensitiveKeypad, "TFSensitiveInput"); // Mapped to IVT file version 9.2 -_LIT8( KTFMultitouchActivate, "TFMultiTouchRecognized"); // Mapped to IVT file version 9.2 -_LIT8( KTFFlick, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFItemDrop, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFItemMoveOver, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFItemPick, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFMultipleCheckbox, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFRotateStep, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFSensitiveSlider, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFStopFlick, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFLongPress, "TFBasic"); // To be released in IVT file version 10.1 +_LIT8( KTFBasicKeypad, "TFBasicKeypad"); // Mapped to IVT file version 10.1 +_LIT8( KTFSensitiveKeypad, "TFSensitiveKeypad"); // Mapped to IVT file version 9.2 +_LIT8( KTFMultitouchActivate, "TFMultitouchActivate"); // Mapped to IVT file version 9.2 +_LIT8( KTFFlick, "TFFlick"); // Mapped to IVT file version 10.1 +_LIT8( KTFItemDrop, "TFItemDrop"); // Mapped to IVT file version 10.1 +_LIT8( KTFItemMoveOver, "TFItemMoveOver"); // Mapped to IVT file version 10.1 +_LIT8( KTFItemPick, "TFItemPick"); // Mapped to IVT file version 10.1 +_LIT8( KTFMultipleCheckbox, "TFMultipleCheckbox"); // Mapped to IVT file version 10.1 +_LIT8( KTFRotateStep, "TFRotateStep"); // Mapped to IVT file version 10.1 +_LIT8( KTFSensitiveSlider, "TFSensitiveSlider"); // Mapped to IVT file version 10.1 +_LIT8( KTFStopFlick, "TFStopFlick"); // Mapped to IVT file version 10.1 +_LIT8( KTFLongTap, "TFLongTap"); // Mapped to IVT file version 10.1 +_LIT8( KTFSubMenuOpen, "TFSubMenuOpen"); // Mapped to IVT file version 10.1 +_LIT8( KTFSubMenuClosed, "TFSubMenuClosed"); // Mapped to IVT file version 10.1 +_LIT8( KTFOptionsMenuOpen, "TFOptionsMenuOpen"); // Mapped to IVT file version 10.1 +_LIT8( KTFOptionsMenuClosed, "TFOptionsMenuClosed"); // Mapped to IVT file version 10.1 // Continuous feedback's names _LIT8( KTFContinuousSmooth, "TFContinuousSmooth"); _LIT8( KTFContinuousSlider, "TFContinuousSlider"); _LIT8( KTFContinuousInput, "TFContinuousInput"); -_LIT8( KTFContinuousPopup, "TFBasic"); // To be released in IVT file version 10.1 -_LIT8( KTFContinuousPinch, "TFBasic"); // To be released in IVT file version 10.1 +_LIT8( KTFContinuousPopup, "TFContinuousPopup"); // Mapped to IVT file version 10.1 +_LIT8( KTFContinuousPinch, "TFContinuousPinch"); // Mapped to IVT file version 10.1 +_LIT8( KTFDynamicSlider, "TFDynamicSlider"); // Mapped to IVT file version 10.1 // --------------------------------------------------------------------------- // Constructor. // --------------------------------------------------------------------------- @@ -123,12 +128,26 @@ // As a temporary fix to EAKH-7LKANT, the strength is (over)read from // profiles engine InitializeProfilesEngineL(); + + if ( iVibraLevel > EProfileTactileFeedbackLevel5 ) + { + User::Leave( KErrGeneral ); + } User::LeaveIfError( iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsStrength, iStrength ) ); TFileName ivtFile; - iRepository.Get( KTactileHapticsIVTFile, ivtFile ); + if ( iVibraLevel != EProfileTactileFeedbackOff ) + { + iRepository.Get( IVTFileId(), ivtFile ); + } + else + { + // Load KTactileHapticsLevel1IVTFile as default IVT file + // to start up if vibra level is EProfileTactileFeedbackOff. + iRepository.Get( KTactileHapticsLevel1IVTFile, ivtFile ); + } HBufC8* ivtBuf = IVTBufAllocL( ivtFile ); CleanupStack::PushL( ivtBuf ); @@ -198,8 +217,9 @@ // void CTactileHapticsPlayer::DoPlayFeedbackL( TTouchLogicalFeedback aFeedback ) { - // Check if hapticts strength is set to zero. - if ( !iStrength ) + // Check if hapticts strength is set to zero or + // vibra level is EProfileTactileFeedbackOff. + if ( !iStrength || iVibraLevel == EProfileTactileFeedbackOff) { User::Leave(KErrNotReady); } @@ -295,8 +315,20 @@ case ETouchFeedbackStopFlick: name = KTFStopFlick; break; - case ETouchFeedbackLongPress: - name = KTFLongPress; + case ETouchFeedbackLongTap: + name = KTFLongTap; + break; + case ETouchFeedbackSubMenuOpen: + name = KTFSubMenuOpen; + break; + case ETouchFeedbackSubMenuClosed: + name = KTFSubMenuClosed; + break; + case ETouchFeedbackOptionsMenuOpen: + name = KTFOptionsMenuOpen; + break; + case ETouchFeedbackOptionsMenuClosed: + name = KTFOptionsMenuClosed; break; default: User::Leave( KErrArgument ); @@ -315,6 +347,34 @@ } // --------------------------------------------------------------------------- +// Get IVT file Id via vibra level. +// --------------------------------------------------------------------------- +// +TUint32 CTactileHapticsPlayer::IVTFileId() + { + TUint32 fileId = 0; + switch ( iVibraLevel ) + { + case EProfileTactileFeedbackLevel1: + fileId = KTactileHapticsLevel1IVTFile; + break; + case EProfileTactileFeedbackLevel2: + fileId = KTactileHapticsLevel2IVTFile; + break; + case EProfileTactileFeedbackLevel3: + fileId = KTactileHapticsLevel3IVTFile; + break; + case EProfileTactileFeedbackLevel4: + fileId = KTactileHapticsLevel4IVTFile; + break; + case EProfileTactileFeedbackLevel5: + fileId = KTactileHapticsLevel5IVTFile; + break; + } + return fileId; + } + +// --------------------------------------------------------------------------- // Load IVT file. // --------------------------------------------------------------------------- // @@ -379,6 +439,9 @@ case ETouchContinuousPinch: name = KTFContinuousPinch; break; + case ETouchDynamicSlider: + name = KTFDynamicSlider; + break; default: ret = KErrArgument; break; @@ -412,9 +475,9 @@ periodicDef ); // Effect's magnitude value in IVT file is used as max value for - // continuous effects. - iMultiplier = periodicDef.iMagnitude / 100; - periodicDef.iMagnitude = aIntensity * iMultiplier; + // continuous effects and Attack level is used as minimum value + iMultiplier = ( periodicDef.iMagnitude - periodicDef.iAttackLevel ) / 100; + periodicDef.iMagnitude = aIntensity * iMultiplier + periodicDef.iAttackLevel; if ( ret == KErrNone ) { @@ -431,10 +494,10 @@ iEffectIndex, magSweepDef ); - // Effect's magnitude value in IVT file is used as max value for - // continuous effects. - iMultiplier = magSweepDef.iMagnitude / 100; - magSweepDef.iMagnitude = aIntensity * iMultiplier; + // Effect's magnitude value in IVT file is used as max value for + // continuous effects and Attack level is used as minimum value + iMultiplier = ( magSweepDef.iMagnitude - magSweepDef.iAttackLevel ) / 100; + magSweepDef.iMagnitude = aIntensity * iMultiplier + magSweepDef.iAttackLevel; if ( ret == KErrNone ) { @@ -488,7 +551,7 @@ iEffectIndex, periodicDef ); - periodicDef.iMagnitude = intensity; + periodicDef.iMagnitude = intensity + periodicDef.iAttackLevel; iHaptics->ModifyPlayingPeriodicEffect( iEffectHandle, periodicDef ); @@ -502,7 +565,7 @@ iEffectIndex, magSweepDef ); - magSweepDef.iMagnitude = intensity; + magSweepDef.iMagnitude = intensity + magSweepDef.iAttackLevel; iHaptics->ModifyPlayingMagSweepEffect( iEffectHandle, magSweepDef ); @@ -553,10 +616,14 @@ iStrength ); } break; - case KTactileHapticsIVTFile: + case KTactileHapticsLevel1IVTFile: + case KTactileHapticsLevel2IVTFile: + case KTactileHapticsLevel3IVTFile: + case KTactileHapticsLevel4IVTFile: + case KTactileHapticsLevel5IVTFile: { TFileName ivtFile; - iRepository.Get( KTactileHapticsIVTFile, ivtFile ); + iRepository.Get( aId, ivtFile ); HBufC8* ivtBuf = IVTBufAllocL( ivtFile ); if ( ivtBuf ) @@ -652,8 +719,14 @@ TProfileEvent /*aProfileEvent*/, TInt /*aProfileId*/ ) { + TInt oldVibraLevel = iVibraLevel; InitializeProfilesEngineL(); - iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsStrength, iStrength ); + iHaptics->SetDeviceProperty( CHWRMHaptics::EHWRMHapticsStrength, iStrength ); + if ( iVibraLevel != oldVibraLevel && + iVibraLevel != EProfileTactileFeedbackOff ) + { + HandleNotifyGeneric( IVTFileId() ); + } } // --------------------------------------------------------------------------- @@ -676,10 +749,8 @@ const MProfileFeedbackSettings& feedbackSettings = extraSettings.ProfileFeedbackSettings(); - TProfileTactileFeedback strength = feedbackSettings.TactileFeedback(); - iStrength = 100 * ( EProfileTactileFeedbackLevel3 == strength ? 100 : - EProfileTactileFeedbackLevel2 == strength ? 60 : - EProfileTactileFeedbackLevel1 == strength ? 30 : 0 ); + iVibraLevel = feedbackSettings.TactileFeedback(); + iStrength = 100 * ( EProfileTactileFeedbackOff != iVibraLevel ? 100 : 0 ); activeProfile->Release(); diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/plugins/tactiletoneplugin/src/tactiletoneplayer.cpp --- a/tactilefeedback/tactilefeedbackresolver/plugins/tactiletoneplugin/src/tactiletoneplayer.cpp Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactiletoneplugin/src/tactiletoneplayer.cpp Fri Jun 11 13:57:13 2010 +0300 @@ -67,7 +67,7 @@ // settings from profiles engine InitializeProfilesEngineL(); - if ( iAudioLevel > EProfileAudioFeedbackLevel3 ) + if ( iAudioLevel > EProfileAudioFeedbackLevel5 ) { User::Leave( KErrGeneral ); } @@ -143,7 +143,6 @@ case ETouchFeedbackBounceEffect: // flow through case ETouchFeedbackBasicSlider: // flow through case ETouchFeedbackEditor: // flow through - case ETouchFeedbackSensitiveKeypad: case ETouchFeedbackLineSelection: // flow through case ETouchFeedbackBlankSelection: // flow through case ETouchFeedbackTextSelection: // flow through @@ -154,11 +153,26 @@ case ETouchFeedbackItemScroll: // flow through case ETouchFeedbackCheckbox: // flow through case ETouchFeedbackMultitouchActivate: + case ETouchFeedbackBasicKeypad: + case ETouchFeedbackFlick: + case ETouchFeedbackItemDrop: + case ETouchFeedbackItemMoveOver: + case ETouchFeedbackItemPick: + case ETouchFeedbackMultipleCheckbox: + case ETouchFeedbackRotateStep: + case ETouchFeedbackStopFlick: + case ETouchFeedbackLongTap: + case ETouchFeedbackSubMenuOpen: + case ETouchFeedbackSubMenuClosed: + case ETouchFeedbackOptionsMenuOpen: + case ETouchFeedbackOptionsMenuClosed: effectIndex = 0; break; case ETouchFeedbackSensitive: // flow through case ETouchFeedbackSensitiveButton: // flow through case ETouchFeedbackSensitiveItem: + case ETouchFeedbackSensitiveKeypad: + case ETouchFeedbackSensitiveSlider: effectIndex = 1; break; default: @@ -210,7 +224,7 @@ TInt ret( KErrArgument ); if ( aLevel > EProfileAudioFeedbackOff && - aLevel <= EProfileAudioFeedbackLevel3 ) + aLevel <= EProfileAudioFeedbackLevel5 ) { iOriginalLevel = iAudioLevel; iAudioLevel = aLevel; @@ -355,6 +369,42 @@ iRepository.Get( KTactileAudioToneVolumeSensitiveLevel3, sensitiveParams.iVolume ); } + else if ( iAudioLevel == EProfileAudioFeedbackLevel4 ) + { + // Read settings for ETouchFeedbackBasic, level 4 + iRepository.Get( KTactileAudioToneFreqBasicLevel4, + basicParams.iFrequency ); + iRepository.Get( KTactileAudioToneDurationBasicLevel4, + basicDuration ); + iRepository.Get( KTactileAudioToneVolumeBasicLevel4, + basicParams.iVolume ); + + // Read settings for ETouchFeedbackSensitive, level 4 + iRepository.Get( KTactileAudioToneFreqSensitiveLevel4, + sensitiveParams.iFrequency ); + iRepository.Get( KTactileAudioToneDurationSensitiveLevel4, + sensitiveDuration ); + iRepository.Get( KTactileAudioToneVolumeSensitiveLevel4, + sensitiveParams.iVolume ); + } + else if ( iAudioLevel == EProfileAudioFeedbackLevel5 ) + { + // Read settings for ETouchFeedbackBasic, level 5 + iRepository.Get( KTactileAudioToneFreqBasicLevel5, + basicParams.iFrequency ); + iRepository.Get( KTactileAudioToneDurationBasicLevel5, + basicDuration ); + iRepository.Get( KTactileAudioToneVolumeBasicLevel5, + basicParams.iVolume ); + + // Read settings for ETouchFeedbackSensitive, level 5 + iRepository.Get( KTactileAudioToneFreqSensitiveLevel5, + sensitiveParams.iFrequency ); + iRepository.Get( KTactileAudioToneDurationSensitiveLevel5, + sensitiveDuration ); + iRepository.Get( KTactileAudioToneVolumeSensitiveLevel5, + sensitiveParams.iVolume ); + } // Clear old parameters. Only do it at end, so that we still have the // old settings in case something fails when reading these from diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/plugins/tactilevibraplugin/src/tactilevibraplayer.cpp --- a/tactilefeedback/tactilefeedbackresolver/plugins/tactilevibraplugin/src/tactilevibraplayer.cpp Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/plugins/tactilevibraplugin/src/tactilevibraplayer.cpp Fri Jun 11 13:57:13 2010 +0300 @@ -52,7 +52,7 @@ User::LeaveIfError( iRepository.Get( KTactileFeedbackHapticsStrength, iVibraLevel ) ); - if ( iVibraLevel > EProfileTactileFeedbackLevel3 ) + if ( iVibraLevel > EProfileTactileFeedbackLevel5 ) { User::Leave( KErrGeneral ); } @@ -118,7 +118,6 @@ case ETouchFeedbackBounceEffect: // flow through case ETouchFeedbackBasicSlider: // flow through case ETouchFeedbackEditor: // flow through - case ETouchFeedbackSensitiveKeypad: case ETouchFeedbackLineSelection: // flow through case ETouchFeedbackBlankSelection: // flow through case ETouchFeedbackTextSelection: // flow through @@ -129,11 +128,26 @@ case ETouchFeedbackItemScroll: // flow through case ETouchFeedbackCheckbox: // flow through case ETouchFeedbackMultitouchActivate: + case ETouchFeedbackBasicKeypad: + case ETouchFeedbackFlick: + case ETouchFeedbackItemDrop: + case ETouchFeedbackItemMoveOver: + case ETouchFeedbackItemPick: + case ETouchFeedbackMultipleCheckbox: + case ETouchFeedbackRotateStep: + case ETouchFeedbackStopFlick: + case ETouchFeedbackLongTap: + case ETouchFeedbackSubMenuOpen: + case ETouchFeedbackSubMenuClosed: + case ETouchFeedbackOptionsMenuOpen: + case ETouchFeedbackOptionsMenuClosed: effectIndex = 0; break; case ETouchFeedbackSensitive: // flow through case ETouchFeedbackSensitiveButton: // flow through case ETouchFeedbackSensitiveItem: + case ETouchFeedbackSensitiveKeypad: + case ETouchFeedbackSensitiveSlider: effectIndex = 1; break; default: @@ -206,7 +220,7 @@ TInt ret( KErrArgument ); if ( aLevel > EProfileTactileFeedbackOff && - aLevel <= EProfileTactileFeedbackLevel3 ) + aLevel <= EProfileTactileFeedbackLevel5 ) { iOriginalLevel = iVibraLevel; iVibraLevel = aLevel; @@ -276,6 +290,34 @@ iRepository.Get( KTactileVibraDurationSensitiveLevel3, sensitiveParams.iTime ); } + else if ( iVibraLevel == EProfileTactileFeedbackLevel4 ) + { + // Read settings for ETouchFeedbackBasic + iRepository.Get( KTactileVibraIntensityBasicLevel4, + basicParams.iIntensity ); + iRepository.Get( KTactileVibraDurationBasicLevel4, + basicParams.iTime ); + + // Read settings for ETouchFeedbackSensitive + iRepository.Get( KTactileVibraIntensitySensitiveLevel4, + sensitiveParams.iIntensity ); + iRepository.Get( KTactileVibraDurationSensitiveLevel4, + sensitiveParams.iTime ); + } + else if ( iVibraLevel == EProfileTactileFeedbackLevel5 ) + { + // Read settings for ETouchFeedbackBasic + iRepository.Get( KTactileVibraIntensityBasicLevel5, + basicParams.iIntensity ); + iRepository.Get( KTactileVibraDurationBasicLevel5, + basicParams.iTime ); + + // Read settings for ETouchFeedbackSensitive + iRepository.Get( KTactileVibraIntensitySensitiveLevel5, + sensitiveParams.iIntensity ); + iRepository.Get( KTactileVibraDurationSensitiveLevel5, + sensitiveParams.iTime ); + } iVibraParams.Reset(); diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/rom/tactilefeedbackresolver.iby --- a/tactilefeedback/tactilefeedbackresolver/rom/tactilefeedbackresolver.iby Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/rom/tactilefeedbackresolver.iby Fri Jun 11 13:57:13 2010 +0300 @@ -27,6 +27,10 @@ file=ABI_DIR\BUILD_DIR\tactilefeedbackresolver.dll SHARED_LIB_DIR\tactilefeedbackresolver.dll // audio file(s) used for wav feed back -data=ZPRIVATE\10003B20\TactileFeedbackEffects.ivt private\10003B20\TactileFeedbackEffects.ivt +data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel1_A.ivt private\10003B20\10.1_TactileFeedbackLevel1_A.ivt +data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel2_A.ivt private\10003B20\10.1_TactileFeedbackLevel2_A.ivt +data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel3_A.ivt private\10003B20\10.1_TactileFeedbackLevel3_A.ivt +data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel4_A.ivt private\10003B20\10.1_TactileFeedbackLevel4_A.ivt +data=ZPRIVATE\10003B20\10.1_TactileFeedbackLevel5_A.ivt private\10003B20\10.1_TactileFeedbackLevel5_A.ivt #endif // TACTILEFEEDBACKRESOLVER_IBY diff -r 8e4f1d643852 -r 4838b44af342 tactilefeedback/tactilefeedbackresolver/src/tactilefeedbackresolver.cpp --- a/tactilefeedback/tactilefeedbackresolver/src/tactilefeedbackresolver.cpp Mon May 03 12:47:28 2010 +0300 +++ b/tactilefeedback/tactilefeedbackresolver/src/tactilefeedbackresolver.cpp Fri Jun 11 13:57:13 2010 +0300 @@ -47,7 +47,8 @@ // --------------------------------------------------------------------------- // CTactileFeedbackResolver::CTactileFeedbackResolver() : - iFeedbackStarted( EFalse ) + iFeedbackStarted( EFalse ), + iLastFeedback( ETouchFeedbackNone ) { } @@ -107,7 +108,37 @@ delete iAudioPlayer; REComSession::FinalClose(); } + +TBool CTactileFeedbackResolver::IsHigherThanPlaying( + TTouchLogicalFeedback aFeedback ) const + { + if( aFeedback == ETouchFeedbackBasicItem && + iLastFeedback == ETouchFeedbackSensitiveItem ) + { + return ETrue; + } + return ( ( aFeedback == ETouchFeedbackPopUp || + aFeedback == ETouchFeedbackPopupOpen || + aFeedback == ETouchFeedbackPopupClose || + aFeedback == ETouchFeedbackBounceEffect || + aFeedback == ETouchFeedbackOptionsMenuOpen || + aFeedback == ETouchFeedbackOptionsMenuClosed || + aFeedback == ETouchFeedbackSubMenuOpen || + aFeedback == ETouchFeedbackSubMenuClosed ) && + ( iLastFeedback == ETouchFeedbackBasicButton || + iLastFeedback == ETouchFeedbackSensitiveButton || + iLastFeedback == ETouchFeedbackSensitiveItem || + iLastFeedback == ETouchFeedbackBasicItem || + iLastFeedback == ETouchFeedbackCheckbox ) ) + || ( + aFeedback == ETouchFeedbackPopUp && + ( iLastFeedback == ETouchFeedbackPopupOpen || + iLastFeedback == ETouchFeedbackOptionsMenuOpen || + iLastFeedback == ETouchFeedbackSubMenuOpen ) + ); + } + // --------------------------------------------------------------------------- // We play feedback in case all three conditions are met: // @@ -129,17 +160,29 @@ TTimeIntervalMicroSeconds interval = now.MicroSecondsFrom( iLastFeedbackTimeStamp ); + + TBool willPlay = EFalse; - if ( iMinimumInterval == TTimeIntervalMicroSeconds( 0 ) || - now < iLastFeedbackTimeStamp || - iMinimumInterval <= interval ) + if ( iMinimumInterval == TTimeIntervalMicroSeconds( 0 ) || + now < iLastFeedbackTimeStamp || + iMinimumInterval <= interval ) + { + willPlay = ETrue; + } + else if ( IsHigherThanPlaying( aFeedback ) ) + { + willPlay = ETrue; + } + + if ( willPlay ) { // First store the timestamp of this feedback playing moment. // This really needs to be done when // actually playing feedback (not when feedback was requested // but filtered out). iLastFeedbackTimeStamp = now; - + + iLastFeedback = aFeedback; // Force vibra- and audio feedback off if those are globally disabled if ( !iVibraEnabled )