diff -r 159cfcd3c1c5 -r 48848d132687 profilesservices/ProfileEngine/EngSrc/CProfileEngineImpl.cpp --- a/profilesservices/ProfileEngine/EngSrc/CProfileEngineImpl.cpp Thu Apr 01 03:31:13 2010 +0800 +++ b/profilesservices/ProfileEngine/EngSrc/CProfileEngineImpl.cpp Fri Apr 16 11:40:46 2010 +0800 @@ -55,6 +55,9 @@ #include #include +#include +#include + // ============================ MEMBER FUNCTIONS =============================== @@ -237,6 +240,8 @@ MProfileExtended* CProfileEngineImpl::ProfileLC( TInt aId ) { + return Profile2LC( aId ); + /* CProfileImpl* profile = NULL; iMutex.Wait(); @@ -280,6 +285,7 @@ } return profile; + */ } // ----------------------------------------------------------------------------- @@ -291,9 +297,12 @@ MProfileExtended* CProfileEngineImpl::ProfileL( TInt aId ) { + return Profile2L( aId ); + /* MProfileExtended* profile = ProfileLC( aId ); CleanupStack::Pop(); // profile return profile; + */ } @@ -570,7 +579,9 @@ if( profileId == activeId ) { - UpdateActiveProfileSettingsL( aProfile ); + MProfileExtended2 *activeProfile = Profile2LC(activeId); + UpdateActiveProfileSettingsL( *activeProfile ); + CleanupStack::PopAndDestroy(); // activeProfile } // write settings to Cenrep: @@ -626,22 +637,44 @@ // (other items were commented in a header). // ----------------------------------------------------------------------------- // -void CProfileEngineImpl::UpdateActiveProfileSettingsL( MProfile& aProfile, +void CProfileEngineImpl::UpdateActiveProfileSettingsL( MProfileExtended2& aProfile, TBool aSetId ) { const MProfileTones& profileTones = aProfile.ProfileTones(); + const MProfileExtraTones2& profileExtraTones = aProfile.ProfileExtraTones2(); const MProfileName& profileName = aProfile.ProfileName(); const TProfileToneSettings& settings = profileTones.ToneSettings(); + // const MProfileVibraSettings &vibraSettings = aProfile.ProfileVibraSettings(); // These cannot fail because this method is called only in between // StartTransaction() and CommitTransaction() calls (except vibra) iCenRep->Set( KProEngActiveRingingType, settings.iRingingType ); - iCenRep->Set( KProEngActiveRingingVolume, settings.iRingingVolume ); + + //Removed. only master volue used + // iCenRep->Set( KProEngActiveRingingVolume, settings.iRingingVolume ); iCenRep->Set( KProEngActiveMessageAlert, !( aProfile.IsSilent() ) ); + + //Since 10.1 + iCenRep->Set( KProEngActiveRingTone,profileTones.RingingTone1() ); + iCenRep->Set( KProEngActiveMessageTone,profileTones.MessageAlertTone() ); + iCenRep->Set( KProEngActiveReminderTone,profileExtraTones.ReminderTone() ); + iCenRep->Set( KProEngActiveClockAlarmTone,profileExtraTones.ClockAlarmTone() ); + + /* + if ( MasterVibraL() ) + { + iCenRep->Set( KProEngActiveAlertVibra,vibraSettings.AlertVibra() ); + } + else + { + iCenRep->Set( KProEngActiveAlertVibra,0 ); + } + */ + if ( !PowerSaveMode() ) { User::LeaveIfError( iVibraCenRep->Set( - KVibraCtrlProfileVibraEnabled, settings.iVibratingAlert ) ); + KVibraCtrlProfileVibraEnabled, /*vibraSettings.AlertVibra() != 0 &&*/ MasterVibraL() ) ); #ifdef RD_TACTILE_FEEDBACK const MProfileExtraSettings& extraSettings = aProfile.ProfileExtraSettings(); @@ -720,7 +753,8 @@ CleanupStack::Pop(); // nameImpl } - ReadDynamicProfilesNamesL( aProfilesNames, *profileName ); + // Since 10.1, No dynamic profiles in TB 10.1 + // ReadDynamicProfilesNamesL( aProfilesNames, *profileName ); CleanupStack::PopAndDestroy(); // profileName } @@ -733,7 +767,7 @@ void CProfileEngineImpl::DoSetActiveProfileL( TInt aId, TTime* aTime ) { - MProfileExtended* profile = ProfileLC( aId ); + MProfileExtended2* profile = Profile2LC( aId ); User::LeaveIfError( iCenRep->StartTransaction( CRepository::EReadWriteTransaction ) ); @@ -938,6 +972,17 @@ } // ----------------------------------------------------------------------------- +// CreateProfileEngineExtendedL create profiles engine and +// return internal interface of the profiles engine +// Returns: Profiles Engine internal interface +// ----------------------------------------------------------------------------- +// +EXPORT_C MProfileEngineExtended2* CreateProfileEngineExtended2L() + { + return CProfileEngineImpl::NewL(); + } + +// ----------------------------------------------------------------------------- // CreateProfileEngineL create profiles engine and return public interface // of the profiles engine. // Returns: Profiles Engine public interface @@ -959,6 +1004,16 @@ return CProfileEngineImpl::NewL( aFs ); } +// ----------------------------------------------------------------------------- +// CreateProfileEngineExtendedL create profiles engine and +// return internal interface of the profiles engine +// Returns: Profiles Engine internal interface +// ----------------------------------------------------------------------------- +// +EXPORT_C MProfileEngineExtended2* CreateProfileEngineExtended2L( RFs* aFs ) + { + return CProfileEngineImpl::NewL( aFs ); + } // ----------------------------------------------------------------------------- // CProfileEngineImpl::PowerSaveMode @@ -1013,4 +1068,179 @@ } + +// ----------------------------------------------------------------------------- +// CProfileEngineImpl::Profile2LC +// +// ----------------------------------------------------------------------------- +// +MProfileExtended2* CProfileEngineImpl::Profile2LC( TInt aId ) + { + CProfileImpl* profile = NULL; + + iMutex.Wait(); + TInt err( CheckProfileIdL( aId ) ); + + if( !err ) + { + TRAP( err, profile = GetProfileL( aId ) ); + } + iMutex.Signal(); + + User::LeaveIfError( err ); + + CleanupStack::PushL( profile ); + + if( iSideVolumeKeys ) + { + // Because SetTemp*VolumeL() functions update only Shared Data those + // values must be read from SD and set to the MProfile instance + // returned to the caller: + TInt activeId( User::LeaveIfError( ActiveProfileId() ) ); + if( activeId == aId ) + { + TProfileToneSettings& settings = + profile->ProfileSetTones().SetToneSettings(); + settings.iRingingVolume = TempRingingVolumeL(); + settings.iMediaVolume = TempMediaVolumeL(); + } + } + + if( !profile->IsProfileNameChanged() ) + { + if( IsDefaultProfile( aId ) ) + { + profile->SetLocalizedProfileNameL( *iProfileLocalisedNames ); + } + else + { + SetLocalizedNameForDynamicProfileL( *profile ); + } + } + + return profile; + } + +// ----------------------------------------------------------------------------- +// CProfileEngineImpl::Profile2L +// +// ----------------------------------------------------------------------------- +// +MProfileExtended2* CProfileEngineImpl::Profile2L( TInt aId ) + { + MProfileExtended2* profile = Profile2LC( aId ); + CleanupStack::Pop(); // profile + return profile; + } + +// ----------------------------------------------------------------------------- +// CProfileEngineImpl::CommitChange2L +// +// ----------------------------------------------------------------------------- +// +void CProfileEngineImpl::CommitChange2L( MProfileExtended2& aProfile ) + { + CommitChangeL (aProfile); + } + + +// ----------------------------------------------------------------------------- +// CProfileEngineImpl::MasterVolumeL +// +// ----------------------------------------------------------------------------- +// +TInt CProfileEngineImpl::MasterVolumeL() const + { + TInt masterVolume( 0 ); + User::LeaveIfError( iCenRep->Get( KProEngMasterVolume, masterVolume ) ); + return masterVolume; + } + +// ----------------------------------------------------------------------------- +// CProfileEngineImpl::SetMasterVolumeL +// +// ----------------------------------------------------------------------------- +// +void CProfileEngineImpl::SetMasterVolumeL( TInt aMasterVolume ) + { + User::LeaveIfError( iCenRep->Set( KProEngMasterVolume, aMasterVolume ) ); + User::LeaveIfError( iCenRep->Set( KProEngActiveRingingVolume, aMasterVolume ) ); + + //Send event through P&S + CreatePubSubKeysIfNeededL(); + PublishChangeL( KProEngActiveProfileModified ); + } + +// ----------------------------------------------------------------------------- +// CProfileEngineImpl::MasterVibraL +// +// ----------------------------------------------------------------------------- +// +TBool CProfileEngineImpl::MasterVibraL() const + { + TInt masterVibra( 0 ); + User::LeaveIfError( iCenRep->Get( KProEngMasterVibra, masterVibra ) ); + return ( masterVibra != 0 ); + } + +// ----------------------------------------------------------------------------- +// CProfileEngineImpl::SetMasterVibraL +// +// ----------------------------------------------------------------------------- +// +void CProfileEngineImpl::SetMasterVibraL( TBool aMasterVibra ) + { + User::LeaveIfError( iCenRep->Set( KProEngMasterVibra, aMasterVibra ? 1 : 0 ) ); + User::LeaveIfError ( iCenRep->Set( KProEngActiveAlertVibra, aMasterVibra ? 1 : 0 ) ); + + /* + MProfileExtended2* activeProfile = Profile2LC( ActiveProfileId() ); + const MProfileVibraSettings &vibraSettings = activeProfile->ProfileVibraSettings(); + if (activeProfile) + { + if (aMasterVibra) + { + iCenRep->Set( KProEngActiveAlertVibra,vibraSettings.AlertVibra() ); + } + else + { + iCenRep->Set( KProEngActiveAlertVibra, 0 ); + } + } + CleanupStack::PopAndDestroy(); // activeProfile + */ + + if ( !PowerSaveMode() ) + { + User::LeaveIfError( iVibraCenRep->Set( + KVibraCtrlProfileVibraEnabled, aMasterVibra ? 1 : 0) ); + } + + //Send event through P&S + CreatePubSubKeysIfNeededL(); + PublishChangeL( KProEngActiveProfileModified ); + } + +// ----------------------------------------------------------------------------- +// CProfileEngineImpl::SilenceModeL +// +// ----------------------------------------------------------------------------- +// +TBool CProfileEngineImpl::SilenceModeL() const + { + TInt silenceMode( 0 ); + User::LeaveIfError( iCenRep->Get( KProEngSilenceMode, silenceMode ) ); + return ( silenceMode != 0 ); + } + +// ----------------------------------------------------------------------------- +// CProfileEngineImpl::SetSilenceModeL +// +// ----------------------------------------------------------------------------- +// +void CProfileEngineImpl::SetSilenceModeL( TBool aSilenceMode ) + { + User::LeaveIfError( iCenRep->Set( KProEngSilenceMode, aSilenceMode ? 1 : 0 ) ); + } + // End of File