messagingfw/biomsgfw/IACPINC/IACP.H
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/biomsgfw/IACPINC/IACP.H	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,202 @@
+// Copyright (c) 1998-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:
+// Internet Access Configuration Parser
+// 
+//
+
+ 
+#ifndef __IACP_H__
+#define __IACP_H__
+
+#include <bsp.h>
+
+_LIT(KIACP, "IACP-DLL");
+// Names for the different kinds of settings
+_LIT(KINTERNET, "Iname");
+_LIT(KMAIL, "Mname");
+_LIT(KHOTLIST, "Hname");
+_LIT(KSCRIPT, "Pname");
+_LIT(KSMS, "Sname");
+_LIT(KTELNET, "Tname");
+_LIT(KTERMINAL, "Rname");
+_LIT(KFTP, "Fname");
+_LIT(KTELEPHONE, "TBox"); // voice mailbox number
+_LIT(KGPRS, "Gname");
+_LIT(KWWWHotlist, "Hname");
+
+_LIT(KIacpIfName,		"ppp");
+_LIT(KIacpIfNetworks,	"ip,ip6");
+
+#define KBIO_MSG_ENTRY_PARSED		1 // Set entry .iMtmData3 to 1 to indicate that the entry has store i.e parsed,externalised
+#define KBIO_MSG_ENTRY_PROCESSED	2 // Set TMsvEntry iMtmData3 = 2 to indicate that a message has been processed
+
+//forward declarations
+class CBaseScriptParser2;
+class CRegisteredParserDll;
+class CMailParser;
+class CIspParser;
+class CScriptParser;
+class CSmsParser;
+class CGprsParser;
+class CTelVoiceMailboxParser;
+class CWWWHotlistParser;
+class CRichText;
+class CParsedFieldCollection;
+
+
+class CIacSettingsParser : public CBaseScriptParser2
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	IMPORT_C static CIacSettingsParser* NewL(CRegisteredParserDll& aRegisteredParserDll, CMsvEntry& aEntry, RFs& aFs);
+	~CIacSettingsParser();
+
+	void ParseL(TRequestStatus& aStatus,const TDesC& aSms);
+	void ProcessL(TRequestStatus& aStatus);
+	//Utility functions
+	CArrayPtrSeg<CParsedField>& ParsedFieldArray() const;
+	void SetFieldValueL(const TDesC& aFieldName, const TDesC& aFieldValue);
+	TBool GetMandatoryField(const TDesC& aFieldName) const;
+	
+	enum TSmsType
+		{
+		ESmsTypeUndefined,
+		EBasicIAP,    //Supported
+		EBasicMail,		//Supported
+		EBasicMailIAP, // combined basic Email and Internet settings
+		EExtendedIAP, //Supported
+		EExtendedMail,
+		EExtWWWHostListItem, // Supported
+		EExtScriptSettings, //Supported
+		EExtSmsSettings,	//Supported
+		EExtGprsSettings,		//Supported
+		EExtTelnetSettings,
+		EExtTerminalSettings,
+		EExtWWWSettings,		
+		EExtTTMLSettings,
+		EExtFTPSettings,
+		EExtInternetSettings,
+		EExtTelephoneSettings, //Supported
+		EExtWWWAutofetchSettings,
+		EExtGprsIAP,				// combined IAP and GPRS
+		EExtGprsMail,				// combined mail & GPRS
+		EExtGprsIAPMail,			// combined GPRS, IAP and mail
+		ESmsMixedContent
+		};
+
+	enum TParseSession
+		{
+		EParseSms=1,
+		ECheckData,
+		ESetParsersData,
+		EProcessSms
+		};
+
+	// flags indicating whether to attempt to create
+	// a connection preference for GPRS or ISP settings
+	enum TIacpConnectionPreferenceFlag
+		{
+		EIacpDoNotCreatePreference,
+		EIacpAttempCreateAsFirstRank,
+		EIacpAttempCreateAsSecondRank
+		};
+
+private:
+	CIacSettingsParser(CRegisteredParserDll& aRegisteredParserDll, CMsvEntry& aEntry, RFs& aFs);
+	void ConstructL();
+	void ChangeStateL(TParseSession aState);
+
+	void ParseSmsL();		//Parsers sms data into an array of CParsedField
+	void DoParseL();
+	void DoProcessL();
+
+	void GetPtrToScriptDataL(HBufC*& aPtrScriptData);
+	TBool SetBioMsgTypeL(const TDesC& aLeftToken, TSmsType& aType);
+	TBool IsSmsExtendedIAP();
+	TBool isMandatoryData(const TDesC& aFieldName);
+	void CheckMandatoryDataL();
+
+	// set & store/restore data
+	void SetDataL();
+	void SetParsersDataL();
+	void StoreParsedDataL();
+	void RestoreParsedDataL();
+
+	void SetDataFieldsL(CParsedField& aParsedField, const TDesC& aName, const TDesC& aValue, TBool aBool);
+	TBool IsValidToken(const TDesC& aToken);
+
+	void RequestComplete(TRequestStatus& aStatus,TInt aCompletion);
+
+	void PopulateFieldCollectionsL();
+	TInt CompleteMessage();
+
+	//CActive
+	void DoCancel();
+	void RunL();
+	TInt RunError(TInt aError);
+
+private:
+	TBool									iSmsParsed;
+	TInt									iState;
+	TSmsType								iSmsType;
+	TSmsType								iCurrentlyProcessing;
+
+	HBufC*									iSmsBuf;
+	CMailParser*							iMailParser;  //Mail Parser i.e IMAP, POP3, SMTP
+	CIspParser*								iIspParser;   //Internet Service Provided Parser i.e.Dial Out DB
+	CScriptParser*							iScriptParser;
+	CSmsParser*								iSmsParser;   //SMS settings parser
+	CTelVoiceMailboxParser* 				iTelVoiceMailboxParser;
+	CGprsParser*							iGprsParser;
+	CWWWHotlistParser*						iWWWHotlistParser;
+	TRequestStatus*							iReport;
+
+	CArrayPtrSeg<CParsedFieldCollection>* 	iParsedFieldCollections;
+	TInt									iCurrentSettingsCtr;
+	TIacpConnectionPreferenceFlag			iConnectionPreference;
+
+	TUint32									iDefaultIAP;
+	TUint32									iDefaultMail;
+	};
+
+class CParsedFieldCollection : public CArrayPtrSeg<CParsedField>
+/**
+@internalComponent
+@released
+*/
+	{
+public:
+	CParsedFieldCollection(CIacSettingsParser::TSmsType aSmsType);
+	CIacSettingsParser::TSmsType MessageType() { return iSmsType; };
+
+	TPtrC GetFieldValue(const TDesC& aFieldName) const;
+	TInt GetFieldValueAndLength(const TDesC& aFieldName, TPtrC& aValue) const;
+
+	void GetTBoolL(const TDesC& aDes, TBool& aBool) const;
+	void GetTUint32NumL(const TDesC& aDes, TUint32& aTUint32Value) const;
+
+	TBool FieldNameExists(const TDesC& aFieldName) const;
+
+	// Used in runl to associate iap and mail settings
+
+public:
+	TBool									iCanCommit;
+private:
+	CIacSettingsParser::TSmsType			iSmsType;
+	};
+
+#endif