// NETDIAL.H
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

// NetDial client interface

#if !defined(__NETDIAL_H__)
#define __NETDIAL_H__

#include <nifman.h>
#include <cdbstore.h>

enum TNetDialProgress				// Stages in establishing a connection with NetDial
	{
	EStartingSelection=2,
	EFinishedSelection,	
	EStartingDialling,
	EFinishedDialling,
	EScanningScript,
	EScannedScript,
	EGettingLoginInfo,
	EGotLoginInfo,
	EStartingConnect,				// 10
	EFinishedConnect,
	EStartingLogIn,
	EFinishedLogIn,
	EConnectionOpen,
	EStartingHangUp,
	EFinishedHangUp,
	EStartingAnswer,
	EAnswered						// 18
	};

enum TNetDialConnectionMode 
	{
	EIdle =0,
	EDialOutConnection,
	ESingleDialInLockedConnection,
	ESingleDialInUnlockedConnection,
	EContinuousDialInLockedConnection,
	EContinuousDialInUnlockedConnection
	};

// RNetDial class
//
// Client interface class derived from RNif.  This can be used to start NetDial in a 
// dial in mode or to start dial out connections directly, with or without overrides.
// Also allows the client to ask NetDial what overrides it is using.
//

class RNetDial : public RNif
	{
public:
	IMPORT_C RNetDial();
	IMPORT_C ~RNetDial();
	IMPORT_C TInt StartDialOut();
	IMPORT_C TInt StartDialOut(CStoreableOverrideSettings& aOverrides);
	IMPORT_C TInt StartDialIn(TNetDialConnectionMode aMode);
	IMPORT_C TInt StartDialIn(CStoreableOverrideSettings& aOverrides, TNetDialConnectionMode aMode);
	IMPORT_C TInt RequestConnectionType(TNetDialConnectionMode& aType);
	IMPORT_C TInt GetActiveIntSetting(const TDesC& aTableName, const TDesC& aColumnName, TInt& aValue);
	IMPORT_C TInt GetActiveBoolSetting(const TDesC& aTableName, const TDesC& aColumnName, TBool& aValue);
	IMPORT_C TInt GetActiveDesSetting(const TDesC& aTableName, const TDesC& aColumnName, TDes8& aValue);
	IMPORT_C TInt GetActiveDesSetting(const TDesC& aTableName, const TDesC& aColumnName, TDes16& aValue);
	IMPORT_C TInt GetActiveLongDesSetting(const TDesC& aTableName, const TDesC& aColumnName, TDes& aValue);
	IMPORT_C static void ResolveError(TInt &aError);
private:
	TInt StartNif(CNifAgentBase::TConnectType aType);
	void PackageOverridesArray(TAny* aPtr,  TInt aPtrNum, CStoreableOverrideSettings& aOverrides);
	};

#endif
