connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopup.cpp
changeset 0 5a93021fdf25
child 8 2e6c4614c58e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/connectingviadiscreetpopup.cpp	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,227 @@
+/*
+ * 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:  Implementation of CConnectingViaDiscreetPopup.
+ *
+ */
+
+// INCLUDE FILES
+#include <avkon.hrh>
+#include <akndiscreetpopup.h>
+#include <aknsconstants.hrh>
+#include <StringLoader.h>
+#include <utf.h>
+
+#include <cmmanagerext.h>
+#include <cmconnectionmethod.h>
+#include <cmconnectionmethodext.h>
+#include <cmpluginwlandef.h>
+
+#include <connectionuiutilities.mbg>
+#include <ConnUiUtilsNotif.rsg>
+
+#include "connectingviadiscreetpopup.h"
+
+// Connection Manager UIDs
+const TUid KDiscreetPopupUid =
+    {
+    0x101F84D0
+    };
+const TUid KDiscreetPopupViewUid =
+    {
+    0x2
+    };
+// Path of the app's iconfile
+_LIT( KIconFileName, "\\resource\\apps\\connectionuiutilities.mif" );
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CConnectingViaDiscreetPopup::CConnectingViaDiscreetPopup
+// ---------------------------------------------------------
+//
+CConnectingViaDiscreetPopup::CConnectingViaDiscreetPopup(
+        CConnectingViaDiscreetPopupNotif* aNotif) :
+            CActive(EPriorityUserInput), // Standard priority
+            iNotif(aNotif), iBearerType(0),
+            iConnectionName(NULL), iPopupFlags(0)
+    {
+    }
+
+// ---------------------------------------------------------
+// CConnectingViaDiscreetPopup::NewLC
+// ---------------------------------------------------------
+//
+CConnectingViaDiscreetPopup* CConnectingViaDiscreetPopup::NewLC(
+        CConnectingViaDiscreetPopupNotif* aNotif)
+    {
+    CConnectingViaDiscreetPopup* self =
+            new (ELeave) CConnectingViaDiscreetPopup(aNotif);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CConnectingViaDiscreetPopup::NewL
+// ---------------------------------------------------------
+//
+CConnectingViaDiscreetPopup* CConnectingViaDiscreetPopup::NewL(
+        CConnectingViaDiscreetPopupNotif* aNotif)
+    {
+    CConnectingViaDiscreetPopup* self = CConnectingViaDiscreetPopup::NewLC(
+            aNotif);
+    CleanupStack::Pop(); // self;
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CConnectingViaDiscreetPopup::ConstructL
+// ---------------------------------------------------------
+//
+void CConnectingViaDiscreetPopup::ConstructL()
+    {
+    CActiveScheduler::Add(this); // Add to scheduler
+    icmManager.OpenL();
+    }
+
+// ---------------------------------------------------------
+// CConnectingViaDiscreetPopup::~CConnectingViaDiscreetPopup
+// ---------------------------------------------------------
+//
+CConnectingViaDiscreetPopup::~CConnectingViaDiscreetPopup()
+    {
+    Cancel(); // Cancel any request, if outstanding
+    icmManager.Close();
+    // Delete instance variables if any
+    if (iConnectionName)
+        {
+        delete iConnectionName;
+        }
+    }
+
+// ---------------------------------------------------------
+// CConnectingViaDiscreetPopup::DoCancel
+// ---------------------------------------------------------
+//
+void CConnectingViaDiscreetPopup::DoCancel()
+    {
+    }
+
+// ---------------------------------------------------------
+// CConnectingViaDiscreetPopup::StartL
+// ---------------------------------------------------------
+//
+void CConnectingViaDiscreetPopup::StartL(TUint32 aIapId,
+        TBool aConnectionAlreadyActive)
+    {
+    Cancel(); // Cancel any request, just to be sure
+    iBearerType = 0;
+    delete iConnectionName;
+    iConnectionName = NULL;
+
+    if (!aConnectionAlreadyActive)
+        {
+        iPopupFlags = KAknDiscreetPopupDurationLong;
+        }
+
+    RCmConnectionMethod plugin;
+    CleanupClosePushL(plugin);
+    if (aIapId)
+        {
+        plugin = icmManager.ConnectionMethodL(aIapId);
+        iBearerType = plugin.GetIntAttributeL(CMManager::ECmBearerType);
+        TUint32 easyWLANIapId = icmManager.EasyWlanIdL();
+        if (easyWLANIapId != aIapId)
+            {
+            iConnectionName = plugin.GetStringAttributeL(CMManager::ECmName);
+            }
+        else
+            {
+            iConnectionName = plugin.GetStringAttributeL(CMManager::EWlanUsedSSID);
+            }
+        }
+    CleanupStack::PopAndDestroy(&plugin);
+
+    SetActive(); // Tell scheduler a request is active
+    iClientStatus = &iStatus;
+    User::RequestComplete(iClientStatus, KErrNone);
+    
+    // Complete client request before launching dialog
+    iNotif->SetCancelledFlag(ETrue);
+    iNotif->CompleteL(KErrNone);
+    }
+
+// ---------------------------------------------------------
+// CConnectingViaDiscreetPopup::RunL
+// ---------------------------------------------------------
+//
+void CConnectingViaDiscreetPopup::RunL()
+    {
+    if (iStatus == KErrNone)
+        {
+        TUint bitmapId = 0;
+        TUint maskId = 0;
+        if (iBearerType == KUidWlanBearerType)
+            {
+            bitmapId = EMbmConnectionuiutilitiesQgn_prop_wlan_bearer;
+            maskId = EMbmConnectionuiutilitiesQgn_prop_wlan_bearer_mask;
+            }
+        else
+            {
+            bitmapId = EMbmConnectionuiutilitiesQgn_prop_wml_gprs;
+            maskId = EMbmConnectionuiutilitiesQgn_prop_wml_gprs_mask;
+            }
+
+        // Load strings from resources
+        HBufC* stringText1 = StringLoader::LoadLC(
+                R_QTN_OCC_CONNECTING_DISCREET_POPUP_TEXT1);
+
+        HBufC* stringText2 = NULL;
+        if (iConnectionName)
+            {
+            stringText2 = StringLoader::LoadLC(
+                    R_QTN_OCC_CONNECTING_DISCREET_POPUP_TEXT2,
+                    *iConnectionName);
+            }
+        else
+            {
+            stringText2 = _L("''").AllocLC();
+            }
+
+        CAknDiscreetPopup::ShowGlobalPopupL(*stringText1, // first text row
+                *stringText2, // second text row
+                KAknsIIDDefault, // icon skin id
+                KIconFileName, // bitmap file path
+                bitmapId, // bitmap id
+                maskId, // mask id
+                iPopupFlags, // flags
+                0, // command id
+                NULL, // command observer
+                KDiscreetPopupUid, // application to be launched
+                KDiscreetPopupViewUid); // view to be activated
+        CleanupStack::PopAndDestroy(2);
+        }
+
+    // Cleanup
+    iNotif->Cancel();
+    }
+
+// ---------------------------------------------------------
+// CConnectingViaDiscreetPopup::RunError
+// ---------------------------------------------------------
+//
+TInt CConnectingViaDiscreetPopup::RunError(TInt aError)
+    {
+    return aError;
+    }