diff -r 6a20128ce557 -r ebfee66fde93 messagingapp/msgsettings/msginit/inc/simscnumberdetector.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgsettings/msginit/inc/simscnumberdetector.h Fri Jun 04 10:25:39 2010 +0100 @@ -0,0 +1,208 @@ +/* + * Copyright (c) 2002 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: + * An active object class which takes care of reading the possible new + * service centres from SIM and adds them to Sms Settings. + * + */ + +#ifndef __SIMSCNUMBERDETECTOR_H__ +#define __SIMSCNUMBERDETECTOR_H__ + +// INCLUDES +#include // for MsvSession +#include // for CSmsClientMtm +#include +#include // for CSmsSimParamOperation + +// CONSTANTS +const TInt KMaxNameLength = 60; +const TInt KSmumGranularity = 4; +const TInt KSmumRetryCount = 20; +const TInt KSmumRetryDelay = 5000000; // 5 secs +const TInt KSmumSMSPid = 50; +const TInt KTestStringLength = 100; +const TInt KDefDeliveryReport = 1; +const TInt KDefValidityPeriod = 1440; +const TInt KDefMessageConversion = 0; +const TInt KDefPreferredConnection = 3; +const TInt KDefReplyViaSameCentre = 0; + +// CONSTANTS +_LIT( KSmsService, "Sms Service" ); +_LIT( KSmscDefaultName, "New service centre"); +_LIT( KSmscSimDefaultName, "New SIM service centre"); +_LIT( KFmtSpec, "%S(%02d)"); + +// FORWARD DECLARATIONS +class CClientMtmRegistry; +class CStartUpMonitor; +class CRepository; + +/** + * Observer to indicate when SIM operation has been completed. + */ +class MSimOperationObserver +{ +public: + virtual void CompleteOperation()=0; +}; + +/** + * CMsgSimOperation + * Inherited from CBase, MMsvSessionObserver + */ +class CMsgSimOperation : public CBase, public MMsvSessionObserver +{ +public: + + /** + * Constructor. + */ + IMPORT_C static CMsgSimOperation* NewL(MSimOperationObserver& aObserver); + + /** + * Destructor + */ + ~CMsgSimOperation(); + +public: + + + /** + * Callback function for startup state monitor object + */ + void HandleStartupReadyL(); + +private: + + /** + * C++ constructor which initializes the active object with a + * default priority and adds it to the active scheduler. + * @param TRequestStatus& aStatus, TInt aPriority + * @return nothing + */ + CMsgSimOperation(MSimOperationObserver& aObserver); + + /** + * This function simulates issuing request, activates the object + * and starts to open Msv session + * @param none + * @return nothing + */ + void StartL(); + + /** + * Complete the client's active object request status + * @param TInt aValue + * @return nothing + */ + + void CompleteClientRequest(TInt aValue); + + /** + * Checks if the device has SIM when phone boots + * @reutrn bool + */ + TBool IsSIMPresent(); + + /** + * Checks if the SIM has been changed in the next boot + * @reutrn bool + */ + TBool HasSIMChanged(); + + /** + * Checks if already SMSC setting is there + * @reutrn bool + */ + TBool HasNoSmscSettings(); + + /** + * Gets default name for SMSC, if SIM does not have one + */ + void FindNameForSCL(TDes& aName, TBool aNameIsForSCentreFromSIM, + CDesCArrayFlat* aSCNamesList); + + /** + * Creates a SMS service, if not there + */ + TMsvId CreateSmsServiceL(); + + /** + * Creates default settings for the SMS account + */ + void CreateDefaultSettingsL(TMsvId aServiceId); + + /** + * Reads default settings from the Cenrep + */ + void ReadDefaultSettingsFromSharedDataL(CSmsSettings* aServiceSettings); + + /** + * Gets the Service Id + */ + TMsvId ServiceIdL(); + +private: + + /** + * + */ + enum TSimOperationPanic + { + ESimOperationPanicRequestAlreadyActive = 0, + ESimOperationPanicClientsRequestAlreadyCompleted + }; + + /** + * Panic the thread + * @param TSimOperationPanic aPanic + * @return nothing + */ + static void Panic(TSimOperationPanic aPanic); + +private: + + void StartRunL(TInt aError); + + void DoStartRunL(); + + /** + * From MMsvSessionObserver + */ + void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, + TAny* aArg3); + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL(); + +private: + // Data + CSmsSimParamOperation* iSimOperation; + CMsvSession* iMsvSession; + CSmsClientMtm* iSmsClientMtm; + CClientMtmRegistry* iClientRegistry; + TInt iRetryCount; + CStartUpMonitor* iStartupMonitor; + MSimOperationObserver& iObserver; + CRepository* iCenRepSession; + + +}; + +#endif // not defined __SIMSCNUMBERDETECTOR_H__ +// End of file