cmmanager/cmmgr/Framework/Src/cmwizard.cpp
changeset 20 9c97ad6591ae
parent 18 fcbbe021d614
child 21 b8e8e15e80f2
child 23 7ec726f93df1
child 28 860702281757
--- a/cmmanager/cmmgr/Framework/Src/cmwizard.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,487 +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:  Wizard used for adding connection methods
-*
-*/
-
-#include <AknWaitDialog.h>
-#include <cmmanager.rsg>
-#include <StringLoader.h>
-#include <avkon.hrh>
-#include "cmwizard.h"
-#include <cmcommonconstants.h>
-#include <cmcommonui.h>
-#include "cmdestinationimpl.h"
-#include "cmlogger.h"
-#include "cmmanagerimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include "selectdestinationdlg.h"
-
-using namespace CMManager;
-
-// ---------------------------------------------------------------------------
-// CCmWizard::CCmWizard
-// ---------------------------------------------------------------------------
-//
-CCmWizard::CCmWizard( CCmManagerImpl& aCmManager ) 
-    : iCmManager( aCmManager )
-    {
-    CLOG_CREATE;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmWizard::~CCmWizard
-// ---------------------------------------------------------------------------
-//
-CCmWizard::~CCmWizard()
-    {
-    if( iCheckConnDlg )
-        {
-        delete iCheckConnDlg;
-        }
-    CLOG_CLOSE;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmWizard::CreateConnectionMethodL
-// ---------------------------------------------------------------------------
-//
-TInt CCmWizard::CreateConnectionMethodL
-                                    ( CCmDestinationImpl* aTargetDestination )
-    {
-    TInt index( KErrCancel );
-    
-    LOGGER_ENTERFN( "CCmWizard::CreateConnectionMethodL" );
-    TBool wizardCancelled = EFalse; // indicates if the wizard has got cancelled
-    TUint32 bearerType = 0;
-    TBool manuallyConfigure ( EFalse );
-    
-    if ( AutoCheckForCmsL() )
-        {
-        RArray<TUint32> availableBearers( KCmArrayMediumGranularity );
-        CleanupClosePushL( availableBearers );
-
-        CLOG_WRITE( "CCmWizard::Starting CheckForCms" );
-        CheckForCmsL( availableBearers );
-
-        // If user has cancelled the dialog, then (s)he wanted to terminate
-        // the whole procedure.
-        if ( iCheckConnDlgCancelled )
-            {
-            CLOG_WRITE( "CCmWizard::wizardCancelled" );
-            wizardCancelled = ETrue;
-            }
-        else
-            {
-            // If there's coverage for at least one of the bearer types
-            if ( availableBearers.Count() )
-                {
-                CLOG_WRITE_1( "CCmWizard::CreateConnectionMethodL av. bearers: [%d]",
-                               availableBearers.Count() );
-                // Show available conn methods in a list from which user has to
-                // select.
-                bearerType = TCmCommonUi::ShowAvailableMethodsL
-                                                ( availableBearers,
-                                                  iCmManager );
-                if ( !bearerType )
-                    {
-                    wizardCancelled = ETrue;
-                    CLOG_WRITE( "CCmWizard::wizardCancelled" );
-                    }
-                }
-            else    // no coverage at all
-                {
-                CLOG_WRITE( "CCmWizard::CreateConnectionMethodL no available bearers, manual selection." );
-                // "Do you want to configure conn methods manually?"
-                if ( ManualCheckForCmsL() )
-                    {
-                    // Yes, select a bearer manually
-                    bearerType = TCmCommonUi::SelectBearerL( iCmManager );
-                    if ( !bearerType )
-                        {
-                        // Cancelled dialog
-                        wizardCancelled = ETrue;
-                        }
-                    else
-                        {
-                        manuallyConfigure = ETrue;
-                        }
-                    }
-                else
-                    {
-                    // No, user has cancelled the dialog
-                    wizardCancelled = ETrue;
-                    }
-                }
-            }
-
-        CleanupStack::PopAndDestroy( &availableBearers );
-        }
-    else    // "No" for checking conn methods automatically
-        {
-        CLOG_WRITE( "CCmWizard::AutoCheckForCmsL returned FALSE" );
-        // Manual bearer selection
-        bearerType = TCmCommonUi::SelectBearerL( iCmManager );
-        if ( !bearerType )
-            {
-            // Cancelled dialog
-            wizardCancelled = ETrue;
-            }
-        else
-            {
-            manuallyConfigure = ETrue;
-            }
-        }
-
-    if ( !wizardCancelled )
-        {
-        CCmPluginBase* plugin = iCmManager.CreateConnectionMethodL(
-                                            bearerType, aTargetDestination );
-        CleanupStack::PushL( plugin );
-
-        CLOG_WRITE( "CCmWizard::CreateConnectionMethodL plugin created, starting initialization" );
-
-        // Bearer-specific UI-supported initialization is done by plug-ins
-	    TBool ret = EFalse;
-	    TRAPD(err, ret = plugin->InitializeWithUiL( manuallyConfigure ) );
-        if ( err == KErrNone && ret )
-            {
-            CCmDestinationImpl* targetDest = aTargetDestination;
-            // If target destination is not yet specified...
-            if ( !aTargetDestination )
-                {
-                // For virtual bearers: eliminated the underlying destination 
-                // from the destination selection dialog
-                TUint32 targetDestId( 0 );
-                
-                RArray<TUint32> destArray( iCmManager.DestinationCountL() );
-                CleanupClosePushL( destArray );
-                iCmManager.AllDestinationsL( destArray );
-                // now do the filtering
-                plugin->FilterPossibleParentsL( destArray );
-                
-                if ( !destArray.Count() )
-                    {
-                    // there are no destinations to put the CM into
-                    TCmCommonUi::ShowNoteL( R_CMWIZARD_NO_VPN_STACKING,
-                                            TCmCommonUi::ECmErrorNote );
-        
-                    CleanupStack::PopAndDestroy( &destArray );
-                    CleanupStack::PopAndDestroy( plugin );
-        
-                    CLOG_WRITE_1( "CCmWizard::CreateConnectionMethodL no valid parents after filtering, index: [%d]", index );
-                    return index;
-                    }
-                    
-                // ... then let the user select a destination.
-                CSelectDestinationDlg* dlg = CSelectDestinationDlg::NewL( targetDestId,
-                                                                          iCmManager,
-                                                                          &destArray );
-                dlg->ExecuteLD( R_CMMANAGER_LIST_QUERY_WITH_MSGBOX );
-        
-                CleanupStack::PopAndDestroy( &destArray );
-        
-                if ( targetDestId )
-                    {
-                    // CREATE an object based on an ID.
-                    targetDest = iCmManager.DestinationL( targetDestId );
-                    CleanupStack::PushL( targetDest );
-                    }
-                }
-
-            CLOG_WRITE_1( "CCmWizard::CreateConnectionMethodL target dest: [0x%x]",
-                           targetDest );
-    
-            // If the target destination is still unspecified at this point,
-            // then the only reason could be that the previous dialog was
-            // cancelled ==> do something only if we have the target 
-            // destination
-            if ( targetDest )
-                {
-                plugin->UpdateL();  // commit changes
-    
-                index = iCmManager.CopyConnectionMethodL( *targetDest,
-                                                                    *plugin );
-
-                RArray<TUint32> additionalCms;
-                CleanupClosePushL (additionalCms);
-                plugin->GetAdditionalUids( additionalCms );
-                if ( additionalCms.Count() )
-                    {//if there are additional cms created, move them to the target destination as well
-                    for ( TInt i = 0; i<additionalCms.Count(); i++)
-                        {
-                        CCmPluginBase* cm = iCmManager.GetConnectionMethodL( additionalCms[i] );
-                        CleanupStack::PushL(cm);
-                        iCmManager.CopyConnectionMethodL( *targetDest,
-                                                                    *cm );
-                        CleanupStack::PopAndDestroy( cm );
-                        }
-                    }
-                CleanupStack::PopAndDestroy( &additionalCms );
-
-                HBufC* destName = targetDest->NameLC();
-    
-                TCmCommonUi::ShowNoteL( R_CMWIZARD_NEW_METHOD_ADDED,
-                                        *destName,
-                                        TCmCommonUi::ECmOkNote );
-    
-                CleanupStack::PopAndDestroy( destName );
-    
-                // Here's a tricky one: if 'aTargetDestination' was NULL, then
-                // I had to create 'targetDest' myself (with
-                // iCmManager.DestinationL), consequently I have to
-                // free it up, too.
-                if ( !aTargetDestination )
-                    {
-                    CleanupStack::PopAndDestroy( targetDest );
-                    }
-                }
-            else // Wi-Fi may have set IAP in database. So, delete it.
-                {
-                CLOG_WRITE( "CCmWizard::CreateConnectionMethodL, handling cancel add destination -- start" );                                   
-                RArray<TUint32> additionalCms;
-                CleanupClosePushL (additionalCms);
-    
-                plugin->GetAdditionalUids( additionalCms );
-                CLOG_WRITE_1( "CCmWizard::CreateConnectionMethodL, addtionalCms count [%d]", additionalCms.Count() );
-                for ( TInt i = 0; i<additionalCms.Count(); i++)
-                    {
-                    CCmPluginBase* cm = iCmManager.GetConnectionMethodL( additionalCms[i] );
-                    CleanupStack::PushL(cm);
-                    cm->DeleteL( ETrue );
-                    CleanupStack::PopAndDestroy( cm );
-                    }
-                // If plugin hasn't got Iap Id, it's "normal" CM which has not been saved
-                // into CommsDat yet. Otherwise it's Wifi CM and has to be deleted by using
-                // DeleteL() method. 
-                if( plugin->GetIntAttributeL( ECmIapId ) )
-                    {
-                    plugin->DeleteL( ETrue );
-                    }
-    
-                CleanupStack::PopAndDestroy( &additionalCms );
-                CLOG_WRITE( "CCmWizard::CreateConnectionMethodL, handling cancel add destination -- end" );
-                }
-    		    }
-        CleanupStack::PopAndDestroy( plugin );
-        }
-       
-    return index;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmWizard::DialogDismissedL
-// ---------------------------------------------------------------------------
-//
-void CCmWizard::DialogDismissedL( TInt aButtonId )
-    {
-    LOGGER_ENTERFN( "CCmWizard::DialogDismissedL" );
-
-    CLOG_WRITE_1( "CCmWizard::DialogDismissedL, aButtonId: [%d]", aButtonId );
-    if ( aButtonId == EAknSoftkeyCancel )
-        {
-        if ( iCheckConnDlg != NULL )
-            {
-            CLOG_WRITE( "CCmWizard::CheckConnDlg is not NULL" );
-            iCheckConnDlgCancelled = ETrue;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmWizard::AutoCheckForCmsL
-// ---------------------------------------------------------------------------
-//
-TBool CCmWizard::AutoCheckForCmsL() const
-    {
-    LOGGER_ENTERFN( "CCmWizard::AutoCheckForCmsL" );
-    // Automatically check for available conn methods?
-    TInt retval =
-            TCmCommonUi::ShowConfirmationQueryL( R_CMWIZARD_AUTOMATIC_CHECK );
-
-    return ( retval == EAknSoftkeyYes || retval == EAknSoftkeyOk )
-            ? ETrue : EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmWizard::ManualCheckForCmsL
-// ---------------------------------------------------------------------------
-//
-TBool CCmWizard::ManualCheckForCmsL() const
-    {
-    LOGGER_ENTERFN( "CCmWizard::ManualCheckForCmsL" );
-    // Manually configure CMs?
-    TInt retval =
-            TCmCommonUi::ShowConfirmationQueryL(    
-                                             R_CMWIZARD_MANUAL_CONFIGURATION );
-
-    return ( retval == EAknSoftkeyYes || retval == EAknSoftkeyOk )
-            ? ETrue : EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmWizard::CheckForCmsL
-// ---------------------------------------------------------------------------
-//
-void CCmWizard::CheckForCmsL( RArray<TUint32>& aCoverageArray )
-    {
-    LOGGER_ENTERFN( "CCmWizard::CheckForCmsL" );
-    // Show a wait dialog
-    iCheckConnDlgCancelled = FALSE;
-    iCheckConnDlg = new (ELeave) CAknWaitDialog(
-                          ( REINTERPRET_CAST( CEikDialog**, &iCheckConnDlg )) );
-    
-    iCheckConnDlg->SetCallback( this );
-    
-    iCheckConnDlg->SetTone( CAknNoteDialog::EConfirmationTone );
-
-    HBufC* text = StringLoader::LoadLC( R_CMWIZARD_CHECKING_METHODS );
-    iCheckConnDlg->SetTextL( *text );
-    CleanupStack::PopAndDestroy( text );
-
-    iCheckConnDlg->ExecuteLD( R_CMMANAGER_WAIT_NOTE );
-
-    RArray<TUint32> bearers( KCmArrayMediumGranularity );
-    CleanupClosePushL( bearers );
-
-    iCmManager.SupportedBearersL( bearers );
-
-    for ( TInt i = 0; i < bearers.Count() && !iCheckConnDlgCancelled; i++ )
-        {
-        TBool avail( EFalse );
-        
-        TRAPD( err, avail = iCmManager.GetBearerInfoBoolL( bearers[i], ECmCoverage ) );
-
-        CLOG_WRITE_2( "CCmWizard::CheckForCms, bearer [%d] coverage error [%d]", i, err );
-        
-        if( err )
-            {
-            continue;
-            }
-            
-
-        if ( avail &&
-             iCmManager.GetBearerInfoBoolL( bearers[i], ECmAddToAvailableList ) )
-            {
-            aCoverageArray.AppendL( bearers[i] );
-            CLOG_WRITE_1( "CCmWizard::CheckForCms, bearer [%d] appended", i );
-            }
-        }
-
-    CleanupStack::PopAndDestroy( &bearers );
-
-    // Dismiss wait dialog
-    if( !iCheckConnDlgCancelled )
-        {
-        CLOG_WRITE( "CCmWizard::CheckForCms, cancelling wait dlg" );
-        iCheckConnDlg->SetCallback( NULL );
-        iCheckConnDlg->ProcessFinishedL();
-        CLOG_WRITE( "CCmWizard::CheckForCms, wait dialog deleted" );
-        }
-    else
-        {
-        CLOG_WRITE( "CCmWizard::CheckForCms, wait dlg was already cancelled" );
-        }
-    
-    
-    // Set the member to NULL every case
-    iCheckConnDlg = NULL;
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CCmWizard::FindTargetDestinationL
-// ---------------------------------------------------------------------------
-//
-TUint32 CCmWizard::FindTargetDestinationL( CCmPluginBase* aPlugin )
-    {
-    LOGGER_ENTERFN( "CCmWizard::FindTargetDestinationL" );
-
-    // Tries to read the destination id
-    TUint32 targetDestId (0); 
-    TRAPD( err, targetDestId = 
-                aPlugin->GetIntAttributeL( ECmNextLayerSNAPId ) );
-                
-    // only supported by virtual bearers, don't leave        
-    if ( err && err != KErrNotSupported )
-       {
-       User::Leave( err );
-       }
-                
-    // targetDestId == 0 means that not destination but a connection 
-    // method have been selected
-    if ( targetDestId == 0 )
-        {
-        // Now the destination containing the connection method 
-        // should be obtained
-        TUint32 targetCmId (0); 
-        TRAPD( err, targetCmId = 
-                    aPlugin->GetIntAttributeL( ECmNextLayerIapId ) );
-        
-        // only supported by virtual bearers, don't leave        
-        if ( err && err != KErrNotSupported )
-            {
-            User::Leave( err );
-            }
-            
-        targetDestId = FindParentDestinationL( targetCmId );   
-        }
-        
-    return targetDestId;    
-    }
- 
-// ---------------------------------------------------------------------------
-// CCmWizard::FindParentDestinationL
-// ---------------------------------------------------------------------------
-//
-TUint32 CCmWizard::FindParentDestinationL( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmWizard::FindParentDestinationL" );
-
-    TBool found = EFalse;
-    TUint32 targetDestId (0); 
-    
-    RArray<TUint32> destinations;
-   
-    iCmManager.AllDestinationsL( destinations );
-    CleanupClosePushL( destinations );
-    
-    RArray<TUint32> cms;
-    
-    for ( TInt i = 0; i < destinations.Count() && !found; i++ )
-        {            
-        CCmDestinationImpl* dest = 
-                          iCmManager.DestinationL( destinations[i] );
-        CleanupStack::PushL( dest );
-        dest->ConnectMethodIdArrayL( cms );
-        CleanupClosePushL( cms );
-
-        for ( TInt j = 0; j < cms.Count() && !found; j++ )
-            {
-            if( cms[j] == aCmId)
-                {
-                targetDestId = destinations[i];
-                found = ETrue;
-                }
-            }
-        CleanupStack::PopAndDestroy( &cms );
-        CleanupStack::PopAndDestroy( dest );
-        }
-
-    CleanupStack::PopAndDestroy( &destinations );
-
-    return targetDestId;    
-    }