messagingfw/msgurlhandler/urlhandler/inc/SMSSCH.H
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgurlhandler/urlhandler/inc/SMSSCH.H	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,182 @@
+// Copyright (c) 2001-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:
+// This file contains the API definition for the class CSmsSchemeHandler.
+// This class parses a descriptor into the component fields of a gsm-sms 
+// scheme as described in "draft-antti-gsm-sms-url-04" 
+// and launches the sms editor with the sms-numbers filled in.
+// 
+//
+
+/**
+ @file
+*/
+
+#ifndef __SMSSCH_H__
+#define __SMSSCH_H__
+
+// Local includes
+//
+#include "MSGBASE.H"
+
+
+/**
+	@struct SSmsNumber
+	Comments :	Structure containing descriptor pointer of sms-number 
+				and service center number 
+	@since 7.0
+*/
+struct SSmsNumber
+/**
+@internalComponent
+@released
+*/
+	{
+	SSmsNumber() : iNumber(KNullDesC), iServiceCentre(KNullDesC) {}
+	TPtrC iNumber;
+	TPtrC iServiceCentre;
+	};
+
+
+/**
+	@class
+	Comments :	Parses a descriptor into the component fields of a gsm-sms scheme 
+				as described in "draft-antti-gsm-sms-url-04"
+				and launches the sms editor with the sms-numbers filled in.
+				There are 2 fields; sms-number and service center number.
+				These fields are valid for the lifetime of this object.
+	
+	Format of a typical gsm-sms url is: 
+		sms:<sms-number>;via=<service center number>,<sms-number>;via=<service center number>...
+
+	@since 7.0
+*/
+class CSmsSchemeHandler : public CMsgSchemeHandlerBase
+/**
+@internalComponent
+@released
+*/
+	{
+
+public:		// Methods
+
+/**
+	@fn				NewLC()
+	Intended Usage	:	Static factory constructor. Uses two phase construction and 
+						leaves a pointer to created object on the CleanupStack.
+	@since			7.0
+	@leave		KErrNoMemory.
+	@return			A pointer to the newly created CSmsSchemeHandler object 
+	@pre 			None
+	@post			A fully constructed and initialised CSmsSchemeHandler object.
+ */
+	static CSmsSchemeHandler* NewLC();
+
+/**
+	@fn				NewL()
+	Intended Usage	:	Static factory constructor. Uses two phase construction and 
+						leaves nothing on the CleanupStack.
+	@since			7.0
+	@leave		KErrNoMemory.
+	@return			A pointer to the newly created CSmsSchemeHandler object. 
+	@pre 			None
+	@post			A fully constructed and initialised CSmsSchemeHandler object.
+ */
+	static CSmsSchemeHandler* NewL();
+
+/**
+	@fn				~CSmsSchemeHandler()
+	Intended Usage	:	Destructor.
+	@since			7.0
+ */
+	~CSmsSchemeHandler();
+
+private:		// Methods
+
+/**
+	@fn				CSmsSchemeHandler()
+	Intended Usage	:	Constructor. First phase of two-phase construction method. Does 
+						non-allocating construction.
+	@since			7.0
+ */
+	CSmsSchemeHandler();
+
+/**
+	@fn				ConstructL()
+	Intended Usage	:	Second phase of two-phase construction method. Does any 
+						allocations required to fully construct the object.
+	@since			7.0
+	@leave		KErrNoMemory.
+	@pre 			First phase of construction is complete
+	@post			The object is fully constructed and initialised.
+ */
+	void ConstructL();
+
+/**
+	@fn				ParseUrlL(const TDesC& aUrl)
+	Intended Usage	: Parses a descriptor into the component fields of a gsm-sms scheme 
+					  as described in "draft-antti-gsm-sms-url-04". 
+	@since			7.0
+	@param			aUrl	A descriptor with the gsm-sms url.
+	@pre 			None
+	@post			The gsm-sms url descriptor has been parsed and field values are set.
+ */
+	virtual void ParseUrlL(const TDesC& aUrl);
+
+/**
+	@fn				ParseSmsNumber(const TPtrC& aNumber, TPtrC& aParsedNumber)
+	Intended Usage	:	Parses the sms number so that it only contains the allowed characters.
+	@since			7.0
+	@param			aNumber			A descriptor pointer to the sms-number to be parsed 
+	@param			aParsedNumber	This is an output argument that is set to the 
+									parsed number. 
+	@return			An error value of KErrNotFound if the sms-number is NULL and
+					a value of KErrNone if there is a valid sms-number.  
+	@pre 			None
+	@post			The sms-number is parsed and it only contains the allowed characters.
+ */
+	TInt ParseSmsNumber(const TPtrC& aNumber, TPtrC& aParsedNumber);
+
+/**
+	@fn				void GetServiceCenter(const TPtrC& aComponent, TPtrC& aServiceCenter)
+	Intended Usage	:	Sets the service center number from the component
+	@since			7.0
+	@param			aComponent			A descriptor pointer to the component.
+	@param			aServiceCenter		This is an output argument that is set to the 
+										service center number if it exists otherwise a NULL
+										descriptor is set. 
+	@pre 			None
+	@post			The service center number have been set.
+ */
+	void GetServiceCenter(const TPtrC& aComponent, TPtrC& aServiceCenter);
+
+/**
+	@fn				SendL()
+	Intended Usage	:	Creates the sms message with the sms-numbers filled in 
+						and launches the sms editor.
+	@since			7.0
+	@pre 			None
+	@post			Sms message have been created and sms editor has been launched.
+ */
+	virtual void SendL();
+
+private:		// Attributes
+
+	/** Array containing SSmsNumber structure */
+	RArray<SSmsNumber> iNumbers;
+
+	// To access the private members for testing 
+	friend class TSmsSchemeHandler_StateAccessor;
+	};
+
+#endif