diff -r 48060abbbeaf -r b3cee849fa46 launcher/engine/inc/launcherengine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/launcher/engine/inc/launcherengine.h Tue Aug 31 15:15:20 2010 +0300 @@ -0,0 +1,274 @@ +/* +* Copyright (c) 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: +* +*/ + +#ifndef LAUNCHERENGINE_H +#define LAUNCHERENGINE_H + +#include +#include +#include +#include +#include + +#include "launcherparserobserver.h" + +// CONSTANTS +// None + +// MACROS +// None + +// DATA TYPES +// None + +// FUNCTION PROTOTYPES +// None + +// FORWARD DECLARATIONS +class CEikonEnv; +class CAppThreadChecker; +class CAppRunningChecker; +class CLauncherXMLParser; +class CLauncherDLLParser; + + +// INFERFACE FOR COMMUNICATION WITH UI + +class MLauncherUI +{ +public: + /** + * Method for writing text to output window. + * @param aText A text to be written. + * @return None. + */ + virtual void PrintText(const TDesC& aText) = 0; + + /** + * Shows info message with text + * @param aText An text to be shown in message. + * @return None. + */ + virtual void ShowInfoMessage(const TDesC& aText) = 0; + + /** + * Shows error message with error text + * @param aText An error text to be shown in message. + * @return None. + */ + virtual void ShowErrorMessage(const TDesC& aText) = 0; + + /** + * Shows progress bar with text + * @param aText A text to be shown at top of the progress bar. + * @param aMinimum A minimum progress bar value. + * @param aMaximum A maximum progress bar value. + * @return None. + */ + virtual void ShowProgressBar(const TDesC& aText, TInt aMinimum, TInt aMaximum ) = 0; + + /** + * Sets progress bar value + * @param aValue A value between min and max value of the progress bar range + * @return None. + */ + virtual void SetProgressBarValue(TInt aValue) = 0; + + /** + * Hides progress bar + * @return None. + */ + virtual void HideProgressBar() = 0; + + /** + * Shows wait dialog with text + * @param aText A text to be shown at top of the wait bar. + * @return None. + */ + virtual void ShowWaitDialog(const TDesC& aText) = 0; + + /** + * Hides wait dialog + * @return None. + */ + virtual void HideWaitDialog() = 0; + + /** + * Changes focus to output view + * @return None. + */ + virtual void ChangeFocusToOutputView() = 0; + +}; + +// CLASS DECLARATION + +class CLauncherEngine: public CActive, public MLauncherParserObserver +{ + +public: + static CLauncherEngine* NewL(MLauncherUI *aLauncherUI); + ~CLauncherEngine(); + CDesCArray* ListOfAllAppsL(); + void StartAppLaunchingL(const CArrayFix* aSelectedApps, TBool aAutoClose); + void CheckIfAppIsRunningL(); + void CheckWhyThreadDiedL(); + void StopLaunchingL(); + TBool LogFileExists(); + TBool BCLogFileExists(); + + TInt DeleteLogFile(); + TInt DeleteBCLogFile(); + + void AnalyseDLLsL( const TDesC& aFileName ); + + void ElementParsedL(const CLauncherDLLElement& aDllElement); + void DocumentParsedL(TInt aErrorCode); + void ParsingProgressedL(TInt aBytes); + TInt ReadLineFromFileL(RFile& aFile, TDes& aReadBuf); + + const TDesC& RequiredDllsFilePath() const { return iRequiredDllsFilePath; }; + + void CancelBCAnalysis(); + +private: + CLauncherEngine(); + void ConstructL(MLauncherUI *aLauncherUI); + + void RunL(); + void DoCancel(); + + TInt FindFiles(const TDesC& aFileName, const TDesC& aPath); + void IssueLaunch(); + void WriteInitialStuffToTheLogL(const TDesC& aOwnData, RFile& aFile); + void CheckForMoreAppsL(); + void LaunchApplicationL(); + void DoLaunchApplicationL(); + CDesCArray* DependencyCheckForE32ImageL(); + + /** + * Performs binary compatibility analysis based on reference data given + * in XML-file. + */ + void DoBCAnalysisL(); + + /** + * Compares given DLL list to system DLLs + */ + void DoCompareDLLListsL(); + +private: + + MLauncherUI *iLauncherUI; + + RTimer iTimer; + CEikonEnv* iEnv; + RApaLsSession iLs; + RWsSession iWs; + HBufC8* iLogWriteBuf; + RFile iLogFile; + RFile iBCLogFile; + TFileName iLogFilePath; + TFileName iBCLogFilePath; + TFileName iSystemDllsFilePath; + TFileName iRequiredDllsFilePath; + + CDesCArray* iAppsArray; + CDesCArray* iAllAppsArray; + CDesCArray* iSystemDllArray; +// CDesCArray* iRequiredDllArray; + + TBool iLaunchingIsActive; + TBool iDLLAnalysisIsActive; + TBool iSkipHiddenAndEmbedOnly; + TBool iAutoClose; + TInt iAppLaunchCounter; + TInt iFailedCases; + TInt iOkCases; + TInt iSkippedCases; + TInt iTotalNumberOfCases; + + TUid iCurrentAppUid; + TThreadId iCurrentAppThreadId; + TBuf<128> iCurrentAppNameAndExt; + RThread iCurrentAppThread; +// + CAppThreadChecker* iAppThreadChecker; + CAppRunningChecker* iAppRunningChecker; + + CLauncherXMLParser* iXMLParser; + CLauncherDLLParser* iDLLParser; + CLauncherDLLElement* iDLLElement; + + TInt iFoundBCIssues; + HBufC* iBCIssuesBigBuffer; + + +public: + inline TBool SkipHiddenAndEmbedOnly() { return iSkipHiddenAndEmbedOnly; }; + inline void SetSkipHiddenAndEmbedOnly(TBool aSkip) { iSkipHiddenAndEmbedOnly = aSkip; }; + inline const TDesC& LogFilePath() { return iLogFilePath; } + inline const TDesC& BCLogFilePath() { return iBCLogFilePath; } + inline const TDesC& SystemDllsFilePath() { return iSystemDllsFilePath; } +}; + + + +class CAppRunningChecker : public CActive + { +public: + static CAppRunningChecker* NewL(CLauncherEngine* aLauncherEngine); + ~CAppRunningChecker(); + + void StartTesting(); + +private: + CAppRunningChecker(); + void ConstructL(CLauncherEngine* aLauncherEngine); + + void RunL(); + void DoCancel(); + +private: + RTimer iTimer; + CEikonEnv* iEnv; + CLauncherEngine* iLauncherEngine; + }; + +class CAppThreadChecker : public CActive + { +public: + static CAppThreadChecker* NewL(CLauncherEngine* aLauncherEngine); + ~CAppThreadChecker(); + + void ActivateChecking(); + void CheckIfAppIsRunningL(); + +private: + CAppThreadChecker(); + void ConstructL(CLauncherEngine* aLauncherEngine); + + void RunL(); + void DoCancel(); + +private: + CEikonEnv* iEnv; + CLauncherEngine* iLauncherEngine; + }; + + +#endif //LAUNCHERENGINE_H