Revision: 201021
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 11 Jun 2010 13:57:13 +0300
changeset 22 4838b44af342
parent 17 8e4f1d643852
child 27 dabdd02a1ba9
Revision: 201021 Kit: 2010123
hapticsservices_pub/tactile_feedback_client_api/inc/touchlogicalfeedback.h
tactilefeedback/tactilearearegistry/src/tactilearearegistry.cpp
tactilefeedback/tactilefeedbackclient/cenrep/2000B494.txt
tactilefeedback/tactilefeedbackclient/conf/tactilefeedback.confml
tactilefeedback/tactilefeedbackclient/conf/tactilefeedback_2000B494.crml
tactilefeedback/tactilefeedbackclient/src/touchfeedbackimpl.cpp
tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel1_A.ivt
tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel2_A.ivt
tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel3_A.ivt
tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel4_A.ivt
tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel5_A.ivt
tactilefeedback/tactilefeedbackresolver/data/tactilefeedbackeffects.ivt
tactilefeedback/tactilefeedbackresolver/group/bld.inf
tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackdomaincrkeys.h
tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackprivatecrkeys.h
tactilefeedback/tactilefeedbackresolver/inc/tactilefeedbackresolver.h
tactilefeedback/tactilefeedbackresolver/plugins/tactileaudioplugin/src/tactileaudioplayer.cpp
tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/inc/tactilehapticsplayer.h
tactilefeedback/tactilefeedbackresolver/plugins/tactilehapticsplugin/src/tactilehapticsplayer.cpp
tactilefeedback/tactilefeedbackresolver/plugins/tactiletoneplugin/src/tactiletoneplayer.cpp
tactilefeedback/tactilefeedbackresolver/plugins/tactilevibraplugin/src/tactilevibraplayer.cpp
tactilefeedback/tactilefeedbackresolver/rom/tactilefeedbackresolver.iby
tactilefeedback/tactilefeedbackresolver/src/tactilefeedbackresolver.cpp
--- 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
     };
     
 /**  
--- 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();
     }
     
 
Binary file tactilefeedback/tactilefeedbackclient/cenrep/2000B494.txt has changed
Binary file tactilefeedback/tactilefeedbackclient/conf/tactilefeedback.confml has changed
Binary file tactilefeedback/tactilefeedbackclient/conf/tactilefeedback_2000B494.crml has changed
--- 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;
         }
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel1_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel2_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel3_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel4_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/10.1_TactileFeedbackLevel5_A.ivt has changed
Binary file tactilefeedback/tactilefeedbackresolver/data/tactilefeedbackeffects.ivt has changed
--- 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)
--- 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
 
--- 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
--- 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;
     };
 
 
--- 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:
--- 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;
     };
 
 
--- 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();
     
--- 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 
--- 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();
 
--- 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
--- 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 )