cmmanager/cmmgr/Framework/Src/cmconnectionmethodext.cpp
changeset 20 9c97ad6591ae
parent 18 fcbbe021d614
child 21 b8e8e15e80f2
child 23 7ec726f93df1
child 28 860702281757
--- a/cmmanager/cmmgr/Framework/Src/cmconnectionmethodext.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,438 +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:  Implementation of RCmConnectionMethodExt
-*
-*/
-
-// INCLUDES
-#include "cmmanagerimpl.h"
-#include <cmdestinationext.h>
-#include <cmpluginbase.h>
-#include <cmconnectionmethodext.h>
-#include "cmdestinationimpl.h"
-
-using namespace CMManager;
-// ======== MEMBER FUNCTIONS ========
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::RCmConnectionMethodExt()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt::RCmConnectionMethodExt(
-                                const RCmConnectionMethodExt& aItem)
-    : iImplementation( aItem.iImplementation )
-    {
-    iImplementation->IncrementRefCounter();
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::Close()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethodExt::Close()
-    {
-    if( !iImplementation )
-        {
-        return;
-        }
-
-    TRAP_IGNORE( iImplementation->CmMgr().RemoveCMFromPoolL(iImplementation) );
-    iImplementation = NULL;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::CreateCopyL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt RCmConnectionMethodExt::CreateCopyL()
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    RCmConnectionMethodExt cm;
-    
-    cm.iImplementation = iImplementation->CreateCopyL();
-
-    cm.iImplementation->CmMgr().InsertConnectionMethodL(cm.iImplementation);
-    
-    return cm;
-    }
-    
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::GetIntAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TUint32 
-            RCmConnectionMethodExt::GetIntAttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    return iImplementation->GetIntAttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::GetBoolAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool 
-           RCmConnectionMethodExt::GetBoolAttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    
-    return iImplementation->GetBoolAttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::GetStringAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* 
-        RCmConnectionMethodExt::GetStringAttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    
-    return iImplementation->GetStringAttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::GetString8AttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* 
-        RCmConnectionMethodExt::GetString8AttributeL( TUint32 aAttribute ) const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    return iImplementation->GetString8AttributeL( aAttribute );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::SetIntAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethodExt::SetIntAttributeL( TUint32 aAttribute, 
-                                                        TUint32 aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    iImplementation->SetIntAttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::SetBoolAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethodExt::SetBoolAttributeL( TUint32 aAttribute, 
-                                                         TBool aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    iImplementation->SetBoolAttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::SetStringAttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void 
-            RCmConnectionMethodExt::SetStringAttributeL( TUint32 aAttribute, 
-                                                         const TDesC16& aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    iImplementation->SetStringAttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::SetString8AttributeL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void 
-            RCmConnectionMethodExt::SetString8AttributeL( TUint32 aAttribute, 
-                                                          const TDesC8& aValue )
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can modify
-        // protection setting!
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    iImplementation->SetString8AttributeL( aAttribute, aValue );
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::UpdateL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RCmConnectionMethodExt::UpdateL()
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-    
-    iImplementation->UpdateL();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::DeleteL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmConnectionMethodExt::DeleteL()
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }
-
-    if( iImplementation->GetBoolAttributeL( ECmProtected ) )
-        {
-        // Only clients with NetworkControl capability can delete
-        // this destination
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    // Check it's not connected
-    if ( iImplementation->GetBoolAttributeL( ECmConnected ) )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    // Check it's not referenced by Virtual CM
-    if( iImplementation->GetBoolAttributeL( ECmIsLinked ) )
-        {
-        User::Leave( KErrLocked );
-        }
-
-    // Check that it's not the last CM in a destination which is
-    // referenced by Virtual CM
-    CCmDestinationImpl* destImpl = iImplementation->ParentDestination();
-    TUint32 destId ( 0 );
-    TUint32 count( 0 ); 
-    
-    if ( destImpl )
-        {
-        destId = destImpl->Id();
-        count = destImpl->ConnectionMethodCount();
-        }
-    delete destImpl;
-    destImpl = NULL;
-
-    if ( count  == 1 )
-        {
-        // The IAP is in destination and it's the last one
-            // for each IAP in CM manager
-            //   1. check if it is virtual
-            //      if not => goto 1.
-            //      if yes:
-            //      2. check if it links to the destination of this CM
-            //         if yes => carryOn = EFalse, ERROR
-            //         if not: carryOn = ETrue
-        TBool carryOn = ETrue;
-        
-        CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* iaps = iImplementation->CmMgr().AllIapsL();
-        CleanupStack::PushL( iaps );
-
-        // for each IAP in CM manager
-        for ( TInt i = KCmInitIndex; carryOn && i < iaps->iRecords.Count(); ++i )
-            {
-            CommsDat::CCDIAPRecord* rec = (*iaps)[i];
-            TUint32 bearerType = 0;
-
-            TRAP_IGNORE( bearerType = iImplementation->CmMgr().BearerTypeFromIapRecordL( rec ) );
-            if ( !bearerType )
-                {
-                continue;
-                }
-
-            // check if it is virtual
-            if ( iImplementation->CmMgr().GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-                {
-                // check if it links to the current destination
-                CCmPluginBase* plugin = NULL;            
-                TRAP_IGNORE( plugin = iImplementation->CmMgr().GetConnectionMethodL( rec->RecordId() ) );
-
-                if ( !plugin )
-                    {
-                    continue;
-                    }
-
-                if ( plugin->IsLinkedToSnap( destId ) )
-                    {
-                    // the CM links to this destination, deletion not allowed
-                    carryOn = EFalse;
-                    }
-
-                delete plugin;
-                }
-            }
-
-        CleanupStack::PopAndDestroy( iaps );
-
-        if ( !carryOn )
-            {
-            User::Leave( KErrLocked );
-            }
-        }
-
-    // ETrue = delete it. It doesn't matter how many referencies there are.
-    TBool deleteRes = iImplementation->DeleteL( ETrue );
-    if( deleteRes )
-        {
-        CCmDestinationImpl* dest = iImplementation->ParentDestination();
-        if( dest )
-            {
-            CCmPluginBase* connMethod = new (ELeave) 
-                                    CCmPluginBase(iImplementation);
-            CleanupStack::PushL( connMethod );        
-            dest->ConnectionMethodDeletedL( *connMethod );
-            CleanupStack::PopAndDestroy(connMethod);//deletes iImplementation
-            iImplementation = NULL;
-            }
-        delete dest;
-        }
-        
-    return deleteRes;
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::Destination()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmDestinationExt RCmConnectionMethodExt::DestinationL() const
-    {
-    if (!iImplementation)
-        {
-        User::Leave(KErrBadHandle);
-        }        
-    if (!iImplementation->Destination())
-        {
-        User::Leave(KErrNotSupported);
-        }
-    
-    RCmDestinationExt dest;
-    dest.iDestinatonData = 
-                iImplementation->Destination()->GetData();
-    dest.iDestinatonData->IncrementRefCounter();
-    return dest;
-    }
-// --------------------------------------------------------------------------
-// RCmConnectionMethod::RCmConnectionMethod
-// --------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt::RCmConnectionMethodExt()
-    : iImplementation( NULL )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethodExt::~RCmConnectionMethodExt()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt::~RCmConnectionMethodExt()
-    {
-    Close();
-    }
-
-// -----------------------------------------------------------------------------
-// RCmConnectionMethod::operator=()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RCmConnectionMethodExt& RCmConnectionMethodExt::operator=(
-                                const RCmConnectionMethodExt& aConnMethod)
-    {
-    if (this != &aConnMethod) 
-        {
-        Close();
-        iImplementation = aConnMethod.iImplementation;
-        iImplementation->IncrementRefCounter();
-        }
-    return *this;
-    }
-
-// --------------------------------------------------------------------------
-// RCmConnectionMethod::operator==
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmConnectionMethodExt::operator==( 
-                                    RCmConnectionMethodExt& aConnMethod ) const
-    {
-    return ( iImplementation == aConnMethod.iImplementation );
-    };
-
-
-// --------------------------------------------------------------------------
-// RCmConnectionMethod::operator!=
-// --------------------------------------------------------------------------
-//
-EXPORT_C TBool RCmConnectionMethodExt::operator!=( 
-                                    RCmConnectionMethodExt& aConnMethod ) const
-    {
-    return !( iImplementation == aConnMethod.iImplementation );
-    };