vpnui/vpnmanagementui/src/vpnmanagementuiview.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 00:53:00 +0200
changeset 4 29b591713d44
parent 0 33413c0669b9
child 38 9f4e37332ce5
permissions -rw-r--r--
Revision: 201003

/*
* Copyright (c) 2005-2009 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:   VPN management main view
*
*/



// INCLUDE FILES
#include <aknViewAppUi.h>
#include <avkon.hrh>
#include <vpnmanagementuirsc.rsg>
#include <settingsinternalcrkeys.h>
#include <centralrepository.h>
#include <bautils.h>
#include <vpnmanagementui.mbg>
#include "vpnmanagementui.hrh"
#include "vpnuiloader.h"
#include "vpnmanagementuiview.h"
#include "vpnmanagementuicontainer.h"
#include "vpnmanagementuiviewid.h"
#include "log_vpnmanagementui.h"

/** MSK control Id. */
const TInt KVpnMSKControlId = 3;


// ROM folder

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

// Constants
enum TVpnUiCommands 
    {
    KVpnUiPolicyViewListItemId,
    KVpnUiLogViewListItemId
    };

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

// ---------------------------------------------------------------------------
// CVpnManagementUiView::CVpnManagementUiView()
// ---------------------------------------------------------------------------
//
CVpnManagementUiView::CVpnManagementUiView()
    {
    }

// ---------------------------------------------------------------------------
// CVpnManagementUiView::~CVpnManagementUiView()
// Destructor
// ---------------------------------------------------------------------------
//
CVpnManagementUiView::~CVpnManagementUiView()
    {
    LOG_("CVpnManagementUiView::~CVpnManagementUiView entered");
    if ( iContainer )
        {
        AppUi()->RemoveFromViewStack(*this, iContainer);
        delete iContainer;
        }
    delete iLoader;
    LOG_("CVpnManagementUiView::~CVpnManagementUiView() exited");
    }


// ---------------------------------------------------------------------------
// CVpnManagementUiView::NewL()
// ---------------------------------------------------------------------------
//
CVpnManagementUiView* CVpnManagementUiView::NewL()
    {
    LOG_("CVpnManagementUiView::NewL() entered");
    CVpnManagementUiView* self = NewLC();
    CleanupStack::Pop();
    LOG_("CVpnManagementUiView::NewL() exited");
    return self;
    }

// ---------------------------------------------------------------------------
// CVpnManagementUiView::NewLC()
// ---------------------------------------------------------------------------
//
CVpnManagementUiView* CVpnManagementUiView::NewLC()
    {
    LOG_("CVpnManagementUiView::NewLC() entered"); 
    CVpnManagementUiView* self = new ( ELeave ) CVpnManagementUiView();
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }


// ---------------------------------------------------------------------------
// CVpnManagementUiView::ConstructL()
// ---------------------------------------------------------------------------
//
void CVpnManagementUiView::ConstructL()
    {
    LOG_("CVpnManagementUiView::ConstructL() entered");
    iLoader = CVpnUiLoader::NewL(iAvkonViewAppUi->ClientRect(), 
                KVpnManagementPluginUid, this );
    BaseConstructL( R_VPNUI_MANAGEMENT_VIEW );
    iLoader->ReleaseResource();
    LOG_("CVpnManagementUiView::ConstructL() exited");
    }

// ---------------------------------------------------------------------------
// void CVpnManagementUiView::GetCaptionL( TDes& aCaption ) const
// ---------------------------------------------------------------------------
void CVpnManagementUiView::GetCaptionL( TDes& aCaption ) const
    {
    LOG_("CVpnManagementUiView::GetCaptionL() entered");
    iLoader->AddResourceFileL();
    StringLoader::Load( aCaption, R_VPN_MANAGEMENT_TITLE_BUF );
    iLoader->ReleaseResource();
    LOG_("CVpnManagementUiView::GetCaptionL() exited");
    }

// ---------------------------------------------------------------------------
// TUid CVpnManagementUiView::Id()
// ---------------------------------------------------------------------------
//
TUid CVpnManagementUiView::Id() const
    {
    LOG_("CVpnManagementUiView::Id called");
    return KVpnManagementPluginUid; 
    }

// ---------------------------------------------------------------------------
// CVpnManagementUiView::HandleCommandL()
// Handles commands directed to this class.
// ---------------------------------------------------------------------------
//
void CVpnManagementUiView::HandleCommandL(TInt aCommand)
    {   
    LOG_1("CVpnManagementUiView::HandleCommandL():%d", aCommand);
    switch ( aCommand )
        {
        case EAknSoftkeyBack:
            {
            iLoader->ChangeViewL( KChangeViewBack ); 
            break;
            }
        case EAknCmdExit:
            {
            ((CAknViewAppUi*)iAvkonAppUi)->HandleCommandL( EAknCmdExit );
            break;
            }
        case EVpnUiCmdOpen:
            {
            HandleListBoxSelectionL();
            break;
            }

        #ifdef __SERIES60_HELP
        case EAknCmdHelp: 
            {
            HlpLauncher::LaunchHelpApplicationL(
                iEikonEnv->WsSession(), AppUi()->AppHelpContextL() );
            break;
            }
        #endif //__SERIES60_HELP

        default:
            {
            AppUi()->HandleCommandL( aCommand );
            break;
            }
        }
    }
       


// ---------------------------------------------------------------------------
// CVpnManagementUiView::HandleClientRectChange()
// ---------------------------------------------------------------------------
//
void CVpnManagementUiView::HandleClientRectChange()
    {
    if ( iContainer )
        {
        iContainer->SetRect( ClientRect() );
        }
    }

// ---------------------------------------------------------------------------
// CVpnManagementUiView::DoActivateL()
// ---------------------------------------------------------------------------
//
void CVpnManagementUiView::DoActivateL(
   const TVwsViewId& aPrevViewId,TUid /*aCustomMessageId*/,
   const TDesC8& /*aCustomMessage*/)
    {
    LOG_("CVpnManagementUiView::DoActivateL() entered");
    iLoader->AddResourceFileL(ETrue);
    if ( iLoader->GSViewId().iViewUid.iUid == 0 )
        {
        //must be prepared to application switch, so it stores
        //only the parent view (General Settings Main View)
        iLoader->SetGSViewId( aPrevViewId );
        
        }
    if ( iContainer )
        {
        ((CAknViewAppUi*)iAvkonAppUi)->RemoveFromViewStack( 
            *this, iContainer );
        }
    iContainer = new (ELeave) CVpnManagementUiContainer( 
        *this, *iLoader );

    iContainer->SetMopParent( this );
    iContainer->ConstructL( ClientRect() );
    iLoader->ActivateTitleL( KViewTitleManagementView );
    iLoader->PushDefaultNaviPaneL();

    ((CAknViewAppUi*)iAvkonAppUi)->AddToStackL( *this, iContainer );
    iContainer->DrawListBoxL( iCurrentItem, iTopItemIndex );

    //Listbox observer is set here, instead create listbox
    iContainer->iListBox->SetListBoxObserver(this);
    
    // Add MiddleSoftKey
   	CEikButtonGroupContainer* cbaGroup = Cba();
   	if (cbaGroup)
    	{
	    HBufC* text = StringLoader::LoadLC(R_MSK_OPEN); 
   		cbaGroup->AddCommandToStackL(
   		    KVpnMSKControlId, EVpnUiCmdOpen, text->Des());
   		CleanupStack::PopAndDestroy(text);
    	}
    LOG_("CVpnManagementUiView::DoActivateL() exited");
    }

// ---------------------------------------------------------------------------
// CVpnManagementUiView::HandleCommandL()
// ---------------------------------------------------------------------------
//
void CVpnManagementUiView::DoDeactivate()
    {
    LOG_("CVpnManagementUiView::DoDeactivate() entered");
    if ( iContainer )
        {
        AppUi()->RemoveFromViewStack( *this, iContainer );
        
        delete iContainer;
    	iContainer = NULL;
        }
    LOG_("CVpnManagementUiView::DoDeactivate() exited");
    }

// ---------------------------------------------------------------------------
//  CVpnManagementUiView::HandleListBoxEventL
// ---------------------------------------------------------------------------

void CVpnManagementUiView::HandleListBoxEventL(CEikListBox* /*aListBox*/, 
    TListBoxEvent aEventType)
    {
    switch (aEventType)
        {
        case EEventEnterKeyPressed:
        case EEventItemSingleClicked:
            HandleListBoxSelectionL();
            break;
        default:
           break;
        }
    }

// ---------------------------------------------------------------------------
// CVpnManagementUiView::HandleListBoxSelectionL()
// ---------------------------------------------------------------------------
//
void CVpnManagementUiView::HandleListBoxSelectionL()
    {
    ASSERT(iContainer && iContainer->iListBox && iLoader);
    iCurrentItem = iContainer->iListBox->CurrentItemIndex();
    iTopItemIndex = iContainer->iListBox->TopItemIndex();
       switch (iCurrentItem)
        {
        case KVpnUiPolicyViewListItemId:
            iLoader->ChangeViewL(KChangeViewPolicy);            
            break;

        /*** NSSM support is discontinued. The code is left here in comments
             because the server view might be used for another purpose in
             future.
        case KVpnUiServerViewListItemId:
            iLoader->ChangeViewL(KChangeViewServer);
            break;
        ***/

        case KVpnUiLogViewListItemId:
            iLoader->ChangeViewL(KChangeViewLog);
            break;
        
        default:
            LOG_("CVpnManagementUiView::HandleListBoxSelectionL default");
            break;
        }
    }


// ---------------------------------------------------------------------------
// CVpnManagementUiView::NotifyPolicyImportComplete()
// ---------------------------------------------------------------------------
void CVpnManagementUiView::NotifyPolicyImportComplete(TInt aResult)
    {
    if ( aResult != KErrNone)
        LOG_1("CVpnManagementUiView::NotifyPolicyImportComplete:%d", aResult);
    }

// ---------------------------------------------------------------------------
// CVpnManagementUiView::HasBitmap
// ---------------------------------------------------------------------------
TBool CVpnManagementUiView::HasBitmap() const
    {
    LOG_("CVpnManagementUiView::HasBitmap() called");
    return EFalse;
    }

// ---------------------------------------------------------------------------
// CVpnManagementUiView::GetBitmapL
// ---------------------------------------------------------------------------
void CVpnManagementUiView::GetBitmapL( CFbsBitmap* /*aBitmap*/, 
                                     CFbsBitmap* /*aMask*/ ) const
    {
    LOG_("CVpnManagementUiView::GetBitmapL() entered");
    //no bitmap
    User::Leave( KErrNotFound );
    LOG_("CVpnManagementUiView::GetBitmapL() exited");
    }
    
// ---------------------------------------------------------------------------
// CVpnManagementUiView::PluginProviderCategory
// ---------------------------------------------------------------------------
TInt CVpnManagementUiView::PluginProviderCategory() const
    {
    LOG_("CVpnManagementUiView::PluginProviderCategory() called");
    return EGSPluginProviderOEM;
    }    

// ---------------------------------------------------------------------------
// CVpnManagementUiView::CreateIconL
// ---------------------------------------------------------------------------    
CGulIcon* CVpnManagementUiView::CreateIconL( const TUid aIconType )
    {
    LOG_("CVpnManagementUiView::CreateIconL() entered");
    
    TFileName iconsFileName;
    TFileName dllName;
    Dll::FileName(dllName);
    TBuf<2> drive = dllName.Left(2);
    iconsFileName.Insert(0, drive);
        

    iconsFileName.Append( KDC_APP_BITMAP_DIR );
    iconsFileName.Append( KFileIcons );
    
	CGulIcon* icon;
       
    if( aIconType == KGSIconTypeLbxItem )
        {
        icon = AknsUtils::CreateGulIconL(
        AknsUtils::SkinInstance(), 
        KAknsIIDQgnPropSetConnVpn, 
        iconsFileName,
        EMbmVpnmanagementuiQgn_prop_set_conn_vpn,
        EMbmVpnmanagementuiQgn_prop_set_conn_vpn_mask );
        }
     else
        {
        icon = CGSPluginInterface::CreateIconL( aIconType );
        }
    LOG_("CVpnManagementUiView::CreateIconL() exited");
	return icon;
	} 

// ---------------------------------------------------------------------------
// CVpnManagementUiView::Visible
// ---------------------------------------------------------------------------    
TBool CVpnManagementUiView::Visible() const
    {
    LOG_("CVpnManagementUiView::Visible() entered");
    TInt vpnSupported( 0 );
    TInt readError(0);
    TRAPD(loadError,
        {        
        CRepository* repository = CRepository::NewL(KCRUidCommunicationSettings);
        readError = repository->Get(KSettingsVPNSupported, vpnSupported);
        delete repository;
        });
    LOG_1("CVpnManagementUiView::Visible():%d exited", vpnSupported);
    return (vpnSupported && !readError && !loadError) ? ETrue : EFalse;
    }

// ---------------------------------------------------------------------------
// CVpnManagementUiView::PluginUid
// ---------------------------------------------------------------------------    
TUid CVpnManagementUiView::PluginUid() const
    {
    LOG_("CVpnManagementUiView::PluginUid() called");
    return KVpnManagementPluginUid;
    }

// End of File