connectionutilities/ConnectionDialogs/ConnectionUiUtilities/src/ChangeConnectionDlg.cpp
author Simon Howkins <simonh@symbian.org>
Thu, 18 Nov 2010 15:05:52 +0000
branchRCL_3
changeset 76 40780c2f3a6b
parent 58 83ca720e2b9a
permissions -rw-r--r--
Adjusted to avoid exports, etc, from a top-level bld.inf

/*
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "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: 
*     Defines dialog CChangeConnectionDlg from Connection Ui Utilities
*
*/


// INCLUDE FILES

#include <AknIconArray.h>
#include <AknsUtils.h>
#include <aknmessagequerycontrol.h>
#include <StringLoader.h>
#include <featmgr.h>
#include <WlanCdbCols.h>

#include <data_caging_path_literals.hrh>
#include <ConnectionUiUtilities.rsg>
#include <apsettings.mbg>

#include "ChangeConnectionDlg.h"
#include "ActiveCChangeConnectionDlg.h"
#include "ConnectionDialogsLogger.h"
#include "ExpiryTimer.h"

// CONSTANTS

// ROM folder
_LIT( KDriveZ, "z:" );

// Name of the MBM file containing icons
_LIT( KFileIcons, "ApSettings.mbm" );

#if defined(_DEBUG)
_LIT( KErrNullPointer, "NULL pointer" );
#endif

LOCAL_D const TInt KIconsGranularity = 4;


// ================= MEMBER FUNCTIONS =======================

// Constructor
CChangeConnectionDlg::CChangeConnectionDlg( TInt aIndex,
                                    TUint32* aIAPId, 
                                    CActiveCChangeConnectionDlg* aActiveDlg,
                                    TDes& aConnectionName )
: CAknListQueryDialog( &aIndex ),
  iIAPId( aIAPId ),
  iConnectionName( aConnectionName ),
  iIsWLANFeatureSupported( EFalse ),
  iActiveDlg( aActiveDlg )
    {
    }


// Destructor
CChangeConnectionDlg::~CChangeConnectionDlg()
    {
    //delete iExpiryTimer;
    }


// ---------------------------------------------------------
// CChangeConnectionDlg::NewL
// ---------------------------------------------------------
//
CChangeConnectionDlg* CChangeConnectionDlg::NewL( TUint32* aIAPId, 
                                      CActiveCChangeConnectionDlg* aActiveDlg,
                                      TDes& aConnectionName)
    {
    CChangeConnectionDlg* temp = new ( ELeave )CChangeConnectionDlg(
                                    0, aIAPId, aActiveDlg, aConnectionName );
    CleanupStack::PushL( temp ); 
    temp->ConstructL();                                    
    CleanupStack::Pop( temp );
    return temp;
    }


// ---------------------------------------------------------
// CChangeConnectionDlg::ConstructAndRunLD
// Constructs the dialog and runs it.
// ---------------------------------------------------------
//
void CChangeConnectionDlg::ConstructL()
    {
    FeatureManager::InitializeLibL();
    iIsWLANFeatureSupported = 
                    FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
    FeatureManager::UnInitializeLib();
    }



// ---------------------------------------------------------
// CChangeConnectionDlg::OkToExitL( TInt aButtonId)
// called by framework when the OK button is pressed
// ---------------------------------------------------------
//
TBool CChangeConnectionDlg::OkToExitL( TInt aButtonId )
    {
    CLOG_ENTERFN( "CChangeConnectionDlg::OkToExitL " );  
    
    TBool result( EFalse );
    __ASSERT_DEBUG( iActiveDlg, User::Panic( KErrNullPointer, KErrNone ) );
    
    
    if ( aButtonId == EAknSoftkeySelect || aButtonId == EAknSoftkeyOk )
        {
        TInt index = ListBox()->CurrentItemIndex();
        CConnectionInfo* tempInfo = iActiveDlg->ActIAPs()->At( index );
        *iIAPId = tempInfo->Id();

        CLOG_WRITEF( _L( "*iIAPId : %d" ), *iIAPId );
        
        iActiveDlg->Cancel();
        iActiveDlg->SetSelected( ETrue );
                
        result = ETrue;
        }
    else if ( aButtonId == EAknSoftkeyCancel )
        {
        iActiveDlg->Cancel();  
                  
        result = ETrue;
        }
    
    CLOG_LEAVEFN( "CChangeConnectionDlg::OkToExitL " );  
    
    return result;
    }



// ---------------------------------------------------------
// CChangeConnectionDlg::PreLayoutDynInitL()
// called by framework before dialog is shown
// ---------------------------------------------------------
//
void CChangeConnectionDlg::PreLayoutDynInitL()
    {
    CLOG_ENTERFN( "CChangeConnectionDlg::PreLayoutDynInitL " );  
    
    CAknListQueryDialog::PreLayoutDynInitL();

    HBufC *desc = StringLoader::LoadL( R_CHANGE_CONNECTION_DESC, 
                                       iConnectionName );
    CleanupStack::PushL( desc );
    MessageBox()->SetMessageTextL( desc );
    CleanupStack::PopAndDestroy( desc );

    SetOwnershipType( ELbmOwnsItemArray );
    SetItemTextArray( iActiveDlg->ActIAPs() );       
    SetOwnershipType( ELbmDoesNotOwnItemArray );

    SetIconsL();
    
    // Timer not in use due the unresolved crash
    //iExpiryTimer = CExpiryTimer::NewL( *this );
    //iExpiryTimer->Start();
    CLOG_LEAVEFN( "CChangeConnectionDlg::PreLayoutDynInitL " );  
    
    }


// ---------------------------------------------------------
// CChangeConnectionDlg::RefreshDialogL
// ---------------------------------------------------------
//    
void CChangeConnectionDlg::RefreshDialogL()
    {  
    CLOG_ENTERFN( "CChangeConnectionDlg::RefreshDialogL " );  
     
    SetItemTextArray( iActiveDlg->ActIAPs() );
    ListBox()->HandleItemAdditionL();  
    
    Layout();   
    SizeChanged();
    DrawNow();
    
    CLOG_LEAVEFN( "CChangeConnectionDlg::RefreshDialogL " );  
              
    }


// ---------------------------------------------------------
// CChangeConnectionDlg::SetIconsL()
// ---------------------------------------------------------
//
void CChangeConnectionDlg::SetIconsL()
    {
    CArrayPtr< CGulIcon >* icons = new( ELeave ) CAknIconArray( 
                                                        KIconsGranularity );
    CleanupStack::PushL( icons );

    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();

    TFileName iconsFileName;

    iconsFileName.Append( KDriveZ );

    iconsFileName.Append( KDC_APP_BITMAP_DIR );

    iconsFileName.Append( KFileIcons );

    icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
                            KAknsIIDQgnPropWmlGprs,
                            iconsFileName, 
                            EMbmApsettingsQgn_prop_wml_gprs, 
                            EMbmApsettingsQgn_prop_wml_gprs_mask ) );

    icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
                            KAknsIIDQgnPropWmlCsd,
                            iconsFileName, 
                            EMbmApsettingsQgn_prop_wml_csd, 
                            EMbmApsettingsQgn_prop_wml_csd_mask ) );

    icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
                            KAknsIIDQgnPropWmlHscsd,
                            iconsFileName, 
                            EMbmApsettingsQgn_prop_wml_hscsd, 
                            EMbmApsettingsQgn_prop_wml_hscsd_mask ) );

    if ( iIsWLANFeatureSupported )
        {
        icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
                            KAknsIIDQgnPropWlanEasy,
                            iconsFileName, 
                            EMbmApsettingsQgn_prop_wlan_easy, 
                            EMbmApsettingsQgn_prop_wlan_easy_mask ) );
    
        icons->AppendL( AknsUtils::CreateGulIconL( skinInstance, 
                            KAknsIIDQgnPropWlanBearer,
                            iconsFileName, 
                            EMbmApsettingsQgn_prop_wlan_bearer, 
                            EMbmApsettingsQgn_prop_wlan_bearer_mask ) );
        }
    
    SetIconArrayL( icons );

    CleanupStack::Pop( icons );
    }




// ----------------------------------------------------------------------------
// void CChangeConnectionDlg::HandleResourceChange( TInt aType )
// Handle resource change events. 
// ----------------------------------------------------------------------------
//
void CChangeConnectionDlg::HandleResourceChange( TInt aType )
    {
    if ( aType == KAknsMessageSkinChange )
        {
        CAknListQueryDialog::HandleResourceChange( aType );

        TRAP_IGNORE( SetIconsL() );
        SizeChanged();
        }
    else
        {
        if ( aType == KEikDynamicLayoutVariantSwitch )
            {
            TRect mainPaneRect;
            AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
                                               mainPaneRect );

            TAknLayoutRect layoutRect;
            layoutRect.LayoutRect( TRect( TPoint( 0, 0 ), 
                                   mainPaneRect.Size() ),
                                   AKN_LAYOUT_WINDOW_list_gen_pane( 0 ) );

            ListBox()->SetRect( layoutRect.Rect() );
            }

        // Base call
        CAknListQueryDialog::HandleResourceChange( aType );
        }
    }

void CChangeConnectionDlg::HandleTimedOut()
    {
    TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) );
    }


// End of File