diff -r 000000000000 -r ca436256272f profilesapplication/Profiles/ProfileApp/SettingsViewSrc/CProfileStruct.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/profilesapplication/Profiles/ProfileApp/SettingsViewSrc/CProfileStruct.cpp Thu Dec 17 08:45:58 2009 +0200 @@ -0,0 +1,258 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Data structure class for profile settings. +* +*/ + + + +// CLASS HEADER +#include "CProfileStruct.h" +#include "profileinternal.hrh" + +// EXTERNAL INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // AknTextUtils +#include +#include +#include +#include + +#include + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CProfileStruct::CProfileStruct +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CProfileStruct::CProfileStruct( ) + { + } + +// ----------------------------------------------------------------------------- +// CProfileStruct::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CProfileStruct* CProfileStruct::NewL( ) + { + CProfileStruct* self = new (ELeave) CProfileStruct( ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CProfileStruct::ConstructL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +void CProfileStruct::ConstructL() + { + iRingingTone = new( ELeave ) TFileName(); + iRingingToneLine2 = new( ELeave ) TFileName(); + iVideoCallTone = new( ELeave ) TFileName(); + iMessageAlertTone = new( ELeave ) TFileName(); + iEmailAlertTone = new( ELeave ) TFileName(); + iPTTRingingTone = new( ELeave ) TFileName(); + } + +// Destructor +CProfileStruct::~CProfileStruct() + { + iContactList.Close(); + delete iRingingTone; + delete iRingingToneLine2; + delete iVideoCallTone; + delete iMessageAlertTone; + delete iEmailAlertTone; + delete iPTTRingingTone; + } + +// ----------------------------------------------------------------------------- +// CProfileStruct::LoadL +// ----------------------------------------------------------------------------- +// +void CProfileStruct::LoadL( MProfileExtended* aProfile ) + { + TArray array( aProfile->AlertForL() ); + iContactList.Reset(); + TInt count( array.Count() ); + for( TInt index( 0 ); index < count; index++ ) + { + iContactList.Append( array[ index ] ); + } + const MProfileName& name = aProfile->ProfileName(); + iProfileId = name.Id(); + iProfileName.Copy( name.Name() ); + AknTextUtils::DisplayTextLanguageSpecificNumberConversion( iProfileName ); + iTitleName.Copy( name.TitleName() ); + AknTextUtils::DisplayTextLanguageSpecificNumberConversion( iTitleName ); + const MProfileTones& tones = aProfile->ProfileTones(); + iRingingTone->Copy( tones.RingingTone1() ); + iRingingToneLine2->Copy( tones.RingingTone2() ); + iMessageAlertTone->Copy( tones.MessageAlertTone() ); + const TProfileToneSettings& toneSettings = tones.ToneSettings(); + iRingingType = toneSettings.iRingingType; + iKeypadVolume = toneSettings.iKeypadVolume; + iRingingVolume = toneSettings.iRingingVolume; + iMediaVolume = toneSettings.iMediaVolume; + iVibratingAlert = toneSettings.iVibratingAlert; + iEmailVibratingAlert = toneSettings.iEmailVibratingAlert; + iWarningAndGameTones = toneSettings.iWarningAndGameTones; + iTextToSpeech = toneSettings.iTextToSpeech; + const MProfileExtraTones& extra = aProfile->ProfileExtraTones(); + iEmailAlertTone->Copy( extra.EmailAlertTone() ); + iVideoCallTone->Copy( extra.VideoCallRingingTone() ); + const MProfileExtraSettings& extraSettings = aProfile->ProfileExtraSettings(); + const MProfilePttSettings& pttSettings = extraSettings.ProfilePttSettings(); + iPTTRingingTone->Copy( pttSettings.PttRingingTone() ); + iPTTStatus = pttSettings.PttStatus(); + + const MProfileFeedbackSettings& feedbackSettings = extraSettings.ProfileFeedbackSettings(); + iTactileFeedback = feedbackSettings.TactileFeedback(); + iAudioFeedback = feedbackSettings.AudioFeedback(); + + const MProfile3DToneSettings& threeDSettings = extraSettings.Profile3DToneSettings(); + i3DEffect = threeDSettings.Effect(); + i3DEcho = threeDSettings.Echo(); + } + +// ----------------------------------------------------------------------------- +// CProfileStruct::StoreL +// ----------------------------------------------------------------------------- +// +void CProfileStruct::StoreL( MProfileExtended* aProfile ) + { + aProfile->SetAlertForL( iContactList.Array() ); + const MProfileName& name = aProfile->ProfileName(); + TBuf profileNameHelperBuffer; + profileNameHelperBuffer.Copy( name.Name() ); + AknTextUtils::DisplayTextLanguageSpecificNumberConversion( + profileNameHelperBuffer ); + if( iProfileName.Compare( profileNameHelperBuffer ) ) + { + // Store profile name only if it has changed in order to + // preserve localisation. + aProfile->ProfileSetName().SetNameL( iProfileName ); + iTitleName.Copy( iProfileName ); + } + MProfileSetTones& setTones = aProfile->ProfileSetTones(); + setTones.SetRingingTone1L( *iRingingTone ); + setTones.SetRingingTone2L( *iRingingToneLine2 ); + setTones.SetMessageAlertToneL( *iMessageAlertTone ); + TProfileToneSettings& toneSettings = setTones.SetToneSettings(); + toneSettings.iRingingType = TProfileRingingType( iRingingType ); + toneSettings.iKeypadVolume = TProfileKeypadVolume( iKeypadVolume ); + toneSettings.iRingingVolume = iRingingVolume; + toneSettings.iMediaVolume = iMediaVolume; + toneSettings.iVibratingAlert = iVibratingAlert; + toneSettings.iEmailVibratingAlert = iEmailVibratingAlert; + toneSettings.iWarningAndGameTones = iWarningAndGameTones; + toneSettings.iTextToSpeech = iTextToSpeech; + MProfileSetExtraTones& setExtra = aProfile->ProfileSetExtraTones(); + setExtra.SetEmailAlertToneL( *iEmailAlertTone ); + setExtra.SetVideoCallRingingToneL( *iVideoCallTone ); + + MProfileSetExtraSettings& setExtraSettings = aProfile->ProfileSetExtraSettings(); + MProfileSetPttSettings& setPttSettings = setExtraSettings.ProfileSetPttSettings(); + setPttSettings.SetPttRingingToneL( *iPTTRingingTone ); + TProfilePttStatus KPttStatus = TProfilePttStatus( iPTTStatus ); + setPttSettings.SetPttStatus( KPttStatus ); + + MProfileSetFeedbackSettings& setFeedbackSettings = + setExtraSettings.ProfileSetFeedbackSettings(); + TProfileTactileFeedback tactileFeedback = TProfileTactileFeedback( iTactileFeedback ); + TProfileAudioFeedback audioFeedback = TProfileAudioFeedback( iAudioFeedback ); + setFeedbackSettings.SetTactileFeedback( tactileFeedback ); + setFeedbackSettings.SetAudioFeedback( audioFeedback ); + + MProfileSet3DToneSettings& set3dSettings = + setExtraSettings.ProfileSet3DToneSettings(); + TProfile3DToneEffect threeDEffect = TProfile3DToneEffect( i3DEffect ); + TProfile3DToneEcho threeDEcho = TProfile3DToneEcho( i3DEcho ); + set3dSettings.SetEffect( threeDEffect ); + set3dSettings.SetEcho( threeDEcho ); + } + +// ----------------------------------------------------------------------------- +// CProfileStruct::CompareL +// ----------------------------------------------------------------------------- +// +TBool CProfileStruct::CompareL( MProfileExtended* aProfile ) const + { + const MProfileTones& tones = aProfile->ProfileTones(); + const MProfileName& name = aProfile->ProfileName(); + const TProfileToneSettings& toneSettings = tones.ToneSettings(); + const MProfileExtraTones& extra = aProfile->ProfileExtraTones(); + const MProfileExtraSettings& extraSettings = aProfile->ProfileExtraSettings(); + const MProfilePttSettings& pttSettings = extraSettings.ProfilePttSettings(); + const MProfileFeedbackSettings& feedbackSettings = extraSettings.ProfileFeedbackSettings(); + const MProfile3DToneSettings& threeDSettings = extraSettings.Profile3DToneSettings(); + + TArray array( aProfile->AlertForL() ); + TInt contactArrayCount( array.Count() ); + TInt ownContactArrayCount( iContactList.Count() ); + + if( ( iProfileId != name.Id() ) || + ( iRingingTone->Compare( tones.RingingTone1() ) ) || + ( iRingingToneLine2->Compare( tones.RingingTone2() ) ) || + ( iVideoCallTone->Compare( extra.VideoCallRingingTone() ) ) || + ( iMessageAlertTone->Compare( tones.MessageAlertTone() ) ) || + ( iProfileName.Compare( name.Name() ) ) || + ( iRingingType != toneSettings.iRingingType ) || + ( iKeypadVolume != toneSettings.iKeypadVolume ) || + ( iRingingVolume != toneSettings.iRingingVolume ) || + ( iMediaVolume != toneSettings.iMediaVolume ) || + ( iVibratingAlert != toneSettings.iVibratingAlert ) || + ( iEmailVibratingAlert != toneSettings.iEmailVibratingAlert ) || + ( iWarningAndGameTones != toneSettings.iWarningAndGameTones ) || + ( iTextToSpeech != toneSettings.iTextToSpeech ) || + ( iEmailAlertTone->Compare( extra.EmailAlertTone() ) ) || + ( ownContactArrayCount != contactArrayCount ) || + ( iTactileFeedback != feedbackSettings.TactileFeedback() ) || + ( iAudioFeedback != feedbackSettings.AudioFeedback() ) || + ( i3DEffect != threeDSettings.Effect() ) || + ( i3DEcho != threeDSettings.Echo() ) || + ( iPTTRingingTone->Compare( pttSettings.PttRingingTone() ) ) || + ( iPTTStatus != pttSettings.PttStatus() ) ) + { + return EFalse; + } + + for( TInt index( 0 ); index < contactArrayCount; index++ ) + { + if( iContactList[ index ] != array[ index ] ) + { + return EFalse; + } + } + return ETrue; + } + +// End of File