diff -r d38941471f1c -r cb32bcc88bad hwrmhaptics/examples/hapticstestapp/src/hapticstesteffectdatahandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hwrmhaptics/examples/hapticstestapp/src/hapticstesteffectdatahandler.cpp Fri Oct 08 14:33:25 2010 +0300 @@ -0,0 +1,904 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Symbian Foundation License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Active object listening waiting for async haptics completion. +* +*/ + + +#include +#include + +#include "hapticstest.hrh" +#include "hapticstesteffectdatahandler.h" + + +_LIT( KManualEffectName, "manual" ); + +const TInt KEffectModificationInterval = 50000; // microseconds +const TInt KMaxEffectHistorySize = 25; +const TInt KDefaultNonInfiniteDuration = 1000; // milliseconds + +// default values for manual effects +const TInt KDefaultEffectMagnitude = KHWRMHapticsMaxMagnitude; +const TInt KDefaultEffectAttackLevel = KHWRMHapticsMaxMagnitude * 0.5; +const TInt KDefaultEffectFadeLevel = KHWRMHapticsMaxMagnitude * 0.5; +const TInt KDefaultEffectAttackTime = 200; // milliseconds +const TInt KDefaultEffectFadeTime = 200; // milliseconds +const TInt KDefaultEffectPeriod = 300; // milliseconds +const CHWRMHaptics::THWRMHapticsEffectStyles KDefaultEffectStyle = CHWRMHaptics::EHWRMHapticsStyleStrong; + + +// --------------------------------------------------------------------------- +// Symbian two-phased constructor. +// --------------------------------------------------------------------------- +// +CHapticsTestEffectDataHandler* CHapticsTestEffectDataHandler::NewL() + { + CHapticsTestEffectDataHandler* self = + CHapticsTestEffectDataHandler::NewLC(); + + CleanupStack::Pop( self ); + + return self; + } + +// --------------------------------------------------------------------------- +// Symbian two-phased constructor. +// --------------------------------------------------------------------------- +// +CHapticsTestEffectDataHandler* CHapticsTestEffectDataHandler::NewLC() + { + CHapticsTestEffectDataHandler* self = + new ( ELeave ) CHapticsTestEffectDataHandler(); + CleanupStack::PushL( self ); + + self->ConstructL(); + + return self; + } + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CHapticsTestEffectDataHandler::~CHapticsTestEffectDataHandler() + { + ResetModifiableEffectTimer(); + + if ( iModifyEffect ) + { + delete iModifyEffect; + iModifyEffect = NULL; + } + + iPlayedEffectArray.Close(); + } + +// --------------------------------------------------------------------------- +// Adds effect data to effect history array. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::AddEffectInfo( TInt aEffectHandle, + TInt aFileHandle, + TInt aIndex ) + { + TPlayedEffect newEffect; + newEffect.iEffectHandle = aEffectHandle; + newEffect.iFileHandle = aFileHandle; + newEffect.iEffectIndex = aIndex; + + // add item to the beginning of the array, ignore possible error + iPlayedEffectArray.Insert( newEffect, 0 ); + + // if there are too many items, remove the last one + TInt count = iPlayedEffectArray.Count(); + if ( count > KMaxEffectHistorySize ) + { + iPlayedEffectArray.Remove( count - 1 ); + } + } + +// --------------------------------------------------------------------------- +// Deletest all effect info items from the list that have +// the given filehandle in their data. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DeleteEffectInfo( TInt aFileHandle ) + { + for ( TInt i = iPlayedEffectArray.Count() - 1; i >= 0 ; --i ) + { + if ( iPlayedEffectArray[i].iFileHandle == aFileHandle ) + { + iPlayedEffectArray.Remove( i ); + } + } + } + +// --------------------------------------------------------------------------- +// Returns the amount of effect data stored in the history data array. +// --------------------------------------------------------------------------- +// +TInt CHapticsTestEffectDataHandler::Count() const + { + return iPlayedEffectArray.Count(); + } + +// --------------------------------------------------------------------------- +// Returns the effect handle of the given effect data item. +// --------------------------------------------------------------------------- +// +TInt CHapticsTestEffectDataHandler::EffectHandle( TInt aIndex ) const + { + return iPlayedEffectArray[aIndex].iEffectHandle; + } + +// --------------------------------------------------------------------------- +// Returns the file handle of the given effect data item. +// --------------------------------------------------------------------------- +// +TInt CHapticsTestEffectDataHandler::FileHandle( TInt aIndex ) const + { + return iPlayedEffectArray[aIndex].iFileHandle; + } + +// --------------------------------------------------------------------------- +// Returns the effect index of the given effect data item. +// --------------------------------------------------------------------------- +// +TInt CHapticsTestEffectDataHandler::EffectIndex( TInt aIndex ) const + { + return iPlayedEffectArray[aIndex].iEffectIndex; + } + +// --------------------------------------------------------------------------- +// Resets the modifiable effect data with the data received in the +// given magsweep effect. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::ResetModifiableMagSweepEffectL( + const CHWRMHaptics::THWRMHapticsMagSweepEffect& aMagSweep, + TInt aEffectHandle, CHWRMHaptics* aHaptics ) + { + // reset effect data + if ( iModifyEffect ) + { + delete iModifyEffect; + iModifyEffect = NULL; + } + + // create new effect data + iModifyEffect = new (ELeave) TModifyEffect(); + iModifyEffect->iHaptics = aHaptics; + iModifyEffect->iEffectType = CHWRMHaptics::EHWRMHapticsTypeMagSweep; + iModifyEffect->iEffectHandle = aEffectHandle; + iModifyEffect->iModifyCount = 0; + + // store default effect values + iModifyEffect->iDuration = aMagSweep.iDuration; + iModifyEffect->iMagnitude = aMagSweep.iMagnitude; + iModifyEffect->iStyle = aMagSweep.iStyle; + iModifyEffect->iAttackLevel = aMagSweep.iAttackLevel; + iModifyEffect->iFadeLevel = aMagSweep.iFadeLevel; + iModifyEffect->iAttackTime = aMagSweep.iAttackTime; + iModifyEffect->iFadeTime = aMagSweep.iFadeTime; + + // no period for magsweep, use default value + iModifyEffect->iPeriod = KDefaultEffectPeriod; + } + +// --------------------------------------------------------------------------- +// Resets the modifiable effect data with the data received in the +// given periodic effect. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::ResetModifiablePeriodicEffectL( + const CHWRMHaptics::THWRMHapticsPeriodicEffect& aPeriodic, + TInt aEffectHandle, CHWRMHaptics* aHaptics ) + { + // reset effect data + if ( iModifyEffect ) + { + delete iModifyEffect; + iModifyEffect = NULL; + } + + // create new effect data + iModifyEffect = new (ELeave) TModifyEffect(); + iModifyEffect->iHaptics = aHaptics; + iModifyEffect->iEffectType = CHWRMHaptics::EHWRMHapticsTypePeriodic; + iModifyEffect->iEffectHandle = aEffectHandle; + iModifyEffect->iModifyCount = 0; + + // store default effect values + iModifyEffect->iDuration = aPeriodic.iDuration; + iModifyEffect->iMagnitude = aPeriodic.iMagnitude; + iModifyEffect->iStyle = aPeriodic.iStyle; + iModifyEffect->iAttackLevel = aPeriodic.iAttackLevel; + iModifyEffect->iFadeLevel = aPeriodic.iFadeLevel; + iModifyEffect->iAttackTime = aPeriodic.iAttackTime; + iModifyEffect->iFadeTime = aPeriodic.iFadeTime; + iModifyEffect->iPeriod = aPeriodic.iPeriod; + } + +// --------------------------------------------------------------------------- +// Starts the timer for constantly modifying an effect. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::StartModifiableEffectTimerL( TInt (*aFunction)(TAny* aPtr) ) + { + ResetModifiableEffectTimer(); + + // create and start periodic timer + iModifyTimer = CPeriodic::NewL( CActive::EPriorityStandard ); + iModifyTimer->Start( KEffectModificationInterval, + KEffectModificationInterval, + TCallBack( aFunction, this ) ); + } + +// --------------------------------------------------------------------------- +// Cancels and deletes the timer. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::ResetModifiableEffectTimer() + { + // reset timer + if ( iModifyTimer ) + { + iModifyTimer->Cancel(); + delete iModifyTimer; + iModifyTimer = NULL; + } + } + +// --------------------------------------------------------------------------- +// Returns whether or not a modifiable effect exists. +// --------------------------------------------------------------------------- +// +TBool CHapticsTestEffectDataHandler::ModifiableEffectExists() const + { + return iModifyEffect ? ETrue : EFalse; + } + +// --------------------------------------------------------------------------- +// Returns whether or not the currently stored effect is a magsweep effect. +// --------------------------------------------------------------------------- +// +TBool CHapticsTestEffectDataHandler::ModifiableEffectIsMagSweep() const + { + return ( iModifyEffect->iEffectType == CHWRMHaptics::EHWRMHapticsTypeMagSweep ); + } + +// --------------------------------------------------------------------------- +// Returns whether or not the currently stored effect is a periodic effect. +// --------------------------------------------------------------------------- +// +TBool CHapticsTestEffectDataHandler::ModifiableEffectIsPeriodic() const + { + return ( iModifyEffect->iEffectType == CHWRMHaptics::EHWRMHapticsTypePeriodic ); + } + +// --------------------------------------------------------------------------- +// Returns the effect handle of the modifiable effect. +// --------------------------------------------------------------------------- +// +TInt CHapticsTestEffectDataHandler::ModifiableEffectHandle() const + { + return iModifyEffect->iEffectHandle; + } + +// --------------------------------------------------------------------------- +// Returns the amount of times the current modifiable effect +// has been modified already. +// --------------------------------------------------------------------------- +// +TInt CHapticsTestEffectDataHandler::ModifyCount() const + { + return iModifyEffect->iModifyCount; + } + +// --------------------------------------------------------------------------- +// Returns the pointer to the haptics client instance, which +// has been set to the effect modification data. +// --------------------------------------------------------------------------- +// +CHWRMHaptics* CHapticsTestEffectDataHandler::Haptics() const + { + return iModifyEffect->iHaptics; + } + +// --------------------------------------------------------------------------- +// Fills in default magsweep effect data into the given structure. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::FillDefaultMagSweepData( + CHWRMHaptics::THWRMHapticsMagSweepEffect& aMagSweep, + TBool aInfinite, TBool aAutoModifiable, + CHWRMHaptics* aHaptics ) const + { + if ( aInfinite ) + { + aMagSweep.iDuration = aHaptics->InfiniteDuration(); + } + else + { + aMagSweep.iDuration = KDefaultNonInfiniteDuration; + } + + if ( aAutoModifiable ) + { + // start modifiable effect from minimum magnitude + aMagSweep.iMagnitude = KHWRMHapticsMinMagnitude; + aMagSweep.iAttackLevel = KHWRMHapticsMinMagnitude; + aMagSweep.iFadeLevel = KHWRMHapticsMinMagnitude; + } + else + { + // non-modifiable effect + aMagSweep.iMagnitude = KDefaultEffectMagnitude; + aMagSweep.iAttackLevel = KDefaultEffectAttackLevel; + aMagSweep.iFadeLevel = KDefaultEffectFadeLevel; + } + + aMagSweep.iStyle = KDefaultEffectStyle; + aMagSweep.iAttackTime = KDefaultEffectAttackTime; + aMagSweep.iFadeTime = KDefaultEffectFadeTime; + } + +// --------------------------------------------------------------------------- +// Fills in default periodic effect data into the given structure. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::FillDefaultPeriodicData( + CHWRMHaptics::THWRMHapticsPeriodicEffect& aPeriodic, + TBool aInfinite, TBool /*aAutoModifiable*/, + CHWRMHaptics* aHaptics ) const + { + if ( aInfinite ) + { + aPeriodic.iDuration = aHaptics->InfiniteDuration(); + } + else + { + aPeriodic.iDuration = KDefaultNonInfiniteDuration; + } + + aPeriodic.iMagnitude = KDefaultEffectMagnitude; + aPeriodic.iAttackLevel = KDefaultEffectAttackLevel; + aPeriodic.iFadeLevel = KDefaultEffectFadeLevel; + + aPeriodic.iPeriod = KDefaultEffectPeriod; + aPeriodic.iStyle = KDefaultEffectStyle; + aPeriodic.iAttackTime = KDefaultEffectAttackTime; + aPeriodic.iFadeTime = KDefaultEffectFadeTime; + } + +// --------------------------------------------------------------------------- +// Fills in the modifiable effect data into the given magsweep structure. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::FillModifiableMagSweepData( + CHWRMHaptics::THWRMHapticsMagSweepEffect& aMagSweep ) const + { + aMagSweep.iDuration = iModifyEffect->iDuration; + aMagSweep.iStyle = iModifyEffect->iStyle; + aMagSweep.iAttackTime = iModifyEffect->iAttackTime; + aMagSweep.iFadeTime = iModifyEffect->iFadeTime; + aMagSweep.iMagnitude = iModifyEffect->iMagnitude; + aMagSweep.iAttackLevel = iModifyEffect->iAttackLevel; + aMagSweep.iFadeLevel = iModifyEffect->iFadeLevel; + } + +// --------------------------------------------------------------------------- +// Fills in the modifiable effect data into the given periodic structure. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::FillModifiablePeriodicData( + CHWRMHaptics::THWRMHapticsPeriodicEffect& aPeriodic ) const + { + aPeriodic.iDuration = iModifyEffect->iDuration; + aPeriodic.iStyle = iModifyEffect->iStyle; + aPeriodic.iAttackTime = iModifyEffect->iAttackTime; + aPeriodic.iFadeTime = iModifyEffect->iFadeTime; + aPeriodic.iMagnitude = iModifyEffect->iMagnitude; + aPeriodic.iAttackLevel = iModifyEffect->iAttackLevel; + aPeriodic.iFadeLevel = iModifyEffect->iFadeLevel; + aPeriodic.iPeriod = iModifyEffect->iPeriod; + } + +// --------------------------------------------------------------------------- +// Sets the modifiable effect's modify count. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::SetModifyCount( TInt aModifyCount ) + { + iModifyEffect->iModifyCount = aModifyCount; + } + +// --------------------------------------------------------------------------- +// Sets the modifiable effect's duration value. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::SetDuration( TInt aDuration ) + { + iModifyEffect->iDuration = aDuration; + } + +// --------------------------------------------------------------------------- +// Sets the modifiable effect's magnitude value. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::SetMagnitude( TInt aMagnitude ) + { + iModifyEffect->iMagnitude = aMagnitude; + } + +// --------------------------------------------------------------------------- +// Sets the modifiable effect's style value. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::SetStyle( + CHWRMHaptics::THWRMHapticsEffectStyles aStyle ) + { + iModifyEffect->iStyle = aStyle; + } + +// --------------------------------------------------------------------------- +// Sets the modifiable effect's attack level value. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::SetAttackLevel( TInt aAttackLevel ) + { + iModifyEffect->iAttackLevel = aAttackLevel; + } + +// --------------------------------------------------------------------------- +// Sets the modifiable effect's fade level value. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::SetFadeLevel( TInt aFadeLevel ) + { + iModifyEffect->iFadeLevel = aFadeLevel; + } + +// --------------------------------------------------------------------------- +// Sets the modifiable effect's attack time value. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::SetAttackTime( TInt aAttackTime ) + { + iModifyEffect->iAttackTime = aAttackTime; + } + +// --------------------------------------------------------------------------- +// Sets the modifiable effect's fade time value. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::SetFadeTime( TInt aFadeTime ) + { + iModifyEffect->iFadeTime = aFadeTime; + } + +// --------------------------------------------------------------------------- +// Sets the modifiable effect's period value. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::SetPeriod( TInt aPeriod ) + { + iModifyEffect->iPeriod = aPeriod; + } + +// --------------------------------------------------------------------------- +// Creates all submenu items for a change effect state submenu. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DynInitChangeEffectStateSubmenuL( + CEikMenuPane* aMenuPane, + TInt aCommandId, + CHWRMHaptics* aHaptics ) + { + // get effect count + TInt effectCount = iPlayedEffectArray.Count(); + + // fill effect history data to submenu, if any data available + if ( effectCount ) + { + // there is data, hide "none found" + aMenuPane->SetItemDimmed( EHapticsTestChangeStateNoneFound, ETrue ); + + // make played effects visible in the submenu + CEikMenuPaneItem::SData data; + for ( TInt i = 0; i < effectCount; ++i ) + { + // buffer for effect name + HBufC8* effectName = HBufC8::NewL( aHaptics->MaxEffectNameLength() ); + TPtr8 namePtr = effectName->Des(); + + // effect name + if ( iPlayedEffectArray[i].iFileHandle > 0 && + iPlayedEffectArray[i].iEffectIndex > 0 ) + { + aHaptics->GetEffectName( iPlayedEffectArray[i].iFileHandle, + iPlayedEffectArray[i].iEffectIndex, + namePtr ); + } + else + { + namePtr.Append( KManualEffectName ); + } + + // insert data to submenu item + data.iText.Copy( *effectName ); + data.iCommandId = aCommandId; + data.iCascadeId = 0; + data.iFlags = 0; + data.iExtraText = KNullDesC; + + delete effectName; + + aMenuPane->AddMenuItemL( data ); + } + } + } + +// --------------------------------------------------------------------------- +// Creates the checkmark to the duration, which is currently in use +// in the duration modification submenu. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DynInitDurationSubmenu( + CEikMenuPane* aMenuPane ) const + { + // set check mark to correct duration value + if ( iModifyEffect->iDuration == KEffectDuration1 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectDuration1, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iDuration == KEffectDuration5 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectDuration5, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iDuration == KEffectDuration10 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectDuration10, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iDuration == KEffectDuration30 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectDuration30, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iDuration == KEffectDuration60 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectDuration60, + EEikMenuItemSymbolOn ); + } + } + +// --------------------------------------------------------------------------- +// Creates the checkmark to the magnitude, which is currently in use +// in the magnitude modification submenu. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DynInitMagnitudeSubmenu( + CEikMenuPane* aMenuPane ) const + { + // set check mark to correct magnitude value + if ( iModifyEffect->iMagnitude == KHWRMHapticsMinMagnitude ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectMagnitudeMin, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iMagnitude == KEffectMagnitude25 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectMagnitude25, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iMagnitude == KEffectMagnitude50 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectMagnitude50, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iMagnitude == KEffectMagnitude75 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectMagnitude75, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iMagnitude == KHWRMHapticsMaxMagnitude ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectMagnitudeMax, + EEikMenuItemSymbolOn ); + } + } + +// --------------------------------------------------------------------------- +// Creates the checkmark to the style, which is currently in use +// in the style modification submenu. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DynInitStyleSubmenu( + CEikMenuPane* aMenuPane ) const + { + // set check mark to correct style value + if ( iModifyEffect->iStyle == CHWRMHaptics::EHWRMHapticsStyleSmooth ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectStyleSmooth, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iStyle == CHWRMHaptics::EHWRMHapticsStyleStrong ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectStyleStrong, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iStyle == CHWRMHaptics::EHWRMHapticsStyleSharp ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectStyleSharp, + EEikMenuItemSymbolOn ); + } + } + +// --------------------------------------------------------------------------- +// Creates the checkmark to the attack level, which is currently in use +// in the attack level modification submenu. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DynInitAttackLevelSubmenu( + CEikMenuPane* aMenuPane ) const + { + // set check mark to correct attack level value + if ( iModifyEffect->iAttackLevel == KHWRMHapticsMinMagnitude ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttackMin, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iAttackLevel == KEffectMagnitude25 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttack25, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iAttackLevel == KEffectMagnitude50 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttack50, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iAttackLevel == KEffectMagnitude75 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttack75, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iAttackLevel == KHWRMHapticsMaxMagnitude ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttackMax, + EEikMenuItemSymbolOn ); + } + } + +// --------------------------------------------------------------------------- +// Creates the checkmark to the fade level, which is currently in use +// in the fade level modification submenu. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DynInitFadeLevelSubmenu( + CEikMenuPane* aMenuPane ) const + { + // set check mark to correct fade level value + if ( iModifyEffect->iFadeLevel == KHWRMHapticsMinMagnitude ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFadeMin, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iFadeLevel == KEffectMagnitude25 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFade25, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iFadeLevel == KEffectMagnitude50 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFade50, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iFadeLevel == KEffectMagnitude75 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFade75, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iFadeLevel == KHWRMHapticsMaxMagnitude ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFadeMax, + EEikMenuItemSymbolOn ); + } + } + +// --------------------------------------------------------------------------- +// Creates the checkmark to the attack time, which is currently in use +// in the attack time modification submenu. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DynInitAttackTimeSubmenu( + CEikMenuPane* aMenuPane ) const + { + // set check mark to correct attack time value + if ( iModifyEffect->iAttackTime == KEffectAttackTime02 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttackTime02, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iAttackTime == KEffectAttackTime1 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttackTime1, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iAttackTime == KEffectAttackTime5 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttackTime5, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iAttackTime == KEffectAttackTime10 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttackTime10, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iAttackTime == KEffectAttackTime30 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttackTime30, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iAttackTime == KEffectAttackTime60 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectAttackTime60, + EEikMenuItemSymbolOn ); + } + } + +// --------------------------------------------------------------------------- +// Creates the checkmark to the fade time, which is currently in use +// in the fade time modification submenu. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DynInitFadeTimeSubmenu( + CEikMenuPane* aMenuPane ) const + { + // set check mark to correct fade time value + if ( iModifyEffect->iFadeTime == KEffectFadeTime02 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFadeTime02, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iFadeTime == KEffectFadeTime1 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFadeTime1, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iFadeTime == KEffectFadeTime5 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFadeTime5, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iFadeTime == KEffectFadeTime10 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFadeTime10, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iFadeTime == KEffectFadeTime30 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFadeTime30, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iFadeTime == KEffectFadeTime60 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectFadeTime60, + EEikMenuItemSymbolOn ); + } + } + +// --------------------------------------------------------------------------- +// Creates the checkmark to the period, which is currently in use +// in the period modification submenu. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::DynInitPeriodSubmenu( + CEikMenuPane* aMenuPane ) const + { + // set check mark to correct period value + if ( iModifyEffect->iPeriod == KEffectPeriod50 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectPeriod50, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iPeriod == KEffectPeriod100 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectPeriod100, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iPeriod == KEffectPeriod300 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectPeriod300, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iPeriod == KEffectPeriod600 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectPeriod600, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iPeriod == KEffectPeriod1000 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectPeriod1000, + EEikMenuItemSymbolOn ); + } + else if ( iModifyEffect->iPeriod == KEffectPeriod3000 ) + { + aMenuPane->SetItemButtonState( + EHapticsTestModifyEffectPeriod3000, + EEikMenuItemSymbolOn ); + } + } + +// --------------------------------------------------------------------------- +// C++ constructor +// --------------------------------------------------------------------------- +// +CHapticsTestEffectDataHandler::CHapticsTestEffectDataHandler() + { + } + +// --------------------------------------------------------------------------- +// Second phase construction. +// --------------------------------------------------------------------------- +// +void CHapticsTestEffectDataHandler::ConstructL() + { + } + +// End of file