williamr@2: // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@4: // SMSCLNT.H williamr@2: // williamr@4: /** williamr@4: * @file williamr@4: * @publishedAll williamr@4: * @released williamr@4: */ williamr@2: #ifndef __SMSCLNT_H__ williamr@2: #define __SMSCLNT_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: class CSmsHeader; williamr@2: class CSmsMessage; williamr@2: class CSmsSettings; williamr@2: class TSmsUtilities; williamr@2: class CSmsSimParamOperation; williamr@2: class CMobilePhoneSmspList; williamr@2: class RResourceFile; williamr@2: williamr@2: /** williamr@2: The SMS client MTM interface. williamr@2: williamr@2: Most of the functions in this class are implementations of the virtual functions williamr@2: defined by the base class CBaseMtm. williamr@2: williamr@2: An object of this class can be obtained from the Client MTM registry. The message williamr@2: server provides the necessary information required by the registry to provide williamr@2: the SMS client MTM. williamr@2: williamr@2: All client MTM objects have a current context. This is an entry in the message williamr@2: store that will be manipulated by certain APIs supplied by the MTM. If the williamr@2: current context is not set then certain APIs will panic. williamr@2: williamr@2: The CBaseMtm::HasContext API can be used to check that the current context has williamr@2: been set. It can be set using either the CBaseMtm::SwitchCurrenEntryL API or the williamr@2: CBaseMtm::SetCurrentEntryL API. williamr@2: williamr@2: @see CClientMtmRegistry williamr@2: @see CBaseMtm::HasContext williamr@2: @see CBaseMtm::SetCurrentEntryL williamr@2: @see CBaseMtm::SwitchCurrenEntryL williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@4: NONSHARABLE_CLASS (CSmsClientMtm) : public CBaseMtm williamr@2: { williamr@2: public: williamr@2: williamr@2: IMPORT_C static CSmsClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll,CMsvSession& aSession); williamr@2: virtual ~CSmsClientMtm(); williamr@2: williamr@2: void HandleEntryEvent(enum MMsvEntryObserver::TMsvEntryEvent,TAny*,TAny*,TAny*); williamr@2: williamr@2: inline CSmsHeader& SmsHeader(); williamr@2: inline const CSmsHeader& SmsHeader() const; williamr@2: inline CSmsSettings& ServiceSettings(); williamr@2: inline const CSmsSettings& ServiceSettings() const; williamr@2: inline TInt ServiceId() const; williamr@2: williamr@2: IMPORT_C void RestoreServiceAndSettingsL(); williamr@2: IMPORT_C CSmsSimParamOperation* ReadSimParamsL(TRequestStatus& aObserverRequestStatus); williamr@4: IMPORT_C CSmsSimParamOperation* WriteSimParamsL(const CMobilePhoneSmspList& aList, TRequestStatus& aObserverRequestStatus); williamr@4: IMPORT_C void SaveMessageL(CMsvStore& aEditStore, TMsvEntry& aEntry); williamr@4: IMPORT_C void CreateMessageL(TMsvEntry& aEntry); williamr@2: /** williamr@2: Sets the character encoding value. The character encoding value options are 7-bit, williamr@2: 8-bit and 16-Bit Unicode. By default the character set encoding is 7 bit encoding. williamr@2: */ williamr@2: void SetMessageCharacterSetL(TSmsDataCodingScheme::TSmsAlphabet aTsmsAlphabet); williamr@2: williamr@2: public: // methods from CBaseMtm williamr@2: williamr@2: virtual void SaveMessageL(); williamr@2: virtual void LoadMessageL(); williamr@2: virtual TMsvPartList ValidateMessage(TMsvPartList aPartList); williamr@2: virtual TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList); williamr@2: virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus); williamr@2: virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus); williamr@2: virtual void AddAddresseeL(const TDesC& aRealAddress); williamr@2: virtual void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias); williamr@2: virtual void RemoveAddressee(TInt aIndex); williamr@2: virtual TInt QueryCapability(TUid aCapability, TInt& aResponse); williamr@2: virtual void InvokeSyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter); williamr@2: virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus); williamr@2: williamr@2: IMPORT_C void CreateMessageL(TMsvId aServiceId); williamr@2: IMPORT_C void BioTypeChangedL(TUid aBioTypeUid); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: Methods from CBaseMtm, The implementation of this function assumes that williamr@2: the new service for setting the charset encoding value for a SMS message is supported. williamr@2: */ williamr@2: IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1); williamr@2: williamr@2: private: williamr@2: williamr@2: CSmsClientMtm(CRegisteredMtmDll& aRegisteredMtmDll,CMsvSession& aSession); williamr@2: void ConstructL(); williamr@2: williamr@2: void BasicReplyForwardEntry(TMsvEntry& aNewEntry) const; williamr@2: CMsvOperation* CreateNewEntryL(TMsvEntry& aNewEntry, TMsvId aDestination,CSmsHeader& aSmsHeader,const CRichText& aBody, TRequestStatus& aCompletionStatus); williamr@2: TBool ValidRecipients() const; williamr@2: TBool ValidNumber(const TDesC& aNumber) const; williamr@2: williamr@2: private: // methods from CBaseMtm williamr@2: williamr@2: virtual void ContextEntrySwitched(); williamr@2: williamr@2: private: williamr@2: williamr@2: void DoAddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias); williamr@2: void AddRecipientL(const TDesC& aRealAddress, const TDesC& aAlias); williamr@2: void DoAddRecipientL(CSmsHeader* aSmsHeader, const TDesC& aRealAddress, const TDesC& aAlias); williamr@2: void ResetHeader(); williamr@2: TMsvPartList DoFindL(const TDesC& aTextToFind,TMsvPartList aPartList); williamr@2: void FindL(const TDesC& aTextToFind, const TMsvPartList aPartList,TMsvPartList& aFoundList); williamr@2: void FindInBodyL(const TDesC& aTextToFind, const TMsvPartList& aFoundList, TMsvPartList& aResult); williamr@2: HBufC* ReadEmailSubjectFormatL(RResourceFile& aResourceFile, TInt aResourceId, const TDesC& aDefaultFormat); williamr@2: williamr@2: private: williamr@2: williamr@2: CSmsSettings* iServiceSettings; williamr@2: TMsvId iServiceId; williamr@2: CSmsHeader* iSmsHeader; williamr@2: TChar iRealAddressOpen; williamr@2: TChar iRealAddressClose; williamr@2: HBufC* iEmailForwardSubjectFormat; williamr@2: HBufC* iEmailReplySubjectFormat; williamr@2: }; williamr@2: williamr@2: #include williamr@2: williamr@2: #endif // __SMSCLNT_H__