utilityapps/launcher/engine/inc/launcherengine.h
changeset 55 2d9cac8919d3
parent 29 1c71b77fbc93
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilityapps/launcher/engine/inc/launcherengine.h	Mon Oct 18 16:30:05 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 <e32base.h>
+#include <apgcli.h>
+#include <w32std.h>
+#include <e32std.h>
+#include <e32hal.h>
+
+#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<TInt>* 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