diff -r 000000000000 -r 4e949f03ecc5 locationtriggering/ltserver/ltserverlogic/inc/lbtappchangehandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationtriggering/ltserver/ltserverlogic/inc/lbtappchangehandler.h Wed Nov 03 23:28:39 2010 +0530 @@ -0,0 +1,217 @@ +/* +* Copyright (c) 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: This header file describes the class reposnible for handling +* : removal of applications +* +*/ + + +#ifndef C_LBTAPPCHANGEHANDLER_H +#define C_LBTAPPCHANGEHANDLER_H + +#include +#include +#include "lbttriggerchangeobserver.h" + +// FORWARD DECLARATION +class TApaAppInfo; +class RApaLsSession; +class CApaAppListNotifier; +class CLbtContainer; +class CLbtContainerTriggerEntry; +class CLbtCleanupHandler; +class MLbtServerLogicTriggerChangeObserver; +struct TLbtAppInfo; + +/** + * + */ +class CLbtAppChangeHandler : public CActive, + public MApaAppListServObserver, + public MLbtContainerChangeEventObserver + + { + public: + /** + * Constructs a new instance of App Change handler. + * + * @return The new instance of App Change handler object. + */ + static CLbtAppChangeHandler* NewL(CLbtContainer& aContainer, CLbtCleanupHandler& iCleanupHandler, + MLbtServerLogicTriggerChangeObserver& aTriggerChangeObserver); + + /** + * Destructor. + */ + ~CLbtAppChangeHandler(); + + /** + * Start listening to application un-installation events + * + */ + void StartListeningL(); + + /** + * Stops listening to application un-installation events + * + */ + void StopListening(); + + private: // New functions + /** + * C++ constructor + */ + CLbtAppChangeHandler(CLbtContainer& aContainer, CLbtCleanupHandler& iCleanupHandler, + MLbtServerLogicTriggerChangeObserver& aTriggerChangeObserver); + + /** + * Symbian 2nd phase of construction + */ + void ConstructL(); + + /** + * Handles removal of an application that resided on the MMC. The function + * checks if same MMC card is still inserted. If it still inserted it implies + * that the application has been un-installed and hence takes appropriate action. + * If the MMC is not present in its slot then it means that the MMC card is + * removed for the time being and may be inserted again, based on which it takes + * appropriate action + * + * @param aAppInfo information of the application removed + */ + void HandleMMCApplicationRemovalL(); + + /** + * Handles un-installation of an application. + * + * @param aAppInfo information of the application un-installed + */ + void HandleApplicationUninstallationL(); + + + /** + * Checks if MMC is present in its slot + * + * @return ETrue if MMC is present EFlase otherwise + */ + TBool IsMemoryCardPresent(); + + /** + * Get Memory card character + */ + void MemoryCardChar(); + + /** + * Finds the a particular element in the array. The search is based on the + * UID in the application info. If the application is not present then the + * function return KErrNotFound + * + * @param aArray the array in which the element needs to be searched + * @param aElement the element which needs to be searched for + */ + TInt FindElementInArray(RArray& aArray, TLbtAppInfo& aElement); + + /** + * Handles list notification event when notification is for addition of an + * application + */ + void HandleAppListAdditionEvent(RArray& aNewAppList); + + /** + * Handles list notification event when notification is for removal of an + * application + */ + void HandleAppListRemovalEvent(RArray& aNewAppList); + + + /** + * Validates the triggers of the applications present in iAppList + */ + void SetValidTriggersOfApplicationsL(); + + + + public: // from MLbtContainerChangeEventObserver + void TriggerStoreChanged( RArray& aTriggerIds, + TLbtTriggerEventMask aEventMask, + TLbtContainerChangedAreaType aAreaType, + RArray& aManagerUids ); + + private: // From CActive + + void DoCancel(); + + void RunL(); + + TInt RunError(TInt aError); + + + private: /// from MApaAppListServObserver + /** + * Handles notification from app list observer when ever an application is + * installed or uninstalled + * + */ + void HandleAppListEvent(TInt aEvent); + + /** + * Lists triggers for which apps iAppList in are the + * startup process + */ + void ListTriggersOfStartupProcessL(); + + /** + * Deletes triggers for which apps iAppList in are the + * startup process + */ + void DeleteTriggersOfStartupProcessL(); + + private: // data members + + + // Reference to the container + CLbtContainer& iContainer; + + // Reference to cleanup handler + CLbtCleanupHandler& iCleanupHandler; + + // Reference to MLbtServerLogicTriggerChangeObserver + MLbtServerLogicTriggerChangeObserver& iTriggerChangeObserver; + + // Session with the application architecture framework + RApaLsSession iAppArcSession; + + // Pointer to application scanner + CApaAppListNotifier* iAppListNotifier; + + // Array to hold the currently installed applications on the system + RArray iCurrentInstalledApps; + + // The async operation in progress. + TInt iOperation; + + // Array of pointers to container trigger entries + RPointerArray iTriggerEntries; + + // Array to store the list of app removed + RArray iAppList; + + // Operation id for calls to container. Needed for any cancellation + TInt iOpId; + + // External Memory card drive character + TBuf<2> iMMCDriveChar; // drive and colon + }; + +#endif // C_LBTAPPREMOVALHANDLER_H \ No newline at end of file