accesspointcontrol/apcontrollistplugin/src/apcontrollistplugin.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) 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:  APControlListPlugin class.
*
*/


// INCLUDE FILES

// System includes
#include <hlplch.h>

#include <aknlists.h>        //for CListBox
#include <f32file.h>
#include <aknnotewrappers.h> //for CAknInformationNote
#include <AknQueryDialog.h>
#include <StringLoader.h>
#include <apcontrollistpluginrsc.rsg>
#include <data_caging_path_literals.hrh>
#include <apcontrollistplugin.mbg>
#include <featmgr.h>

// User includes
#include "apcontrollistplugin.hrh"
#include "apcontrollistplugin.h"
#include "apcontrollistplugincontainer.h"
#include "apcontrollistpluginlogger.h"
#include "apcontrollistapiwrapper.h"
#include "apcontrollistcapschange.h"

// CONSTANTS
// Resource file location constant
_LIT( KResourceFileName, "APControlListPluginRsc.rsc" );

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

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

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

// ---------------------------------------------------------
// CAPControlListPlugin::NewL
// First phase constructor
// ---------------------------------------------------------
CAPControlListPlugin* CAPControlListPlugin::NewL( TAny* /*aInitParams*/ )
    {
	CLOG_CREATE()
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::NewL" ) ) );
    CAPControlListPlugin* self = new ( ELeave ) CAPControlListPlugin();
    CleanupStack::PushL( self );
    
    self->ConstructL( );
                      
    CleanupStack::Pop( self );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::NewL" ) ) );
    return self;     
    }

// ---------------------------------------------------------
// CAPControlListPlugin::NewL
// Destructor
// ---------------------------------------------------------
CAPControlListPlugin::~CAPControlListPlugin()
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::~CAPControlListPlugin" ) ) );
    if( iContainer )
    {
        AppUi()->RemoveFromViewStack( *this, iContainer );
        delete iContainer;
    }
    if (iAPIWrapper)
    {
    	delete iAPIWrapper;
    }
    if (iChangeNotifier)
    {
    	delete iChangeNotifier;
    }
    iResources.Close();
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::~CAPControlListPlugin" ) ) );
    }

// ---------------------------------------------------------
// CAPControlListPlugin::Id
// ---------------------------------------------------------
TUid CAPControlListPlugin::Id() const
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::Id" ) ) );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::Id" ) ) );
    return KAPControlListPluginUid;
    }
    
// ---------------------------------------------------------
// CAPControlListPlugin::HandleCommandL( TInt aCommand )
// ---------------------------------------------------------
//
void CAPControlListPlugin::HandleCommandL( TInt aCommand )
    {   
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::HandleCommandL" ) ) );
    switch ( aCommand )
        {
        case EAknSoftkeyBack :
            {
            // Activate the view ( from GS ) that we
            // are supposed to return to
            AppUi()->ActivateLocalViewL( iPrevViewId.iViewUid );
            break;
            }
        case EAPControlListCmdActivate :
            {
            iAPIWrapper->ActivateACL();
            break;
            }
        case EAPControlListCmdDeactivate :
            {
            iAPIWrapper->DeActivateACL();
            break;
            }
        case EAPControlListCmdAdd :
            {
            iAPIWrapper->AddAPNL();
            break;
            }
        case EAPControlListCmdRemove :
            {
            iAPIWrapper->RemoveAPN();
            break;
            }
        case EAknCmdHelp : 
            {
            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(), 
                                                 AppUi()->AppHelpContextL() );
            break;
            }
        case EEikCmdExit :
        default :
            {            
            AppUi()->HandleCommandL( aCommand );
            break;
            }
        }
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::HandleCommandL" ) ) );
    }
    
// ---------------------------------------------------------
// CAPControlListPlugin::ExitOnUSIMRemovalL
// ---------------------------------------------------------
void CAPControlListPlugin::ExitOnUSIMRemovalL() 
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::ExitOnUSIMRemovalL" ) ) );
    iVisible = EFalse;
	AppUi()->ActivateLocalViewL( iPrevViewId.iViewUid );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::ExitOnUSIMRemovalL" ) ) );
    }
    
// ---------------------------------------------------------
// CAPControlListPlugin::DoActivateL
// ---------------------------------------------------------
void CAPControlListPlugin::DoActivateL( const TVwsViewId& aPrevViewId, 
                                      TUid /*aCustomMessageId*/, 
                                      const TDesC8& /*aCustomMessage*/ )
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::DoActivateL" ) ) );
    if ( iPrevViewId.iViewUid.iUid == 0 )
        {
        //must be prepared to application switch, so it stores
        //only the parent view (General Settings Main View)
        iPrevViewId = aPrevViewId;
        }

    if ( !iContainer )
        {
        iContainer = new( ELeave ) CAPControlListPluginContainer;
        iContainer->SetMopParent( this );
        
        TRAPD( error, iContainer->ConstructL( ClientRect(), this ) );
        if ( error )
            {
            delete iContainer;
            iContainer = NULL;
            User::Leave( error );
            }
            
        AppUi()->AddToViewStackL( *this, iContainer );
        iContainer->HandleResourceChange(KEikDynamicLayoutVariantSwitch);
        
        if (!iAPIWrapper)  
            {
            iAPIWrapper = new( ELeave ) CAPControlListAPIWrapper(*this);
            iAPIWrapper->ConstructL();
            }
        if (!iChangeNotifier)  
            {
            iChangeNotifier = new( ELeave ) CAPControlListCapsChange(*this);
            iChangeNotifier->NotifyCapsChange();
            }
	    				
        ShowInfoNoteL(R_QTN_ACL_WAIT_READING_SIM);
        iAPIWrapper->ReadData();  
        iContainer->HandleResourceChange(KEikDynamicLayoutVariantSwitch);
        }
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::DoActivateL" ) ) );
    }

// ---------------------------------------------------------
// CAPControlListPlugin::PluginUid
// ---------------------------------------------------------
TUid CAPControlListPlugin::PluginUid() const
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::PluginUid" ) ) );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::PluginUid" ) ) );
    return KAPControlListPluginUid;
    }

// ---------------------------------------------------------
// CAPControlListPlugin::GetCaption
// ---------------------------------------------------------
void CAPControlListPlugin::GetCaptionL( TDes& aCaption ) const
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::GetCaptionL" ) ) );
    StringLoader::Load( aCaption, R_QTN_ACL_MENU_ITEM );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::GetCaptionL" ) ) );
    }

// ---------------------------------------------------------
// CAPControlListPlugin::HasBitmap
// ---------------------------------------------------------
TBool CAPControlListPlugin::HasBitmap() const
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::HasBitmap" ) ) );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::HasBitmap" ) ) );
    return EFalse;
    }

// ---------------------------------------------------------
// CAPControlListPlugin::GetBitmapL
// ---------------------------------------------------------
void CAPControlListPlugin::GetBitmapL( CFbsBitmap* /*aBitmap*/, 
                                     CFbsBitmap* /*aMask*/ ) const
    {
    //no bitmap
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::GetBitmapL" ) ) );
    User::Leave( KErrNotFound );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::GetBitmapL" ) ) );
    }
    
// ---------------------------------------------------------
// CAPControlListPlugin::PluginProviderCategory
// ---------------------------------------------------------
TInt CAPControlListPlugin::PluginProviderCategory() const
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::PluginProviderCategory" ) ) );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::PluginProviderCategory" ) ) );
    return EGSPluginProviderOEM;
    }

// ---------------------------------------------------------
// CApSettingsPlugin::CreateIconL
// ---------------------------------------------------------    
CGulIcon* CAPControlListPlugin::CreateIconL( const TUid aIconType )
    {
    TFileName iconsFileName;

    iconsFileName.Append( KDriveZ );
    iconsFileName.Append( KDC_APP_BITMAP_DIR );
    iconsFileName.Append( KFileIcons );
    
	CGulIcon* icon;
       
    if( aIconType == KGSIconTypeLbxItem )
        {
        icon = AknsUtils::CreateGulIconL(
        AknsUtils::SkinInstance(), 
        KAknsIIDQgnPropSetConnAccp, 
        iconsFileName,
        EMbmApcontrollistpluginQgn_prop_set_conn_acl,
        EMbmApcontrollistpluginQgn_prop_set_conn_acl_mask );
        }
     else
        {
        icon = CGSPluginInterface::CreateIconL( aIconType );
        }
	
	return icon;
    }    
    
// ---------------------------------------------------------
// CAPControlListPlugin::Visible
// ---------------------------------------------------------
TBool CAPControlListPlugin::Visible() const
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::Visible" ) ) );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::Visible" ) ) );
    return iVisible;
    }
    
// ---------------------------------------------------------
// CAPControlListPlugin::CAPControlListPlugin
// ---------------------------------------------------------
CAPControlListPlugin::CAPControlListPlugin():
    iPrevViewId(),
    iResources( *CCoeEnv::Static() ),
    iVisible(EFalse)
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::CAPControlListPlugin" ) ) );
    // no implementation required
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::CAPControlListPlugin" ) ) );
    }

// ---------------------------------------------------------
// CAPControlListPlugin::ConstructL
// ---------------------------------------------------------
TAny CAPControlListPlugin::ConstructL()
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::ConstructL" ) ) );
   
    TFileName fileName;
    TDriveUnit drive( EDriveZ );
    
    fileName.Append( drive.Name() );
    fileName.Append( KDC_RESOURCE_FILES_DIR );
    fileName.Append( KResourceFileName );    
    iResources.OpenL( fileName );

    BaseConstructL( R_APCLPLUGIN_MAIN_VIEW );
     
	// get Visible   
    iAPIWrapper = new( ELeave ) CAPControlListAPIWrapper(*this);
    iAPIWrapper->ConstructL();
    iVisible = iAPIWrapper->Visible();
    iAPIWrapper->Cancel();
    delete iAPIWrapper;
    iAPIWrapper = NULL;
        
    FeatureManager::InitializeLibL();
    iHelp = FeatureManager::FeatureSupported( KFeatureIdHelp ); 
    FeatureManager::UnInitializeLib();
    
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::ConstructL" ) ) );
    }
    
    
// ---------------------------------------------------------
// CAPControlListPlugin::DynInitMenuPaneL
// ---------------------------------------------------------
void CAPControlListPlugin::DynInitMenuPaneL( TInt aResourceId,
                                         CEikMenuPane* aMenuPane )
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::DynInitMenuPaneL" ) ) );
    CAknView::DynInitMenuPaneL( aResourceId, aMenuPane );
    if ( aResourceId == R_APCLPLUGIN_MAIN_MENU )
    {    
		if ( iAPIWrapper->Enabled() )
		{
    		aMenuPane->DeleteMenuItem( EAPControlListCmdActivate );
		}
		else
		{
    		aMenuPane->DeleteMenuItem( EAPControlListCmdDeactivate );
		}
		if ( !iContainer->NumberOfItems() )
		{
    		aMenuPane->DeleteMenuItem( EAPControlListCmdRemove );
		}
		if (!iHelp)
		{
    		aMenuPane->DeleteMenuItem( EAknCmdHelp );		    
		}
    }
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::DynInitMenuPaneL" ) ) );
    }
        
// ---------------------------------------------------------
// CAPControlListPlugin::DoDeactivate
// ---------------------------------------------------------
void CAPControlListPlugin::DoDeactivate()
    {        
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::DoDeactivate" ) ) );
    if ( iContainer )
        {
        AppUi()->RemoveFromViewStack( *this, iContainer );
        }

    delete iContainer;
    iContainer = NULL; 
    if (iChangeNotifier)
    {
    	delete iChangeNotifier;
		iChangeNotifier = NULL; 
    }
    if (iAPIWrapper)  
	    {
	    delete iAPIWrapper;
	    iAPIWrapper = NULL;    	
	    }
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::DoDeactivate" ) ) );
    }
    
// ---------------------------------------------------------
// CAPControlListPlugin::UiComplete( TInt aUirEvent )
// ---------------------------------------------------------
//
void CAPControlListPlugin::UiComplete( TInt /*aUirEvent*/ )
    {    
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::UiComplete" ) ) );
    // Activate this view as we are coming back
    // from some other view in the UI
    TRAP_IGNORE( 
        AppUi()->ActivateLocalViewL( KAPControlListPluginUid ) )
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::UiComplete" ) ) );
    }
    
// ---------------------------------------------------------
//  CAPControlListPlugin::HandleListBoxEventL
// ---------------------------------------------------------
void CAPControlListPlugin::HandleListBoxEventL( CEikListBox* /*aListBox*/,
                                              TListBoxEvent aEventType )
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::HandleListBoxEventL" ) ) );
    switch ( aEventType )
        {
        case EEventEnterKeyPressed :
        case EEventItemClicked :
            {
            break;
            }
        default :
           break;
        }
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::HandleListBoxEventL" ) ) );
    }
    
// ----------------------------------------------------------
// CAPControlListPlugin::ShowInfoNoteL( TInt aResourceId )
// ----------------------------------------------------------
//
void CAPControlListPlugin::ShowInfoNoteL( TInt aResourceId )
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::ShowInfoNoteL" ) ) );
    HBufC* text = iCoeEnv->AllocReadResourceLC( aResourceId );
    CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue );
    note->ExecuteLD( *text );
    CleanupStack::PopAndDestroy( text );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::ShowInfoNoteL" ) ) );
    }
    
// ----------------------------------------------------------
// CAPControlListPlugin::ShowConfirmNoteL( TInt aResourceId )
// ----------------------------------------------------------
//

void CAPControlListPlugin::ShowConfirmNoteL( TInt aResourceId )
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::ShowConfirmNoteL" ) ) );
    HBufC* text = iCoeEnv->AllocReadResourceLC( aResourceId );
    CAknConfirmationNote* note = new ( ELeave ) CAknConfirmationNote( ETrue );
    note->ExecuteLD( *text );
    CleanupStack::PopAndDestroy( text );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::ShowConfirmNoteL" ) ) );
    }
    
// ----------------------------------------------------------
// CAPControlListPlugin::ShowConfirmNoteL( TInt aResourceId )
// ----------------------------------------------------------
//
void CAPControlListPlugin::ShowConfirmNoteAPNL( TInt aResourceId, TPtrC& aAPN )
    {
    CLOG( ( ESelector, 0, _L( "-> CAPControlListPlugin::ShowConfirmNoteL" ) ) );
    HBufC* text = StringLoader::LoadLC ( aResourceId, aAPN);
    CAknConfirmationNote* note = new ( ELeave ) CAknConfirmationNote( ETrue );
    note->ExecuteLD( *text );
    CleanupStack::PopAndDestroy( text );
    CLOG( ( ESelector, 0, _L( "<- CAPControlListPlugin::ShowConfirmNoteL" ) ) );
    }
    
// ----------------------------------------------------------
// CAPControlListPlugin::Container()
// ----------------------------------------------------------
//
CAPControlListPluginContainer* CAPControlListPlugin::Container()
    {
    return iContainer;
    }
    
// ----------------------------------------------------------
// CAPControlListPlugin::APIWrapper()
// ----------------------------------------------------------
//
CAPControlListAPIWrapper* CAPControlListPlugin::APIWrapper()
    {
    	return iAPIWrapper;
    }
//End of file