diff -r 000000000000 -r 79c6a41cd166 menucontentsrv/srvinc/mcssuitehandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menucontentsrv/srvinc/mcssuitehandler.h Thu Dec 17 08:54:17 2009 +0200 @@ -0,0 +1,229 @@ +/* +* 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: +* +*/ + +#ifndef MCSSUITEHANDLER_H_ +#define MCSSUITEHANDLER_H_ + +#include +#include + + +#include "menusvrsuite.h" +#include "mcsinstallnotifier.h" +#include "menuengoperation.h" +#include "mcsmmcobserver.h" +#include "mcsfreespaceobserver.h" + +class CMenuEng; +class TMenuItem; + +/** + * Suite Handler. + * @lib mcsdrmhandler.lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS( CMcsSuiteHandler ): + public CBase, MMcsInstallListener, MMenuEngOperation, MMcsMmcObserver, + MMcsFreeSpaceObserver + { +public: + + /** + * Two-phased constructor. Leaves on failure. + * @return The constructed object. + */ + static CMcsSuiteHandler* NewL( + CMenuEng& aEng, const TDesC& aDirName ); + + /** + * Destructor. + * @since S60 v5.0 + * @capability None. + * @throws None. + * @panic None. + */ + virtual ~CMcsSuiteHandler(); + + /** + * Check if suite of given name is present + * in handler. + */ + TBool HaveSuite(const TDesC& aSuiteName); + + /** + * Get attribute from suite handler. + */ + void GetAttribute( const TDesC& aSuiteName, const TDesC& aAttrName, + TBool& aAttrExists, TDes& aAttrVal ); + +private: + + /** + * Execute engine operation: + * Do the application scan and update menu accordingly. + */ + void RunMenuEngOperationL(); + void CompletedMenuEngOperation( TInt aErr ); + /** + * Constructor. + */ + CMcsSuiteHandler( CMenuEng& aEng ); + + /** + * 2nd phase constructor. + */ + void ConstructL(const TDesC& aDirName); + + /** + * Handle Install Event + */ + void HandleInstallNotifyL(TInt aEvent); + + /** + * Handle Mmc Event + */ + void HandleMmcEventL(TInt aEvent); + + /** + * Handle Free Space Event. + */ + void HandleFreeSpaceEventL(); + /** + * Lists new suits + */ + void CheckSuiteDirL(); + + /** + * Add new suits + */ + void AddNew(); + + /** + * Remove old suits + */ + void RemoveOld(); + + /** + * Removes not installed suites from content xml file(basically during restore) + * @since S60 v5.0. + */ + void ScanSuitesL(); + + + /** + * Check if file is installed + */ + TBool FileInstalled(const TDesC& aFileName); + + /** + * Check if file was removed from installed file list + */ + TBool FileUninstalled(const TDesC& aFileName); + + /** + * Check if file need Update + * @param aTimestamp - actual timestamp of file + */ + TBool FileNeedUpdate(const TDesC& aFileName, const TTime& aTimestamp); + + /** + * Validates file extansion + */ + TBool ValidExtansion(const TDesC& aFileName); + + /** + * Install file with suites + */ + void InstallFileL(const TDesC& aFileName, const TTime& aTimestam); + + /** + * Removes file with suites + */ + void UninstallFileL(const TDesC& aFileName); + + /** + * Update file with suites + */ + void UpdateFileL(const TDesC& aFileName, const TTime& aTimestam); + + /** + * Get suites from a file + */ + void GetSuitesL(const TDesC& aFileName, RPointerArray& aSuiteArray); + + /* + * Reopen older suite. Used when deleteing suite that was replaced by newer one. + */ + void ReopenSuiteL(TInt aSuiteArrayPos); + + /** + * Append suite items to array + * @since S60 v5.0. + * @param aItemArray array to append suite items + * @param aAttrName attribute name + * @param aAttrValue attribute value + */ + void GetMenuSuitesL( + RArray& aItemArray, + const TDesC& aAttrName, + const TDesC& aAttrValue ); + + + /** + * Addes or updates suite + */ + void AddSuiteL( const TPtrC& aSuiteName ); + + /** + * Removes suite + */ + void RemoveSuiteFromXmlL( const TPtrC& aSuiteName ); + + /** + * Updates suites in content xml file + * @since S60 v5.0. + * @param aMcsItems suite items + * @param aIndex index of suite item to update + */ + void UpdateSuiteInXmlL( + RArray & aMcsItems, + TInt aIndex ); + + /** + * Addes suite to main xml file + */ + void AddSuiteToXmlL( const TPtrC& aSuiteName ); + + + void UpdateItemsL( const RArray& aItemArray ); + +private: // data + CMenuEng& iEng ; ///< Engine. Not Own. + RFs iFs; ///< File Server. Own. + RBuf iDirPath; ///< Path to observerd dir. Own. + CDesCArrayFlat* iFileNewList; ///< List of new files in dir. Own. + CDesCArrayFlat* iInstalledFileList; ///< List of installed suites. Own. + RArray iNewTimestamps; ///< List of current files' timestamps. Own. + RArray iTimestamps; ///< List of files' timestamps when isntalled. Own. + CMcsInstallNotifier* iInstallNotifier; ///< Own + CMcsMmcObserver* iMmcObserver; + CMcsFreeSpaceObserver* iFreeSpaceObserver; /// Free space observer. Own. + RMenuSrvSuiteArray iSuites; ///< Suite array. Own. + TInt iEvent;/// < last event. Own + }; + +#endif /* MCSSUITEHANDLER_H_ */