presencesettingsui/src/psuigspluginmodel.cpp
branchGCC_SURGE
changeset 28 d9861ae9169c
parent 23 77cb48a03620
parent 26 04ca1926b01c
--- a/presencesettingsui/src/psuigspluginmodel.cpp	Thu Jul 01 14:09:06 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,753 +0,0 @@
-/*
-* Copyright (c) 2006 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:    Presence settings UI model implementation.
-*
-*/
-
-
-
-
-// INCLUDE FILES
-#include <escapeutils.h>
-#include <sipmanagedprofileregistry.h>
-#include <sipprofileregistryobserver.h>
-#include <sipmanagedprofile.h>
-#include <sipprofile.h>
-#include <StringLoader.h>
-#include <psuigspluginrsc.rsg>
-#include <XdmSettingsApi.h>
-#include "psuigspluginmodel.h"
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::CPSUIGSPluginModel()
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// ---------------------------------------------------------------------------
-//
-CPSUIGSPluginModel::CPSUIGSPluginModel()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::~CPSUIGSPluginModel()
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CPSUIGSPluginModel::~CPSUIGSPluginModel()
-    {
-    delete iSIPEngine;
-    if ( iSIPProfiles )
-        {
-        iSIPProfiles->ResetAndDestroy();
-        delete iSIPProfiles;
-        }     
-        
-    iXdmIdArray.Close();
-    delete iXdmNameArray;
-    
-    iPSIdArray.Close();
-    delete iPSNameArray;    
-    delete iVisibleSettingName;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::ConstructL
-// Symbian 2nd phase constructor can leave.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPluginModel::ConstructL()
-    {
-    RetrieveSettingsL();
-    iVisibleSettingName = HBufC::NewL( 
-        KPresSetNameMaxLength + 2 );// max chars + KColumnListSeparator
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::NewL()
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CPSUIGSPluginModel* CPSUIGSPluginModel::NewL()
-    {
-    CPSUIGSPluginModel* self = new ( ELeave ) CPSUIGSPluginModel();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self ); // self
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::RetrieveSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPluginModel::RetrieveSettingsL()
-    {
-    RefreshPSArraysL();
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::SaveSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//    
-void CPSUIGSPluginModel::SaveSettingsL()
-    {
-    if ( iSettingId == 0 )
-        {// new settings
-        iSettingId = PresSettingsApi::CreateSetL( iSettingSet );
-        }
-    else
-        {// old & edited settings
-        PresSettingsApi::UpdateSetL( iSettingSet, iSettingId );
-        }
-    RefreshPSArraysL();
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::CreateDefaultSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//    
-void CPSUIGSPluginModel::CreateDefaultSettingsL()
-    {
-    iSettingId = 0; // new settings
-    
-    iSettingSet.iSetName.Zero();
-    HBufC* name = CreateSettingNameLC();
-    iSettingSet.iSetName.Append( *name );
-    CleanupStack::PopAndDestroy( name );// name
-    
-    iSettingSet.iSipProfile = KErrNotFound;
-    iSettingSet.iXDMSetting = KErrNotFound;
-    iSettingSet.iObjectSize = KErrNotFound;
-    iSettingSet.iContSrvrAdd.Zero();
-    iSettingSet.iPublicationInt = KErrNotFound;
-    iSettingSet.iMaxSubscriptions = KErrNotFound;
-    iSettingSet.iMaxContactsInList = KErrNotFound;
-    iSettingSet.iDomainSyntax.Zero();
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::DuplicateExistingSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//    
-void CPSUIGSPluginModel::DuplicateExistingSettingsL( TInt aIndex )
-    {
-    __ASSERT_DEBUG( aIndex < iPSIdArray.Count() ,User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow ));
-    
-    iSettingId = 0; // new settings
-    TPresSettingsSet originalSettings;
-    PresSettingsApi::SettingsSetL( iPSIdArray[ aIndex ], originalSettings );
-    
-    iSettingSet.iSetName.Zero();
-    HBufC* name = CreateSettingNameLC( originalSettings.iSetName.AllocL() );
-    iSettingSet.iSetName.Append( *name );
-    CleanupStack::PopAndDestroy( name );// name
-    
-    iSettingSet.iSipProfile = originalSettings.iSipProfile;
-    iSettingSet.iXDMSetting = originalSettings.iXDMSetting;
-    iSettingSet.iObjectSize = originalSettings.iObjectSize;
-    iSettingSet.iContSrvrAdd = originalSettings.iContSrvrAdd;
-    iSettingSet.iPublicationInt = originalSettings.iPublicationInt;
-    iSettingSet.iMaxSubscriptions = originalSettings.iMaxSubscriptions;
-    iSettingSet.iMaxContactsInList = originalSettings.iMaxContactsInList;
-    iSettingSet.iDomainSyntax = originalSettings.iDomainSyntax;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::AllCompulsoryFieldsFilled()
-// See header for details.
-// ---------------------------------------------------------------------------
-//    
-TBool CPSUIGSPluginModel::AllCompulsoryFieldsFilled()
-    {
-    TBool returnValue = ETrue;
-    for ( TInt i = EPSUIServerNameId ; i <= EPSUIDomainSyntaxId && returnValue ; i++ )
-        {
-        switch( i ) 
-            {
-            case EPSUIServerNameId:
-                returnValue = ( iSettingSet.iSetName.Length() != 0 );
-                break;
-            case EPSUISIPProfileId:
-                returnValue = ( iSettingSet.iSipProfile != KErrNotFound );
-                break;
-            case EPSUIObjectSizeId:
-                returnValue = ( iSettingSet.iObjectSize != KErrNotFound );
-                break;
-            case EPSUIDomainSyntaxId:
-                returnValue = ( iSettingSet.iDomainSyntax.Length() != 0 );
-                break;
-            default:
-                // do nothing with non-compulsory ones
-                break;
-            }        
-        }    
-    return returnValue;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::IsItDuplicatePSName()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-TBool CPSUIGSPluginModel::IsItDuplicatePSName()
-    {
-    TBool found = KErrNone;
-    TInt pos = 0;
-    found = ( iPSNameArray->Find( iSettingSet.iSetName, pos ) == KErrNone );
-    if ( found )
-        {// dupe found, let's check it's not the same setting
-        __ASSERT_DEBUG( pos < iPSIdArray.Count() ,User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow ));
-        found = !( iSettingId == iPSIdArray[ pos ]);
-        }
-    return found;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::EditSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-void CPSUIGSPluginModel::EditSettingsL( TInt aIndex )
-    {
-    __ASSERT_DEBUG( aIndex < iPSIdArray.Count() ,User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow ));
-    TInt settingId = iPSIdArray[ aIndex ];
-    PresSettingsApi::SettingsSetL( settingId, iSettingSet );
-    iSettingId = settingId;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::DeleteSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-void CPSUIGSPluginModel::DeleteSettingsL( TInt aToBeDeleted, TBool aIsIndex )
-    {
-    if ( aIsIndex )
-        {// is index
-        __ASSERT_DEBUG( aToBeDeleted < iPSIdArray.Count() ,
-            User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow ));
-        PresSettingsApi::RemoveSetL( iPSIdArray[ aToBeDeleted ]);
-        }
-    else
-        {// is id
-        PresSettingsApi::RemoveSetL( aToBeDeleted );
-        }
-    RefreshPSArraysL();
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::RefreshPSArraysL()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-void CPSUIGSPluginModel::RefreshPSArraysL()
-    {
-    delete iPSNameArray;
-    iPSNameArray = NULL;
-    iPSIdArray.Reset();
-    
-    iPSNameArray = PresSettingsApi::GetAllSetsNamesLC( iPSIdArray );
-    CleanupStack::Pop( iPSNameArray );// iPSNameArray
-    ReArrangePresenceSettingsL();
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::ReArrangePresenceSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-void CPSUIGSPluginModel::ReArrangePresenceSettingsL()
-    {
-    const TInt settingsCount = iPSNameArray->Count();
-    __ASSERT_DEBUG( 
-        settingsCount == iPSIdArray.Count(), 
-        User::Panic( KPSUIGSPluginPanicCategory, KErrArgument ));
-   
-    // make a tables of the original pairs
-    RPointerArray<CPSUINameIDPair> pairArray;
-    TCleanupItem clItem( ResetAndDestroy, &pairArray );
-    CleanupStack::PushL( clItem );
-    CPSUINameIDPair* pair = NULL;
-    for( TInt i = 0;i < settingsCount;i++ )
-        {
-        pair = new ( ELeave ) CPSUINameIDPair;
-        CleanupStack::PushL( pair );
-        pair->iID = iPSIdArray[ i ];
-        pair->iName = iPSNameArray->MdcaPoint( i ).AllocL();
-        pairArray.AppendL( pair );
-        CleanupStack::Pop( pair );// pair is in array's responsibility now
-        }
-
-    // sort the original
-    iPSNameArray->Sort( ECmpCollated );
-    
-    // re-arrange the iPSIdArray based on order of iPSNameArray
-    iPSIdArray.Reset();
-    for( TInt i = 0;i < settingsCount;i++ )
-        {
-        for( TInt ii = 0;ii < pairArray.Count();ii++ )
-            {
-            if ( !iPSNameArray->MdcaPoint( i ).Compare(  
-                *pairArray[ii]->iName ))
-                {
-                iPSIdArray.AppendL( pairArray[ii]->iID );
-                delete pairArray[ii];
-                pairArray.Remove(ii);
-                break;// no need to go through if already found
-                }
-            }
-        }
-    CleanupStack::PopAndDestroy( &pairArray );
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::MdcaCount()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-TInt CPSUIGSPluginModel::MdcaCount() const
-    {
-    return iPSNameArray->MdcaCount();
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::MdcaPoint()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-TPtrC16 CPSUIGSPluginModel::MdcaPoint( TInt aIndex ) const
-    {
-    TPtr tempText = iVisibleSettingName->Des();
-    tempText.Zero();
-    tempText.Append( KColumnListSeparator );
-    tempText.Append( iPSNameArray->MdcaPoint( aIndex ));
-
-    return tempText;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::CreateSettingNameLC()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-HBufC* CPSUIGSPluginModel::CreateSettingNameLC( HBufC* aOriginalName )
-    {
-    _LIT( KPSUIGSPluginNumbering, "(%N)" );
-    const TInt KPSUIFormattingExtraLength = 6;
-    
-    // prepare
-    HBufC* settingName = aOriginalName; 
-
-    if ( settingName->Length() + KPSUIFormattingExtraLength > KPresSetNameMaxLength )
-        {//if there is no room for duplicate-numbering, let user take care of that when saving settings
-        CleanupStack::PushL( settingName );
-        return settingName;
-        }
-    
-    settingName = settingName->ReAlloc( 
-        settingName->Length() + KPSUIFormattingExtraLength );// enough for formatting
-    CleanupStack::PushL( settingName );
-    HBufC* tempSetName = NULL;
-    TInt pos = 0;// used as dummy
-    TInt found = 0;
-    TInt index = 1;
-    TPtr ptr = settingName->Des();
-    
-    // do the actual checking of name
-    found = iPSNameArray->Find( *settingName, pos );
-    while ( found == 0 )
-        {
-        if ( !tempSetName )
-            {
-            if ( aOriginalName )
-                {// aOriginalName given
-                tempSetName = GetPrefixL( settingName );
-                tempSetName = tempSetName->ReAlloc( 
-                    tempSetName->Length() + KPSUIFormattingExtraLength );// enough for formatting
-                CleanupStack::PushL( tempSetName );
-                tempSetName->Des().Append( KPSUIGSPluginNumbering );
-                }
-            else
-                {// aOriginalName not given
-                }
-            }
-        StringLoader::Format( ptr, *tempSetName, -1, index );
-        found = iPSNameArray->Find( *settingName, pos );
-        index++;
-        }
-
-    // cleanup
-    if ( tempSetName )
-        {
-        CleanupStack::PopAndDestroy( tempSetName ); //tempSetName
-        }
-
-    return settingName;    
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::GetPrefixL()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-HBufC* CPSUIGSPluginModel::GetPrefixL( HBufC* aName )
-    {
-    TPtrC prefix = aName->Des();
-    TInt lastBrace = aName->LocateReverse('(');
-    if ( lastBrace != KErrNotFound )
-        {
-        // aName looks like "<prefix><brace><something>".
-        // See if <something> is an integer number and
-        // <something> ends to a brace.
-        TPtrC num = aName->Right( aName->Length() - lastBrace - 1 );
-        TInt val;
-        TLex lex( num );
-        if ( lex.Val( val ) == KErrNone && num.Locate(')') == num.Length() - 1 )
-            {
-            // Yes, the trailer is an integer.
-            prefix.Set( aName->Left( lastBrace ) );
-            }
-        }
-    return prefix.AllocL();
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::CurrentSettingName()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-HBufC* CPSUIGSPluginModel::SettingNameLC( TInt aIndex )
-    {
-    return iPSNameArray->MdcaPoint( aIndex ).AllocLC();
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::SettingNames()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-CDesCArray* CPSUIGSPluginModel::SettingNames()
-    {
-    return iPSNameArray;// ownership stays in CPSUIGSPluginModel
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::SettingsSet()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-TPresSettingsSet& CPSUIGSPluginModel::SettingsSet()
-    {
-    return iSettingSet;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::ClearInvalidSIPAndXDMSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-void CPSUIGSPluginModel::ClearInvalidSIPAndXDMSettingsL()
-    {
-    // SIP
-    ReadSipArrayFromEngineL();
-    if ( iSettingSet.iSipProfile != KErrNotFound && 
-        KErrNotFound == SipProfileIndex( iSettingSet.iSipProfile ))
-        {
-        iSettingSet.iSipProfile = KErrNotFound;
-        }
-    // XDM
-    XdmCollectionNamesL();
-    if ( iSettingSet.iXDMSetting != KErrNotFound && 
-        KErrNotFound == XdmSettingIndex( iSettingSet.iXDMSetting ))
-        {
-        iSettingSet.iXDMSetting = KErrNotFound;
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::SettingsId()
-// See header for details.
-// ---------------------------------------------------------------------------
-// 
-TInt& CPSUIGSPluginModel::SettingsId()
-    {
-    return iSettingId;
-    }    
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::SettingsIDArray()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-RArray<TInt>& CPSUIGSPluginModel::SettingsIDArray()
-    {
-    return iPSIdArray;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::SipProfilesLC()
-// See header for details.
-// ---------------------------------------------------------------------------
-//   
-CDesCArray* CPSUIGSPluginModel::SipProfilesLC()
-    {
-    ReadSipArrayFromEngineL();
-    CDesCArray* array = new ( ELeave ) CDesCArrayFlat( 2 );
-    CleanupStack::PushL( array );
-    const TInt arrayCount = iSIPProfiles->Count();
-    for ( TInt i = 0; i < arrayCount; i++ )
-        {
-        const TDesC8* profileName;
-        iSIPProfiles->At( i )->GetParameter( KSIPProviderName, profileName );
-        HBufC* profileName16 = 
-            EscapeUtils::ConvertToUnicodeFromUtf8L( *profileName );
-        CleanupStack::PushL( profileName16 );
-        array->AppendL( profileName16->Des() );
-        CleanupStack::PopAndDestroy( profileName16 );// profileName16
-        }
-    return array;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::SipProfileId()
-// See header for details.
-// ---------------------------------------------------------------------------
-//   
-TInt CPSUIGSPluginModel::SipProfileId( TInt aIndex )
-    {
-    __ASSERT_DEBUG( iSIPProfiles, User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound ));
-
-    TUint32 id = 0;
-    if ( aIndex < iSIPProfiles->Count())
-        {        
-        iSIPProfiles->At( aIndex )->GetParameter( KSIPProfileId, id );
-        }
-
-    __ASSERT_DEBUG( id < KMaxTInt ,User::Panic( KPSUIGSPluginPanicCategory, KErrOverflow ));
-    return id ? TInt( id ) : KErrNotFound;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::SipProfileIndex()
-// See header for details.
-// ---------------------------------------------------------------------------
-//   
-TInt CPSUIGSPluginModel::SipProfileIndex( TInt aId )
-    {
-    __ASSERT_DEBUG( iSIPProfiles, User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound ));    
-    const TInt arrayCount = iSIPProfiles->Count();
-    TUint32 idValue = aId;
-    for ( TInt i = 0; i < arrayCount; i++ )
-        {
-        TUint32 tempValue;
-        iSIPProfiles->At( i )->GetParameter( KSIPProfileId, tempValue );
-        if ( tempValue == idValue )
-            {
-            return i;
-            }
-        }
-    return KErrNotFound;
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::SipProfileNameL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//   
-HBufC* CPSUIGSPluginModel::SipProfileNameL( TInt aId )
-    {
-    const TInt arrayCount = iSIPProfiles->Count();
-    TUint32 idValue = aId;
-    for ( TInt i = 0; i < arrayCount; i++ )
-        {
-        TUint32 tempValue;
-        iSIPProfiles->At( i )->GetParameter( KSIPProfileId, tempValue );
-        if ( tempValue == idValue )
-            {
-            const TDesC8* profileName;
-            iSIPProfiles->At( i )->GetParameter( KSIPProviderName, profileName );
-            return EscapeUtils::ConvertToUnicodeFromUtf8L( *profileName );// name found
-            }
-        }
-    return HBufC::NewL( 0 );// name not found
-    }
- 
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::ReadSipArrayFromEngineL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//       
-void CPSUIGSPluginModel::ReadSipArrayFromEngineL()
-    {
-    RArray<TSIPProfileTypeInfo> array;
-    CleanupClosePushL( array );
-    
-    if ( !iSIPEngine )
-        {
-        iSIPEngine = CSIPManagedProfileRegistry::NewL( *this );
-        }
-    
-    // Get the supported profile types
-    iSIPEngine->SupportedProfileTypesL( array );
-    
-    // check iSIPProfiles, if exists delete
-    if ( iSIPProfiles )
-        {
-        iSIPProfiles->ResetAndDestroy();
-        delete iSIPProfiles;
-        }
-
-    // Create the profile pointer array
-    iSIPProfiles = 
-        new ( ELeave ) CArrayPtrFlat<CSIPManagedProfile>( 2 );
-
-    RPointerArray<CSIPProfile> profilePointerArray;
-    TCleanupItem clItem( ResetAndDestroy, &profilePointerArray );
-    CleanupStack::PushL( clItem );
-    
-    // Get all profiles based on profile types
-    const TInt arrayCount = array.Count();
-    for ( TInt i = 0; i < arrayCount; i++ )
-        {        
-        iSIPEngine->ProfilesL( array[i], profilePointerArray );
-        while ( profilePointerArray.Count() > 0 )
-            {
-            CSIPManagedProfile* profile = 
-                static_cast<CSIPManagedProfile*>( profilePointerArray[ 0 ]);
-            iSIPProfiles->AppendL( profile );
-            profilePointerArray.Remove( 0 ); 
-            }                    
-        profilePointerArray.Reset();    
-        }
-
-    CleanupStack::PopAndDestroy( 2, &array ); // array
-    }    
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::ResetAndDestroy()
-// See header for details.
-// ---------------------------------------------------------------------------
-//   
-void CPSUIGSPluginModel::ResetAndDestroy( 
-    TAny* aPointerArray )
-    {
-    RPointerArray<CSIPProfile>* array =
-        static_cast<RPointerArray<CSIPProfile>*>( aPointerArray );
-    array->ResetAndDestroy();
-    array->Close();
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::ProfileRegistryEventOccurred()
-// See header for details.
-// ---------------------------------------------------------------------------
-//   
-void CPSUIGSPluginModel::ProfileRegistryEventOccurred( 
-    TUint32 /*aSIPProfileId*/, TEvent aEvent )
-    {
-    switch( aEvent )    
-        {
-        case EProfileCreated:
-        case EProfileUpdated:   
-        case EProfileDestroyed:
-            // update sip profile array
-            TRAP_IGNORE( ReadSipArrayFromEngineL() );
-            break;
-        default:
-            // do nothing.
-            break;
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::ProfileRegistryErrorOccurred()
-// See header for details.
-// ---------------------------------------------------------------------------
-//       
-void CPSUIGSPluginModel::ProfileRegistryErrorOccurred(                  
-    TUint32 /*aSIPProfileId*/,
-    TInt /*aError*/ )
-    {        
-    // update sip profile array
-    TRAP_IGNORE( ReadSipArrayFromEngineL() );
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::XdmCollectionNamesL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//  
-CDesCArray* CPSUIGSPluginModel::XdmCollectionNamesL()
-    {
-    delete iXdmNameArray;
-    iXdmNameArray = NULL;
-    iXdmIdArray.Reset();
-    
-    iXdmNameArray = TXdmSettingsApi::CollectionNamesLC( iXdmIdArray );
-    CleanupStack::Pop( iXdmNameArray );// iXdmNameArray
-    return iXdmNameArray;// pointer is given, but ownership stays here
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::XdmCollectionNameL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//  
-HBufC* CPSUIGSPluginModel::XdmCollectionNameL( TInt aId )
-    {
-    HBufC* buf = NULL;
-    TRAPD( err, buf = TXdmSettingsApi::PropertyL( aId, EXdmPropName ));
-    return ( err == KErrNone ) ? buf : HBufC::NewL( 0 );
-    }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::XdmSettingIndex()
-// See header for details.
-// ---------------------------------------------------------------------------
-//  
-TInt CPSUIGSPluginModel::XdmSettingIndex( TInt aId )
-    {
-    const TInt arrayCount = iXdmIdArray.Count();
-    for ( TInt i = 0; i < arrayCount; i++ )
-        {
-        if ( aId == iXdmIdArray[ i ] )
-            {
-            return i;
-            }
-        }    
-    return KErrNotFound;    
-    }
-    
-// ---------------------------------------------------------------------------
-// CPSUIGSPluginModel::XdmSettingId()
-// See header for details.
-// ---------------------------------------------------------------------------
-//  
-TInt CPSUIGSPluginModel::XdmSettingId( TInt aIndex )
-    {
-    TInt id = KErrNotFound;
-    if ( aIndex+1 <= iXdmIdArray.Count())
-        {        
-        id = iXdmIdArray[ aIndex ];
-        }
-    return id;
-    }
-
-// End of file