diff -r 000000000000 -r 79c6a41cd166 menucontentsrv/srvinc/mcsrunningappshandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menucontentsrv/srvinc/mcsrunningappshandler.h Thu Dec 17 08:54:17 2009 +0200 @@ -0,0 +1,275 @@ +/* +* Copyright (c) 2008 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 class maintains a list of the running apps, and listen +* for changes in the running apps. It calls the observer if there is such a +* change. +* +* +*/ + + +#ifndef __MCSRUNNINGAPPSHANDLER_H__ +#define __MCSRUNNINGAPPSHANDLER_H__ + +#include +#include +#include + +#include "menuengoperation.h" +#include "menusrvengutils.h" + +//Forward declatations +class CMenuEng; +class CMcsCacheHandler; +class CMcsRunningAppsWgMonitor; +class CMcsRunningAppsFswMonitor; +class CMcsRunningAppsHiddenAttrScanner; +class CMcsRunningAppsAddRemoveHandler; + +/** + * Interface for updating RunningApps list stored in CMcsRunningAppsHandler class + * + * @since S60 v3.2 + */ +class MMcsRunningAppsHandler + { +public: + enum TArrayDataType + { + ERunningApps, + EFswHiddenApps, + EHiddenApps + }; + /* + * Called by HiddenAttr scanner, FSW monitor or WindowsGroup + * Monitor. + * @param aArray an array containing UIDs of running, hidden or + * fsw apps + * @param aType type of data stored in aArray + */ + virtual void HandleListUpdateL(const RArray& aArray, + TArrayDataType aType ) = 0; + + /* + * Called by AddRemoveHandler + * @param aFolder id of folder for which the method was invoked + */ + virtual void HandleAddRemoveRunningAppL( TInt aFolder ) = 0; + + }; + +/* + * RunningApps Handler. + * @lib mcsmenu.lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS( CMcsRunningAppsHandler ): public CBase, MMcsRunningAppsHandler + { + public: + + /** + * Factory method. + */ + static CMcsRunningAppsHandler* NewL( + CMenuEng& aEng, + CMcsCacheHandler& aCacheHandler ); + + /** + * Destructor. + */ + ~CMcsRunningAppsHandler(); + + /** + * Called by EngineEvents method + * @param aFolder folder id + * @param aEvents events + */ + void EngineEventsL( TInt aFolder, TInt aEvents ); + + /** + * Called by CMenuSrvEng class object + * @param aFolder folder id + * @param aEvents events + */ + void EngineEvents( TInt aFolder, TInt aEvents ); + + /** + * Fills aArray with UIDs of running apps + * @param aArray array to be filled with UIDs of running apps + */ + void GetRunningAppsL( RArray& aArray ); + + /** + * Returns running status of an item + * @param aItemId id of the item + * @return running status of an item + */ + TBool GetRunningStatusL( TInt aItemId ); + + +// from MMcsRunningAppsHandler + + /* + * Called by HiddenAttr scanner, FSW monitor or WindowsGroup + * Monitor. + * @param aArray an array containing UIDs of running, hidden or + * fsw apps + * @param aType type of data stored in aArray + */ + void HandleListUpdateL(const RArray& aArray, TArrayDataType aType ); + + /* + * Called by AddRemoveHandler + * @param id of folder for which the method was invoked + */ + void HandleAddRemoveRunningAppL( TInt aFolder ); + +private: + /** + * Constructor. + */ + CMcsRunningAppsHandler( + CMenuEng& aEng, + CMcsCacheHandler& aCacheHandler ); + + /** + * 2nd phase constructor + */ + void ConstructL(); + + /** + * Called by HandleListUpdateL + * @param aArray array with UIDs of running apps + */ + void HandleRunningAppsChangedL( const RArray& aArray ); + + /** + * Called by HandleListUpdateL + * @param aArray array with UIDs of FSW hidden apps + */ + void HandleFswHiddenAppsChangedL( const RArray& aArray ); + + /** + * Called by HandleListUpdateL + * @param aArray array with UIDs of hidden apps + */ + void HandleHiddenAppsChangedL(const RArray& aArray ); + + /** + * Sends AttributeChange notification for item and parents of the item + * it it is necessary, it is also responsible for removing data from cache + * if attribute value cahnged + * @param aId id of item with changed running status attribute + */ + void HandleNotificationL( TInt aId ); + + /** + * Sends AttributeChange notification for items and parents of items with + * given uid, it is also responsible for removing data from cache + * if attribute value has changed + * @param aAppUid uid of items with changed running status attribute + */ + void HandleNotificationL( TUid aAppUid ); + + /** + * Gets list of items with secified uid + * @param aAppUid items uid + * @return KErrNotFound if no item was found KErrNone if succesfull + */ + TInt GetItemsListL( TUid aAppUid, RArray& aItemArray ); + + /* + * Updates array containing folders with running status + * @param aFolderId id of a folder + * @param aNewRunningStatus current running status + */ + void UpdateFolderRunningStatusL( TInt aFolderId, TBool aNewRunningStatus ); + + + /** + * Updates array containing folders with running status. + * It is called at startup and it scans all folders + */ + void UpdateFoldersRunningStatusL( ); + + /** + * Gets running status for CMenuEngObject + * @param aEngObj object to be checked + * @return running status of an object + */ + TBool GetRunningStatusL( const CMenuEngObject& aEngObj ); + + /** + * Gets previous Folder running status + * @param aId id of the folder + * @return previous running status of a folder (stored in + * iRunningFolderStatus array ) + */ + TBool GetFolderPreviousRunningStatusL( TInt aId ); + + + /** + * Gets current folder running status + * @param aId id of the folder + * @return running status of a folder + */ + TBool GetFolderRunningStatusL( TInt aId ); + + /** + * Gets current application running status + * @param aUid UID of an application + * @return running status of an application + */ + TBool GetAppRunningStatusL( TUid aUid ); + +private: + + CMenuEng& iEng ; ///< Engine. not own + + /** not own + */ + CMcsCacheHandler& iCacheHandler; + + /* + * own + */ + CMcsRunningAppsWgMonitor* iWindowGroupMonitor; + + /* + * own + */ + CMcsRunningAppsFswMonitor* iFswMonitor; + + /* + * own + */ + CMcsRunningAppsHiddenAttrScanner* iHiddenAttrScanner; + + /* + * own + */ + CMcsRunningAppsAddRemoveHandler* iAddRemoveHandler; + + /* + * own + */ + RArray iRunningApps; + + /* + * own + */ + RArray iRunningFolderStatus; + }; + +#endif // __MCSRUNNINGAPPSHANDLER_H__