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: // smutsimparam.h williamr@2: // williamr@4: /** williamr@4: * @file williamr@4: * @publishedAll williamr@4: * @released williamr@4: */ williamr@2: #ifndef __SMUTSIMPARAM_H__ williamr@2: #define __SMUTSIMPARAM_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: class CMobilePhoneSmspList; williamr@2: class TSmsProgress; williamr@2: williamr@2: /** williamr@2: A packaged TInt value. williamr@2: williamr@2: This is used by CSmsSimParamOperation. williamr@2: williamr@2: @see CSmsSimParamOperation::ProgressL() williamr@2: williamr@4: @publishedAll williamr@2: @released williamr@2: */ williamr@2: typedef TPckgBuf TIntBuf; williamr@2: williamr@2: /** williamr@2: Encapsulates an operation to read/write an array of SMS parameters from a SIM. williamr@2: williamr@2: An operation of this type if returned by the SMS client MTM for the read and williamr@2: write SIM paramter operations. williamr@2: williamr@2: These operations are generated from calling the SMS client MTM APIs williamr@2: CSmsClientMtm::ReadSimParamsL and CSmsClientMtm::WriteSimParamsL. The williamr@2: CSmsClientMtm::InvokeAsyncFunctionL API should not be used for these operations. williamr@2: williamr@2: @see CSmsClientMtm::ReadSimParamsL williamr@2: @see CSmsClientMtm::WriteSimParamsL williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@4: NONSHARABLE_CLASS (CSmsSimParamOperation) : public CMsvOperation williamr@2: { williamr@2: public: williamr@2: williamr@2: static CSmsSimParamOperation* ReadSimParamsL(TUid aMtm, TMsvId aService, CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus); williamr@2: static CSmsSimParamOperation* WriteSimParamsL(const CMobilePhoneSmspList& aList, TUid aMtm, TMsvId aService, CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus); williamr@2: virtual ~CSmsSimParamOperation(); williamr@2: williamr@2: inline const CMobilePhoneSmspList& SmspList() const; williamr@2: williamr@2: IMPORT_C CMobilePhoneSmspList* ServiceCentersLC() const; williamr@2: IMPORT_C const TDesC8& ProgressL(); williamr@2: williamr@2: IMPORT_C static void RestoreSimParamsL(CMsvStore& aStore, CMobilePhoneSmspList& aList); williamr@2: IMPORT_C static void StoreSimParamsL(CMsvStore& aStore, const CMobilePhoneSmspList& aList); williamr@2: williamr@2: private: // methods from CActive williamr@2: williamr@2: virtual void RunL(); williamr@2: virtual void DoCancel(); williamr@2: virtual TInt RunError(TInt aError); williamr@2: williamr@2: private: williamr@2: williamr@2: CSmsSimParamOperation(TUid aMtm, TMsvId aService, CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus); williamr@2: williamr@2: void DoReadSimParamsL(); williamr@2: void DoRunReadSimParamsL(/*TSmsProgress aProgress*/); williamr@2: void DoWriteSimParamsL(const CMobilePhoneSmspList& aList); williamr@2: williamr@2: void TransferCommandL(TInt aCommandId); williamr@2: void Complete(); williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: This defines the state machine. williamr@2: */ williamr@2: enum TReadSimParamsState williamr@2: { williamr@2: /** williamr@2: Specifies waiting state williamr@2: */ williamr@2: EStateWaiting, williamr@2: /** williamr@2: Specifies reading state williamr@2: */ williamr@2: EStateReadingSimParams, williamr@2: /** williamr@2: Specifies writing state williamr@2: */ williamr@2: EStateWritingSimParams williamr@2: } iState; williamr@2: williamr@2: /** williamr@2: A list containing the SMS parameters williamr@2: */ williamr@2: CMobilePhoneSmspList* iSimParams; williamr@2: TInt iError; williamr@2: TIntBuf iProgressBuf; williamr@2: CMsvOperation* iOperation; williamr@2: }; williamr@2: williamr@2: /** williamr@2: Gets the list of SMS parameters on the SIM, after a successfully completed williamr@2: read operation. williamr@2: williamr@2: If the operation has not successfully completed, this function returns an williamr@2: empty list. williamr@2: williamr@2: This function should ot be used with a write SIM parameters operation. williamr@2: williamr@2: @return williamr@2: The list of SMS parameters read from the SIM. williamr@2: williamr@2: @panic SMCM 3 williamr@2: This operation was not reading the SIM parameters. The operation was not returned williamr@2: from CSmsClientMtm::ReadSimParamsL (debug only). williamr@2: */ williamr@2: inline const CMobilePhoneSmspList& CSmsSimParamOperation::SmspList() const williamr@2: { williamr@2: __ASSERT_DEBUG(iState == EStateReadingSimParams, Panic(ESmscPanicUnexpectedCommand)); williamr@2: return *iSimParams; williamr@2: } williamr@2: williamr@2: #endif // __SMUTSIMPARAM_H__