cmmanager/cmmgr/Framework/Src/cmdlg.cpp
changeset 20 9c97ad6591ae
parent 18 fcbbe021d614
child 21 b8e8e15e80f2
child 23 7ec726f93df1
child 28 860702281757
--- a/cmmanager/cmmgr/Framework/Src/cmdlg.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1974 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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 CCmDlg
-*
-*/
-
-#include <avkon.hrh>
-#include <eikdef.h>
-#include <eikenv.h>
-#include <eikedwin.h>
-#include <cmmanager.rsg>
-#include <data_caging_path_literals.hrh>
-#include <aknnavide.h>
-#include <akntitle.h>
-#include <eikmenup.h>
-#include <StringLoader.h>
-#include <AknIconArray.h>
-#include <aknnavilabel.h>
-#include <cmmanager.mbg>
-#include <cmpluginembdestinationdef.h>
-#include <featmgr.h>
-
-#include <hlplch.h>
-#include <csxhelp/cp.hlp.hrh>
-
-#include "cmdlg.h"
-#include "cmmanager.hrh"
-#include "cmlistitem.h"
-#include "cmlistitemlist.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include "cmdestinationimpl.h"
-#include <cmcommonui.h>
-#include <cmcommonconstants.h>
-#include <cmpbasesettingsdlg.h>
-#include "cmwizard.h"
-#include "selectdestinationdlg.h"
-#include <cmmanagerdef.h>
-#include <mcmdexec.h>
-#include "ccmdexec.h"
-#include "destdlg.h"
-#include "cmlogger.h"
-#include "cmconnsettingsuiimpl.h"
-
-using namespace CMManager;
-using namespace CommsDat;
-
-// ---------------------------------------------------------------------------
-// CCmDlg::ConstructAndRunLD
-// Constructs the dialog and runs it.
-// ---------------------------------------------------------------------------
-//
-TInt CCmDlg::ConstructAndRunLD(  TUint32 aHighlight,
-                                          TUint32& aSelected )
-    {
-    CleanupStack::PushL( this );
-
-    iHighlight = aHighlight;
-    iSelected = &aSelected;
-    
-    ConstructL( R_CM_MENUBAR );
-    PrepareLC( R_CM_DIALOG );
-    CleanupStack::Pop( this );
-
-    iModel = new( ELeave )CCmListboxModel();
-    
-    iCmDestinationImpl = iCmManager->DestinationL( iDestUid );
-    
-    iInfoPopupNoteController = CAknInfoPopupNoteController::NewL();
-    
-    // Trace changes in CommsDat
-    iCmManager->WatcherRegisterL( this );
-        
-    return RunLD();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::NewL()
-// Two-phase dconstructor, second phase is ConstructAndRunLD
-// ---------------------------------------------------------------------------
-//
-CCmDlg* CCmDlg::NewL(CCmManagerImpl* aCmManager, TUint32 aDestUid,
-                     CDestDlg* aDestDlg)
-    {
-    CCmDlg* self = new (ELeave) CCmDlg( aCmManager, aDestUid, aDestDlg );
-    return self;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::CCmDlg()
-// ---------------------------------------------------------------------------
-//
-CCmDlg::CCmDlg( CCmManagerImpl* aCmManager, TUint32 aDestUid,
-                CDestDlg* aDestDlg )
-    : iModelPassed( EFalse )
-    , iCmManager( aCmManager )
-    , iDestUid ( aDestUid )
-    , iPrioritising ( EFalse )
-    , iExitReason( KDialogUserBack )
-    , iEscapeArrived( EFalse )
-    , iExitduringProcessing( EFalse )
-    , iBackduringProcessing( EFalse )
-    , iDestDlg( aDestDlg )
-    {
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::~CCmDlg
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CCmDlg::~CCmDlg()
-    {
-    // iModel is deleted by the ListBox because LB owns the model...
-    // of course only after we passed ownership...
-    if ( !iModelPassed )
-        {
-        delete iModel;
-        }
-        
-    delete iNaviDecorator;
-    
-    if ( iTitlePane )
-        {
-        // set old text back, if we have it...
-        if ( iOldTitleText )
-            {
-            TRAP_IGNORE( iTitlePane->SetTextL( *iOldTitleText ) );
-            delete iOldTitleText; iOldTitleText = NULL;
-            }
-        }    
-        
-    delete iOldTitleText;
-    
-    if(iCmDestinationImpl)
-        {
-        delete iCmDestinationImpl;
-        iCmDestinationImpl = NULL;
-        }    
-    
-    if ( iInfoPopupNoteController )
-        {
-        delete iInfoPopupNoteController;
-        }
-        
-    if( iCmWizard )
-        {
-        delete iCmWizard;
-        }
-    iItemIndex.Close();
-    
-    delete iCmdExec;
-    iCmdExec = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::PreLayoutDynInitL();
-// called by framework before dialog is shown
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::PreLayoutDynInitL()
-    {
-    iListbox = STATIC_CAST( CCmListbox*, Control( KCmListboxId ) );
-    iListbox->CreateScrollBarFrameL( ETrue );
-    iListbox->ScrollBarFrame()->SetScrollBarVisibilityL
-                        ( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-    iListbox->SetListBoxObserver( this );
-
-    iListbox->Model()->SetItemTextArray( iModel );
-    iModelPassed = ETrue;
-    InitTextsL();
-    HandleListboxDataChangeL();
-    iListbox->HandleItemAdditionL();
-    
-    if ( iHighlight )
-        {
-        iListbox->ScrollToMakeItemVisible( iHighlight );
-        iListbox->SetCurrentItemIndexAndDraw( iHighlight );
-        }    
-    }
-    
-// --------------------------------------------------------------------------
-// CCmDlg::DynInitMenuPaneL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::DynInitMenuPaneL( TInt aResourceId,
-                                        CEikMenuPane* aMenuPane )
-    {
-    CAknDialog::DynInitMenuPaneL( aResourceId, aMenuPane );        
-    if ( aResourceId == R_CM_MENU )
-        {
-    	if (aResourceId == R_CM_MENU && !iCmManager->IsHelpOn())
-            {
-            aMenuPane->DeleteMenuItem( EAknCmdHelp );		    
-            }
-        // Menu items
-    	TBool hideEdit      ( EFalse );
-        TBool hideAdd       ( EFalse );
-        TBool hideRename    ( EFalse );
-        TBool hideDelete    ( EFalse );
-        TBool hideCopy      ( EFalse );
-        TBool hideMove      ( EFalse );
-        TBool hidePrioritise( EFalse );
-           
-        // Edit, Rename, Delete and Organise menu items are hidden if:
-        // 1. CM List is empty
-        // 2. Embedded Destinations
-        if ( !( iListbox->Model()->ItemTextArray()->MdcaCount() ) )
-            {
-            hidePrioritise = ETrue;
-            hideEdit = ETrue;
-            hideRename  = ETrue;
-            hideDelete  = ETrue;
-            hideCopy = ETrue;
-            hideMove = ETrue;
-            }
-        // Embedded destinations can be deleted but not edited
-        else if ( ( CurrentCML()->GetBoolAttributeL(ECmDestination) ) )
-            {
-            hideRename  = ETrue;
-            }
-        // Only one CM in the list OR highlighted CM is a virtual CM
-        else if ( ( iListbox->Model()->ItemTextArray()->MdcaCount() == 1 ) )
-            {
-            hidePrioritise = ETrue;
-            }            
-        // virtual CMs pointing to destinations
-        else if ( CurrentCML()->GetBoolAttributeL( ECmVirtual ) )
-            {
-            if ( CurrentCML()->GetIntAttributeL( ECmNextLayerSNAPId ) )
-                {
-                hidePrioritise = ETrue;
-                }
-            }
-     
-        // Show or hide menu items
-        if ( aResourceId == R_CM_MENU )
-            {            
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmEdit,    hideEdit );
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmAdd,     hideAdd );
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmRename,  hideRename );            
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmDelete,  hideDelete );    
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmPrioritise, hidePrioritise );
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmMoveToOtherDestination, hideMove );
-            aMenuPane->SetItemDimmed( ECmManagerUiCmdCmCopyToOtherDestination, hideCopy ); 
-            }
-        }   
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::InitTextsL
-// called before the dialog is shown
-// to initialize localized textual data
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::InitTextsL()
-    {
-    // set pane text if neccessary...
-    // pane text needed if not pop-up...
-    HBufC* primary = 
-              iEikonEnv->AllocReadResourceLC( R_CMMANAGERUI_EMPTY_METHOD_VIEW_PRIMARY );
-    HBufC* secondary = 
-              iEikonEnv->AllocReadResourceLC( R_CMMANAGERUI_EMPTY_METHOD_VIEW_SECONDARY );
-    CDesCArrayFlat* items = new (ELeave) CDesCArrayFlat(2);
-    CleanupStack::PushL(items);
-    items->AppendL(primary->Des()); 
-    items->AppendL(secondary->Des());      
-    HBufC* emptyText = 
-          StringLoader::LoadLC( R_TWO_STRING_FOR_EMPTY_VIEW , *items);              
-    iListbox->View()->SetListEmptyTextL( *emptyText );    
-    CleanupStack::PopAndDestroy( emptyText );
-    CleanupStack::PopAndDestroy( items );
-    CleanupStack::PopAndDestroy( secondary );
-    CleanupStack::PopAndDestroy( primary );
-
-    iStatusPane = iEikonEnv->AppUiFactory()->StatusPane();
-    iTitlePane = ( CAknTitlePane* )iStatusPane->ControlL(
-                                          TUid::Uid( EEikStatusPaneUidTitle ) );
-
-    iOldTitleText = iTitlePane->Text()->AllocL();
-    HBufC* name = iCmDestinationImpl->NameLC();
-    iTitlePane->SetTextL( *name );
-    CleanupStack::PopAndDestroy( name );
-
-    iNaviPane = ( CAknNavigationControlContainer* ) 
-                    iStatusPane->ControlL( 
-                            TUid::Uid( EEikStatusPaneUidNavi ) );
-    iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
-    iNaviPane->PushL( *iNaviDecorator );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::SetNoOfCMsL
-// ---------------------------------------------------------------------------
-//
-
-void CCmDlg::SetNoOfCMsL(TInt aCount)
-    {
-    if ( iNaviDecorator )
-        {
-        if ( iNaviDecorator->ControlType() == 
-             CAknNavigationDecorator::ENaviLabel)
-            {
-            CAknNaviLabel* naviLabel = 
-                            (CAknNaviLabel*)iNaviDecorator->DecoratedControl();
-            if (aCount)
-                {
-                HBufC* title = NULL;
-                
-                if (aCount == 1)
-                    {
-                    title = StringLoader::LoadLC( 
-                                           R_CMMANAGERUI_NAVI_ONE_CONN_METHOD );
-                    }
-                else
-                    {
-                    title = StringLoader::LoadLC( 
-                                           R_CMMANAGERUI_NAVI_MANY_CONN_METHODS, 
-                                           aCount );
-                    }
-                    
-                naviLabel->SetTextL(*title);
-                  CleanupStack::PopAndDestroy( title );
-                }
-            else
-                {
-                naviLabel->SetTextL(KNullDesC);
-                }
-                
-            iNaviPane->PushL( *iNaviDecorator );
-            }
-        }
-      
-    }
-
-//----------------------------------------------------------
-// CCmDlg::CreateCustomControlL
-//----------------------------------------------------------
-//
-SEikControlInfo CCmDlg::CreateCustomControlL( TInt aControlType )
-    {
-    SEikControlInfo controlInfo;
-    controlInfo.iTrailerTextId = 0;
-    controlInfo.iFlags = 0;
-    if ( aControlType == KCmListboxType )
-        {
-        controlInfo.iControl = new ( ELeave ) CCmListbox;
-        }
-    else
-        {
-        controlInfo.iControl = NULL;
-        }
-    return controlInfo;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::OkToExitL
-// Good to know : EAknSoftkeyCancel is never called, because
-// EEikDialogFlagNotifyEsc flag is not set in the resource.
-// ---------------------------------------------------------------------------
-//
-TBool CCmDlg::OkToExitL( TInt aButtonId )
-    {
-    LOGGER_ENTERFN( "CCmDlg::OkToExitL" );
-
-    // Translate the button presses into commands for the appui & current
-    // view to handle
-    // Dialog should not exit
-    TBool retVal( EFalse );
-    
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyOk:
-        case ECmManagerUiCmdCmEdit:
-            {
-            if ( !iProcessing )
-                {
-                if ( CMCount() )
-                    {
-                    iProcessing = ETrue;
-                    ProcessCommandL( aButtonId );
-                    iProcessing = EFalse;
-                    }
-                else
-                    {
-                    iProcessing = ETrue;
-                    AddConnectionMethodL();
-                    iProcessing = EFalse;
-                    }
-                }
-            break;
-            }
-        case EAknSoftkeyClear:
-            {
-            ProcessCommandL( aButtonId );
-            break;
-            }
-        case ECmManagerUiCmdCmPrioOk:
-            {
-            if ( iPrioritising )
-                {
-                FinishPriorizingL( ETrue );
-                }
-                
-            break;
-            }               
-       case ECmManagerUiCmdCmPrioCancel:            
-            {
-            if ( !MenuShowing() )            
-                {
-                if ( iPrioritising )
-                    {
-                    FinishPriorizingL( EFalse );
-                    }
-                }            
-            break;
-            }           
-        case ECmManagerUiCmdCmUserExit:
-            {
-            iCmManager->WatcherUnRegister();
-                        
-            iExitReason = KDialogUserExit;
-            break;
-            }
-        case EAknSoftkeyBack:
-            {
-            iCmManager->WatcherUnRegister();
-            
-            if ( !iProcessing )
-                {
-                *iSelected = 0;
-                TryExitL( iExitReason );
-                }
-            else
-                {
-                iBackduringProcessing = ETrue;
-                }
-            break;
-            }
-        default:
-            {
-            if ( !iProcessing )
-                {
-                if ( aButtonId == EAknSoftkeyOptions )
-                    {
-                    DisplayMenuL();
-                    }
-                else
-                    {
-                    retVal = ETrue;
-                    }
-                }
-            if ( iProcessing )
-                {
-                iExitduringProcessing = ETrue;
-                if( aButtonId == KDialogUserExit )
-                    {
-                    retVal = ETrue;
-                    } 
-                }
-            break;
-            }
-        }
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::HandleListBoxEventL
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::HandleListBoxEventL( CEikListBox* /*aListBox*/,
-                                  TListBoxEvent aEventType )
-    {
-    LOGGER_ENTERFN( "CCmDlg::HandleListBoxEventL" );
-
-    switch ( aEventType )
-        {
-        case EEventEnterKeyPressed:
-            {
-            if ( iPrioritising )
-                {
-                FinishPriorizingL( ETrue );
-                }
-            else
-                {
-                if ( !iProcessing )
-                    {
-                    delete iCmdExec;
-                    iCmdExec = NULL;
-                    iCmdExec = new (ELeave) CCmdExec(*this);
-                    iCmdExec->Execute();
-                    }
-                }           
-            break;            
-            }
-        case EEventItemSingleClicked:
-            {
-            if ( !iProcessing )
-                {
-                delete iCmdExec;
-                iCmdExec = NULL;
-                iCmdExec = new (ELeave) CCmdExec(*this);
-                iCmdExec->Execute();
-                }
-            break;
-            }
-        case EEventEditingStarted:
-            {
-            break;
-            }
-        case EEventEditingStopped:
-            {
-            break;
-            }
-        default:
-            {
-            break;
-            };
-        };
-    }
-       
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::ProcessCommandL
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::ProcessCommandL( TInt aCommandId )
-    {
-    LOGGER_ENTERFN( "CCmDlg::ProcessCommandL" );
-
-    if ( MenuShowing() )
-        {
-        HideMenu();
-        }
-
-    switch ( aCommandId )
-        {        
-        // Connection Method Modification Commands
-        case ECmManagerUiCmdCmAdd:
-            {
-            if ( !iProcessing )
-                {
-                iProcessing = ETrue;
-                TRAPD( err, AddConnectionMethodL() );
-                // Memory full
-                if (err == KLeaveWithoutAlert || err == KErrNoMemory)
-                    {
-                    iProcessing = EFalse;
-                    return;
-                    }
-                iProcessing = EFalse;
-
-                if ( iBackduringProcessing )
-                    {
-                    iBackduringProcessing = EFalse;
-                    TryExitL( KDialogUserBack );
-                    }
-                }
-            break;
-            }
-
-        case ECmManagerUiCmdCmRename:            
-            {
-            RenameConnectionMethodL();
-            break;
-            }
-            
-        case EAknSoftkeyClear:
-        case ECmManagerUiCmdCmDelete:            
-            {
-            if ( iPrioritising )
-                {
-                // Delete cannot be done if priorising has started.
-                break;
-                }
-            DeleteCurrentCmL();         
-            break;
-            }
-            
-        case ECmManagerUiCmdCmPrioritise:            
-            {
-            PrioritiseConnectionMethodL();
-            break;
-            }
-            
-        case ECmManagerUiCmdCmCopyToOtherDestination:            
-            {
-            CopyConnectionMethodL();            
-            break;
-            }
-            
-        case ECmManagerUiCmdCmMoveToOtherDestination:            
-            {            
-            MoveConnectionMethodL();
-            break;
-            }
-            
-        case EAknSoftkeyOk:
-        case ECmManagerUiCmdCmEdit:
-            {
-            EditConnectionMethodL();
-            break;
-            }   
-
-        // Button Selection commands
-        case EAknSoftkeyOptions:
-            {
-            DisplayMenuL();
-            break;
-            }
-            
-        case ECmManagerUiCmdCmUserExit:
-            {
-            iExitReason = KDialogUserExit;
-            }
-            
-        case EAknSoftkeyBack:
-            {
-            if (!iProcessing)
-                {
-                *iSelected = 0;
-                TryExitL( iExitReason );
-                }
-            break;
-            }
-        case EAknCmdHelp:
-            {
-            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
-                                    iEikonEnv->EikAppUi()->AppHelpContextL() );
-            }
-            break;
-
-        default:
-            {
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::DeleteCurrentCmL
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::DeleteCurrentCmL( )
-    {
-    LOGGER_ENTERFN( "CCmDlg::DeleteCurrentCmL" );
-
-    TCmDefConnValue oldConn;
-    if (iCmManager->IsDefConnSupported())
-        {
-        iCmManager->ReadDefConnL( oldConn );
-        }
-    CCmPluginBase* cm = CurrentCML();
-    if ( !cm )
-    	{
-    	return;
-    	}
-
-    if ( cm->GetBoolAttributeL( ECmProtected ) )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-                                
-        return;
-        }
-   
-    if ( cm->GetBoolAttributeL( ECmIsLinked ) )//same check as KErrLocked below
-        {
-        TCmCommonUi::ShowNoteL( 
-                            R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF,
-                            TCmCommonUi::ECmErrorNote );
-        
-        return;
-        }
-   
-    if ( cm->GetBoolAttributeL( ECmConnected ) )//same check as KErrInUse below
-        {
-        TCmCommonUi::ShowNoteL( R_CMMANAGERUI_INFO_CM_IN_USE_CANNOT_DELETE,
-                                TCmCommonUi::ECmErrorNote );
-        
-        return;
-        }
-
-    // EKOA-74KC3L: check if it is the last CM in a destination being referenced
-    // by a VPN
-    if ( iCmDestinationImpl &&
-         iCmDestinationImpl->ConnectionMethodCount() == 1 )
-        {
-        // it is definitely the last, but is it referenced?
-
-        // 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
-
-        CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* iaps = 
-                                                    iCmManager->AllIapsL();
-        
-        CleanupStack::PushL( iaps );
-        
-        TBool carryOn = ETrue;
-        TUint32 destId = iCmDestinationImpl->Id();
-
-        // for each IAP in CM manager
-        for ( TInt i = 0; carryOn && i < iaps->iRecords.Count(); ++i )
-            {
-            CommsDat::CCDIAPRecord* rec = (*iaps)[i];
-            TUint32 bearerType = 0;
-            
-            TRAP_IGNORE( bearerType = 
-                             iCmManager->BearerTypeFromIapRecordL( rec ) );
-            if ( !bearerType )
-                {
-                continue;
-                }
-                
-            // check if it is virtual
-            if ( iCmManager->GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-                {
-                // check if it links to the current destination
-                CCmPluginBase* plugin = NULL;            
-                TRAP_IGNORE( plugin = iCmManager->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 )
-            {
-            TCmCommonUi::ShowNoteL( R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF,
-                                TCmCommonUi::ECmErrorNote );
-            return;            
-            }
-        
-        }
-    
-
-    // If it's an embedded destination, show a warning
-    TBool showCmDeleteQuery( ETrue );
-    if ( cm->GetBoolAttributeL( ECmDestination ) )
-        {
-        if ( TCmCommonUi::ShowConfirmationQueryL(
-                            R_CMMANAGERUI_QUEST_EMBEDDED_DEST_DELETE ) )
-            {
-            // user wants to delete, set flag to avoid 2nd query message
-            showCmDeleteQuery = EFalse;
-            }
-        else
-            {
-            return; // user cancelled delete request
-            }
-        }
-
-    HBufC* cmName = cm->GetStringAttributeL( ECmName );
-    CleanupStack::PushL( cmName );
-    
-    // Query for CM deletion - which will be skipped in the case of embedded 
-    // destintations
-    // Protected CM's cannot be deleted either
-    if ( !showCmDeleteQuery || iAlreadyConfirmedDelete ||
-         TCmCommonUi::ShowConfirmationQueryL( 
-                                    R_CMMANAGERUI_QUEST_CM_DELETE,
-                                    *cmName ) )
-        {
-        TInt err = KErrNone;
-        if ( iCmDestinationImpl )
-            {
-            TRAP( err, iCmDestinationImpl->DeleteConnectionMethodL( *cm ) );
-            }
-        else
-            {
-            TRAP( err, (void)cm->DeleteL( ETrue ) );
-            }
-        
-        switch ( err )
-            {
-            case KErrInUse: //shouldn't get here, already checked above
-                {
-                TCmCommonUi::ShowNoteL
-                    ( R_CMMANAGERUI_INFO_CM_IN_USE_CANNOT_DELETE,
-                    TCmCommonUi::ECmErrorNote );
-                }
-                break;
-                
-            case KErrLocked://shouldn't get here, already checked above
-                {
-                TCmCommonUi::ShowNoteL
-                    ( R_QTN_NETW_CONSET_INFO_CANNOT_DELETE_VIRTUAL_REF,
-                      TCmCommonUi::ECmErrorNote );
-                }
-                break;
-                
-            case KErrNone:
-                {
-                if ( iCmDestinationImpl )
-                    {
-                    iCmDestinationImpl->UpdateL();
-                    }
-                if (iCmManager->IsDefConnSupported())
-                    {
-                    iDestDlg->ShowDefaultConnectionNoteL( oldConn );
-                    }
-                HandleListboxDataChangeL();
-                }
-                break;
-
-            default:
-                {
-                }
-                break;
-            }
-        }
-
-    CleanupStack::PopAndDestroy( cmName );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::RenameConnectionMethodL    
-// --------------------------------------------------------------------------
-//
-void CCmDlg::RenameConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::RenameConnectionMethodL" );
-
-    CCmPluginBase* cm = CurrentCML();
-    if ( !cm )
-        {
-        return;
-        }
-
-    if ( cm->GetBoolAttributeL( ECmProtected ) )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-
-    if ( CurrentCmInUseL() )
-        {
-        return;
-        } 
-           
-    TBuf<KConnMethodNameMaxLength> buf;
-    
-    HBufC* cmName = cm->GetStringAttributeL(ECmName);
-    CleanupStack::PushL(cmName);
-    buf.Copy(*cmName);
-    
-    // Saves the recent naming method and set it to "Not accept"
-    TUint32 savedNM = cm->GetIntAttributeL( ECmNamingMethod );
-    cm->SetIntAttributeL( ECmNamingMethod, ENamingNotAccept );
-
-    // Asks the new name
-    TBool go = ETrue;
-    TInt ret = TCmCommonUi::ShowConfirmationQueryWithInputL(
-                                                R_CMMANAGERUI_PRMPT_CM_MAME,
-                                                buf );
-    
-    // While the name is not unique or cancel pressed
-    while( ret && go )
-        {
-        // Tries to save the nem name. If it is not unique
-        // then ret == KErrArgument
-        TRAPD( err, cm->SetStringAttributeL( ECmName, buf ) );
-
-        if( KErrArgument == err )
-            {
-            // Opens a info note
-            HBufC* noteLine = StringLoader::LoadLC(
-                    R_CMMANAGERUI_INFO_CM_ALREADY_IN_USE, buf );
-
-            TCmCommonUi::ShowNoteL( *noteLine, TCmCommonUi::ECmInfoNote );
-
-            CleanupStack::PopAndDestroy( noteLine );
-
-            // Asks the new name again
-            ret = TCmCommonUi::ShowConfirmationQueryWithInputL(
-                                                R_CMMANAGERUI_PRMPT_CM_MAME,
-                                                buf );
-            }
-        else
-            {
-            // New name is unique loop can stop
-            go = EFalse;
-            }    
-        }
-
-    // Sets back the original naming method
-    cm->SetIntAttributeL( ECmNamingMethod, savedNM );
-
-    // If not cancel pressed the new name is set
-    if( ret )
-        {
-        cm->UpdateL();
-        
-        HandleListboxDataChangeL();
-        }
-   
-    CleanupStack::PopAndDestroy( cmName );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::PrioritiseConnectionMethodL    
-// --------------------------------------------------------------------------
-//
-void CCmDlg::PrioritiseConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::PrioritiseConnectionMethodL" );
-    
-    ButtonGroupContainer().SetCommandSetL( R_SOFTKEYS_PRIO_OK_CANCEL__OK );
-    iListbox->View()->SelectItemL( iListbox->CurrentItemIndex() );
-    iListbox->View()->DrawItem( iListbox->CurrentItemIndex() );
-    ButtonGroupContainer().DrawNow();
-    iPrioritising = ETrue;
-    iCmToPrioritise = iListbox->CurrentItemIndex();
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::AddConnectionMethodL    
-// --------------------------------------------------------------------------
-//
-void CCmDlg::AddConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::AddConnectionMethodL" );
-
-    // Check first if parent destination is protected
-    if ( iCmDestinationImpl && 
-         iCmDestinationImpl->ProtectionLevel() == CMManager::EProtLevel1 )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-
-    // Opens a Connection method creation wizard
-    iCmWizard = new (ELeave) CCmWizard( *iCmManager );
-
-    TInt itemstemp = iListbox->Model()->NumberOfItems();
-
-    TInt ret( KErrNone );
-    TRAPD( err, ret = iCmWizard->CreateConnectionMethodL( iCmDestinationImpl ) );
-    if ( err )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                TCmCommonUi::ECmErrorNote );
-        ret = KErrCancel;
-        }
-    delete iCmWizard;
-    iCmWizard = NULL;
-
-
-    // If application wanted to be closed before then RunAppShutter()
-    // should be called here                
-    if( iEscapeArrived )
-        {
-        ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->RunAppShutter();
-        }
-    
-    if( ret != KErrCancel )
-        {
-        iHighlight = ret;
-
-
-        // Update the middle soft key if this is the first cm added
-        if ( CMCount() == 1 )
-            {
-            HBufC* text = StringLoader::LoadLC( R_QTN_MSK_EDIT );
-            ButtonGroupContainer().SetCommandL( ECmManagerUiCmdCmEdit, 
-                                                    *text );
-            CleanupStack::PopAndDestroy( text );
-            }
-        
-        //HandleListboxDataChangeL();
-        TRAP( err, HandleListboxDataChangeL() );
-        if ( err )
-            {
-            TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                    TCmCommonUi::ECmErrorNote );
-            return;
-            }
-        iListbox->HandleItemAdditionL();
-    
-        if (itemstemp < iListbox->Model()->NumberOfItems())
-            {
-            //first item cannot be deleted
-            iListbox->ScrollToMakeItemVisible( 
-                                    iListbox->Model()->NumberOfItems() -1 );
-            iListbox->SetCurrentItemIndexAndDraw( iHighlight );
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::CopyConnectionMethodL    
-// --------------------------------------------------------------------------
-//
-void CCmDlg::CopyConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::CopyConnectionMethodL" );
-
-    CCmPluginBase* cm = CurrentCML();
-    if ( !cm )
-        {
-        return;
-        }
-
-    if ( cm->GetBoolAttributeL( ECmProtected ) ||
-        ( iCmDestinationImpl && 
-         iCmDestinationImpl->ProtectionLevel() == CMManager::EProtLevel1 ) )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-
-    TUint32 destId( 0 );
-    
-    // build an array of possible parent destinations
-    TInt destCount=0;
-    TRAPD( retVal, destCount = iCmManager->DestinationCountL() );
-    if( retVal != KErrNone || destCount < 1 )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_DESTINATION,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-        
-    RArray<TUint32> destArray( iCmManager->DestinationCountL() );
-    CleanupClosePushL( destArray );
-    
-    iCmManager->AllDestinationsL( destArray );
-    
-    // drop current destination (don't ask why)
-    if ( iCmDestinationImpl ) 
-        {
-        destId = iCmDestinationImpl->Id();
-        
-        TInt index = destArray.Find( destId );
-        if ( index != KErrNotFound )
-            {
-            destArray.Remove( index );
-            }
-        }
-    
-    
-    // now filter the destinations
-    CurrentCML()->FilterPossibleParentsL( destArray );
-
-    // check if there are any remaining destinations
-    if ( !destArray.Count() )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_VPN_STACKING,
-                                TCmCommonUi::ECmErrorNote );        
-        CleanupStack::PopAndDestroy( &destArray );
-        return;
-        }
-    
-    // ok, there is at least 1, pop up the dialog
-    CSelectDestinationDlg* dlg = CSelectDestinationDlg::NewL( destId, 
-                                                              *iCmManager, 
-                                                              &destArray );
-
-    if ( dlg->ExecuteLD( R_CMMANAGER_LIST_QUERY_WITH_MSGBOX ) )
-        {
-        CCmDestinationImpl* dest = iCmManager->DestinationL( destId );
-        CleanupStack::PushL( dest ); 
-        if ( iCmDestinationImpl )
-            {
-            // create a copy of the current connection method
-            CCmPluginBase* cmCopy = cm->CreateCopyL();
-            CleanupStack::PushL( cmCopy );
-            // store it in commsdat
-            cmCopy->UpdateL();
-            dest->AddConnectionMethodL( *cmCopy );
-            
-            CleanupStack::PopAndDestroy( cmCopy );
-            }
-        else
-            {
-            iCmManager->CopyConnectionMethodL( *dest, *( cm ) );
-            }
-
-        // Rare but UpdateL can leave that cause crash
-        TRAPD( err, dest->UpdateL() );
-        if( err < 0 )
-            {
-            CLOG_WRITE_1( "CCmDlg::CopyConnectionMethodL UpdateL: %d", err );
-            }
-    
-        CleanupStack::PopAndDestroy( dest );
-        HandleListboxDataChangeL();                             
-        }
-    else
-        {
-        CleanupStack::PopAndDestroy( &destArray );
-        User::Leave( KErrCancel );
-        }
-
-    CleanupStack::PopAndDestroy( &destArray );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::MoveConnectionMethodL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::MoveConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::MoveConnectionMethodL" );
-
-    CCmPluginBase* cm = CurrentCML();
-    if ( !cm )
-        {
-        return;
-        }
-
-    if ( cm->GetBoolAttributeL( ECmProtected ) ||
-         iCmDestinationImpl->ProtectionLevel() == CMManager::EProtLevel1 )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );
-        return;
-        }
-
-    if ( CurrentCmInUseL() )
-        {
-        return;
-        }
-
-    // build an array of possible parent destinations
-    RArray<TUint32> destArray( iCmManager->DestinationCountL() );
-    CleanupClosePushL( destArray );
-    
-    iCmManager->AllDestinationsL( destArray );
-    
-    TUint32 destId( 0 );
-
-    // first remove the current parent (makes no sense moving a CM to its
-    // original destination)
-    if ( iCmDestinationImpl ) 
-        {
-        destId = iCmDestinationImpl->Id();
-        
-        TInt index = destArray.Find( destId );
-        if ( index != KErrNotFound )
-            {
-            destArray.Remove( index );
-            }
-        }
-    
-    // now filter the destinations
-    CurrentCML()->FilterPossibleParentsL( destArray );
-
-    // check if there are any remaining destinations
-    if ( !destArray.Count() )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_VPN_STACKING,
-                                TCmCommonUi::ECmErrorNote );        
-        CleanupStack::PopAndDestroy( &destArray );
-        return;
-        }
-
-        
-    CSelectDestinationDlg* dlg = CSelectDestinationDlg::NewL( destId, 
-                                                              *iCmManager, 
-                                                              &destArray );
-                    
-    if ( dlg->ExecuteLD( R_CMMANAGER_LIST_QUERY_WITH_MSGBOX ) )
-        {
-        CCmDestinationImpl* dest = iCmManager->DestinationL( destId );
-        CleanupStack::PushL( dest );
-        iCmManager->MoveConnectionMethodL( *iCmDestinationImpl,
-                                            *dest,
-                                            *( CurrentCML() ) );
-        CleanupStack::PopAndDestroy( dest );
-        iCmDestinationImpl->UpdateL();                            
-
-        HandleListboxDataChangeL();
-        }
-
-    CleanupStack::PopAndDestroy( &destArray );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::EditConnectionMethodL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::EditConnectionMethodL()
-    {
-    LOGGER_ENTERFN( "CCmDlg::EditConnectionMethodL" );
-
-    CCmPluginBase* cm = NULL;
-    
-    TRAPD( err, cm = CurrentCML() );
-    
-    if( err == KErrNotSupported )
-        {
-        return;
-        }
-    else
-        {
-        User::LeaveIfError( err );
-        }
-        
-    // Must reload here in case another app changed the data (CurrentCML loads
-    // only if not already loaded)   
-    cm->ReLoadL();
-    
-    if ( cm->GetBoolAttributeL( ECmProtected ) ||
-         cm->GetBoolAttributeL( ECmDestination ) )
-        {
-        TCmCommonUi::ShowNoteL( R_CMWIZARD_CANNOT_PERFORM_FOR_PROTECTED,
-                                TCmCommonUi::ECmErrorNote );        
-        }
-    else if ( cm->GetBoolAttributeL( ECmBearerHasUi ) )
-        {
-        // check if the cm is in use
-        if ( !CurrentCmInUseL() )
-            {
-            TInt ret = cm->RunSettingsL();
-            if ( ret == KDialogUserExit )
-                {
-                TryExitL( KDialogUserExit );
-                }
-            else
-                {
-                if ( ret == KDialogUserDeleteConfirmed )
-                    {
-                    iAlreadyConfirmedDelete = ETrue;
-                    DeleteCurrentCmL();
-                    iAlreadyConfirmedDelete = EFalse;
-                    }
-                if ( ret == KDialogUserDelete )
-                    {
-                    DeleteCurrentCmL();
-                    }
-                
-                // Reorder according to priorities, if needed
-                ReOrderCMsL();
-                
-                HandleListboxDataChangeL();
-                }
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::OfferKeyEventL
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CCmDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                     TEventCode aType )    
-    {
-    LOGGER_ENTERFN( "CCmDlg::OfferKeyEventL" );
-    CLOG_WRITE_1("Key iCode: %d", aKeyEvent.iCode );
-
-    TKeyResponse retVal ( EKeyWasNotConsumed );
-
-    if ( aKeyEvent.iCode == EKeyBackspace )
-        {
-        // While priorising delete item is disabled
-        if( !iPrioritising )
-            {
-            ProcessCommandL( ECmManagerUiCmdCmDelete );
-            }
-        retVal = EKeyWasConsumed;
-        }
-    else if ( aKeyEvent.iCode == EKeyEscape )
-        {
-        // Handling application close needs special care 
-        // because of iCmWizard 
-        if ( iCmWizard )
-            {
-            // if wizard alives then escape should do after wizard has ended.
-            CLOG_WRITE( "CCmDlg::OfferKeyEventL: Wizard in long process" );
-            iEscapeArrived = ETrue;
-            retVal = EKeyWasConsumed;
-            }
-        else    
-            {
-            CLOG_WRITE( "CCmDlg::OfferKeyEventL:Escape" );
-            retVal = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
-            }
-        }
-    else
-        {
-        retVal = iListbox->OfferKeyEventL(aKeyEvent, aType);       
-        }
-
-    return retVal;
-    }
-// ---------------------------------------------------------------------------
-// CCmDlg::HandleInfoPopupNoteEvent
-// called before the dialog is shown to initialize listbox data
-// ---------------------------------------------------------------------------
-//    
-void CCmDlg::HandleInfoPopupNoteEvent(
-                                CAknInfoPopupNoteController* /*aController*/,
-                                TAknInfoPopupNoteEvent /*aEvent*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::CurrentCML
-// Currently selected connection method in the list
-// ---------------------------------------------------------------------------
-//
-CCmPluginBase* CCmDlg::CurrentCML()
-    {
-    if ( iItemIndex.Count() == 0 )
-    	{
-    	return NULL;
-    	}
-    return iCmDestinationImpl->GetConnectionMethodL( 
-        iItemIndex[iListbox->CurrentItemIndex()]);
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::CMByIndexL
-// a connection method in the list
-// ---------------------------------------------------------------------------
-//
-CCmPluginBase* CCmDlg::CMByIndexL( TInt aIndex )
-    {
-    return iCmDestinationImpl->GetConnectionMethodL( aIndex );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDlg::CMCount
-// number of cms in the list
-// ---------------------------------------------------------------------------
-//
-TInt CCmDlg::CMCount()
-    {
-    return iCmDestinationImpl->ConnectionMethodCount();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDlg::HandleListboxDataChangeL
-// called before the dialog is shown to initialize listbox data
-// ---------------------------------------------------------------------------
-//
-void CCmDlg::HandleListboxDataChangeL()
-    {
-    TInt selected = 0;
-    if ( iListbox->CurrentItemIndex() )
-        {
-        selected = iListbox->CurrentItemIndex();
-        }
-    
-    LOGGER_ENTERFN( "CCmDlg::HandleListboxDataChangeL" );
-    iCmManager->OpenTransactionLC();
-
-    RArray<TUint32> cmIds;
-    ConstructCMArrayL( cmIds );
-    CleanupClosePushL( cmIds );
-    
-    // Remove hidden Connection Methods from the array if uncat folder
-    if ( !iCmDestinationImpl )
-        {
-        ClearHiddenCMsFromArrayL( cmIds );
-        }
-    
-    /// Using test values for now.
-    CArrayPtr< CGulIcon >* icons = new( ELeave ) CAknIconArray( KCMGranularity );
-    CleanupStack::PushL( icons );
-    iModel->ResetAndDestroy();
-    
-    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();        
-    TParse mbmFile;
-    User::LeaveIfError( mbmFile.Set( KManagerIconFilename, 
-                                     &KDC_APP_BITMAP_DIR, 
-                                     NULL ) );        
-
-    
-    icons->AppendL( AknsUtils::CreateGulIconL( 
-                              skinInstance, 
-                              KAknsIIDQgnIndiSettProtectedAdd,
-                              mbmFile.FullName(), 
-                              EMbmCmmanagerQgn_indi_sett_protected_add, 
-                              EMbmCmmanagerQgn_indi_sett_protected_add_mask ) );  
-
-    //0..1 are reserved indexes!
-    CFbsBitmap* bitmap = NULL;
-    CFbsBitmap* mask = NULL;
-
-    AknsUtils::CreateColorIconLC( skinInstance,
-                                  KAknsIIDQgnIndiDefaultConnAdd,
-                                  KAknsIIDQsnIconColors,
-                                  EAknsCIQsnIconColorsCG13,
-                                  bitmap,
-                                  mask,
-                                  mbmFile.FullName(),
-                                  EMbmCmmanagerQgn_indi_default_conn_add,
-                                  EMbmCmmanagerQgn_indi_default_conn_add_mask,
-                                  AKN_LAF_COLOR( 215 ) );
-
-    CGulIcon* icon = CGulIcon::NewL( bitmap, mask ); // Ownership transferred
-    CleanupStack::Pop( 2 ); // bitmap, mask
-
-    CleanupStack::PushL( icon );
-    icons->AppendL( icon );
-    CleanupStack::Pop( icon );
-
-    RArray<TUint> bearerIdArray = RArray<TUint>( KCmArrayBigGranularity );
-    CleanupClosePushL( bearerIdArray );    
-    
-    TCmDefConnValue sel;
-    TInt defUid = KErrNotFound;
-    if ( iCmManager->IsDefConnSupported() )
-        {
-        iCmManager->ReadDefConnL(sel);
-        if ( sel.iType == EDCConnectionMethod )
-            {
-            defUid = sel.iId;
-            }
-        }
-    iItemIndex.Reset();
-    for ( TInt i = 0; i < cmIds.Count(); i++ )
-        {
-        TInt iconId = KErrNotFound;
-        CCDAccessPointRecord* destAPRecord = NULL;
-        CCDIAPRecord* iapRecord = NULL;
-        HBufC* name = NULL;
-        TBool isDest( cmIds[i] > KCmDefaultDestinationAPTagId );
-        TUint recId( 0 );
-        TBool protect;
-        TUint32 bearerType( 0 );
-        
-        if( isDest )
-            {
-            destAPRecord = static_cast<CCDAccessPointRecord *>(
-                           CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-            CleanupStack::PushL( destAPRecord );
-            destAPRecord->iRecordTag = cmIds[i];
-            if ( !destAPRecord->FindL( iCmManager->Session() ) )
-                {
-                User::Leave( KErrNotFound );
-                }
-            
-            name = TPtrC( destAPRecord->iRecordName ).AllocLC();
-
-            TProtectionLevel protLev = CCmDestinationImpl::ProtectionLevelL( *iCmManager, cmIds[i] );
-            
-            protect = (protLev == EProtLevel1) || (protLev == EProtLevel2);
-
-            HBufC* destName = StringLoader::LoadL( R_QTN_NETW_CONSET_EMBEDDED_DEST,
-                                                   *name );
-                                                   
-            CleanupStack::PopAndDestroy( name );            
-            name = destName;            
-            CleanupStack::PushL( name );
-            
-            bearerType = KUidEmbeddedDestination;
-            }
-        else
-            {
-            recId = cmIds[i];
-            iapRecord = static_cast<CCDIAPRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-            CleanupStack::PushL( iapRecord );
-            
-            iapRecord->SetRecordId( recId );
-            iapRecord->LoadL( iCmManager->Session() );
-            
-            TRAPD( err, bearerType = iCmManager->BearerTypeFromIapRecordL( iapRecord ) );
-            
-            if( err == KErrNotSupported )
-                // This is unsupported connection method -> don't add it to the list
-                {
-                CleanupStack::PopAndDestroy( iapRecord );
-                continue;
-                }
-            else
-                {
-                User::LeaveIfError( err );
-                }
-            name = TPtrC( iapRecord->iRecordName ).AllocLC();
-            protect = iapRecord->Attributes() & ECDProtectedWrite;
-
-            if ( bearerIdArray.Count() )
-                {
-                for ( TInt j = 0; j<bearerIdArray.Count(); j++ )
-                    {
-                    if ( bearerType == bearerIdArray[j] )
-                        {
-                        iconId = j+KCmReservedIconIndexCount;
-                        }
-                    }
-                }
-            }
-
-        if ( iconId == KErrNotFound )
-            {
-            TInt iconInt( 0 );
-            if( isDest )
-                // Embedded destinations has not constant icon.
-                {
-                iconInt = (TInt)CCmDestinationImpl::IconIdL( *iCmManager,
-                                                             cmIds[i] );
-                }
-            else
-                {
-                iconInt = iCmManager->GetBearerInfoIntL( bearerType, 
-                                                         ECmBearerIcon );
-                }
-
-            if (iconInt) 
-                {
-                if ( isDest )
-                    {
-                    // append zero - assuming that bearer type values differ from zero
-                    bearerIdArray.Append( 0 ); 
-                    }
-                else
-                    {
-                    bearerIdArray.Append( bearerType );
-                    }
-
-                icons->AppendL( (CGulIcon*)iconInt );
-                iconId = bearerIdArray.Count()-1+KCmReservedIconIndexCount;
-                }
-            else 
-                {
-                iconId = KCmReservedIconIndexCount;
-                }
-            }
-        TBool def = EFalse;
-        if ( defUid == recId ) 
-            {
-            def = ETrue;
-            }
-        
-        TInt nextLayerSnapId = 0;
-        if( !isDest ) 
-            {
-            // Check if it is VPN over destination    
-            // If yes the list item should have single line 
-            CCmPluginBase* plugin = iCmManager->GetConnectionMethodL( cmIds[i] );
-            CleanupStack::PushL( plugin );
-                   
-            if( plugin->GetBoolAttributeL( ECmVirtual ) )
-                {
-                nextLayerSnapId = plugin->GetIntAttributeL( ECmNextLayerSNAPId );
-                }
-                
-            CleanupStack::PopAndDestroy( plugin );
-            }
-
-        CCmListItem* item = 
-                CCmListItem::NewLC( 
-                            recId, 
-                            name,
-                            i, 
-                            iconId,
-                            protect,
-                            (nextLayerSnapId ? ETrue : EFalse),
-                            // reasons for single line
-                            ( isDest || !iCmDestinationImpl), 
-                            def );
-        CleanupStack::Pop( item );
-        CleanupStack::Pop( name );
-        CleanupStack::PopAndDestroy(); // iapRecord or nwRecord
-        CleanupStack::PushL( item );
-        iModel->AppendL( item );
-        CleanupStack::Pop( item );
-        iItemIndex.Append(i);
-        }
-    
-    TInt cmCount = iItemIndex.Count();
-    SetNoOfCMsL( cmCount );
-    
-    if ( !cmCount && iCmDestinationImpl )
-        {
-        HBufC* buf = 0;
-        // rare case probably only caused by bad configuration
-        if ( iCmDestinationImpl->ProtectionLevel() == EProtLevel1 )
-            {
-            buf = StringLoader::LoadLC( R_TEXT_SOFTKEY_OPTION );
-            }
-        else
-            {    
-            buf = StringLoader::LoadLC( R_CMMANAGERUI_MSK_ADD_METHOD );
-            }
-        ButtonGroupContainer().SetCommandL( ECmManagerUiCmdCmEdit, *buf );
-        ButtonGroupContainer().DrawDeferred();                                                    
-        CleanupStack::PopAndDestroy( buf );
-        }
-
-    CleanupStack::PopAndDestroy( &bearerIdArray );
-    
-    CArrayPtr<CGulIcon>* oldIcons = 
-                            iListbox->ItemDrawer()->ColumnData()->IconArray();
-    if ( oldIcons )
-        {
-        oldIcons->ResetAndDestroy();
-        delete oldIcons;
-        }
-    
-    iListbox->ItemDrawer()->ColumnData()->SetIconArray( icons );
-
-    CleanupStack::Pop( icons );
-    CleanupStack::PopAndDestroy( &cmIds ); 
-    
-    iCmManager->CommitTransactionL( KErrNone );
-    
-    iListbox->DrawNow();
-    iListbox->UpdateScrollBarsL();
-    
-    TInt count = iListbox->Model()->NumberOfItems();
-    if ( count )
-        {
-        if ( count <= selected )
-            {
-            selected = count - 1; // index, so --
-            }
-        if ( selected >= 0 )
-            {
-            iListbox->ScrollToMakeItemVisible( selected);
-            iListbox->SetCurrentItemIndexAndDraw( selected );            
-            }
-        }
-    }
-    
-
-// --------------------------------------------------------------------------
-// CCmDlg::CurrentCmInUseL
-// --------------------------------------------------------------------------
-//
-TBool CCmDlg::CurrentCmInUseL()
-    {
-    TBool retVal = CurrentCML()->GetBoolAttributeL( ECmConnected );
-    if ( retVal )
-        {
-        TCmCommonUi::ShowNoteL( R_QTN_SET_NOTE_AP_IN_USE_EDIT,
-                                TCmCommonUi::ECmErrorNote );
-        retVal = ETrue;
-        }
-    return retVal;
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::ConstructCMArrayL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::ConstructCMArrayL( RArray<TUint32>& aCmIds )
-    {
-    iCmDestinationImpl->ReLoadConnectionMethodsL();
-    iCmDestinationImpl->ConnectMethodIdArrayL( aCmIds );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::ClearHiddenCMsFromArrayL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::ClearHiddenCMsFromArrayL( RArray<TUint32>& aCmIds )
-    {
-    TBool hidden( EFalse );
-    TInt err( KErrNone );
-    for ( TInt index = 0; index < aCmIds.Count(); index++ )
-        {
-        TUint recId = aCmIds[index];
-        TRAP( err, hidden = iCmManager->GetConnectionMethodInfoBoolL( recId, ECmHidden ) );
-        if ( err || hidden )
-            {
-            aCmIds.Remove( index );
-            index--;
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::GetHelpContext
-// --------------------------------------------------------------------------
-//
-void CCmDlg::GetHelpContext( TCoeHelpContext& aContext ) const
-    {
-    aContext.iMajor = KHelpUidPlugin;
-    aContext.iContext = KSET_HLP_CONN_METHODS_VIEW;
-    }
-    
-// --------------------------------------------------------------------------
-// CCmDlg::FinishPriorizingL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::FinishPriorizingL( TBool aOkPushed )
-    {
-    LOGGER_ENTERFN( "CCmDlg::FinishPriorizing" );
-
-    iListbox->ClearSelection();
-    iPrioritising = EFalse;
-    
-    if( aOkPushed )
-        {
-        if ( CurrentCML()->GetBoolAttributeL( ECmDestination ) ||
-             (CurrentCML()->GetBoolAttributeL( ECmVirtual ) &&
-              CurrentCML()->GetIntAttributeL( ECmNextLayerSNAPId )) )
-            {
-            // Priorising not possible
-            TCmCommonUi::ShowNoteL( R_CMMANAGERUI_INFO_PRIO_NOT_POSSIBLE,
-                                    TCmCommonUi::ECmInfoNote );
-            }
-        else
-            {
-            CCmPluginBase* cm = CMByIndexL(iCmToPrioritise);
-            iCmDestinationImpl->ModifyPriorityL( 
-                                *cm, 
-                                iListbox->CurrentItemIndex());
-            iCmDestinationImpl->UpdateL();
-            HandleListboxDataChangeL();
-            }
-        }
-     // Set the softkeys back    
-     ButtonGroupContainer().SetCommandSetL(
-                                    R_SOFTKEYS_OPTIONS_BACK__EDIT );
-     ButtonGroupContainer().DrawDeferred();
-     }
-
-
-// --------------------------------------------------------------------------
-// CCmDlg::Execute
-// --------------------------------------------------------------------------
-//
-void CCmDlg::Execute()
-    {
-    LOGGER_ENTERFN( "CCmDlg::Execute" );
-
-    iInfoPopupNoteController->HideInfoPopupNote();
-    
-    if(iPrioritising)
-    	{
-    	TRAPD( err, FinishPriorizingL( ETrue ) );
-    	if ( err )
-    	    {
-    	    HandleLeaveError( err );
-    	    }
-    	}
-    else
-    	{
-        iProcessing = ETrue;
-        
-        TRAPD( err, ProcessCommandL(ECmManagerUiCmdCmEdit) );
-    	if ( err )
-    	    {
-    	    HandleLeaveError( err );
-    	    }
-
-        iProcessing = EFalse;
-    	}
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::HandleLeaveError
-// --------------------------------------------------------------------------
-//
-void CCmDlg::HandleLeaveError( TInt /*aError*/ )
-    {
-    if(iProcessing)
-        {
-        iProcessing = EFalse;
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::HandleResourceChange
-// --------------------------------------------------------------------------
-//
-void CCmDlg::HandleResourceChange( TInt aType )
-    {
-    CCoeControl::HandleResourceChange( aType ); 
-
-    if( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        DrawNow(); 
-        }
-        
-    CAknDialog::HandleResourceChange(aType);        
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::GetInsertIndexL
-// --------------------------------------------------------------------------
-//
-TInt CCmDlg::GetInsertIndexL( TInt aCount, TUint32 aPriority )
-    {
-    TInt ret = -1;
-    TUint32 priority;
-    
-    for ( TInt index = 0; index < aCount; index++ )
-        {
-        CCmPluginBase* cm = iCmDestinationImpl->GetConnectionMethodL( iItemIndex[index] );
-        
-        if ( cm->GetBoolAttributeL( ECmVirtual ) &&
-             !cm->GetIntAttributeL( ECmNextLayerSNAPId ) )
-             {
-             TUint32 underlying = cm->GetIntAttributeL( ECmNextLayerIapId );
-             if ( underlying != 0 )
-                {
-                // Find the index that this VPN Iap should be inserted
-                TUint32 underlyingBearer = iCmManager->BearerTypeFromCmIdL( underlying );
-                priority = iCmManager->GetBearerInfoIntL( underlyingBearer, ECmDefaultPriority );
-                }
-             else
-                {
-                priority = KDataMobilitySelectionPolicyPriorityWildCard;
-                }
-             }
-        else
-            {
-            priority = cm->Plugin()->GetIntAttributeL( ECmDefaultPriority );
-            }
-        
-        if (priority > aPriority)
-            {
-            ret = index;
-            break;
-            }
-        }
-    
-    return ret;
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::ReBuildItemIndexArrayL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::ReBuildItemIndexArrayL()
-    {
-    iCmManager->OpenTransactionLC();
-
-    RArray<TUint32> cmIds;
-    ConstructCMArrayL( cmIds );
-    CleanupClosePushL( cmIds );
-    
-    // Remove hidden Connection Methods from the array if uncat folder
-    if ( !iCmDestinationImpl )
-        {
-        ClearHiddenCMsFromArrayL( cmIds );
-        }
-
-    iItemIndex.Reset();
-    for ( TInt i = 0; i < cmIds.Count(); i++ )
-        {
-        iItemIndex.Append(i);
-        }
-
-    CleanupStack::PopAndDestroy( &cmIds ); 
-    
-    iCmManager->CommitTransactionL( KErrNone );
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::ReOrderCMsL
-// --------------------------------------------------------------------------
-//
-void CCmDlg::ReOrderCMsL()
-    {
-    ReBuildItemIndexArrayL();
-    
-    TBool prioAllowed = ETrue;
-    TInt firstNotAllowedEntry = 0;
-    TInt index = 0;
-    TInt count = iItemIndex.Count();
-    
-    if (!iCmDestinationImpl)
-        {
-        return;
-        }
-   
-    // This part is to move a SANP-referred VPN Iap to the end of list if the VPN Iap is changed from
-    // IAP-referred to SNAP-referred. 
-    for ( index = 0; index < count; index++ )
-        {
-        CCmPluginBase* cm = iCmDestinationImpl->GetConnectionMethodL( iItemIndex[index] );
-        
-        if ( cm->GetBoolAttributeL( ECmDestination ) ||
-             (cm->GetBoolAttributeL( ECmVirtual ) &&
-              cm->GetIntAttributeL( ECmNextLayerSNAPId )) )
-            {
-            prioAllowed = EFalse;
-            firstNotAllowedEntry = index;
-            }
-        else
-            {
-            if ( !prioAllowed )
-                {
-                iCmDestinationImpl->ModifyPriorityL(*cm, firstNotAllowedEntry);
-                iCmDestinationImpl->UpdateL();
-                // start from the beginning
-                index = 0;
-                prioAllowed = ETrue;
-                continue;
-                }
-            }
-        }
-
-    // This part is to move a IAP-referred VPN Iap to a proper location of priority in list
-    // if the VAP Iap is changed from SNAP-referred to IAP-referred.
-    for ( index = 0; index < count; index++ )
-        {
-        CCmPluginBase* cm = iCmDestinationImpl->GetConnectionMethodL( iItemIndex[index] );
-
-        if ( cm->GetBoolAttributeL( ECmVirtual ) &&
-             !cm->GetIntAttributeL( ECmNextLayerSNAPId ) )
-            {
-            TUint32 underlying = cm->GetIntAttributeL( ECmNextLayerIapId );
-            if ( underlying != 0 )
-                {
-                // Find the index that this VPN Iap should be inserted
-                TUint32 underlyingBearer = iCmManager->BearerTypeFromCmIdL( underlying );
-                TUint32 underlyingPrio = iCmManager->GetBearerInfoIntL( underlyingBearer, ECmDefaultPriority );
-                TInt insertAt = GetInsertIndexL( index, underlyingPrio );
-                
-                // Modify the priority of this VPN Iap
-                if (insertAt != -1)
-                    {
-                    iCmDestinationImpl->ModifyPriorityL( *cm, insertAt );
-                    iCmDestinationImpl->UpdateL();
-                    break;
-                    }
-                }
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------
-// CCmDlg::CommsDatChanges
-// --------------------------------------------------------------------------
-//
-void CCmDlg::CommsDatChangesL()
-    {
-    if (iCmDestinationImpl)
-        {
-        // If the destination that is currently working on disappears
-        // with some reason then go back to parent view
-        if( !iCmManager->DestinationStillExistedL( iCmDestinationImpl ) )
-            {
-            iCmManager->WatcherUnRegister();
-            TryExitL( iExitReason );
-            return;
-            }
-        }
-    
-    // Update list box
-    HandleListboxDataChangeL();
-    }