telephonyserver/etelmultimode/INC/mmlist.h
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserver/etelmultimode/INC/mmlist.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,718 @@
+// Copyright (c) 2000-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:
+// Multimode ETel API v1.0
+// Header file for phone list classes
+// 
+//
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef _MMLIST_H_
+#define _MMLIST_H_
+
+#include <etelmm.h>
+#include <e32base.h>
+
+
+
+class CMobilePhoneListBase : public CBase
+/**
+A base class within a thin-template implementation.
+
+Implements the methods for "read-only" access to a list class.
+Entries are stored in a CArrayFixFlat<TAny>.
+
+@publishedPartner
+@released
+*/
+
+	{
+public:
+	IMPORT_C ~CMobilePhoneListBase();
+	
+	IMPORT_C TInt Enumerate() const;
+	IMPORT_C TInt MaxNumberEntries() const;
+	IMPORT_C void SetMaxNumberEntries(TInt aMax);
+
+	IMPORT_C void StoreL(TDes8& aDes);
+	IMPORT_C void RestoreL(const TDesC8& aBuf);
+	IMPORT_C CBufBase* StoreLC();
+
+	IMPORT_C void InternalizeL(RReadStream& aStream);
+	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
+
+	enum 
+		{
+		KMaxEntriesNotSet = - 1
+		};
+
+	enum
+		{
+		EBadRange,
+		EListIndexOutOfRange,
+		EListMaxNumberReached
+		};
+
+protected:
+	IMPORT_C CMobilePhoneListBase(TInt aLength, TInt aGranularity);
+	IMPORT_C const TAny* GetEntryL(TInt aIndex) const;
+	IMPORT_C void AddEntryL(const TAny* aEntry);
+	/** Pure virtual function that should internalise entry *aPtr from the aStream 
+	read stream. This member function is used by InternalizeL to internalise the 
+	separate entries in the stream.
+	
+	@param aPtr On return, pointer to the object that will contain the entry.
+	@param aStream The read stream containing the entry to be internalized. */
+	virtual void InternalizeEntryL(TAny* aPtr,RReadStream& aStream) const=0;
+	/** Pure virtual function that should externalise entry *aPtr into the aStream 
+	write stream. This member function is used by ExternalizeL to externalise 
+	the separate entries in the list.
+	
+	@param aPtr Pointer to the entry to be written to the stream
+	@param aStream On return, the write stream. */
+	virtual void ExternalizeEntryL(const TAny* aPtr,RWriteStream& aStream) const=0;
+
+protected:
+	CArrayFixFlat<TAny> iList;
+	TInt iMaxNumber;
+	};
+
+
+
+class CMobilePhoneEditableListBase : public CMobilePhoneListBase
+/**
+A base class within a thin-template implementation
+
+Implements the methods for "write" access to a list class
+
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C ~CMobilePhoneEditableListBase();
+
+	IMPORT_C void DeleteEntryL(TInt aIndex);
+protected:
+	IMPORT_C void InsertEntryL(TInt aIndex, const TAny* aEntry);
+	IMPORT_C CMobilePhoneEditableListBase(TInt aLength, TInt aGranularity);
+};
+
+
+
+template<class T>
+class CMobilePhoneReadOnlyList : public CMobilePhoneListBase
+/**
+A template class within a thin-template implementation.
+
+Provides the type-safe wrappers for "read-only" access to a list class.
+
+@publishedPartner
+@released
+*/
+{
+protected:
+	inline CMobilePhoneReadOnlyList();
+public:
+	inline void AddEntryL(const T& aEntry);
+	inline const T& GetEntryL(TInt aIndex) const; 
+
+private:
+	void InternalizeEntryL(TAny* aPtr,RReadStream& aStream) const
+	{aStream >> *(new(aPtr) T);} // use in place new to construct T
+	void ExternalizeEntryL(const TAny* aPtr,RWriteStream& aStream) const
+		{aStream << *static_cast<const T*>(aPtr);}
+};
+
+
+
+template<class T>
+class CMobilePhoneEditableList : public CMobilePhoneEditableListBase
+/**
+A template class within a thin-template implementation
+
+Provides the type-safe wrappers for "read-write" access to the
+CMobilePhoneEditableListBase list class
+
+@publishedPartner
+@released
+*/
+{
+protected:
+	inline CMobilePhoneEditableList();
+public:
+	inline void AddEntryL(const T& aEntry);
+	inline const T& GetEntryL(TInt aIndex) const; 
+	inline void InsertEntryL(TInt aIndex, const T& aEntry);
+	inline void ChangeEntryL(TInt aIndex, const T& aEntry);
+
+private:
+	void InternalizeEntryL(TAny* aPtr,RReadStream& aStream) const
+	{aStream >> *(new(aPtr) T);} // use in place new to construct T
+	void ExternalizeEntryL(const TAny* aPtr,RWriteStream& aStream) const
+		{aStream << *static_cast<const T*>(aPtr);}
+};
+
+
+/********************************************************************/
+//
+// CMobilePhoneReadOnlyList<T>
+// Implementation of the inline wrapper methods
+//
+/********************************************************************/
+/**
+@publishedPartner
+@released
+*/
+template <class T>
+inline CMobilePhoneReadOnlyList<T>::CMobilePhoneReadOnlyList()
+	: CMobilePhoneListBase(sizeof(T), 1)
+	{}
+
+template <class T>
+inline const T& CMobilePhoneReadOnlyList<T>::GetEntryL(TInt aIndex) const
+	/** This function member retrieves the entry at position aIndex from the list. 
+	A valid index ranges from 0 to count -1, where count is the value returned 
+	from CMobilePhoneListBase::Enumerate().
+	
+	@param aIndex Index of the entry to be retrieved.
+	@leave EListIndexOutOfRange This function member will leave if aIndex is outside 
+	the current number of entries.
+	@return Pointer to the entry at position aIndex. 
+	@publishedPartner
+	@released
+	*/
+	{return(*((const T*)CMobilePhoneListBase::GetEntryL(aIndex)));}
+
+template <class T>
+inline void CMobilePhoneReadOnlyList<T>::AddEntryL(const T& aEntry)
+	/** This function member adds a new entry into the list, placing it in the next 
+	empty position.
+	
+	@param aEntry Pointer to the entry that will be added to the list.
+	@leave EListMaxNumberReached This function member will leave if the list fails 
+	to allocate memory for the new entry or if the maximum number of entries has 
+	been reached. 
+	@publishedPartner
+	@released
+	*/
+	{CMobilePhoneListBase::AddEntryL(&aEntry);}
+	
+/********************************************************************/
+//
+// CMobilePhoneEditableList<T>
+// Implementation of the inline wrapper methods
+//
+/********************************************************************/
+
+template <class T>
+inline CMobilePhoneEditableList<T>::CMobilePhoneEditableList()
+	: CMobilePhoneEditableListBase(sizeof(T), 1)
+	/** Constructor.
+	
+	@see CMobilePhoneEditableListBase::CMobilePhoneEditableListBase() 
+	@publishedPartner
+	@released
+	*/
+	{}
+
+template <class T>
+inline const T& CMobilePhoneEditableList<T>::GetEntryL(TInt aIndex) const
+	/** Gets entry from the list at the given position.
+	
+	@param aIndex Index into the list of the entry to get.
+	@return The entry from the list at position aIndex.
+	@see CMobilePhoneListBase::GetEntryL() 
+	@publishedPartner
+	@released
+	*/
+	{return(*((const T*)CMobilePhoneListBase::GetEntryL(aIndex)));}
+
+template <class T>
+inline void CMobilePhoneEditableList<T>::AddEntryL(const T& aEntry)
+	/** Adds entry at the given position.
+	
+	@param aEntry Entry to be added to list.
+	@see CMobilePhoneListBase::AddEntryL() 
+	@publishedPartner
+	@released
+	*/
+	{CMobilePhoneListBase::AddEntryL(&aEntry);}
+
+template <class T>
+inline void CMobilePhoneEditableList<T>::InsertEntryL(TInt aIndex, const T& aEntry)
+	/** This function member inserts a new list entry at the specified index.
+	
+	@param aIndex Index of the point at which to insert the new entry.
+	@param aEntry Pointer to the new entry.
+	@see CMobilePhoneEditableListBase::InsertEntryL() 
+	@publishedPartner
+	@released
+	*/
+	{CMobilePhoneEditableListBase::InsertEntryL(aIndex, &aEntry);}
+
+template <class T>
+inline void CMobilePhoneEditableList<T>::ChangeEntryL(TInt aIndex, const T& aEntry)
+	/** This function member changes the entry at position aIndex in the list.
+	
+	@param aIndex The entry position to change. A valid index ranges from 0 to 
+	count-1, where count is the value returned from CMobilePhoneListBase::Enumerate().
+	@param aEntry Entry to replace the entry at position aEntry in the list.
+	@see CMobilePhoneEditableList::ChangeEntryL() 
+	@publishedPartner
+	@released
+	*/
+	{*((T*)CMobilePhoneListBase::GetEntryL(aIndex))=aEntry;}
+
+
+
+
+class CMobilePhoneNetworkList : public CMobilePhoneReadOnlyList<RMobilePhone::TMobilePhoneNetworkInfoV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of detected networks retrieved from the phone.
+
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneNetworkList* NewL();
+	IMPORT_C ~CMobilePhoneNetworkList ();
+protected:
+	CMobilePhoneNetworkList();
+private:
+	void ConstructL();
+};
+
+
+
+class CMobilePhoneNetworkListV2 : public CMobilePhoneReadOnlyList<RMobilePhone::TMobilePhoneNetworkInfoV2>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the V2 "read-only" list of detected networks retrieved from the phone.
+
+This class is used in conjunction with the V2 method for detected networks retrieval
+
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneNetworkListV2* NewL();
+	IMPORT_C ~CMobilePhoneNetworkListV2();
+protected:
+	CMobilePhoneNetworkListV2();
+};
+
+class CMobilePhoneNetworkListV5 : public CMobilePhoneReadOnlyList<RMobilePhone::TMobilePhoneNetworkInfoV5>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the V5 "read-only" list of detected networks retrieved from the phone.
+
+This class is used in conjunction with the V5 method for detected networks retrieval
+
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneNetworkListV5* NewL();
+	IMPORT_C ~CMobilePhoneNetworkListV5();
+protected:
+	CMobilePhoneNetworkListV5();
+};
+
+class CMobilePhoneNetworkListV8 : public CMobilePhoneReadOnlyList<RMobilePhone::TMobilePhoneNetworkInfoV8>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the V8 "read-only" list of detected networks retrieved from the phone.
+
+This class is used in conjunction with the V8 method for detected networks retrieval
+
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneNetworkListV8* NewL();
+	IMPORT_C ~CMobilePhoneNetworkListV8();
+protected:
+	CMobilePhoneNetworkListV8();
+};
+
+class CMobilePhoneCFList : public CMobilePhoneReadOnlyList<RMobilePhone::TMobilePhoneCFInfoEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of Call Forwarding status entries retrieved from the phone.
+
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneCFList* NewL();
+	IMPORT_C ~CMobilePhoneCFList ();
+protected:
+	CMobilePhoneCFList();
+private:
+	void ConstructL();
+};
+
+
+
+class CMobilePhoneCBList : public CMobilePhoneReadOnlyList<RMobilePhone::TMobilePhoneCBInfoEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of Call Barring status entries retrieved from the phone.
+
+@publishedPartner
+@released
+
+
+@see RMobilePhone::TMobilePhoneCBInfoEntryV1 
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneCBList* NewL();
+	IMPORT_C ~CMobilePhoneCBList();
+protected:
+	CMobilePhoneCBList();
+private:
+	void ConstructL();
+};
+
+
+
+class CMobilePhoneCWList : public CMobilePhoneReadOnlyList<RMobilePhone::TMobilePhoneCWInfoEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of Call Waiting status entries retrieved from the phone.
+
+@see RMobilePhone::TMobilePhoneCWInfoEntryV1
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneCWList* NewL();
+	IMPORT_C ~CMobilePhoneCWList();
+protected:
+	CMobilePhoneCWList();
+private:
+	void ConstructL();
+};
+
+
+
+class CMobilePhoneCcbsList : public CMobilePhoneReadOnlyList<RMobilePhone::TMobilePhoneCCBSEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of CCBS request entries retrieved from the phone.
+
+@publishedPartner
+@released
+@see RMobilePhone::TMobilePhoneCCBSEntryV1 
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneCcbsList* NewL();
+	IMPORT_C ~CMobilePhoneCcbsList();
+protected:
+	CMobilePhoneCcbsList();
+private:
+	void ConstructL();
+};
+
+
+
+
+class CMobilePhoneGsmSmsList : public CMobilePhoneReadOnlyList<RMobileSmsStore::TMobileGsmSmsEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of SMS messages retrieved from the phone.
+
+@see RMobileSmsStore::TMobileGsmSmsEntryV1
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneGsmSmsList* NewL();
+	IMPORT_C ~CMobilePhoneGsmSmsList ();
+protected:
+	CMobilePhoneGsmSmsList();
+private:
+	void ConstructL();
+};
+
+
+
+class CMobilePhoneCdmaSmsList : public CMobilePhoneReadOnlyList<RMobileSmsStore::TMobileCdmaSmsEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of SMS messages retrieved from the phone.
+
+@see RMobileSmsStore::TMobileCdmaSmsEntryV1
+@publishedPartner
+@released
+@deprecated 9.5
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneCdmaSmsList* NewL();
+	IMPORT_C ~CMobilePhoneCdmaSmsList ();
+protected:
+	CMobilePhoneCdmaSmsList();
+private:
+	void ConstructL();
+};
+
+
+
+class CMobilePhoneSmspList : public CMobilePhoneEditableList<RMobileSmsMessaging::TMobileSmspEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-write" list of SMS parameter entries retrieved from the phone.
+
+@see RMobileSmsMessaging::TMobileSmspEntryV1
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneSmspList* NewL();
+	IMPORT_C ~CMobilePhoneSmspList ();
+protected:
+	CMobilePhoneSmspList();
+private:
+	void ConstructL();
+};
+
+class CMobilePhoneNamList : public CMobilePhoneEditableList<RMobileNamStore::TMobileNamEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-write" list of NAM entries retrieved from the phone
+
+@publishedPartner
+@released
+@see RMobileNamStore::TMobileNamEntryV1
+@deprecated 9.5
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneNamList* NewL();
+	IMPORT_C ~CMobilePhoneNamList();
+protected:
+	CMobilePhoneNamList();
+private:
+	void ConstructL();
+};
+
+class CMobilePhoneNamListV4 : public CMobilePhoneEditableList<RMobileNamStore::TMobileNamEntryV4>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-write" list of NAM entries retrieved from the phone
+
+@publishedPartner
+@released
+@see RMobileNamStore::TMobileNamEntryV4
+@deprecated 9.5
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneNamListV4* NewL();
+	IMPORT_C ~CMobilePhoneNamListV4();
+protected:
+	CMobilePhoneNamListV4();
+};
+
+class CMobilePhoneBroadcastIdList : public CMobilePhoneEditableList<RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-write" list of Broadcast ID entries retrieved from the phone.
+
+@see RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneBroadcastIdList* NewL();
+	IMPORT_C ~CMobilePhoneBroadcastIdList ();
+	IMPORT_C void AddRangeEntryL(const RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1& aStart, const RMobileBroadcastMessaging::TMobileBroadcastIdEntryV1& aEnd);
+
+protected:
+	CMobilePhoneBroadcastIdList();
+private:
+	void ConstructL();
+};
+
+
+
+
+class CMobilePhoneONList : public CMobilePhoneEditableList<RMobileONStore::TMobileONEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-write" list of Own Numbers retrieved from the phone
+
+@see RMobileONStore::TMobileONEntryV1
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneONList* NewL();
+	IMPORT_C ~CMobilePhoneONList();
+protected:
+	CMobilePhoneONList();
+private:
+	void ConstructL();
+};
+
+
+
+class CMobilePhoneENList : public CMobilePhoneReadOnlyList<RMobileENStore::TMobileENEntryV1>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of Emergency Numbers retrieved from the phone.
+
+@see RMobileENStore::TMobileENEntryV1
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneENList* NewL();
+	IMPORT_C ~CMobilePhoneENList();
+protected:
+	CMobilePhoneENList();
+private:
+	void ConstructL();
+};
+
+
+class CMobilePhoneStoredNetworkList : public CMobilePhoneEditableList<RMobilePhone::TMobilePreferredNetworkEntryV3>
+/**
+Is an instantiation of the list thin-template inheriting from CMobilePhoneEditableList. 
+Used to hold an editable list of stored network entries. List manipulation functions are restricted to only be applied to entries 
+that are of a used defined type. i.e. TMobilePreferredNetworkEntryV3.iUserDefined == ETrue.
+
+@see RMobilePhone::TMobilePreferredNetworkEntryV3
+@publishedPartner
+@released
+*/
+{
+public:
+	IMPORT_C static CMobilePhoneStoredNetworkList* NewL();
+	IMPORT_C ~CMobilePhoneStoredNetworkList ();
+	 
+	IMPORT_C TInt InsertEntryL(TInt aIndex, const RMobilePhone::TMobilePreferredNetworkEntryV3& aEntry);
+	IMPORT_C TInt ChangeEntryL(TInt aIndex, const RMobilePhone::TMobilePreferredNetworkEntryV3& aEntry); 
+	IMPORT_C TInt DeleteEntryL(TInt aIndex);
+protected:
+	CMobilePhoneStoredNetworkList();
+private:
+	TBool IsEntryUserDefinedL(TInt aIndex);
+};
+
+class CMobilePhoneGbaNafIdList : public CMobilePhoneReadOnlyList<RMobilePhone::TGbaNafEntryV8>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of Gba Naf(EF_GBANL) List retrieved from the phone.
+
+@see RMobilePhone::TGbaNafEntryV8
+
+@publishedPartner
+@released
+*/
+	{
+public:
+	IMPORT_C static CMobilePhoneGbaNafIdList* NewL();
+	IMPORT_C ~CMobilePhoneGbaNafIdList ();
+protected:
+	CMobilePhoneGbaNafIdList();
+private:
+	void ConstructL();
+	};
+
+class CMobilePhoneMbmsMskIdList : public CMobilePhoneReadOnlyList<RMobilePhone::TMskEntryV8>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-only" list of MBMS MSK ID(EF_MSK) List retrieved from the phone.
+
+@see RMobilePhone::TMskEntryV8
+
+@publishedPartner
+@released
+*/
+	{
+public:
+	IMPORT_C static CMobilePhoneMbmsMskIdList* NewL();
+	IMPORT_C ~CMobilePhoneMbmsMskIdList ();
+protected:
+	CMobilePhoneMbmsMskIdList();
+private:
+	void ConstructL();
+	};	
+
+class CMobilePhoneStoredWlanSIDList	: public CMobilePhoneEditableList<RMobilePhone::TWlanSIDV8>
+/**
+An instantiation of the list thin-template.
+
+Used to hold the "read-write" list of Wlan Specific identifier list(User/Operator controlled)
+retrieved from the phone.
+
+@see RMobilePhone::TWlanSIDV8
+
+@publishedPartner
+@released
+*/
+	{
+public:
+	IMPORT_C static CMobilePhoneStoredWlanSIDList* NewL();
+	IMPORT_C ~CMobilePhoneStoredWlanSIDList ();
+public:
+	IMPORT_C TInt InsertEntryL(TInt aIndex, const RMobilePhone::TWlanSIDV8& aEntry);
+	IMPORT_C TInt ChangeEntryL(TInt aIndex, const RMobilePhone::TWlanSIDV8& aEntry); 
+	IMPORT_C TInt DeleteEntryL(TInt aIndex);
+protected:
+	CMobilePhoneStoredWlanSIDList();
+private:
+	TBool IsEntryUserDefinedL(TInt aIndex);
+	};	
+
+#endif