syncmlfw/common/sosserver_transporthandler/src/NSmlTransportHandler.cpp
changeset 0 b497e44ab2fc
child 25 b183ec05bd8c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/common/sosserver_transporthandler/src/NSmlTransportHandler.cpp	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,254 @@
+/*
+* Copyright (c) 2002-2004 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 for transport handler and related classes
+*
+*/
+
+
+// INCLUDE FILES
+
+#include <e32base.h>
+#include <bautils.h> // BaflUtils
+#include <barsc.h> // RResourceFile
+#include <f32file.h>
+#include <SyncMLTransportProperties.h>
+#include <data_caging_path_literals.hrh> 
+#include <NSmlTransport.rsg>
+
+#include <nsmlconstants.h>
+#include "NSmlTransportHandler.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CNSmlTransportHandler* CNSmlTransportHandler::NewL( const TSmlUsageType aUsageType )
+	{
+	CNSmlTransportHandler* self = new (ELeave) CNSmlTransportHandler( aUsageType );
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::~CNSmlTransportHandler
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CNSmlTransportHandler::~CNSmlTransportHandler()
+	{
+	delete iDisplayName;
+	delete iProperties;
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::CreateL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CNSmlTransportHandler::CreateL( TSmlTransportId aId )
+	{
+	Reset();
+
+	if ( aId == KUidNSmlMediumTypeInternet.iUid )
+		{
+		CreateInternetPropertiesL();
+		}
+	else if ( aId == KUidNSmlMediumTypeBluetooth.iUid )
+		{
+		CreateBluetoothPropertiesL();
+		}
+	else if ( aId == KUidNSmlMediumTypeIrDA.iUid )
+		{
+		CreateIrdaPropertiesL();
+		}
+	else if ( aId == KUidNSmlMediumTypeUSB.iUid )
+		{
+		CreateUsbPropertiesL();
+		}
+		
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::DisplayName
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDesC& CNSmlTransportHandler::DisplayName()
+	{
+	return *iDisplayName;
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::Reset
+// Deletes all properties from property array and display name.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CNSmlTransportHandler::Reset()
+	{
+	delete iDisplayName;
+	iDisplayName = NULL;
+	
+	for ( TInt i = iProperties->Count()-1; i >= 0; --i )
+		{
+		iProperties->Delete(i);
+		}
+		
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::Find
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CNSmlTransportHandler::Find( const TDesC8& aKeyword ) const
+	{
+	return iProperties->Find( aKeyword );
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::Array
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSyncMLTransportPropertiesArray& CNSmlTransportHandler::Array()
+	{
+	return *iProperties;
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CNSmlTransportHandler::ConstructL()
+	{
+	iProperties = new (ELeave) CSyncMLTransportPropertiesArray( KNSmlPropertiesArrayGranularity );
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::CNSmlTransportHandler
+// -----------------------------------------------------------------------------
+//
+CNSmlTransportHandler::CNSmlTransportHandler( const TSmlUsageType aUsageType )
+	: iUsageType( aUsageType )
+	{
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::CreateInternetPropertiesL
+// Adds internet properties to property array and gets the 
+// internet display name from resources.
+// -----------------------------------------------------------------------------
+//
+void CNSmlTransportHandler::CreateInternetPropertiesL()
+	{
+	GetDisplayNameL( R_QTN_NSML_TRANSPORT_HTTP );
+	
+	if ( iUsageType == ESmlDataSync ) // ds
+		{
+		AddPropertyL( KNSmlIAPId, EDataTypeNumber );
+		AddPropertyL( KNSmlIAPId2, EDataTypeNumber );
+		AddPropertyL( KNSmlIAPId3, EDataTypeNumber );
+		AddPropertyL( KNSmlIAPId4, EDataTypeNumber );
+		
+		AddPropertyL( KNSmlUseRoaming, EDataTypeBoolean );
+		AddPropertyL( KNSmlHTTPAuth, EDataTypeBoolean );
+		
+		AddPropertyL( KNSmlHTTPUsername, EDataTypeText8 );
+		AddPropertyL( KNSmlHTTPPassword, EDataTypeText8 );
+		}
+	else // dm
+		{
+		AddPropertyL( KNSmlIAPId, EDataTypeNumber );
+		AddPropertyL( KNSmlHTTPAuth, EDataTypeBoolean );
+		AddPropertyL( KNSmlHTTPUsername, EDataTypeText8 );
+		AddPropertyL( KNSmlHTTPPassword, EDataTypeText8 );
+		}
+	
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::CreateBluetoothPropertiesL
+// -----------------------------------------------------------------------------
+//
+void CNSmlTransportHandler::CreateBluetoothPropertiesL()
+	{
+	GetDisplayNameL( R_QTN_NSML_TRANSPORT_BLUETOOTH );
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::CreateIrdaPropertiesL
+// -----------------------------------------------------------------------------
+//
+void CNSmlTransportHandler::CreateIrdaPropertiesL()
+	{
+	GetDisplayNameL( R_QTN_NSML_TRANSPORT_IRDA );
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::CreateUsbPropertiesL
+// -----------------------------------------------------------------------------
+//
+void CNSmlTransportHandler::CreateUsbPropertiesL()
+	{
+	GetDisplayNameL( R_QTN_NSML_TRANSPORT_USB );
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::AddPropertyL
+// Adds a property with given values to iProperties.
+// -----------------------------------------------------------------------------
+//
+void CNSmlTransportHandler::AddPropertyL( const TDesC8& aName, TSyncMLTransportPropertyDataType aType )
+	{
+	TSyncMLTransportPropertyInfo prop;
+	prop.iName = aName;
+	prop.iDataType = aType;
+	
+	iProperties->AddL( prop );
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlTransportHandler::GetDisplayNameL
+// Reads the given display name from resource file to iDisplayName.
+// -----------------------------------------------------------------------------
+//
+void CNSmlTransportHandler::GetDisplayNameL( TInt aResourceId )
+	{
+	RFs	fs;
+	User::LeaveIfError( fs.Connect() );
+	CleanupClosePushL(fs);
+
+	TFileName fileName;
+	TParse parse;
+	parse.Set( KNSmlDirAndResource, &KDC_RESOURCE_FILES_DIR, NULL );
+	fileName = parse.FullName();
+
+	RResourceFile resourceFile;
+	BaflUtils::NearestLanguageFile( fs, fileName );
+	resourceFile.OpenL(fs,fileName);
+	CleanupClosePushL(resourceFile);
+
+	HBufC8* dataBuffer = resourceFile.AllocReadLC( aResourceId );
+	TResourceReader reader;
+	reader.SetBuffer(dataBuffer); 
+	iDisplayName = reader.ReadHBufC16L();
+	
+	CleanupStack::PopAndDestroy(3); //fs, resourcefile, databuffer
+	}
+
+
+