vpnui/vpndialogmanager/src/vpndialogmanager.cpp
changeset 0 33413c0669b9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vpnui/vpndialogmanager/src/vpndialogmanager.cpp	Thu Dec 17 09:14:51 2009 +0200
@@ -0,0 +1,163 @@
+/*
+* Copyright (c) 2008-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 dialog manager
+*
+*/
+
+#include <vpnecomnotifier.rsg>
+#include "vpnnotifierdefs.h"
+#include "vpndialogshower.h"
+#include "vpndialogmanager.h"
+
+#include "logvpncommon.h"
+
+
+// At ordinal 1, a factory method used to produce cvpndialogmanager instances
+EXPORT_C MVpnDialogManager* NewDialogManagerL()
+    {
+    LOG_("-> NewDialogManagerL()");
+    LOG_("<- NewDialogManagerL()");
+    return new (ELeave) CVpnDialogManager;
+    }
+
+MVpnDialog* CVpnDialogManager::LaunchDialogL(MVpnNotifierCallback* aNotifier, TInt aDialogId,
+                                               TInt aNoteDialogId, const TDesC8& aInput)
+    {
+    CVpnDialogShower* shower = GetDialogShowerL();
+    LOG_1("-> CVpnDialogManager::LaunchDialogL() dialog ID is: %d", aDialogId);
+    LOG_1(" Note dialog ID: %d", aNoteDialogId);
+
+    // If note dialog id hasn't been specified, then we're going
+    // to display a more complex query dialog
+    if (aNoteDialogId == 0) 
+        {
+        switch (aDialogId)
+            {
+
+            // VPN related dialogs
+            case TVpnDialog::EUserIdentity:
+                return shower->GetUserIdentityDlgL(aNotifier, aInput);
+            case TVpnDialog::EPolicyUpdateConfirmation:
+                return shower->GetPolicyUpdateConfirmationDlgL(aNotifier, aInput);
+
+            // Policy installer's dialogs
+            case TVpnDialog::EPolicyInstallConfirmation:
+                LOG_1(" Showing pol import conf %d", aDialogId);
+                return shower->GetPolicyImportConfirmationDlgL(aNotifier, aInput);
+            case TVpnDialog::EPolicyInstallInProgress:
+                return shower->GetPolicyImportProgressDlgL(aNotifier, aInput);
+            case TVpnDialog::EGenericProgress:
+                return shower->GetGenericProgressDlgL(aNotifier, aInput);
+            case TVpnDialog::EPKCS12Password:
+                return shower->GetPKCS12PasswordDlgL(aNotifier);
+            case TVpnDialog::EDeviceLockConfirmation:
+                LOG_1(" Showing dev lock pol import conf %d", aDialogId);
+                return shower->GetDevLockConfirmationDlgL(aNotifier, aInput);
+
+            // KMD Dialogs
+            case TKmdDialog::EUserPwd:
+                return shower->GetUserPwdDlgL(aNotifier, aInput);
+            case TKmdDialog::ESecurIdPin:
+                return shower->GetSecurIdDlgL(aNotifier, aInput);
+            case TKmdDialog::ESecurIdNextPin:
+                return shower->GetSecurIdNextDlgL(aNotifier, aInput);
+
+            default:
+                LOG_(" Default case, return NULL");
+                return NULL;
+            }
+        }
+    else 
+        {
+        // Display the desired note
+        LOG_(" Showing note dialog");
+        return ShowNoteDialogL(aNotifier, aNoteDialogId);
+        }
+    }
+
+TInt CVpnDialogManager::GetNoteTextId(TInt aNoteDialogId)
+    {
+    LOG_("CVpnDialogManager::GetNoteTextId()");
+    switch (aNoteDialogId)
+        {
+        // ACU note dialogs
+        case TVpnNoteDialog::EWrongServerIdentityCode:
+            return R_ACU_WRONG_SERVER_IDENTITY_CODE;
+        case TVpnNoteDialog::ENextServerIdentity:
+            return R_ACU_NEXT_SERVER_IDENTITY;
+        case TVpnNoteDialog::EAuthenticationFailed:
+            return R_ACU_AUTH_FAILED;
+        case TVpnNoteDialog::EInvalidServerCert:
+            return R_ACU_INVALID_SERVER_CERT;
+        case TVpnNoteDialog::EInvalidClientCert:
+            return R_ACU_INVALID_CLIENT_CERT;
+        // VPN related note dialogs
+        case TVpnNoteDialog::EPolicyUpdateSucceeded:
+            return R_VPN_POLICY_UPDATE_SUCCEEDED;
+        case TVpnNoteDialog::EPolicyUpdateFailed:
+            return R_VPN_POLICY_UPDATE_FAILED;
+        case TVpnNoteDialog::EPolicyDeleteSucceeded:
+            return R_VPN_POLICY_DELETE_SUCCEEDED;
+        case TVpnNoteDialog::EVpnUserNameMissing:
+            return R_VPN_USER_NAME_MISSING;
+        case TVpnNoteDialog::EVpnFqdnMissing:
+            return R_VPN_FQDN_MISSING;
+        case TVpnNoteDialog::EVpnCannotForceDeviceLock:
+            return R_VPN_STR_CANNOT_FORCE_DEVICE_LOCK;
+        case TVpnNoteDialog::EPolicyInstallationFailed:
+            return R_VPN_POLICY_INSTALLATION_FAILED;
+        // Policy installer notes
+        case TVpnNoteDialog::EVpnPolicyInstalled:
+            return R_VPN_CONF_POLICY_IMPORT_COMPLETE;
+        case TVpnNoteDialog::EVpnWrongPKCS12Password:
+            return R_VPN_STR_WRONG_PKCS12_PASSWORD_STR;
+        // Kmd note dialogs
+        case TVpnNoteDialog::EKmdAuthenticationFailed:
+        	return R_KMD_CRACK_AUTH_FAILED;
+        default:
+            LOG_(" Calling CVpnDialogManagerBase::GetNoteTextId()");
+            return CVpnDialogManager::GetNoteTextId(aNoteDialogId);
+        }
+    }
+
+CVpnDialogShower* CVpnDialogManager::GetDialogShowerL()
+    {
+    LOG_("-> CVpnDialogManager::GetDialogShowerL()");
+    if (iDialogShower)
+        {
+        LOG_("<- CVpnDialogManager::GetDialogShowerL() (old shower reused)");
+        return iDialogShower;
+        }
+    else
+        {
+        iDialogShower = new (ELeave) CVpnDialogShower();
+        LOG_("<- CVpnDialogManager::GetDialogShowerL() (new shower instantiated)");
+        return iDialogShower;
+        }
+    }
+
+MVpnDialog* CVpnDialogManager::ShowNoteDialogL(MVpnNotifierCallback* aNotifier, TInt aNoteDialogId)
+    {
+    LOG_("-> CVpnDialogManager::ShowNoteDialogL()");
+    LOG_("<- CVpnDialogManager::ShowNoteDialogL()");
+    return GetDialogShowerL()->ShowNoteDialogL(aNotifier, GetNoteTextId(aNoteDialogId));    
+    }
+
+CVpnDialogManager::~CVpnDialogManager()
+    {
+    LOG_("-> CVpnDialogManager::~CVpnDialogManager()");
+    delete iDialogShower;
+    LOG_("<- CVpnDialogManager::~CVpnDialogManager()");
+    }
+