diff -r 000000000000 -r f0cf47e981f9 mmshplugins/mmshsettingsuiplugin/src/mussettingsmodel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmshplugins/mmshsettingsuiplugin/src/mussettingsmodel.cpp Thu Dec 17 08:44:37 2009 +0200 @@ -0,0 +1,461 @@ +/* +* Copyright (c) 2006-2007 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: Document model class for MUSSettingsPlugin. +* Version : %version: 15 % << Don't touch! Updated by Synergy at check-out. +* +*/ + + + +#include "mmussipprofilehandler.h" +#include "mussettingsmodel.h" +#include "mussipprofilemodel.h" +#include "muslogger.h" +#include +#include + +#include +#include +#include // GUI Resource + + + +const TInt CMusSettingsModel::KVsSipProfileDefault = 0; +const TInt CMusSettingsModel::KVsSipProfileSelect = 1; +const TInt CMusSettingsModel::KVsSipProfileSelectNone = 2; +const TInt KSIPGranularity = 5; + + +// ======== MEMBER FUNCTIONS ======== + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CMusSettingsModel* CMusSettingsModel::NewL( MMusSIPProfileHandler& aHandler ) + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::NewL()" ) + CMusSettingsModel* self = new( ELeave ) CMusSettingsModel( aHandler ); + CleanupStack::PushL( self ); + self->ConstructL(); + + CleanupStack::Pop( self ); + MUS_LOG( "[MUSSET] <- CMusSettingsModel::NewL()" ) + return self; + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CMusSettingsModel::CMusSettingsModel( MMusSIPProfileHandler& aHandler ) + : iHandler( aHandler ) + { + MUS_LOG( "[MUSSET] <- CMusSettingsModel::CMusSettingsModel()" ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CMusSettingsModel::ConstructL() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::ConstructL()" ) + iMSSettingsKeys = new (ELeave) MultimediaSharingSettings; + InitializeProfileEnablerL(); + MUS_LOG( "[MUSSET] <- CMusSettingsModel::ConstructL()" ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CMusSettingsModel::~CMusSettingsModel() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::~CMusSettingsModel()" ) + delete iMSSettingsKeys; + iMSSettingsKeys = NULL; + MUS_LOG( "[MUSSET] <- CMusSettingsModel::~CMusSettingsModel()" ) + } + + +// ----------------------------------------------------------------------------- +// Returns operator variant mode (normal or operator specific. This is used for +// runtime variation of Settings UI. +// ----------------------------------------------------------------------------- +// +MusSettingsKeys::TOperatorVariant CMusSettingsModel::VSSettingsOperatorVariantL() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsOperatorVariantL()" ) + + MusSettingsKeys::TOperatorVariant operatorVariant = + iMSSettingsKeys->OperatorVariantSettingL(); + + MUS_LOG1( + "[MUSSET] <- CMusSettingsContainer::VSSettingsOperatorVariantL()( %d )", + operatorVariant ) + return operatorVariant; + } + + +// ----------------------------------------------------------------------------- +// Returns VS activation mode. +// ----------------------------------------------------------------------------- +// +MusSettingsKeys::TActivation CMusSettingsModel::VSSettingsActivationL() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsActivationL()" ) + MusSettingsKeys::TActivation activationMode = + iMSSettingsKeys->ActivationSettingL(); + MUS_LOG1( + "[MUSSET] <- CMusSettingsContainer::VSSettingsActivationL()( %d )", + activationMode ) + return activationMode; + } + + +// ----------------------------------------------------------------------------- +// Returns SIP profile mode. +// ----------------------------------------------------------------------------- +// +TInt CMusSettingsModel::VSSettingsProfileL() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsProfileL()" ) + TInt vsProfileMode = iMSSettingsKeys->SipProfileSettingL(); + MUS_LOG1( + "[MUSSET] <- CMusSettingsContainer::VSSettingsProfileL()( %d )", + vsProfileMode ) + return vsProfileMode; + } + + +// ----------------------------------------------------------------------------- +// Returns video autorecord mode. +// ----------------------------------------------------------------------------- +// +MusSettingsKeys::TAutoRecord CMusSettingsModel::VSSettingsAutoRecordL() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsAutoRecordL()" ) + MusSettingsKeys::TAutoRecord vsAutoRecordMode = + iMSSettingsKeys->AutoRecordSettingL(); + MUS_LOG1( + "[MUSSET] <- CMusSettingsContainer::VSSettingsAutoRecordL()( %d )", + vsAutoRecordMode ) + return vsAutoRecordMode; + } + + +// ----------------------------------------------------------------------------- +// Returns recorded video saving mode. +// ----------------------------------------------------------------------------- +// +TInt CMusSettingsModel::VSSettingsRecordedVideoSavingL() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsRecordedVideoSavingL()" ) + TInt vsVideoLocationMode = iMSSettingsKeys->VideoLocationSettingL(); + MUS_LOG1( + "[MUSSET] <- CMusSettingsContainer::VSSettingsRecordedVideoSavingL()( %d )", + vsVideoLocationMode ) + return vsVideoLocationMode; + } + + +// ----------------------------------------------------------------------------- +// Returns mode of audible note. +// ----------------------------------------------------------------------------- +// +MusSettingsKeys::TAuditoryNotification CMusSettingsModel::VSSettingsNoteL() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::VSSettingsNoteL()" ) + MusSettingsKeys::TAuditoryNotification vsNoteMode = + iMSSettingsKeys->AuditoryNotificationSettingL(); + MUS_LOG1( + "[MUSSET] <- CMusSettingsContainer::VSSettingsNoteL()( %d )", + vsNoteMode ) + return vsNoteMode; + } + + +// ----------------------------------------------------------------------------- +// Sets VS activation mode. +// ----------------------------------------------------------------------------- +// +void CMusSettingsModel::SetVSSettingsActivationL( + const MusSettingsKeys::TActivation aActivation) + { + MUS_LOG1( + "[MUSSET] -> CMusSettingsContainer::SetVSSettingsActivationL()( %d )", + aActivation ) + iMSSettingsKeys->SetActivationSettingL( aActivation ); + MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsActivationL()" ) + } + + +// ----------------------------------------------------------------------------- +// Sets SIP Profile mode. +// ----------------------------------------------------------------------------- +// +void CMusSettingsModel::SetVSSettingsProfileL( const TInt aProfile ) + { + MUS_LOG1( + "[MUSSET] -> CMusSettingsContainer::SetVSSettingsProfileL()( %d )", + aProfile ) + iMSSettingsKeys->SetSipProfileSettingL( aProfile ); + MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsProfileL()" ) + } + + +// ----------------------------------------------------------------------------- +// Sets video autorecord mode. +// ----------------------------------------------------------------------------- +// +void CMusSettingsModel::SetVSSettingsAutoRecordL( + const MusSettingsKeys::TAutoRecord aAutoRecord ) + { + MUS_LOG1( + "[MUSSET] -> CMusSettingsContainer::SetVSSettingsAutoRecordL()( %d )", + aAutoRecord ) + iMSSettingsKeys->SetAutoRecordSettingL( aAutoRecord ); + MUS_LOG( "[MUSSET] <- CMusSettingsModel::SetVSSettingsAutoRecordL()" ) + } + + +// ----------------------------------------------------------------------------- +// Sets video location. +// ----------------------------------------------------------------------------- +// +void CMusSettingsModel::SetVSSettingsRecordedVideoSavingL( + const TInt aVideoLocation ) + { + MUS_LOG1( + "[MUSSET] -> CMusSettingsContainer::SetVSSettingsRecordedVideoSavingL()( %d )", + aVideoLocation ) + iMSSettingsKeys->SetVideoLocationSettingL( aVideoLocation ); + MUS_LOG( + "[MUSSET] <- CMusSettingsModel::SetVSSettingsRecordedVideoSavingL()" ) + } + + +// ----------------------------------------------------------------------------- +// Sets mode of auditory note. +// ----------------------------------------------------------------------------- +// +void CMusSettingsModel::SetVSSettingsNoteL( + const MusSettingsKeys::TAuditoryNotification aValue ) + { + MUS_LOG1( "[MUSSET] -> CMusSettingsContainer::SetVSSettingsNoteL()( %d )", + aValue ) + iMSSettingsKeys->SetAuditoryNotificationSettingL( aValue ); + MUS_LOG( "[MUSSET] <- CMusSettingsContainer::SetActivationItem()" ) + } + +// ---------------------------------------------------------------------------- +// Change Activation. +// ---------------------------------------------------------------------------- +// +void CMusSettingsModel::SetActivationItem( TBool aActive ) + { + MUS_LOG( "[MUSSET] -> CMusSettingsContainer::SetActivationItem()" ) + MUS_LOG1( "Profile disabled? ( %d )", + aActive ) + iProfileDisabled = aActive; + MUS_LOG( "[MUSSET] <- CMusSettingsContainer::SetActivationItem()" ) + } + +// ---------------------------------------------------------------------------- +// Get Activation item. +// ---------------------------------------------------------------------------- +// +TBool CMusSettingsModel::ActivationItem() + { + MUS_LOG( "[MUSSET] -> CMusSettingsContainer::SetActivationItem()" ) + MUS_LOG( "[MUSSET] <- CMusSettingsContainer::SetActivationItem()" ) + return iProfileDisabled; + } + +// ----------------------------------------------------------------------------- +// Returns the list of profile names +// ----------------------------------------------------------------------------- +CDesCArray* CMusSettingsModel::ListOfProfileNamesL() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::ListOfProfileNamesL()" ) + CArrayPtr* list = iHandler.ProfileArrayL(); + + CDesCArray* array = new ( ELeave ) CDesCArrayFlat( KSIPGranularity ); + CleanupStack::PushL( array ); + + for ( TInt i = 0; i < list->Count(); i++ ) + { + const TDesC8* providerName = 0; + User::LeaveIfError( + list->At(i)->GetParameter( KSIPProviderName, providerName ) ); + + HBufC8* decodedProvider = + EscapeUtils::EscapeDecodeL( *providerName ); + CleanupStack::PushL( decodedProvider ); + + HBufC* providerName16 = + EscapeUtils::ConvertToUnicodeFromUtf8L( decodedProvider->Des() ); + CleanupStack::PushL( providerName16 ); + + array->AppendL( providerName16->Des() ); + + CleanupStack::PopAndDestroy( providerName16 ); + CleanupStack::PopAndDestroy( decodedProvider ); + } + + CleanupStack::Pop( array ); + MUS_LOG( "[MUSSET] <- CMusSettingsModel::ListOfProfileNamesL()" ) + return array; + } + + +// ----------------------------------------------------------------------------- +// Returns the SIP profile name. Returns NULL buffer if no profile is found. +// ----------------------------------------------------------------------------- +HBufC* CMusSettingsModel::ProfileNameL( TInt aId ) + { + MUS_LOG1( + "[MUSSET] -> CMusSettingsContainer::ProfileNameL()( %d )", + aId ) + const TDesC8* providerName = 0; + TInt index = ProfileIndexByIdL( aId ); + HBufC* buf = NULL; + + if ( index >= 0 ) + { + if ( KErrNone == iHandler.ProfileArrayL()->At( index )-> + GetParameter( KSIPProviderName, providerName ) ) + { + HBufC8* decodedProvider = + EscapeUtils::EscapeDecodeL( *providerName ); + CleanupStack::PushL( decodedProvider ); + buf = EscapeUtils::ConvertToUnicodeFromUtf8L( *providerName ); + CleanupStack::PopAndDestroy( decodedProvider ); + } + } + + if ( buf ) + { + MUS_LOG_TDESC( "[MUSSET] <- CMusSettingsModel::ProfileNameL(): Profile name: ", buf->Des() ) + } + else + { + MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileNameL(): No profile found! " ) + } + return buf; + } + + +// ----------------------------------------------------------------------------- +// Returns default SIP profile index. +// ----------------------------------------------------------------------------- +TInt CMusSettingsModel::DefaultProfileIndex() + { + MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileIndex()" ) + return iHandler.DefaultProfileIndex(); + } + + +// ----------------------------------------------------------------------------- +// Returns id of default SIP profile. +// ----------------------------------------------------------------------------- +TUint32 CMusSettingsModel::DefaultProfileId() + { + MUS_LOG( "[MUSSET] <- CMusSettingsModel::DefaultProfileId()" ) + return iHandler.DefaultProfileId(); + } + + +// ----------------------------------------------------------------------------- +// Returns SIP profile index based on the Id of SIP profile. +// ----------------------------------------------------------------------------- +TInt CMusSettingsModel::ProfileIndexByIdL( TUint32 aId ) + { + MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIndexByIdL()" ) + return iHandler.ProfileIndexByIdL( aId ); + } + + +// ----------------------------------------------------------------------------- +// Returns SIP profile Id based on the index of SIP profile. +// ----------------------------------------------------------------------------- +TUint32 CMusSettingsModel::ProfileIdByIndex( TUint aIndex ) + { + MUS_LOG( "[MUSSET] <- CMusSettingsModel::ProfileIdByIndex()" ) + return iHandler.ProfileIdByIndex( aIndex ); + } + +// ----------------------------------------------------------------------------- +// Initialize SIP profile enabler data. +// ----------------------------------------------------------------------------- +void CMusSettingsModel::InitializeProfileEnablerL() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::InitializeProfileEnabler()" ) + if ( VSSettingsOperatorVariantL() == + MusSettingsKeys::EOperatorSpecific ) + { + TBool enabled(EFalse); + + CMusSIPProfileModel& handler = + static_cast( iHandler ); + TRAPD( error, enabled = handler.ProfileEnabledL()); + if ( error != KErrNone ) + { + MUS_LOG( "Error returned" ) + // Problems with re-reading profiles; use existing array + SetActivationItem( EFalse ); + } + else + { + MUS_LOG1("SIP registration service( %d )", + enabled ) + if( enabled ) + { + SetActivationItem( enabled ); + } + else + { + SetActivationItem( enabled); + } + } + } + MUS_LOG( "[MUSSET] <- CMusSettingsModel::InitializeProfileEnabler()" ) + } + +// ----------------------------------------------------------------------------- +// Returns memory selction dialog pointer. +// ----------------------------------------------------------------------------- +CAknMemorySelectionDialogMultiDrive* CMusSettingsModel::MemorySelectionDialogLC() + { + MUS_LOG( "[MUSSET] -> CMusSettingsModel::MemorySelectionDialogLC()" ) + TInt supportedMemTypes( AknCommonDialogsDynMem::EMemoryTypePhone| + AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage| + AknCommonDialogsDynMem::EMemoryTypeMMCExternal| + AknCommonDialogsDynMem::EMemoryTypeRemote ); + CAknMemorySelectionDialogMultiDrive* dlg = + CAknMemorySelectionDialogMultiDrive::NewL( + ECFDDialogTypeNormal, + R_VS_RECORDED_VIDEO_SAVING_SETTING_PAGE, + ETrue, + supportedMemTypes ); + CleanupStack::PushL( dlg ); + MUS_LOG( "[MUSSET] <- CMusSettingsModel::MemorySelectionDialogLC()" ) + return dlg; + } +