pushmtm/Plugins/WhiteListAdapterSrc/WhiteListAdapter.cpp
changeset 51 48e827313edd
parent 37 481242ead638
child 53 f427d27b98d8
--- a/pushmtm/Plugins/WhiteListAdapterSrc/WhiteListAdapter.cpp	Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,522 +0,0 @@
-/*
-* 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 the License "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: 
-*     Handles white list settings in provisioning.
-*
-*/
-
-
-// INCLUDE FILES
-
-	// User includes
-#include "PushInitiator.h"
-#include "PushInitiatorList.h"
-#include "PushMtmSettings.h"
-#include "WhiteListAdapter.h"
-#include "WhiteListAdapterDef.h"
-#include "WhiteListAdapterItem.h"
-#include "WhiteListAdapterLogger.h"
-#include "WhiteListAdapterPanic.h"
-#include "WhiteListAdapterUids.h"
-	// System includes
-#include <CWPCharacteristic.h>
-#include <CWPParameter.h>
-
-// CONSTANTS
-
-// 'Push enabled' flag settings
-const TInt KPushEnabledFlagLength = 1;
-const TUint16 KPushEnabledFlagTrue = '1';
-const TUint16 KPushEnabledFlagFalse = '0';
-
-// Granularity value for dynamic arrays
-const TInt KDynamicArrayGranularity = 3;
-
-// ================= MEMBER FUNCTIONS ======================
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::CWhiteListAdapter
-// ---------------------------------------------------------
-//
-CWhiteListAdapter::CWhiteListAdapter() : CWPAdapter(),
-iItems( KDynamicArrayGranularity ),
-iItemsToBeAdded( KDynamicArrayGranularity ),
-iLogicalProxyPushSupport( EPushDontCare ), iPhysicalProxyIsVisited( EFalse )
-	{
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "WhiteListAdapter c'tor" ) ) );
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::ConstructL
-// ---------------------------------------------------------
-//
-void CWhiteListAdapter::ConstructL()
-	{
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "-> WhiteListAdapter::ConstructL" ) ) );
-
-    iMsvSession = CMsvSession::OpenSyncL( *this );
-	iPushMtmSettings = CPushMtmSettings::NewL();
-
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "<- WhiteListAdapter::ConstructL" ) ) );
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::NewL
-// ---------------------------------------------------------
-//
-CWhiteListAdapter* CWhiteListAdapter::NewL()
-	{
-	CWhiteListAdapter* self = new (ELeave) CWhiteListAdapter;
-
-	CleanupStack::PushL( self );
-
-	self->ConstructL();
-
-	CleanupStack::Pop();	// self
-
-	return self;
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::~CWhiteListAdapter
-// ---------------------------------------------------------
-//
-CWhiteListAdapter::~CWhiteListAdapter()
-	{
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "-> WhiteListAdapter d'tor" ) ) );
-
-	delete iCurrentItem;
-
-	delete iPushMtmSettings; // It has to be deleted before iMsvSession, 
-    // because it uses iMsvSession->FileSession().
-	delete iMsvSession;
-
-    CLOG( ( ELogDetailed, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "WhiteListAdapter d'tor, iItemsToBeAdded.Count:%d" ),
-        iItemsToBeAdded.Count() ) );
-    iItemsToBeAdded.ResetAndDestroy();
-    iItemsToBeAdded.Close();
-
-    CLOG( ( ELogDetailed, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "WhiteListAdapter d'tor, iItems.Count:%d" ), iItems.Count() ) );
-	iItems.ResetAndDestroy();
-	iItems.Close();
-
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "<- WhiteListAdapter d'tor" ) ) );
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::ItemCount
-// ---------------------------------------------------------
-//
-TInt CWhiteListAdapter::ItemCount() const
-	{
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "WhiteListAdapter::ItemCount %d" ), iItems.Count() ) );
-
-	return iItems.Count();
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::SummaryTitle
-// ---------------------------------------------------------
-//
-const TDesC16& CWhiteListAdapter::SummaryTitle( TInt /*aIndex*/ ) const
-	{
-    // As WL text will never be shown, we simply return an empty string here.
-	return KNullDesC16();
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::SummaryText
-// ---------------------------------------------------------
-//
-const TDesC16& CWhiteListAdapter::SummaryText( TInt /*aIndex*/ ) const
-	{
-    // As WL text will never be shown, we simply return an empty string here.
-	return KNullDesC16();
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::SaveL
-// ---------------------------------------------------------
-//
-void CWhiteListAdapter::SaveL( TInt aItem )
-	{
-	__ASSERT_DEBUG( 0 <= aItem && aItem < iItems.Count(),
-				Panic( EArrayIndexOutOfBounds ) );
-
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "-> WhiteListAdapter::SaveL %d" ), aItem ) );
-
-	CPushInitiator* pi = new (ELeave) CPushInitiator;
-	CleanupStack::PushL( pi );
-	pi->SetAddressL( iItems[aItem]->Address(),
-					 iItems[aItem]->AddressType() );
-
-	TUint32 entryId = iPushMtmSettings->PushInitiatorList().AddL( pi );
-	CleanupStack::Pop( pi );	// pi, ownership taken over
-    // Save the ID of the added entry:
-    iItems[aItem]->SetId( entryId );
-
-	iPushMtmSettings->SaveL();
-
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "<- WhiteListAdapter::SaveL" ) ) );
-    }
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::CanSetAsDefault
-// ---------------------------------------------------------
-//
-TBool CWhiteListAdapter::CanSetAsDefault( TInt /*aItem*/ ) const
-	{
-	return EFalse;
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::SetAsDefaultL
-// ---------------------------------------------------------
-//
-void CWhiteListAdapter::SetAsDefaultL( TInt /*aItem*/ )
-	{
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::DetailsL
-// ---------------------------------------------------------
-//
-TInt CWhiteListAdapter::DetailsL( TInt /*aItem*/,
-                                  MWPPairVisitor& /*aVisitor*/ )
-	{
-	return KErrNotSupported;
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::ContextExtension
-// ---------------------------------------------------------
-//
-TInt CWhiteListAdapter::ContextExtension( MWPContextExtension*& aExtension )
-    {
-    aExtension = this;
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::VisitL
-// ---------------------------------------------------------
-//
-void CWhiteListAdapter::VisitL( CWPCharacteristic& aCharacteristic )
-	{
-	if ( aCharacteristic.Type() == KWPPxLogical )
-		{
-        CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-            _L( "-> WhiteListAdapter::VisitL PXLOGICAL" ) ) );
-
-		aCharacteristic.AcceptL( *this );
-
-        CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-            _L( "WhiteListAdapter::VisitL PXLOGICAL visited, push support is %d" ),
-            iLogicalProxyPushSupport ) );
-
-        // iItemsToBeAdded contains physical proxies whose push support
-        // is either PushEnabled or PushDontCare (i.e. PushDisabled proxies
-        // are not present in this array).
-        if ( iLogicalProxyPushSupport == EPushEnabled )
-            {
-            // Knowing that the logical proxy's push support is PushEnabled,
-            // we have to add each element of the above-mentioned array.
-            for ( TInt i = 0; i < iItemsToBeAdded.Count(); i++ )
-                {
-                // If addition fails, then we delete the item. Otherwise,
-                // the ownership has been taken over by iItems array.
-                if ( iItems.Append( iItemsToBeAdded[i] ) != KErrNone )
-                    {
-                    delete iItemsToBeAdded[i];
-                    }
-                }
-            }
-        else
-            {
-            // We're here : logical proxy's push support is either PushDontCare
-            // or PushDisabled. In this case we have to add only those elements
-            // in the array whose push support is PushEnabled. This is because
-            // physical proxy's push support definition is stronger than the
-            // logical proxy's definition.
-            for ( TInt i = 0; i < iItemsToBeAdded.Count(); i++ )
-                {
-                TWhiteListAdapterItem* item = iItemsToBeAdded[i];
-                if ( item->PushSupport() == EPushEnabled )
-                    {
-                    // If addition fails, then we delete the item. Otherwise,
-                    // the ownership has been taken over by iItems array.
-                    if ( iItems.Append( item ) != KErrNone )
-                        {
-                        delete item;
-                        }
-                    }
-                else
-                    {
-                    delete item;
-                    }
-                }
-            }
-
-        // There is only one thing we need to do here : reset the array.
-        // At this point, each element in the array is invalid : if the
-        // element happened to be valid, then the other array (iItems)
-        // took over the ownership. Otherwise (i.e. the element was
-        // invalid), the element got deleted manually.
-        // Thus, we can safely reset the array.
-        iItemsToBeAdded.Reset();
-
-		iLogicalProxyPushSupport = EPushDontCare;
-
-        CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-            _L( "<- WhiteListAdapter::VisitL PXLOGICAL" ) ) );
-		}
-	else if ( aCharacteristic.Type() == KWPPxPhysical )
-		{
-		// This deletion is for safety's sake : if one of the leaving methods
-		// in this section (below) has left, then it may happen that this
-		// method is called again and iCurrentItem is not NULL. If it is the
-		// case, we can avoid having an orphaned memory area by deleting the
-		// current item before allocating a new one.
-		// However, in most cases iCurrentItem will be NULL.
-        CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-            _L( "-> WhiteListAdapter::VisitL PXPHYSICAL" ) ) );
-
-        delete iCurrentItem;
-		iCurrentItem = NULL;
-		iCurrentItem = new (ELeave) TWhiteListAdapterItem();
-
-		iPhysicalProxyIsVisited = ETrue;
-
-		aCharacteristic.AcceptL( *this );
-
-		iPhysicalProxyIsVisited = EFalse;
-
-		if ( iCurrentItem->Valid() )
-			{
-			User::LeaveIfError( iItemsToBeAdded.Append( iCurrentItem ) );
-            iCurrentItem = NULL; // Ownership transferred.
-			
-            CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-              _L( "WhiteListAdapter::VisitL PXPHYSICAL valid & added" ) ) );
-			}
-		else
-			{
-            CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-                _L( "WhiteListAdapter::VisitL PXPHYSICAL invalid" ) ) );
-			// invalid physical proxy (at least from our point of view)
-			delete iCurrentItem;
-            iCurrentItem = NULL;
-			}
-
-        CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-            _L( "<- WhiteListAdapter::VisitL PXPHYSICAL" ) ) );
-		}
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::VisitL
-// ---------------------------------------------------------
-//
-void CWhiteListAdapter::VisitL( CWPParameter& aParameter )
-	{
-	switch ( aParameter.ID() )
-		{
-		case EWPParameterPhysicalProxyID :
-			{
-			__ASSERT_DEBUG( iCurrentItem, Panic( ENullProxy ) );
-
-            CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-                _L( "WhiteListAdapter::VisitL PhysicalProxyID" ) ) );
-
-			if ( iCurrentItem )
-				{
-				iCurrentItem->SetProxyId( aParameter.Value() );
-				}
-
-			break;
-			}
-		case EWPParameterPxAddr :
-			{
-			__ASSERT_DEBUG( iCurrentItem, Panic( ENullProxy ) );
-
-            CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-                _L( "WhiteListAdapter::VisitL PxAddr" ) ) );
-
-            if ( iCurrentItem )
-				{
-				iCurrentItem->SetAddress( aParameter.Value() );
-				}
-
-			break;
-			}
-		case EWPParameterPxAddrType :
-			{
-			__ASSERT_DEBUG( iCurrentItem, Panic( ENullProxy ) );
-
-            CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-                _L( "WhiteListAdapter::VisitL PxAddrType" ) ) );
-
-			if ( iCurrentItem )
-				{
-				iCurrentItem->SetAddressType( aParameter.Value() );
-				}
-
-			break;
-			}
-		case EWPParameterPushEnabled :
-			{
-			if ( iCurrentItem )
-				{
-                CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-                    _L( "WhiteListAdapter::VisitL Physical PushEnabled" ) ) );
-
-                // it is a physical proxy
-				iCurrentItem->SetPushSupport
-								( ResolvePushSupport( aParameter.Value() ) );
-				}
-			else
-				{
-                CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-                    _L( "WhiteListAdapter::VisitL Logical PushEnabled" ) ) );
-
-				// it is a logical proxy
-				iLogicalProxyPushSupport =
-									ResolvePushSupport( aParameter.Value() );
-				}
-
-			break;
-			}
-		default :
-			break;
-		}
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::VisitLinkL
-// ---------------------------------------------------------
-//
-void CWhiteListAdapter::VisitLinkL( CWPCharacteristic& /*aCharacteristic*/ )
-	{
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::HandleSessionEventL
-// ---------------------------------------------------------
-//
-void CWhiteListAdapter::HandleSessionEventL( TMsvSessionEvent /*aEvent*/,
-											TAny* /*aArg1*/,
-											TAny* /*aArg2*/,
-											TAny* /*aArg3*/ )
-	{
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::ResolvePushSupport
-// ---------------------------------------------------------
-//
-TPushSupport CWhiteListAdapter::ResolvePushSupport( const TDesC& aPushSupport )
-	{
-	TPushSupport support = EPushDontCare;
-
-	if ( aPushSupport.Length() == KPushEnabledFlagLength )
-		{
-		if ( aPushSupport[0] == KPushEnabledFlagTrue )
-			{
-			support = EPushEnabled;
-			}
-		else if ( aPushSupport[0] == KPushEnabledFlagFalse )
-			{
-			support = EPushDisabled;
-			}
-		}
-
-	return support;
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::SaveDataL
-// ---------------------------------------------------------
-//
-const TDesC8& CWhiteListAdapter::SaveDataL( TInt aIndex ) const
-	{
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "WhiteListAdapter::SaveDataL %d %d %d" ), 
-        iItems.Count(), aIndex, iItems[aIndex]->Id() ) );
-    return ( iItems[aIndex]->IdBuf() );
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::DeleteL
-// ---------------------------------------------------------
-//
-void CWhiteListAdapter::DeleteL( const TDesC8& aSaveData )
-	{
-    // Copy source into a package buffer:
-    TPckgBuf<TUint32> entryIdBuf;
-    entryIdBuf.Copy( aSaveData );
-    // Extract the entry ID:
-    TUint32 entryId( entryIdBuf() );
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "WhiteListAdapter::DeleteL ID %d" ), entryId ) );
-
-    // Now entryId holds the ID - we can remove it from WL:
-    CPushInitiatorList& whiteList = iPushMtmSettings->PushInitiatorList();
-    // Find the index of the Initiator with the given ID.
-    TInt index( KErrNotFound );
-    // As the entries are unique in WL by the ID, it's enough 
-    // to continue the loop until first hit.
-    const TInt count( whiteList.Count() );
-    for ( TInt i = 0; i < count; ++i )
-        {
-        const CPushInitiator& initiator = whiteList.At(i);
-        if ( initiator.EntryID() == entryId )
-            {
-            index = i;
-            // Found:
-            break;
-            }
-        }
-
-    CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-        _L( "WhiteListAdapter::DeleteL index %d" ), index ) );
-    if ( index != KErrNotFound )
-        {
-        whiteList.Delete( index );
-        // Commit changes.
-        iPushMtmSettings->SaveL();
-        CLOG( ( ELogBasic, WHITELISTADAPTER_LOG_LEVEL,
-            _L( "WhiteListAdapter::DeleteL Saved..." ) ) );
-        }
-	}
-
-// ---------------------------------------------------------
-// CWhiteListAdapter::Uid
-// ---------------------------------------------------------
-//
-TUint32 CWhiteListAdapter::Uid() const
-	{
-    return (TUint32)KWhiteListAdapterImplementationUid;
-	}
-
-// End of file