omadrm/drmengine/roap/src/RoapConnection.cpp
changeset 29 3bdc3b853094
parent 23 493788a4a8a4
child 72 1481bf457703
--- a/omadrm/drmengine/roap/src/RoapConnection.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/roap/src/RoapConnection.cpp	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 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"
@@ -22,54 +22,16 @@
 #include <cmconnectionmethoddef.h>
 #include <cmmanager.h>
 #include <centralrepository.h>
-#include <commdbconnpref.h>
+#include <extendedconnpref.h>
 #include <cdblen.h>
+#include <cdbcols.h> // IAP, COMMDB_ID
 #include <es_enum.h>
-#ifdef __SERIES60_NATIVE_BROWSER
-#include <browseruisdkcrkeys.h>
-#endif
 #include "RoapConnection.h"
 #include "RoapDef.h"
 #include "RoapLog.h"
 
 
 
-#ifndef __SERIES60_NATIVE_BROWSER
-    const TUid KCRUidBrowser   = {0x10008D39};
-    const TUint32 KBrowserDefaultAccessPoint =  0x0000000E;
-    const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
-    const TUint32 KBrowserNGDefaultSnapId = 0x00000053;
-#endif
-
-
-// ================= LOCAL FUNCTIONS =========================================
-// ---------------------------------------------------------------------------
-// IapIdOfDefaultSnapL
-// for trapping purposes only
-// ---------------------------------------------------------------------------
-//
-LOCAL_C TUint32 IapIdOfDefaultSnapL(
-    RCmManager& aCmManager,
-    const TUint32 aDefaultSnap )
-    {
-    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
-    CleanupClosePushL( dest );
-    TUint32 iapIdOfDest( 0 );
-
-    if ( dest.ConnectionMethodCount() <= 0 )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
-    CleanupClosePushL( cMeth );
-
-    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
-    CleanupStack::PopAndDestroy( &cMeth );
-    CleanupStack::PopAndDestroy( &dest );
-    return iapIdOfDest;
-    }
-
 // ================= MEMBER FUNCTIONS =======================
 
 // ---------------------------------------------------------------------------
@@ -104,8 +66,6 @@
 ( TUint32 aIap, TRequestStatus* aStatus )
     {
     LOGLIT( "CRoapConnection::ConnectL" )
-    const TInt KAlwaysAskSelectionMode( 1 );
-    const TInt KDestinationSelectionMode( 2 );
 
     if ( iState == EInit )
         {
@@ -120,11 +80,9 @@
         CleanupClosePushL<RConnection>( iConnection );
 
         TConnectionInfoBuf connInfo;
-        TInt ap = 0;
-        TInt alwaysAsk = 0;
-        TUint count;
+        TUint count(0);
         User::LeaveIfError( iConnection.EnumerateConnections( count ) );
-        TUint i;
+        TUint i(0);
         if ( count )
             {
             // Select from existing connections. Try to make AP match.
@@ -152,71 +110,44 @@
         else
             {
             // No existing connections, create new one.
-#ifdef __WINS__
-            // WINS connection creation does not work if preferences are given.
-            // Defaults are to be used always.
-            iConnection.Start( iStatus );
-#else
-            // Note: the TCommDbConnPref must NOT be stack variable.
-            // It must persist until completion of RConnection::Start().
-            iConnPref.SetDirection( ECommDbConnectionDirectionOutgoing );
-            //iConnPref.SetDialogPreference( ECommDbDialogPrefWarn )
-            iConnPref.SetBearerSet( ECommDbBearerCSD | ECommDbBearerWcdma );
-            // New connection is always created with user-selected AP
-            // so 0 is used instead of aIap.
+            // Create overrides
+            TConnPrefList prefList;
+            TExtendedConnPref prefs;
+
+            prefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnSilent);
 
-            TInt defaultSnap( 0 );
-            CRepository* repository( NULL );
-            repository = CRepository::NewL( KCRUidBrowser );
-            CleanupStack::PushL( repository );
-
-            repository->Get( KBrowserDefaultAccessPoint, ap);
-            repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
-            repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
-            CleanupStack::PopAndDestroy( repository );
-            repository = NULL;
-
-            TUint32 iapd32 = 0;
-            TInt err = KErrNone;
-
-            if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
+            //Fetch default connection
+            TBool hasDefault(ETrue);
+            TCmDefConnValue defConn;
+            RCmManager cmManager;
+            cmManager.OpenLC();
+            cmManager.ReadDefConnL(defConn);
+            if (defConn.iType == ECmDefConnConnectionMethod)
                 {
-                alwaysAsk = KAlwaysAskSelectionMode;
+                prefs.SetIapId(defConn.iId);
+                }
+            else if (defConn.iType == ECmDefConnDestination)
+                {
+                prefs.SetSnapId(defConn.iId);
                 }
             else
                 {
-                RCmManager cmManager;
-                cmManager.OpenLC();
-                if ( !alwaysAsk )
-                    {
-                    TRAP( err, iapd32 = cmManager.GetConnectionMethodInfoIntL(
-                            ap, CMManager::ECmIapId ) );
-                    }
-                else if ( alwaysAsk == KDestinationSelectionMode )
-                    {
-                    TRAP( err, iapd32 = IapIdOfDefaultSnapL(
-                            cmManager, defaultSnap ) );
-                    }
-                CleanupStack::PopAndDestroy( &cmManager );
+                hasDefault = EFalse;
                 }
-
-            if ( err || alwaysAsk == KAlwaysAskSelectionMode )
+            // End of fetch default connection
+            if (hasDefault)
                 {
-                // Always ask
-                LOGLIT( "SetDialogPreference( ECommDbDialogPrefPrompt )" )
-                iConnPref.SetDialogPreference( ECommDbDialogPrefPrompt );
-                iapd32 = 0;
+                prefList.AppendL(&prefs);
+
+                // Start an Outgoing Connection with overrides
+                iConnection.Start(prefList, iStatus);
                 }
             else
                 {
-                // User defined
-                LOGLIT( "SetDialogPreference( ECommDbDialogPrefDoNotPrompt )" )
-                iConnPref.SetDialogPreference( ECommDbDialogPrefDoNotPrompt );
+                // No default found --> trying with query
+                iConnection.Start(iStatus);
                 }
-
-            iConnPref.SetIapId( iapd32 );
-            iConnection.Start( iConnPref, iStatus );
-#endif
+            CleanupStack::PopAndDestroy(&cmManager);
             iState = EConnecting;
             SetActive();    // The only path with a real async request.
             }