diff -r 5cc91383ab1e -r 7333d7932ef7 iaupdate/IAD/ui/inc/iaupdateengine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iaupdate/IAD/ui/inc/iaupdateengine.h Tue Aug 31 15:21:33 2010 +0300 @@ -0,0 +1,290 @@ +/* +* Copyright (c) 2009-2010 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: This file contains the header file of the IAUpdateEngine +* class +* +*/ + +#ifndef IAUPDATEENGINE_H_ +#define IAUPDATEENGINE_H_ + +#include + +#include "iaupdateuidefines.h" +#include "iaupdateuicontrollerobserver.h" +#include "iaupdatenode.h" + +class IAUpdateServiceProvider; +class CIAUpdateUiController; +class CIAUpdateFWUpdateHandler; +class CIAUpdateParameters; +class CIAUpdateGlobalLockHandler; +class CIAUpdateAutomaticCheck; +class MIAUpdateNode; +class MIAUpdateFwNode; +class CEikonEnv; +class RCmManager; +class CIdle; +class HbAction; +class IAUpdateResultsDialog; + +class IAUpdateEngine : public QObject, + public MIAUpdateUiControllerObserver + { + Q_OBJECT + +public: + IAUpdateEngine(QObject *parent = 0); + ~IAUpdateEngine(); + + void StartedByLauncherL( bool aRefreshFromNetworkDenied ); + + /** + * When the update check operation is started through + * the API, the session directs the requests for the UI. UI will + * handle the operation and inform the observer when the operation is + * completed. + * @param aFilterParams These parameters are used when update items + * are filtered for the UI list. + */ + void CheckUpdatesRequestL( int wgid, + CIAUpdateParameters* aFilterParams, + bool aForcedRefresh ); + + /** + * When the show update operation is started through + * the API, the session directs the requests for the UI. UI will + * hanle the operation and inform the observer when the operation is + * completed. + * @param aFilterParams These parameters are used when update items + * are filtered for the UI list. + */ + void ShowUpdatesRequestL( int wgid, CIAUpdateParameters* aFilterParams ); + + + + /** + * When the update operation is started through + * the API, the session directs the requests for the UI. UI will + * hanle the operation and inform the observer when the operation is + * completed. + * @param aUid Uid of the caller of the request + */ + void ShowUpdateQueryRequestL( int wgid, uint aUid ); + + + void StartUpdate( bool aFirmwareUpdate ); + /** + * Set this application visible/unvisible + * @param aVisible If EFalse application is put background and is hidden in FSW + */ + void SetVisibleL( bool aVisible ); + + /** + * Set window group id of client application + * + * @param aWgId Window group id + */ + void SetClientWgId( int aWgId ); + + /** + * Is client application in background + * + * @param True value if client application is in background + */ + bool ClientInBackgroundL() const; + +signals: + void toMainView(); + + /** + * Refreshes main view + * @param aError Error code + */ + void refresh(const RPointerArray& nodes, + const RPointerArray& fwNodes, + int error); + + +public slots: + void handleAllClientsClosed(); + + void dialogFinished(HbAction* action); + + +private: // From MIAUpdateUiControllerObserver + /** + * Called when async engine start-up is completed + * + * @param aError Error code + */ + void StartupComplete( TInt aError ); + + /** + * Leaving method, called as trapped in StartupComplete + */ + void StartupCompleteL(); + + + /** + * Handles leave error. + * + * @param aError Error code + */ + void HandleLeaveErrorL( TInt aError ); + + /** + * Handles leave error withot leaving + * + * @param aError Error code + */ + void HandleLeaveErrorWithoutLeave( TInt aError ); + + /** + Called when UI to be redrawn during update process + * + * @param aError Error code + */ + void RefreshUI(); + + /** + * Called when async update list refresh is completed + * + * @param aError Error code + */ + void RefreshCompleteL( TBool aWithViewActivation, TInt aError ); + + /** + * Called when async updating is completed + * + * @param aError Error code + */ + void UpdateCompleteL( TInt aError ); + +private: //new methods + + /** + * Show results dialog of update + */ + void ShowResultsDialogL(); + + + void ShowRebootDialogL(); + + /** + * Informs an observer that its async request is completed + * + * @param aError Error code + */ + void InformRequestObserver( int aError ); + + /** + * Sets the default connection method used for network access. + * Connection can be set as an accesspoint or as a snap for example. + * + * @param aTotalSilent Set to ETrue if want silent connection + * + * @note Not stored persistently. A client needs to set this + * again every time it creates the controller. + * + * @note Leaves with KErrNotFound if connection method was not + * set in the repocitory. + */ + void SetDefaultConnectionMethodL( bool aTotalSilent ); + + /** + * Choose a usable IAP from all SNAPs + * + * @param aCmManager handle of connection manager + */ + uint GetBestIAPInAllSNAPsL( RCmManager& aCmManager ); + + /** + * Choose a usable IAP from Internet SNAP + * + * @param aCmManager handle of connection manager + */ + uint GetBestIAPInInternetSNAPL( RCmManager& aCmManager ); + + /** + * Choose the best IAP under the given SNAP + * + * @param aCmManager handle of connection manager + * @param aSNAP SNAP ID + */ + uint GetBestIAPInThisSNAPL( RCmManager& aCmManager, uint aSNAP = 0); + + /** + * Shows update query dialog (now/later) + */ + void ShowUpdateQueryL(); + + void HideApplicationInFSWL( bool aHide ) const; + + /** + * CIdle callback function, that shows update query dialog + * To be used because a client to be informed immediately that its + * async request is issued. Waiting dialog cannot be shown before responding to a client + * + * @param aPtr Pointer to this instance + */ + static TInt UpdateQueryCallbackL( TAny* aPtr ); + + /** + * CIdle callback function, that performs automatic update check and query + * + * @param aPtr Pointer to this instance + */ + static TInt AutomaticCheckCallbackL( TAny* aPtr ); + + bool DoPossibleApplicationClose(); + + + +private: + + enum DialogState + { + NoDialog, + Results, + RebootQuery, + ShowUpdateQuery + }; + + IAUpdateServiceProvider *mServiceProvider; + IAUpdateResultsDialog* mResultsDialog; + + CIAUpdateUiController* iController; + CIAUpdateFWUpdateHandler* iFwUpdateHandler; + CIAUpdateGlobalLockHandler* iGlobalLockHandler; + CIAUpdateAutomaticCheck* iAutomaticCheck; + CEikonEnv* iEikEnv; //not owned + CIdle* iIdle; + CIdle* iIdleAutCheck; + + + IAUpdateUiDefines::TIAUpdateUiRequestType mRequestType; + bool mUpdateNow; + RArray iDestIdArray; + bool mRequestIssued; + bool mStartedFromApplication; + bool mUiRefreshAllowed; + uint mUpdatequeryUid; + int mWgId; + DialogState mDialogState; + HbAction *mPrimaryAction; + HbAction *mSecondaryAction; + }; + +#endif /* IAUPDATEENGINE_H_ */