--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/useremul/inc/UserEmulatorScriptsView.h Mon Mar 08 15:03:44 2010 +0800
@@ -0,0 +1,450 @@
+/*------------------------------------------------------------------
+ -
+ * 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: UserEmulatorScriptsView.h
+ *
+ * Created: 13/08/2009
+ * Author(s): Marcell Kiss, Reshma Sandeep Das
+ *
+ * Description:
+ * Application View class
+ *------------------------------------------------------------------
+ -
+ *
+ */
+#ifndef USEREMULATORSCRIPTSVIEW_H__
+#define USEREMULATORSCRIPTSVIEW_H__
+
+// System Includes
+#include <coecntrl.h>
+#include <aknlists.h>
+#include <Etel3rdParty.h>
+#include <MTCLREG.H>
+#include <e32cmn.h>
+// User Includes
+#include "FolderContentsListener.h"
+#include "Settings.h"
+#include "ScanFolders.h"
+#include "NotifyFileChange.h"
+#include "Constants.h"
+
+// Forward Declarations
+class CEikEdwin;
+class CEikColumnListBox;
+
+// Constants
+
+typedef TBuf<KBuffer512> TBigFileName;
+
+enum TSelectStates
+ {
+ EOneItemSel = 1,
+ EOneItem,
+ EMoreItemsSel,
+ EMoreItems,
+ EMoreItemsAll,
+ EMoreItemsAllExc,
+ EMoreItemsNotAll,
+ EMoreItemsNotAllNotCurrent
+ };
+
+const TInt KDriveSize = 2;
+// Class Declarations
+
+/**
+* IMEI observer interface class
+*/
+class MImeiObserver
+{
+ public:
+ /**
+ * Gets device details
+ * @param aIMEI Reference to a descriptor which will hold details
+ * @param aError not used
+ */
+ virtual void GotIMEI(const TDesC& aIMEI,TInt aError) = 0;
+};
+
+/**
+* CActive object. Reads IMEI data
+*/
+class CImeiReader : public CActive
+{
+public:
+ /**
+ * Static constructor
+ * @param aObserver Reference to IMEI observer
+ * @return CImeiReader* A pointer to the newly allocated CImeiReader class.
+ * NULL, if the class cannot be created
+ *
+ */
+ static CImeiReader* NewL(MImeiObserver& aObserver);
+ /**
+ * Static constructor. On return the instance is left to the CleanupStack
+ * @param aObserver Reference to IMEI observer
+ * @return CImeiReader* A pointer to the newly allocated CImeiReader class.
+ * NULL, if the class cannot be created
+ */
+ static CImeiReader* NewLC(MImeiObserver& aObserver);
+ /**
+ * Destructor
+ */
+ ~CImeiReader();
+
+protected:
+ /**
+ * Cancel function of CActive class
+ */
+ void DoCancel();
+ /**
+ * RunL function of CActive class
+ */
+ void RunL();
+private:
+ /**
+ * Constructor
+ * @param aObserver Reference to IMEI observer
+ *
+ */
+ CImeiReader(MImeiObserver& aObserver);
+ /**
+ * Second phase constructor
+ *
+ */
+ void ConstructL();
+
+private:
+ /**
+ * Reference to IMEI observer
+ *
+ */
+ MImeiObserver& iObserver;
+ /**
+ * Reference to Telephony object
+ *
+ */
+ CTelephony* iTelephony;
+ /**
+ * Define the mobile phone identity.
+ */
+ CTelephony::TPhoneIdV1 iIdV1;
+ CTelephony::TPhoneIdV1Pckg iIdV1Pkg;
+};
+
+/**
+ * Control class of the application
+ */
+class CUserEmulatorScriptsView : public CCoeControl,
+ public MFolderContentsListener,
+ public MFileChangeObserver,
+ public MImeiObserver
+{
+public:
+ /**
+ * Static constructor
+ * Create a CUserEmulatorScriptsView object, which will draw itself to aRect.
+ * @param aRect Reference. The rectangle this view will be drawn to.
+ * @param aSettings Reference to Settings class
+ * @param aEikonEnv Reference to controls environment
+ * @return a pointer to the created instance of CUserEmulatorScriptsView.
+ */
+ static CUserEmulatorScriptsView* NewL(const TRect& aRect, CSettings* aSettings, CEikonEnv* aEikonEnv);
+ /**
+ * Static constructor. On return the instance is left to the CleanupStack
+ * @param aRect Reference. The rectangle this view will be drawn to.
+ * @param aSettings Reference to Settings class
+ * @param aEikonEnv Reference to controls environment
+ * @return a pointer to the created instance of CUserEmulatorScriptsView.
+ */
+ static CUserEmulatorScriptsView* NewLC(const TRect& aRect, CSettings* aSettings, CEikonEnv* aEikonEnv);
+
+ /**
+ * Virtual Destructor.
+ */
+ virtual ~CUserEmulatorScriptsView();
+
+ /**
+ * Creates a list from files in script folder
+ */
+ void ShowScriptsL();
+
+public:
+ /**
+ * Checks how many items are selected and the current one is selected or not
+ * @return Code about the result (see implementation)
+ */
+ TInt CheckListBoxSelection();
+
+ /**
+ * Gets the reference to CNotifyFileChange object
+ * @return CNotifyFileChange object's reference
+ */
+ CNotifyFileChange* GetNotifyFileChange();
+
+ //From MFolderContentsListener
+ /**
+ * From FolderContentListner
+ * This gets called before a new folder is being scanned.
+ * @param aFullPath not used
+ * @param aIsDriveListFlag not used
+ */
+ void FolderStarting( const TDesC & aFullPath, TBool aIsDriveListFlag );
+
+ /**
+ * This gets called with every entry of the currently scanned folder
+ * that is a folder.
+ * @param aEntry not used
+ */
+ void NewFolder( const TDesC & aEntry );
+
+ /**
+ * This gets called with every entry of the currently scanned folder
+ * that is a plain file.
+ * @param aEntry Name of the new file appeared in the folder
+ */
+ void NewFile( const TDesC & aEntry );
+
+ /**
+ * This is called after all entries of the currently scanned folder
+ * have been delivered. This is NOT called when a scan operation is
+ * aborted by starting a new scan before this got called!
+ */
+ void FolderCompleteL();
+
+ /**
+ * This gets called if an unexpected error occures during scanning.
+ * @param aReasonCode not used
+ */
+ void ErrorOccured( TInt aReasonCode );
+
+ /**
+ * Calls ShowScriptL function because a change occured in the given folder
+ */
+ void FileChangeEventL();
+
+ /**
+ * Gets device details
+ * @param aIMEI Reference to a descriptor which will hold details
+ * @param aError error code
+ */
+ void GotIMEI(const TDesC& aIMEI,TInt aError);
+
+ /**
+ * Gets system infos
+ * @param aValue A flag. If it's true the system info is logged to the log file otherwise
+ * this function displays it
+ */
+ void CmdGetSystemInfoL(TBool aValue);
+
+ /**
+ * Unmarks item(s) in script view's listbox
+ * @param aCommand Can be EAknUnmarkAll or EAknCmdUnmark.
+ */
+ void UnMarkL(TInt aCommand);
+
+ /**
+ * Parses and runs all selected scripts
+ * @param aErrcode Error code
+ */
+ TInt RunScriptsL(TInt& aErrcode);
+
+ /**
+ * Change icon of scripts
+ * @param aScriptStatus Status if script failed or passed, etc.
+ * @param aIndex Index of the script in list box
+ */
+ void ChangeIconL(TInt aScriptStatus, TInt aIndex);
+
+ /**
+ * Handles application's commands
+ * @param aCommand The command's code
+ */
+ void HandleMarkCommandL(TInt aCommand);
+
+ /**
+ * Gets name of a script
+ * @param aIndex Index of the script
+ * @returns Script name
+ */
+ HBufC* GetScriptNameLC(TInt aIndex);
+
+ /**
+ * Gets sum of selected scripts
+ * @return Sum
+ */
+ TInt GetSelectedScriptsCount();
+
+ /**
+ * Gets sum of all scripts
+ * @return Sum
+ */
+ TInt GetScriptsCount();
+
+ /**
+ * Updates command button(s)
+ */
+ void UpdateSystemCba(TBool aConnStatus);
+
+ /**
+ * Gets index of the given script and mark it
+ * @param aScriptName Name of the script
+ * @return Index of the script
+ */
+ TInt GetScriptIndexAndMarkL(const TDesC8& aScriptName);
+
+private:
+ /**
+ * 2nd phase constructor.
+ * @param aRect The rectangle this view will be drawn to.
+ */
+ void ConstructL(const TRect& aRect);
+
+ /**
+ * Constructor
+ * @param aSettings Reference to Settings class
+ * @param aEikonEnv Reference to controls environment
+ */
+ CUserEmulatorScriptsView(CSettings* aSettings, CEikonEnv* aEikonEnv);
+ /**
+ * Handles incoming pointer events (if this pointer events are enabled on device)
+ * @param aEvent The incoming pointer event
+ */
+ void HandlePointerEventL( const TPointerEvent& aEvent );
+ /**
+ * Called when view is activated
+ * @param aPrevViewId not used
+ * @param aCustomMessageId not used
+ * @param aCustomMessage not used
+ */
+ void DoViewActivatedL(const TVwsViewId& aPrevViewId,
+ TUid aCustomMessageId, const TDesC8& aCustomMessage);
+ /**
+ * Called when view is deactivated
+ */
+ void DoViewDeactivated();
+
+ /**
+ * Constructs a TVwsViewId object with User Emulator's UID and EScriptsView ID
+ * @return Created TVwsViewId object
+ */
+ TVwsViewId ViewId() const;
+
+ /**
+ * Initialises icons of list box
+ */
+ void SetupListIconsL();
+
+ /**
+ * Handles several kinds of resource change events
+ * E.q..: KEikDynamicLayoutVariantSwitch
+ */
+ void HandleResourceChange(TInt aType);
+
+ /**
+ * Returns number of components on the control
+ * @return Component number
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * Returns the component linked to the index
+ * @return CCoeControl component
+ */
+ CCoeControl* ComponentControl(TInt aIndex) const;
+
+ /**
+ * Make list box to redraw its items
+ */
+ void ShowFileListL();
+
+private: //From CCoeControl
+ /**
+ * From CCoeControl, Draw
+ * Draw this CUserEmulatorScriptsView to the screen.
+ * @param aRect the rectangle of this view that needs updating
+ */
+ void Draw(const TRect& aRect) const;
+ /**
+ * From CoeControl, SizeChanged.
+ * Called by framework when the view size is changed.
+ */
+ virtual void SizeChanged();
+ /**
+ * From CoeControl, PositionChanged.
+ * Called by framework when the view position is changed.
+ */
+ virtual void PositionChanged();
+ /**
+ * From CoeControl. Handles key events.
+ */
+ TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+
+public:
+ /**
+ * Descriptor array of selected files in list box
+ */
+ CDesCArray* iSelectedFilesArray;
+ /**
+ * Array of selected files' index
+ */
+ const CArrayFix<TInt> *iSelectedIndexes;
+ /**
+ * Stores the result of CheckListBoxSelection function
+ */
+ TInt iListBoxSelectionFlag;
+
+private:
+ /**
+ * Main list box of scripts in the View
+ */
+ CAknColumnListBox* iListBox;
+ /**
+ * Array of all files in the script folder
+ */
+ CDesCArray* iFilesArray;
+ /**
+ * Contains the path and file name of the script to be executed.
+ */
+ TBigFileName iFileName;
+ /**
+ * Reference to Settings object
+ */
+ CSettings* iSettings;
+ /**
+ * Reference to ScanFolder object
+ */
+ CScanFolders* iScanFolder;
+ /**
+ * Reference to NotifyFileChange object
+ */
+ CNotifyFileChange* iNotifyFileChange;
+ /**
+ * Reference to device's IMEI reader object
+ */
+ CImeiReader* iIMEIReader;
+ /**
+ * Buffer for IMEI data
+ */
+ TBuf<KBuffer256> iImeiNo;
+ /**
+ * Reference to controls environment
+ */
+ CEikonEnv* iEEnv;
+
+};
+
+#endif // USEREMULATORSCRIPTSVIEW_H__
+// End of File