diff -r 000000000000 -r 72b543305e3a mobilemessaging/smsmtm/servermtm/inc/SmssSimUtils.h --- /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 +#include +#include "smssactive.h" +#include +#include + +//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 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 iSlotBuffer; + CSmsGetDetDescInterface* iGetDetDesc; + }; + +#include "SmssSimUtils.inl" + +#endif