diff -r 000000000000 -r 3ce708148e4d pnpmobileservices/pnpms/OnlineSupport/inc/CCMAppUi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pnpmobileservices/pnpms/OnlineSupport/inc/CCMAppUi.h Thu Dec 17 08:40:12 2009 +0200 @@ -0,0 +1,626 @@ +/* +* Copyright (c) 2003-2006 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: Header file for Ui class +* +*/ + + + +#ifndef CCMAPPUI_H +#define CCMAPPUI_H + +// INCLUDES +#include +#include +#include +#include +#include +#include // for KFavouritesMaxUrl +#include +#include // for creating new Init Access +#include // for creating new Init Access + +#include "MCMSocketsEngineNotifier.h" +#include "MCMRegisterationStatusNotifier.h" +#include "MiniBrowserObserver.h" +#include "mcmdialogstatusnotifier.h" +#include "ccmdialogmonitor.h" + + +// CONSTANTS +//Maximun length of WAP address +const TInt KMaximumLengthOfWapAddress = KFavouritesMaxUrl; +const TInt KMaxServerString = 20; +const TInt KMaxPageString = 20; +const TInt KMaxQueryString = 256; + +// MACROS +// None + +// DATA TYPES +// None + +// FUNCTION PROTOTYPES +// None + +// FORWARD DECLARATIONS +class CRepository; +class CCMRegistrationMonitor; +class CCMSocketsEngine; +class CMiniBrowser; +class CCMDialogMonitor; +class CAknGlobalConfirmationQuery; +class CAknGlobalNote; +// CLASS DECLARATION + +/** +* CCMAppUi application class. +* +* @lib ConfManager.app +* @since 2.0 +*/ +class CCMAppUi : public CAknAppUi, + /*public MProgressDialogCallback,*/ + public MCMSocketsEngineNotifier, + public MCMRegisterationStatusNotifier, + public MCoeForegroundObserver, + public MMiniBrowserObserver, + public MCMDialogStatusNotifier + { + public: // Constructors and destructor + CCMAppUi(); + + /** + * Destructor. + */ + ~CCMAppUi(); + + public: // New methods + + /** + * ApplicationStatus used when the timer expires + */ + enum TApplicationStatus + { + EAppStatusMonitoring, + EAppStatusConnecting, + EAppStatusWaitingDisconnect, + EAppStatusInactive, + EAppStatusStartingUp, + /*(if the app is closed immediately, it crashes after calling the destructor. + Seems like CAknMessageQueryDialog releases some of it's resources after some + kind of delay and this causes the crash) + */ + EAppStatusClosing + }; + + /** + * ApplicationStatus used when the timer expires + */ + enum TConnectingVia + { + EConnectingViaNull, // Initial state, no connection has been tried yet + EConnectingViaInit, // Trying to connect via Init Access + EConnectingViaDefault, // Trying to connect via Browser default AP + EConnectingViaUser // Trying to connect via AP asked from user + }; + + + /** + * ConnectReason used to inform help-portal + */ + enum TConnectReason + { + EConnectReasonUnknown = 0, + EConnectReasonFirstBoot = 1, + EConnectReasonNewSim = 2, + EConnectReasonUserTriggered = 3, + EConnectReasonApplicationTriggered = 4, + EConnectReasonRemoteTriggered = 5 + }; + + /** + * Activates confirmation dialog + * @since 2.0 + */ + void ConfirmationDialogL(); + + /** + * Activates error note + * @since 2.0 + * @return void + */ + void ErrorNoteConnectionL(); + + /** + * Activates error note, displaying the error value + * @since 2.0 + * @param aError errorvalue, will displayed in the note + * @return void + */ + void ErrorNoteUnknownL( TInt aError ); + + /** + * StartUp starting sequence. + * @since 2.0 + * @return errorcode. + */ + TInt StartUpStartL(); + + /** + * Checks if there is accesspoint available + * @since 2.0 + * @return errorcode + */ + TInt CheckSettingsL(); + + /** + * opens wap browser + * @since 2.0 + * @return void + */ + void OpenWapBrowserL( ); + + /** + * Checks if there is defaul accesspoint available + * @since 2.0 + * @returns ID of the accesspoint or KErrNotFound + */ + TUint32 CheckDefaultAccessPointL(); + + /** + * Checks if there is init accesspoint available + * @since 2.0 + * @returns ID of the accesspoint or KErrNotFound + */ + TUint32 InitAccessPointL(); + + /** + * Checks the settings of init access point + * @since 2.0 + * @param aDb Commsdb connection + * @param aAccessPoint id of the AP to be checked + * @returns ETrue if the AP was ok, EFalse if not + */ + TBool CheckInitAccessPointL( CCommsDatabase& aDb, TUint32& aAccessPoint ); + + /** + * Creates the init accesspoint + * @since 2.0 + * @param aDb Commsdb connection + * @returns ID of the accesspoint or KErrNotFound + */ + TUint32 CreateInitAccessPointL( CCommsDatabase& aDb ); + + /** + * Initiates next test + * @since 2.0 + * @returns void + */ + void InitiateNextConnectionTestL(); + + /** + * Checks if init access is ok in the comms db + * if not creates one and cheks again + * if init access AP is ok initiates the init access test + * otherwise returns EFalse + * @since 2.0 + * @returns ETrue if connection test was initiated, EFalse if not + */ + TBool TryInitAccessL(); + + /** + * Checks if browser default access is ok in the comms db + * if so initiates the default access test + * otherwise returns EFalse + * @since 2.0 + * @returns ETrue if connection test was initiated or EFalse + */ + TBool TryDefaultAccessL(); + + /** + * Prompts the user to select an ap to test + * @since 2.0 + * @returns ETrue if connection test was initiated or EFalse + */ + TBool TryUserAccessL(); + + /** + * Reads the accesspoint id from the preferences table and changes + * iAccessPoint to refer to the id in the WAP_ACCESS_POINT table. + * @since 2.0 + * @returns ID of the accesspoint or KErrNotFound + */ + TInt ReadAccessPointFromPreferencesL(); + + /** + * function checks the settings in the ini file + * @since 2.0 + * @return void + */ + void CheckIniFileSettingsL(); + + /** + * Shows wait Dialog + * @since 2.0 + * @return void + */ + void ShowWaitDialogL(); + + /** + * Starts the real functionality of the configuration Manager + * @since 2.0 + * @return void + */ + void StartUpOperationL(); + + /** + * Sets server string (http://.help-portal.com) + * @param aServer the server string, max length KMaxServerString + * @since 2.0 + * @return void + */ + void SetServerString(const TDesC& aServer); + + /** + * Sets page string (http://server.help-portal.com/) + * @param aPage the page string, max length KMaxPageString + * @since 2.0 + * @return void + */ + void SetPageString(const TDesC& aPage); + + /** + * Sets connect reason + * @param aReason the connect reason + * @since 2.0 + * @return void + */ + void SetConnectReason(TConnectReason aReason); + + /** + * Sets query string + * @param aQuery the query string, max length KMaxQueryString + * @since 2.0 + * @return void + */ + void SetQueryString(const TDesC& aQuery); + + /** + * Sets iAtBoot + * @param aAtBoot if ETrue indicates that Support is started as part + * of boot process + * @return voi + */ + void SetAtBoot( TBool aAtBoot); + + /** + * Fetch product model and sw version + * @since 2.0 + * @return void + */ + void FetchProductModelAndSwVersionL(); + + + /** + * Exit application. The implementation depends on the platform. + * On 3.0 a short delay is needed on exit because dialogs do not release + * all resources when ExecuteLD function completes. The delay is needed + * since the app panics on exit if all resources has not been freed. + */ + void DelayedExit(); + + public: //Functions from base classes + + /** + * TimerExpired function was replaced by TimeOutCallBack + * after replacing class CCMTimer with CPeriodic. Calls DoTimeOutCallBack. + * @return TInt KErrNone in case everything was Ok. + */ + static TInt TimeOutCallBack( TAny* aCCMAppUi ); + + /** + * The functionality from TimerExpired function was moved here + */ + void DoTimeOutCallBackL(); + + /** + Starts a time-out period of aTimeOut micro seconds. Calls TimeOutCallBack + after that. + */ + void StartTimeOut( const TInt aTimeOut ); + + /** + * From MCMSocketsEngineNotifier notifies the connection result + * @since 2.0 + * @param aErrorCode error code of the connection test + * @return void + */ + void ConnectionResultL( TInt aErrorCode ); + + /** + * A method for CCMSocketEngine to tell that a unhandled + * leave has occurred during it's RunL handling. + * Displays a Unknown Error note + * @param aErrorCode the errorcode of the unhandled leave + * @return voi + */ + void UnhandledLeave( TInt aErrorCode ); + + /** + * From MCMRegisterationStatusNotifier + * @param aNetworkStatus + */ + void RegistrationMonitoringDoneL( CCMRegistrationMonitor::TNetworkStatus aNetworkStatus ); + + /** + * From MCMRegisterationStatusNotifier + * @param aStatus + * @param aError + */ + void RegistrationReportErrorL( const CCMRegistrationMonitor::TMonitoringStatus aStatus, const TInt aError ); + + /** + * From CEikAppui + * Handles commandline params + * @since 2.0 + * @param aCommand see sdk help + * @param aDocumentName see sdk help + * @return void + */ + TBool ProcessCommandParametersL( TApaCommand aCommand, TFileName& aDocumentName ); + + /** + * From CEikAppui + * Handles commandline params + * @since 2.0 + * @param aCommand see sdk help + * @param aDocumentName see sdk help + * @param aTail see sdk help + * @return void + */ + TBool ProcessCommandParametersL( TApaCommand aCommand, TFileName& aDocumentName, const TDesC8& aTail ); + + /** + * takes care of wait dialog command handling. + * @since 2.0 + * @param aCommand command + * @return void + */ + void WaitDialogDismissedL( TInt aButtonId ); + + public: // from MMiniBrowserObserver + + /** + Called after MiniBrowser has handled a request for an URL + (a call to HttpGetL successfully done) + */ + void MiniBrowserRequestDoneL(); + + /** + Called if RunL of CMiniBrowser leaves. + @param aError The leave code. + */ + void MiniBrowserErrorL( const TInt aError ); + + /** + Called if a call to MiniBrowserRequestDoneL or MiniBrowserErrorL leaves + @param aError The leave code + */ + void MiniBrowserUnhandledLeave( const TInt aError ); + + public: // from MCoeForegroundObserver + void HandleGainingForeground(); + void HandleLosingForeground(); + + public: // from MCMDialogStatusNotifier + void CommonDialogDismissedL( const CCMDialogMonitor::TDialogMode aDialog, const TInt aStatusCode ); + + private: // Functions from base classes + + + /** + * Checks if network connections are allowed. The current implementation + * checks the value of KCoreAppUIsNetworkConnectionAllowed central + * repository key in KCRUidCoreApplicationUIs. + * @return TBool ETrue if network connections are allowed + */ + TBool IsNetworkConnectionsAllowedL(); + + /** + * From MEikMenuObserver takes care of menu handling. + * @since 2.0 + * @param aResourceId resourceid + * @param aMenuPane menu + * @return void + */ + void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); + + /** + * From CEikAppUi takes care of command handling. + * @since 2.0 + * @param aCommand command + * @return void + */ + void HandleCommandL( TInt aCommand ); + + /** + * From CEikAppUi handles key events. + * @since 1.0 + * @param aKeyEvent key event + * @param aType event type code + * @return Response code (EKeyWasConsumed, EKeyWasNotConsumed). + */ + virtual TKeyResponse HandleKeyEventL + ( + const TKeyEvent& aKeyEvent, TEventCode aType + ); + + /** + For storing an integer value. + */ + TInt StoreIntValue( const TUint32 aCrKey, const TInt aValue ); + + /** + For storing a string value. + */ + TInt StoreStringValue( const TUint32 aCrKey, const TDesC& aValue ); + + /** + For restoring an integer value that was stored by using StoreIntValue. + */ + TInt GetIntValue( const TUint32 aCrKey, TInt& aValue ); + + /** + For restoring a string value that was stored by using StoreStringValue. + */ + TInt GetStringValue( const TUint32 aCrKey, TDes& aValue ); + + /** + Appends the domain to be used for redirecting browser (for example + www.help-portal.com) + @param aUrl The descriptor the domain is appended to. + */ + void AppendDomainL( TDes& aUrl ); + + /** + Clear Service Activation Information if there are any, online support should not read + */ + void DeleteServiceActivationInfoL(); + + /** + Append Token And Nonce Value to WAPPage + */ + void AppendTokenAndNonceValL(); + + /** + Append Device Information to URL + */ + void AppendDeviceInfoL(); + + /** + Create Minibrowser and Launch + */ + void LaunchMiniBrowserL(); + + /* + Launch s60 Web browser using command line parameters + */ + void LaunchS60WebBrowserL(); + + /* + Append parameters to URL required from Server + */ + void AppendWebUtilParamsL(); + + /* + Create Online Help for settings based on Autostart value + Can be either Silent or Non Silent. + In case of Silent settings are downloaded settings silently + connecting to browser in background + In case of Non-Silent Browser will be opened with display of + webpage where user can select settings based on his wish + */ + void OnlineHelpL(); + + private: + /** + * By default EPOC constructor is private. + */ + void ConstructL(); + + private: //Data + + // RegistrarionMonitor + CCMRegistrationMonitor* iRegistrationMonitor; + // Sockets engine + CCMSocketsEngine* iEngine; + // Timer + CPeriodic* iTimer; + // WAP page address + TBuf iWapPage; + // if this is true the application has changed the preferences + TBool iPreferencesChanged; + // If this is true the phone is in homenetwork + TBool iNetworkStatusOk; + // This is set to true if the phone has been started before while it + //hasn't been registered to it's homenetwork and now the phone has + //been started in the homenetework. + TBool iFirstStartInHomeNetwork; + // if this is true the application knows that the confirmation dialog will be showed + TBool iShowConfirmation; + /** Id for the current AccessPoint this id refers to the WAP_ACCESS_POINT table. */ + TUint32 iAccessPoint; + // Application status + TApplicationStatus iApplicationStatus; + // This is for the initAccess + TBool iInitAccessPointUsed; + + // Connection reason (EConnectReasonUnknown if not started with parameters) + TConnectReason iConnectReason; + // Page string (http://.help-portal.com/) + TBuf iServer; + // Page string (http://server.help-portal.com/) + TBuf iPage; + // SW version + TBuf iSwVersion; + // Product model + TBuf iProductModel; + // Query string + TBuf iQuery; + + // Tells by which AP the connection is tried, so that the state machine in + // TimerExpired can try the next AP if the current did not work + TConnectingVia iConnectingVia; + // The number to show in wait dialog + TInt iWaitDialogProgressVal; + + // Last configured IMSI from ini file + RMobilePhone::TMobilePhoneSubscriberId iLastConfIMSI; + + CCMRegistrationMonitor::TNetworkStatus iNetworkStatus; + + /** Tells if the application was started in auto start (quiet) mode */ + TBool iAutoStart; + /** Tells if we should override need for initAccess in order to use TOKEN (TokenOverride). + set to ETrue to append TOKEN and tValid parameters even if not using initAccess */ + TBool iTokenOverride; + /** Tells if we started Browser (needed in considering whether a long exit delay is needed) */ + TBool iStartingBrowser; + + CRepository* iRepository; + + /*! + Note that iMiniBrowser must have an opened RSocketServ handle and an + opened and started RConnection handle until it is destroyed. This means + that it has to be deleted after iEngine (iMiniBrowser uses the RSocketServ + and RConnection handles of iEngine). + */ + CMiniBrowser* iMiniBrowser; + + CCMDialogMonitor* iCommonDialogMonitor; + /*! + To prevent infinite redirects in silent mode + */ + TInt iRedirectsLeft; + + CAknGlobalConfirmationQuery* iGlobalConfirmationQuery; + CAknGlobalNote* iGlobalWaitNote; + TInt iWaitNoteId; + TInt iInitAccessOn; + }; + +#endif // CCMAPPUI_H + +// End of File