--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/smsmtm/servermtm/inc/SmssSimUtils.h Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,171 @@
+// 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:
+//
+
+#ifndef SMSS_SIM_UTILS_H_
+#define SMSS_SIM_UTILS_H_
+
+//Includes
+
+#include <smsustrm.h>
+#include <msvstd.h>
+#include "smssactive.h"
+#include <smsuaddr.h>
+#include <csmsgetdetdescinterface.h>
+
+//Forward declarations
+
+class RSocket;
+class RSocketServ;
+class CParaFormatLayer;
+class CCharFormatLayer;
+class CSmsHeader;
+class CBIODatabase;
+
+
+//CSmsSimUtils
+const TUid KSmsSimUtilsDataUid = {0x101f747e};
+const TInt16 KSmsSimUtilsDataVersion = 1;
+
+class TSmsSimUtilsData
+/**
+@internalComponent
+@released
+*/
+ {
+ public:
+
+ inline TSmsSimUtilsData();
+ void StoreL(CMsvStore& aStore) const;
+ void RestoreL(const CMsvStore& aStore);
+ inline TBool IsPresentL(const CMsvStore& aStore) const;
+ void ExternalizeL(RWriteStream& aStream) const;
+ void InternalizeL(RReadStream& aStream);
+
+ public:
+
+ TMsvId iLastEnumerateFolder; //< Last folder used for enumerating SIM messages
+ };
+
+class CSmsSimUtils : public CSmssActive
+/**
+@internalComponent
+@released
+*/
+ {
+public:
+ static CSmsSimUtils* NewL(CMsvServerEntry& aServerEntry, RFs& aFs, TMsvId aSmsServiceId);
+ void EnumerateL(const TDesC8& aParameter, TRequestStatus& aStatus);
+
+ void DeleteFromPhoneStoreL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);
+ void CopyFromPhoneStoreL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
+ void MoveFromPhoneStoreL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
+
+ void ReadSimParamsL(TRequestStatus& aStatus);
+ void WriteSimParamsL(TRequestStatus& aStatus);
+
+ inline const TSmsProgress& Progress();
+ ~CSmsSimUtils();
+
+ static void ConnectL(RSocketServ& arSocketServ, RSocket& arSocket, TSmsAddrFamily aSmsAddrFamily);
+
+ //Write messages to a phone store
+ void CopyToPhoneStoreL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
+ void MoveToPhoneStoreL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
+private:
+ CSmsSimUtils(CMsvServerEntry& aServerEntry, RFs& aFs, TMsvId aSmsServiceId);
+ void ConstructL();
+
+ void ConstructHeaderAndBodyL();
+ void DoRunL();
+ void DoSmssCancel();
+ void DoComplete(TInt& aStatus); //from CSmssActive
+ void ConnectL();
+ void RetrieveMessageFromPhoneStoreL();
+ void SetupMoveDeleteL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);
+ void DoDeleteFromPhoneStoreL();
+ void DoDeleteThenMoveFromPhoneStoreL();
+ void DeleteEachMessageFromPhoneStoreL();
+
+ void SetDestination(const TDesC8& aParameter);
+ void MoveEntriesL(const CMsvEntrySelection& aSelection, TBool aCopy=EFalse);
+
+ //Count the messages in the phone stores
+ void CountMessagesInPhoneStoresL();
+ void CreateBioDbL();
+ TBool GetDefaultSendBearerL(TInt aBioType, TBioMsgIdType aBearer, TBioMsgId& rBioMsgId) const;
+ TUid DecodeBioMessageL(TBioMsgId& rId);
+ void EncodeBioMessageL();
+
+ void DoRunReadSimParamsL();
+
+ void DoCopyToPhoneStoreL();
+
+ void StoreSimUtilsDataL();
+ void RestoreSimUtilsDataL();
+ TMsvId CreateNewEnumerateFolderL();
+ void SetAndCleanEnumerateFolderL(const TDesC8& aParameter);
+ void DeleteChildrenL(TMsvId aId);
+ void DeleteEnumerateFolderL(TMsvId aId);
+ void LoadClass2FolderIdL();
+ void SetLocalStorageInfoL(const CMsvEntrySelection& aSelection);
+ void RestoreSmsSettingsL();
+
+private:
+
+ enum TSmsSimUtilsState
+ {
+ ESimUtilsStateOther,
+ ESimUtilsDeleteEachMessage,
+ EWritingToSIM,
+ EUpdatingClass2,
+ EMovingEntries,
+ ESimUtilsDeletedLastMessage
+ } iState;
+
+ RSocket iSocket;
+ RSocketServ iSocketServ;
+
+ TSmsProgress iProgress;
+ CMsvEntrySelection* iSelection;
+
+ //Enumerating Messages & Reading SMS Parameters
+ TPckgBuf<TUint> iEnumerateCountBuf;
+ RSmsSocketReadStream iReadStream;
+ TMsvId iSmsServiceId;
+
+ //Copy, Move, Delete messages from SIM
+ CParaFormatLayer* iParaFormat;
+ CCharFormatLayer* iCharFormat;
+ CRichText* iBody;
+ CSmsHeader* iHeader;
+ TMsvId iDestination;
+ CBIODatabase* iBioDb;
+ CMsvEntrySelection* iCompletedSelection;
+ TInt iRecipientCount;
+ TInt iRecipientIndex;
+
+ //Writing messages to phone stores and writing SMS Parameters
+ RSmsSocketWriteStream iWriteStream; //< SMS socket write stream
+ TBool iReadingSimParams;
+ TSmsSimUtilsData iSimUtilsData;
+ TMsvId iClass2Folder;
+ CSmsSettings* iSettings;
+ TBuf8<IoctlWriteSMSBufferSize> iSlotBuffer;
+ CSmsGetDetDescInterface* iGetDetDesc;
+ };
+
+#include "SmssSimUtils.inl"
+
+#endif