--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/useremul/inc/UserEmulatorAppUi.h Mon Mar 08 15:03:44 2010 +0800
@@ -0,0 +1,498 @@
+/*------------------------------------------------------------------
+ -
+ * Software Name : UserEmulator
+ * Version : v4.2.1309
+ *
+ * Copyright (c) 2009 France Telecom. All rights reserved.
+ * This software is distributed under the License
+ * "Eclipse Public License - v 1.0" the text of which is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * France Telecom
+ *
+ * Contributors:
+ *------------------------------------------------------------------
+ -
+ * File Name: UserEmulatorAppUi.h
+ *
+ * Created: 13/08/2009
+ * Author(s): Marcell Kiss, Reshma Sandeep Das
+ *
+ * Description:
+ * Application User Interface class
+ *------------------------------------------------------------------
+ -
+ *
+ */
+
+#ifndef USEREMULATORAPPUI_H__
+#define USEREMULATORAPPUI_H__
+
+// System Includes
+#include <aknappui.h>
+#include <apgcli.h>
+#include <akntabgrp.h> // CAknTabGroup
+#include <aknnavide.h> // CAknNavigationDecorator
+
+// User Includes
+#include "XmlHandler.h"
+#include "ScanFolders.h"
+#include "DelayTimer.h"
+#include "Settings.h"
+#include "ThreadNotifier.h"
+#include "GlobalCapturer.h"
+#include "Logger.h"
+#include "clientdll.h"
+#include "clientcommander.h"
+#include "RandomTest.h"
+#include "ImageCapture.h"
+#include "Constants.h"
+// Constant
+_LIT( KServerDllFilename, "\\system\\apps\\anim\\ANIMATION_SERVER_0x20025CA8" );
+
+// Forward declarations
+class CUserEmulatorScriptsView;
+
+// Class Declaration
+
+/**
+ * CUserEmulatorAppUi application UI class.
+ * Interacts with the user through the UI and request message processing
+ * from the handler class
+ */
+class CUserEmulatorAppUi : public CAknAppUi,
+ public MXmlHandlerObserver,
+ public MActionObserver,
+ public MKeyObserver,
+ public MPanicObserver,
+ public MScreenshotObserver
+{
+public:
+ /**
+ * ConstructL.
+ * 2nd phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * CUserEmulatorAppUi.
+ * C++ default constructor. This needs to be public due to
+ * the way the framework constructs the AppUi
+ * @param aSession AppUi's Window session
+ */
+ CUserEmulatorAppUi(RWsSession& aSession);
+
+ /**
+ * ~CUserEmulatorAppUi.
+ * Virtual Destructor.
+ */
+ virtual ~CUserEmulatorAppUi();
+
+ /**
+ * Callback function. Called when Power button is pressed and recording stops
+ */
+ void TerminationKeyReceived();
+
+ /**
+ * Put this application foreground at the end of recording and at the end of script execution
+ */
+ void BringUserEmulatorToFront();
+ /**
+ * Callback from Thread Notifier when a panic occures
+ */
+ void PanicOccured();
+
+ void RestartRandomTests();
+ /**
+ * Simply calls ScriptView's ShowScriptsL function
+ */
+ void ShowScriptsL();
+
+ /**
+ * Gets Logger's reference
+ * @return A CLogger instance
+ */
+ CLogger& Logger() const
+ {
+ return *iLogger;
+ }
+
+ /**
+ * Starts script execution
+ */
+ void StartTestL();
+
+ /**
+ * Sets timer which calls PerformAction when expired.
+ * @param aInterval Time in microsecs
+ */
+ void PerformNextAction(TInt aInterval);
+
+ /**
+ * Simply calls XmlHandler's StartParsingL function
+ * @param aFileName Name of the xml script to parse
+ * return Error code
+ */
+ TInt StartParsingL( const TDesC& aFileName );
+ /**
+ * Put this application foreground.
+ */
+ void BringToForeground();
+ /**
+ * Stops random test
+ */
+ void RandomTestEndsL();
+
+ /**
+ * Load application's TRect to a member variable of Setting
+ */
+ void SetApplicationRectInSettings();
+
+ /**
+ * Set system info flag
+ */
+ void SetSystemInfoFlag(TBool aValue);
+ /**
+ * Queries if there was a change in script file folder
+ */
+ void RefreshFileNotification();
+ /**
+ * Reads command line arguments
+ * @param aParams - The arguments
+ */
+ void ProcessMessageL(TUid /*aUid*/, const TDesC8 &aParams);
+ /**
+ * Reads command line arguments
+ * @param aCommand - Launch command code
+ * @param aDocumentName - Buffer for arguments
+ * @param aTail - Command line tail
+ */
+ TBool ProcessCommandParametersL(TApaCommand aCommand,TFileName &aDocumentName,
+ const TDesC8 &aTail);
+ /**
+ * FolderScanCompletedL
+ * Callback function. Called when script file folder is scanned and list box is initialised.
+ */
+ void FolderScanCompletedL();
+private:
+
+ /**
+ * Converts portrait mode and landscape mode coordinates and it will converts coordinates for different devices
+ * @param x Input x coordinate
+ * @param y Input y coordinate
+ * @param xMod Output x coordinate
+ * @param yMod Output y coordinate
+ */
+ void CoordConversionByOrientation(TInt x, TInt y, TInt& xMod, TInt& yMod);
+ /**
+ * Finds app name in app list and gives back app uid
+ * @param aAppName Name of app
+ * @return App uid
+ */
+ TUid CUserEmulatorAppUi::GetAppUidFromName(TDesC& aAppName);
+ /**
+ * Processes command line arguments
+ * @param aParams - Arguments
+ * @param aProcessByFolderScanCompleted - Flag. True if arguments have to be stored
+ * in an array and to be processed later. False if process can take place sraight away.
+ */
+ void ProcessCmdParamsL(const TDesC &aParams,TBool aProcessByFolderScanCompleted);
+ /**
+ * Reads command line arguments in the original way (args process)
+ * @param - output buffer for arguments
+ * @param - Number of arguments
+ * @return - False if params are longer (or equal) than 256 chars. True if shorter.
+ */
+ TBool GetArgsL(TDes& aParam, TInt& aArgs);
+
+ /**
+ * Creates and loads client side dll
+ */
+ void SetupClientDllL();
+ /**
+ * Creates RClientCommander object to communicate with the server side
+ */
+ void SetupCommander();
+ /**
+ * Displays Settings dialog
+ */
+ void DoCmdSettingsL();
+ /**
+ * Context specific menu function
+ * @param aResourceId Menu Id
+ * @param aMenuPane Menu pane
+ */
+ void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
+
+ //From CEikAppUi
+ /**
+ * From CEikAppUi, HandleCommandL.
+ * Takes care of command handling.
+ * @param aCommand Command to be handled.
+ */
+ void HandleCommandL(TInt aCommand);
+
+ /**
+ * Callback function. Called when parsing is completed.
+ * @param aError Result of parsing
+ * @param aState not used
+ */
+ void OnParseCompletedL( TInt aError , TState aState);
+
+ /**
+ * Main worker function. Executes parsed scripts
+ */
+ void PerformActionL();
+ /**
+ * Starts Browser using given URL
+ * @param aUrl URL to Browser
+ */
+ void OpenUrlL( const TPtrC& aUrl);
+ /**
+ * Cancels script execution and resets the main list on screen after Power button pressed
+ */
+ void CancelScriptExecutionL();
+
+ /**
+ * Start a Java app in Symbian app.
+ */
+ TInt StartJavaApp(const TDesC& aAppName);
+
+ /**
+ * Cut one input string into two strings. Delimiter character is ',' . Input string
+ * can have 4 params and 3 delimiter.
+ * @param aParamString Input string (Eq: 23,27,43,21)
+ * @param aArgument1 First part of the original string with two params (Eq: 23,27)
+ * @param aArgument2 The second part with two params (Eq: 43,21)
+ * @return Result if the function succeeded or not
+ */
+ TInt ParseMultipleParams(const TDesC& aParamString, TDes& aArgument1, TDes& aArgument2) const;
+
+ /**
+ * Cut one input string into two strings. Limiter chatacter is ','
+ * @param aParamString Input string
+ * @param aAppName First part of the original string
+ * @param aArgument The second part
+ * @return Result if the function succeeded or not
+ */
+ TInt ParseParams( const TDesC& aParamString, TDes& aAppName, TDes& aArgument) const;
+
+ /**
+ * Cut one input string into one UId and one string. Limiter chatacter is ','
+ * @param aParamString Input string
+ * @param anAppUid Uid
+ * @param aArgument The second part
+ * @return Result if the function succeeded or not
+ */
+ TInt ParseParams( const TDesC& aParamString, TUid& anAppUid, TDes& aArgument) const;
+
+ /**
+ * Cut one input string into three UIds and one string. Limiter chatacter is ','
+ * @param aParamString Input string
+ * @param anAppUid Uid
+ * @param aViewUid View Id
+ * @param aCustomMessageUid Message UId
+ * @param aCustomMessage Custom message string
+ * @param aAppName App name instead of Uid
+ * @return Result if the function succeeded or not
+ */
+ TInt ParseParams( const TDesC& aParamString, TUid& aAppUid, TUid& aViewUid,
+ TUid& aCustomMessageUid, TDes& aCustomMessage, TDes& aAppName ) const;
+ /**
+ * From CCoeAppUi, HelpContextL.
+ * Provides help context for the application.
+ * size is changed.
+ * @return Help context array
+ */
+ CArrayFix<TCoeHelpContext>* HelpContextL() const;
+
+ /**
+ * Resets the action list (Action list contains parsed actions from xml script)
+ */
+ void ResetLists();
+
+ /**
+ * Sends a 'button down' raw event with the given params
+ * @param intargx X coordinate of the event
+ * @param intargy Y coordinate of the event
+ */
+ void ButtonDownEvent(TInt intargx, TInt intargy);
+
+ /**
+ * Sends a 'button up' raw event with the given params
+ * @param intargx X coordinate of the event
+ * @param intargy Y coordinate of the event
+ */
+ void ButtonUpEvent(TInt intargx, TInt intargy);
+
+ /**
+ * Sends a 'drag' raw event with the given params.
+ * @param intargx X coordinate of the end point of drag
+ * @param intargy Y coordinate of the end point of drag
+ */
+ void PointerMoveEvent(TInt intargx, TInt intargy);
+
+ /**
+ * Starts random event test
+ */
+ void StartRandomTestL();
+
+ /**
+ * GetUid
+ * Get application Uid from the ApaList
+ * @param aAppuid AppUid Ex: [20001cf3]
+ * @return HBufC* appplication Uid in the Hex format Ex: 0x20001cf3
+ */
+ HBufC* GetUidL(const TDesC& aAppuid);
+
+public:
+
+ /**
+ * Flag that indicates the system information status.
+ */
+ TBool iSystemInfo;
+
+private:
+ /**
+ * Reference to script view class
+ */
+ CUserEmulatorScriptsView* iScriptsView;
+
+ /**
+ * Reference to xml handler class
+ */
+ CXmlHandler* iXmlHandler; // to parse XML document
+
+ /**
+ * Reference to delay timer class
+ */
+ CDelayTimer* iDelayTimer;
+
+ /**
+ * Action list related indexes
+ */
+ TInt iActionIndex;
+ TInt iLoopCount;
+ TBool iLoopExists;
+ /**
+ * A session with the application architecture server
+ */
+ RApaLsSession iSession;
+
+ /**
+ * Reference to Setting class
+ */
+ CSettings* iSettings;
+
+ /**
+ * Flag. If true then last script was stopped
+ */
+ TBool iStopScripts;
+
+ /**
+ * Index of the selected script
+ */
+ TInt iSelectedIndex;
+
+ /**
+ * Descriptor for log entries
+ */
+ TBuf<KBuffer512> iLogBuffer;
+
+ /**
+ * Action list (script execution)
+ */
+ RPointerArray<CAction> iActionList;
+ RArray<TUint> iScriptErrorIndexes;
+
+ /**
+ * Flag. True if an error occured inside the application
+ */
+ TBool iError;
+
+ /**
+ * Reference to thread notifier class
+ */
+ CThreadNotifier* iThreadNotifier;
+
+ /**
+ * Reference to global capturer class
+ */
+ CGlobalCapturer* iGlobalCapturer;
+
+ /**
+ * Reference to logger class
+ */
+ CLogger* iLogger;
+
+ /**
+ * Represents actual loop's number
+ */
+ TInt iLoopCounter;
+
+ /**
+ * Represents the selected script's number
+ */
+ TInt iSelectedScriptCount;
+
+ /**
+ * Flag. True if a script is started
+ */
+ TBool iScriptRun;
+
+ /**
+ * Flag. True if recording started
+ */
+ TBool iRecording;
+
+ /**
+ * Flag. True if random test is started
+ */
+ TBool iRandomTestStarted;
+
+ /**
+ * Loads RClientDll object
+ */
+ RClientDll iClientDll;
+
+ /**
+ * Initialises RClientCommander object
+ */
+ RClientCommander iClientCommander;
+
+ /**
+ * Reference to random test class
+ */
+ CRandomTest* iRandomTest;
+
+ /**
+ * Uid of started Java applet
+ */
+ TUid imidletUID;
+
+ /**
+ * Counter. An error message 'Script might not work properly on Non touch enabled device'
+ * will be displayed only if this counter is zero. Otherwise the message would displayed many
+ * times in a loop
+ */
+ TInt iPointerCount;
+ /**
+ * Array for loops. Stores loop counter and 'action' number where execution has to continue
+ * after end of loop tag.
+ */
+ RArray<TUint> iNestedLoopArray;
+ /**
+ * Array for command-line arguments when they are processed later. (After list box initialisation)
+ */
+ CDesC8Array* iCommandLineScriptsArray;
+
+ TBool iIsFolderScanCompletedCalled;
+
+ /**
+ * Manufacturer code of the device
+ */
+ TInt iManufacturer;
+};
+#endif // USEREMULATORAPPUI_H__
+// End of File