omaprovisioning/provisioning/AuthTypePlugin/src/Authtypeplugin.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 09:07:52 +0200
changeset 0 b497e44ab2fc
child 64 910464db1b65
child 65 5cc2995847ea
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 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:  AuthtypePlugin implementation.
 *
*/


// User includes
#include    "Authtypeplugin.h"

#include    <gsparentplugin.h>
#include    <gscommon.hrh>
#include    <AuthtypepluginRsc.rsg> // GUI Resource
#include    <Authtypeplugin.mbg>
#include    <gsprivatepluginproviderids.h>
#include    <gsfwviewuids.h>
#include    "ProvisioningInternalCRKeys.h"
#include    <gsbaseview.h>

// System includes
#include    <AknWaitDialog.h>
#include    <AknNullService.h>
#include    <aknnotewrappers.h>
#include    <akntextsettingpage.h>
#include    <aknViewAppUi.h>
#include    <bautils.h>
#include    <featmgr.h>
#include    <hlplch.h> // HlpLauncher
#include    <StringLoader.h>

#include    <badesca.h>
#include    <aknlists.h> 
#include    <AknListBoxSettingPage.h> 
#include    <centralrepository.h>
#include    "ProvisioningDebug.h"

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

// ---------------------------------------------------------------------------
// CAuthtypePlugin::CAuthtypePlugin()
// Constructor
// ---------------------------------------------------------------------------
//
CAuthtypePlugin::CAuthtypePlugin() :
    iResources( *iCoeEnv)
    {
    }

// ---------------------------------------------------------------------------
// CAuthtypePlugin::~CAuthtypePlugin()
// Destructor
// ---------------------------------------------------------------------------
//
CAuthtypePlugin::~CAuthtypePlugin()
    {
    iResources.Close();
    }

// ---------------------------------------------------------------------------
// CAuthtypePlugin::ConstructL(const TRect& aRect)
// Symbian OS two-phased constructor
// ---------------------------------------------------------------------------
//
void CAuthtypePlugin::ConstructL()
    {

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::ConstructL:" ) );
    OpenLocalizedResourceFileL(KOperatorLogoResourceFileName, iResources);
    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::ConstructL: DONE" ) );

    }

// ---------------------------------------------------------------------------
// CAuthtypePlugin::NewL()
// Static constructor
// ---------------------------------------------------------------------------
//
CAuthtypePlugin* CAuthtypePlugin::NewL(TAny* /*aInitParams*/)
    {

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::NewL:" ) );

    CAuthtypePlugin* self = new( ELeave ) CAuthtypePlugin();
    CleanupStack::PushL(self);
    self->ConstructL();
    CleanupStack::Pop(self);
    return self;

    }

// -----------------------------------------------------------------------------
// CAuthtypePlugin::Id
// -----------------------------------------------------------------------------
//
TUid CAuthtypePlugin::Id() const
    {
    return KAuthtypePluginUID;
    }

// -----------------------------------------------------------------------------
// CAuthtypePlugin::DoActivateL
// -----------------------------------------------------------------------------
//
void CAuthtypePlugin::DoActivateL(const TVwsViewId& /*aPrevViewId*/,
        TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/)
    {

    }

// -----------------------------------------------------------------------------
// CAuthtypePlugin::DoDeactivate
// -----------------------------------------------------------------------------
//
void CAuthtypePlugin::DoDeactivate()
    {

    }

// ========================= From CGSPluginInterface ==================


// -----------------------------------------------------------------------------
// CAuthtypePlugin::GetCaptionL
// -----------------------------------------------------------------------------
//
void CAuthtypePlugin::GetCaptionL(TDes& aCaption) const
    {

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::GetCaptionL" ) );

    HBufC* result = StringLoader::LoadL( R_SET_CONF_MSG_AUTHENTICATION_CP);
    aCaption.Copy( *result);
    delete result;

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::GetCaptionL  DONE" ) );
    }

// -----------------------------------------------------------------------------
// CAuthtypePlugin::PluginProviderCategory
// -----------------------------------------------------------------------------
//
TInt CAuthtypePlugin::PluginProviderCategory() const
    {
    return KGSPluginProviderInternal;
    }

// -----------------------------------------------------------------------------
// CAuthtypePlugin::ItemType()
// -----------------------------------------------------------------------------
//
TGSListboxItemTypes CAuthtypePlugin::ItemType()
    {
    return EGSItemTypeSettingDialog;
    }

// -----------------------------------------------------------------------------
// CAuthtypePlugin::GetValue()
// -----------------------------------------------------------------------------
//
void CAuthtypePlugin::GetValue(const TGSPluginValueKeys /*aKey*/, TDes& /*aValue*/)
    {
    }

// -----------------------------------------------------------------------------
// CAuthtypePlugin::HandleSelection()
// -----------------------------------------------------------------------------
//
void CAuthtypePlugin::HandleSelection(const TGSSelectionTypes /*aSelectionType*/)
    {
    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::HandleSelection" ) );

    TRAP_IGNORE( HandleItemContentL() );

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::HandleSelection  DONE" ) );
    }

// ---------------------------------------------------------------------------
// CAuthtypePlugin::CreateIconL
// ---------------------------------------------------------------------------
//
CGulIcon* CAuthtypePlugin::CreateIconL(const TUid aIconType)
    {

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::CreateIconL" ) );

    //EMbm<Mbm_file_name><Bitmap_name>
    CGulIcon* icon;
    TParse* fp = new( ELeave ) TParse();
    CleanupStack::PushL(fp);
    fp->Set(KAuthtypePluginIconDirAndName, &KDC_BITMAP_DIR, NULL);

    if (aIconType == KGSIconTypeLbxItem)
        {
        icon = AknsUtils::CreateGulIconL(AknsUtils::SkinInstance(),
                KAknsIIDDefault, fp->FullName(),
                EMbmAuthtypepluginQgn_prop_set_conn_config,
                EMbmAuthtypepluginQgn_prop_set_conn_config_mask);
        }
    else
        {
        icon = CGSPluginInterface::CreateIconL(aIconType);
        }

    CleanupStack::PopAndDestroy(fp);

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::CreateIconL:  DONE" ) );

    return icon;

    }

// -----------------------------------------------------------------------------
// CAuthtypePlugin::OpenLocalizedResourceFileL()
// -----------------------------------------------------------------------------
//
void CAuthtypePlugin::OpenLocalizedResourceFileL(
        const TDesC& aResourceFileName, RConeResourceLoader& aResourceLoader)
    {

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::OpenLocalizedResourceFileL" ) );

    RFs fsSession;
    User::LeaveIfError(fsSession.Connect() );

    CleanupClosePushL(fsSession);

    // Find the resource file:
    TParse parse;
    parse.Set(aResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL);
    TFileName fileName(parse.FullName() );

    // Get language of resource file:
    BaflUtils::NearestLanguageFile(fsSession, fileName);

    // Open resource file:
    aResourceLoader.OpenL(fileName);

    CleanupStack::PopAndDestroy(); //fssession

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::OpenLocalizedResourceFileL  DONE" ) );
    }

// -----------------------------------------------------------------------------
// CAuthtypePlugin::HandleItemContentL()
// -----------------------------------------------------------------------------
//

void CAuthtypePlugin::HandleItemContentL()
    {

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::HandleItemContentL" ) );

    // Holds the index of selected item 
    TInt selectedItem(KThirdItemSelected);

    // Holds the authentication type value
    TInt getAuthValue(KAllMethodsSupported);

    //Load all the strings from resource file 

    HBufC *title = StringLoader::LoadLC(R_QTN_SET_CONF_AUTH_METHOD);

    HBufC *netPinSupport = StringLoader::LoadLC(R_QTN_CONF_AUTH_NETWORK_PIN);
    HBufC *netUserPinSupport =
            StringLoader::LoadLC(R_QTN_CONF_AUTH_NETWORK_OR_USER_PIN);
    HBufC *allMethodsSupport = StringLoader::LoadLC(R_QTN_CONF_AUTH_ALL_AUTH);

    //creation of list

    CAknSinglePopupMenuStyleListBox* list = new(ELeave)CAknSinglePopupMenuStyleListBox;
    CleanupStack::PushL(list);

    CAknPopupList* popupList = CAknPopupList::NewL(list, 
    R_AVKON_SOFTKEYS_OK_CANCEL__OK, AknPopupLayouts::EMenuWindow);

    CleanupStack::PushL(popupList);

    list->ConstructL(popupList, 0);
    list->CreateScrollBarFrameL(ETrue);
    list->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,
            CEikScrollBarFrame::EAuto);

    //Append strings into array which will be populated into list

    CDesCArrayFlat* ItemArray = new(ELeave)CDesCArrayFlat(3);
    CleanupStack::PushL(ItemArray);

    ItemArray->AppendL(*netPinSupport);
    ItemArray->AppendL(*netUserPinSupport);
    ItemArray->AppendL(*allMethodsSupport);

    CleanupStack::Pop(); //ItemArray

    list->Model()->SetItemTextArray(ItemArray);
    list->Model()->SetOwnershipType(ELbmOwnsItemArray);

    popupList->SetTitleL(*title);

    /* Get authentication type value from Central Repository and based on current cenrep value
     * List box item will be selected */

    CRepository * rep= NULL;
    TRAPD( err, rep = CRepository::NewL( KCRUidOMAProvisioningLV ))
    ;

    if (err == KErrNone)
        {
        rep->Get(KOMAProvAuthenticationLVFlag, getAuthValue);
        delete rep;
        }

    switch (getAuthValue)
        {
        case KNetworkPinOnly:
            selectedItem = KFirstItemSelected;
            break;

        case KNetworkorUserPin:
            selectedItem = KSecondItemSelected;
            break;

        case KAllMethodsSupported:
            selectedItem = KThirdItemSelected;
            break;

        default:
            break;
        }

    list->View()->SetCurrentItemIndex(selectedItem);

    // Show popup list and then show return value.
    TInt popupOk = popupList->ExecuteLD();

    //When user selects item from list based on selection cenrep value will be set

    if (popupOk)
        {

        selectedItem = list->CurrentItemIndex();

        switch (selectedItem)
            {
            case KFirstItemSelected:
                SetCenrepItemL(selectedItem, KNetworkPinOnly);
                break;
            case KSecondItemSelected:
                SetCenrepItemL(selectedItem, KNetworkorUserPin);
                break;
            case KThirdItemSelected:
                SetCenrepItemL(selectedItem, KAllMethodsSupported);
                break;
            default:
                break;

            }

        }

    CleanupStack::Pop(); // popuplist
    CleanupStack::PopAndDestroy(5); // list, title, netPinSupport, netUserPinSupport, allMethodsSupport

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::HandleItemContentL  DONE" ) );

    }

// ---------------------------------------------------------
// CAuthtypeUIContainer::SetCenrepItemL()
// ---------------------------------------------------------
//
void CAuthtypePlugin::SetCenrepItemL(TInt aSelected, TInt aSetAuthValue)
    {

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::SetCenrepItemL" ) );
    //Based on current selection item from list set the cenrep with different authentication type

    CRepository * rep= NULL;
    TRAPD( err, rep = CRepository::NewL( KCRUidOMAProvisioningLV ))
    ;

    if (err == KErrNone)
        {
        rep->Set(KOMAProvAuthenticationLVFlag, aSetAuthValue);
        delete rep;
        }

    //Shows Information note to user on selection of second and third Item from List       

    if (aSelected == KSecondItemSelected)
        {

        HBufC
                * netUserPinNote =
                        StringLoader::LoadLC(R_QTN_CONF_AUTH_NETWORK_OR_USER_PIN_NOTE);
        ShowPopupNoteL(netUserPinNote);
        CleanupStack::PopAndDestroy(); // netUserPinNote
        }

    else
        if (aSelected == KThirdItemSelected)
            {
            HBufC* allMethodsNote =
                    StringLoader::LoadLC(R_QTN_CONF_AUTH_ALL_AUTH_NOTE);
            ShowPopupNoteL(allMethodsNote);
            CleanupStack::PopAndDestroy(); // allMethodsNote
            }

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::SetCenrepItemL  DONE" ) );
    }

// ---------------------------------------------------------
// CAuthtypeUIContainer::ShowPopupNoteL()
// ---------------------------------------------------------
//
void CAuthtypePlugin::ShowPopupNoteL(HBufC *aNote)
    {

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::ShowPopupNoteL" ) );

    CAknQueryDialog* queryDialog = new (ELeave) CAknQueryDialog;
    queryDialog->ExecuteLD(R_AUTHTYPEUI_INFORMATION_QUERY, *aNote);

    FLOG( _L( "[AuthtypePlugin] CAuthtypePlugin::ShowPopupNoteL  DONE" ) );

    }

// End of file