omaprovisioning/provisioning/AuthTypePlugin/src/Authtypeplugin.cpp
changeset 0 b497e44ab2fc
child 64 910464db1b65
child 65 5cc2995847ea
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omaprovisioning/provisioning/AuthTypePlugin/src/Authtypeplugin.cpp	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,438 @@
+/*
+* 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