diff -r b31261fd4e04 -r ccd8e69b5392 mmshplugins/mmshsettingsuiplugin/src/mussipprofilemodel.cpp --- a/mmshplugins/mmshsettingsuiplugin/src/mussipprofilemodel.cpp Tue Feb 02 00:09:07 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,355 +0,0 @@ -/* -* 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: Model for managing SIP profiles. -* Version : %version: 16 % << Don't touch! Updated by Synergy at check-out. -* -*/ - - - -#include "mussipprofilemodel.h" -#include "muslogger.h" -#include "mussettings.inl" -#include -#include -#include -#include -#include -#include -#include "mussettingsmodel.h" - - -const TInt KUnknownProfileId = 0; - -/** -* VSC Enable/Disable is of type TBool -*/ -const TUint32 KMuSVSCDisable = 200; - - -// ======== MEMBER FUNCTIONS ======== - - -// ---------------------------------------------------------------------------- -// -// ---------------------------------------------------------------------------- -// -CMusSIPProfileModel::CMusSIPProfileModel() - { - } - -// ---------------------------------------------------------------------------- -// -// ---------------------------------------------------------------------------- -// -void CMusSIPProfileModel::ConstructL() - { - MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ConstructL()" ) - iEngine = CSIPManagedProfileRegistry::NewL( *this ); - iEngine->ProfilesL( iProfiles ); - SortProfilesL(); - } - -// ---------------------------------------------------------------------------- -// -// ---------------------------------------------------------------------------- -// -CMusSIPProfileModel* CMusSIPProfileModel::NewL() - { - MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::NewL()" ) - CMusSIPProfileModel* self = new( ELeave ) CMusSIPProfileModel(); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::NewL()" ) - return self; - } - -// ---------------------------------------------------------------------------- -// -// ---------------------------------------------------------------------------- -// -CMusSIPProfileModel::~CMusSIPProfileModel() - { - MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::~CMusSIPProfileModel()" ) - iProfiles.ResetAndDestroy(); - delete iEngine; - MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::~CMusSIPProfileModel()" ) - } - -// ---------------------------------------------------------------------------- -// Returns reference to the locally cached SIP profile array. -// ---------------------------------------------------------------------------- -// -RPointerArray& CMusSIPProfileModel::ProfileArrayL() - { - MUS_LOG( "[MUSSET] <-> CMusSIPProfileModel::ProfileArrayL()" ) - return iProfiles; - } - -// ---------------------------------------------------------------------------- -// Returns index to the default SIP profile in locally cached array. -// ---------------------------------------------------------------------------- -// -TInt CMusSIPProfileModel::DefaultProfileIndex() - { - MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::DefaultProfileIndex()" ) - TInt index( KErrNotFound ); - - for ( TInt i = 0; i < iProfiles.Count(); i++ ) - { - TBool defProfile( EFalse ); - if ( - KErrNone == - iProfiles[i]->GetParameter( KSIPDefaultProfile, defProfile ) - && defProfile ) - { - index = i; - break; - } - } - - MUS_LOG1( "[MUSSET] <- CMusSIPProfileModel::DefaultProfileIndex()( %d )", - index ) - return index; - } - -// ---------------------------------------------------------------------------- -// Returns id of the default SIP profile. If default SIP profile is not found -// KUnknownProfileId is returned. -// ---------------------------------------------------------------------------- -// -TUint32 CMusSIPProfileModel::DefaultProfileId() - { - MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::DefaultProfileId()" ) - TUint32 id( KUnknownProfileId ); - - for ( TInt i = 0; i < iProfiles.Count(); i++ ) - { - TBool defProfile( EFalse ); - TInt error = iProfiles[i]->GetParameter( KSIPDefaultProfile, defProfile ); - if ( error == KErrNone && defProfile ) - { - iProfiles[i]->GetParameter( KSIPProfileId, id ); - break; - } - } - - MUS_LOG1( "[MUSSET] <- CMusSIPProfileModel::DefaultProfileId()( %d )", - id ) - return id; - } - -// ----------------------------------------------------------------------------- -// Disable SIP Registration. -// ----------------------------------------------------------------------------- -// -void CMusSIPProfileModel::DisableProfileL() - { - MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::DisableProfileL " ) - CSIPManagedProfile* managedProfile = static_cast( - iEngine->ProfileL( DefaultProfileId()) ); - CleanupStack::PushL( managedProfile ); - //Disable registration from profile.dat file - MUS_LOG( "Add registration parameter profile.dat file " ) - TInt err = managedProfile->SetParameter( KMuSVSCDisable, (TBool)ETrue ); - User::LeaveIfError(err); - iEngine->SaveL( *managedProfile ); - CleanupStack::PopAndDestroy( managedProfile ); - MUS_LOG( "[MUSSET] <- CMusAvaRegisterAvailability::DisableProfileL " ) - } - -// ----------------------------------------------------------------------------- -// Enable SIP Registration. -// ----------------------------------------------------------------------------- -// -void CMusSIPProfileModel::EnableProfileL() - { - MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::EnableProfileL " ) - CSIPManagedProfile* managedProfile = static_cast( - iEngine->ProfileL( DefaultProfileId() ) ); - CleanupStack::PushL( managedProfile ); - //Disable registration from profile.dat file - MUS_LOG( "Add registration parameter profile.dat file " ) - TInt err = managedProfile->SetParameter( KMuSVSCDisable, (TBool)EFalse ); - User::LeaveIfError(err); - iEngine->SaveL( *managedProfile ); - CleanupStack::PopAndDestroy( managedProfile ); - MUS_LOG( "[MUSSET] <- CMusAvaRegisterAvailability::EnableRegisterL " ) - } - -// ----------------------------------------------------------------------------- -// if SIP Registration enabled. -// ----------------------------------------------------------------------------- -// -TBool CMusSIPProfileModel::ProfileEnabledL() - { - MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::ProfileEnabledL " ) - CSIPManagedProfile* managedProfile = static_cast( - iEngine->ProfileL( DefaultProfileId() ) ); - CleanupStack::PushL( managedProfile ); - //Activation status from profile.dat file - TBool enabled = EFalse; - MUS_LOG( "Get registration parameter from profile.dat file " ) - TInt err = managedProfile->GetParameter( KMuSVSCDisable, enabled ); - MUS_LOG1( "KMuSVSCDisable value %d )", - enabled ) - CleanupStack::PopAndDestroy( managedProfile ); - MUS_LOG( "[MUSSET] <- CMusAvaRegisterAvailability::ProfileEnabledL " ) - return enabled; - } - -// ---------------------------------------------------------------------------- -// Returns index of the default SIP profile on locally cached array. If default -// SIP profile is not found, KErrNotFound is returned. -// ---------------------------------------------------------------------------- -// -TInt CMusSIPProfileModel::ProfileIndexByIdL( TUint32 aId ) - { - MUS_LOG( "[MUSSET] -> CMusSIPProfileModel::ProfileIndexByIdL()" ) - TInt index( KErrNotFound ); - - for ( TInt i = 0; i < iProfiles.Count(); i++ ) - { - TUint32 id( KUnknownProfileId ); - TInt error = iProfiles[i]->GetParameter( KSIPProfileId, id ); - if ( error == KErrNone && id == aId ) - { - index = i; - break; - } - } - - MUS_LOG1( "[MUSSET] <- CMusSIPProfileModel::ProfileIndexByIdL()( %d )", - index ) - return index; - } - - -// ---------------------------------------------------------------------------- -// Returns profile ID by index. -// ---------------------------------------------------------------------------- -// -TUint32 CMusSIPProfileModel::ProfileIdByIndex( TUint aIndex ) - { - MUS_LOG1( "[MUSSET] -> CMusSIPProfileModel::ProfileIdByIndex()( %d )", - aIndex ) - TUint32 profileId( KUnknownProfileId ); - if ( aIndex < iProfiles.Count() ) - { - if ( iProfiles[aIndex]->GetParameter( KSIPProfileId, profileId ) ) - { - profileId = KUnknownProfileId; - } - } - - MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ProfileIdByIndex()" ) - return profileId; - } - -// ---------------------------------------------------------------------------- -// Sorts internal array of SIP profiles by id. Used algorithm is generally -// slower than quicksort and selectionsort but very feasible for expected -// amount of items to be sorted and complexity vise. -// ---------------------------------------------------------------------------- -// -void CMusSIPProfileModel::SortProfilesL() - { - TUint32 profileIdFirst( 0 ); - TUint32 profileIdSecond( 0 ); - for ( TInt a = 0; a < iProfiles.Count() - 1; a++ ) - { - for ( TInt b = a + 1; b < iProfiles.Count(); b++ ) - { - User::LeaveIfError( iProfiles[a]->GetParameter( - KSIPProfileId, profileIdFirst ) ); - User::LeaveIfError( iProfiles[b]->GetParameter( - KSIPProfileId, profileIdSecond ) ); - if ( profileIdFirst > profileIdSecond ) - { - CSIPProfile* tmp = iProfiles[b]; - iProfiles[b] = iProfiles[a]; - iProfiles[a] = tmp; - } - } - } - } - -// ---------------------------------------------------------------------------- -// From class MSIPProfileRegistryObserver. -// Notifies of an event in SIP profile registry. -// ---------------------------------------------------------------------------- -// -void CMusSIPProfileModel::ProfileRegistryEventOccurred( - TUint32 aSIPProfileId, TEvent aEvent ) - { - MUS_LOG("[MUSSET] -> CMusSIPProfileModel::ProfileRegistryEventOccurred()" ) - MUS_LOG2(" SIPProfileId is %d,Event is %d",aSIPProfileId,aEvent) - - // We revert back to default settings if the profile used by MuS is deleted - if ( aEvent == EProfileDestroyed ) - { - TRAP_IGNORE( - //if the profile is the profile used by mush - if ( MultimediaSharingSettings::SipProfileSettingL() == - aSIPProfileId ) - { - //set the profile to default - MultimediaSharingSettings::SetSipProfileSettingL( - CMusSettingsModel::KVsSipProfileDefault ); - //set mush off - MultimediaSharingSettings::SetActivationSettingL( - MusSettingsKeys::EActiveInHomeNetworks ); - } - ); - } - - if ( aEvent == EProfileCreated || - aEvent == EProfileUpdated || - aEvent == EProfileDestroyed ) - { - // Profiles have been manipulated in SIP side, we must delete client - // side profile objects and retrieve them again. If fetching fails, - // we have empty array which is better than showing wrong values to - // user. - iProfiles.ResetAndDestroy(); - TRAP_IGNORE( iEngine->ProfilesL( iProfiles ) ); - TRAP_IGNORE( SortProfilesL() ); - } - - MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ProfileRegistryEventOccurred()" ) - } - -// ---------------------------------------------------------------------------- -// From class MSIPProfileRegistryObserver. -// An asynchronous error has occurred related to SIP profile -// ---------------------------------------------------------------------------- -// -void CMusSIPProfileModel::ProfileRegistryErrorOccurred( - TUint32 /*aSIPProfileId*/, - TInt /*aError*/ ) - { - MUS_LOG( "[MUSSET] <- CMusSIPProfileModel::ProfileRegistryErrorOccurred()" ) - } - -// ---------------------------------------------------------------------------- -//Set CMusSettingsModel to handle ProfileRegistry Event. -// ---------------------------------------------------------------------------- -// -void CMusSIPProfileModel::SetCMusSettingsModel(CMusSettingsModel* aCMusSettingsModel) - { - iCMusSettingsModel = aCMusSettingsModel; - }