diff -r 000000000000 -r 3e07fef1e154 testexecfw/statsrv/device/source/statapi/inc/stat_window.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testexecfw/statsrv/device/source/statapi/inc/stat_window.h Mon Mar 08 15:03:44 2010 +0800 @@ -0,0 +1,205 @@ +/* +* Copyright (c) 2005-2009 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: +* +*/ + + + +/************************************************************************* + * + * Switches + * + ************************************************************************/ +#ifndef __STATUI_H__ +#define __STATUI_H__ + +/************************************************************************* + * + * System Includes + * + ************************************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/************************************************************************* + * + * Local Includes + * + ************************************************************************/ +#include "stat_interfaces.h" +#include "activeconnection.h" + +/************************************************************************* + * + * Definitions + * + ************************************************************************/ + +// Control ID Constants +#define KStatusLabel 0 +#define KErrorLabel 1 +#define KVersionLabel 2 +#define KTransportLabel 3 +#define KAddressLabel 4 +#define KTransportEdit 5 +#define KAddressEdit 6 +#define KActionButton 7 +#define KExitButton 8 +#define KInfoLabel 9 +#define KLogButton 10 +#define KControlCount 11 + +#define KMaxChoiceItemSize 16 +#define KMaxChoiceItems 8 + +/************************************************************************* + * + * CStatChoice - Multi-choice box. This control is based on a read-only + * CEikEdwin. It is initialised with a set of strings. Users can cycle + * through the option either by tapping on the control or using the + * left-right keys. + * + ************************************************************************/ +class CStatChoice : public CEikEdwin +{ +public: + // Clean up + ~CStatChoice(); + + // User interface to get and set items + TInt AddItemL( TDesC &aItemStr ); + TDesC *CurrentItemStr(); + void SetCurrentItem( TInt aIndex ); + TInt CurrentItem(); + void ClearAllItems(); + + // Handle User Input + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + void HandlePointerEventL(const TPointerEvent& aPointerEvent); + void SetNextItem(); + void SetPrevItem(); + +private: + // Attributes + TInt iItemCount, iCurrentItem; + TBuf *iChoiceItems[KMaxChoiceItems]; +}; + +/************************************************************************* + * + * CStatWindow - STAT GUI. Single window. + * + ************************************************************************/ +class CStatWindow : public CCoeControl, public MCoeControlObserver, public MNotifyUI +{ +public: + // Constructors + CStatWindow *NewL( const TRect& rect, MStatController *aStatController ); + CStatWindow(); + ~CStatWindow(); + void ConstructL( const TRect& rect, MStatController *aStatController ); + + // Public Interface + void SetForeground( TBool aIsForeground ); + TCommStatus GetCommStatus(); + + // Handle User Input + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); + void HandlePointerEventL(const TPointerEvent& aPointerEvent); + + // From MNotifyUI + void HandleStatusChange( TInt aSessionId, TCommStatus aNewStatus ); + void HandleError( TInt aError, void *);//aErrorData); + void HandleInfo( const TDesC *aInfo ); + +protected: + /********************************************************************* + * + * CStatIniData - Data structure used to write to and read from a user + * preference file that stores interface options between sessions. + * + *********************************************************************/ + class CStatIniData : public CBase + { + public: + CStatIniData(void); + ~CStatIniData(); + + public: + TBool WriteIniData(const TDesC& aName) const; + TBool ReadIniData(const TDesC& aName); + + public: + TStatConnectType iConnectType; + TInt iAddress; + TBool iIsRunning; + TBool iConnectAutomatically; + + private: + HBufC* GetFileContents(const TDesC& aName) const; + }; + +private: + // From CCoeControl + TInt CountComponentControls() const; + CCoeControl* ComponentControl( TInt aIndex ) const; + void Draw(const TRect& aRect) const; + + // Helper Functions + TRect GetControlPosition( TInt aIndex ) const; + TInt PositionInRange( TPoint aPosition, TRect aArea ) const; + TInt GetControlFromPoint( TPoint aPosition ) const; + void OnTransportChange(); + void HandleActionL( void ); + void ClearControlPanel() const; + void DrawEditBorders() const; + void SetVersionLabelL(); +private: + // Controls + CEikCommandButton *iActionButton, *iExitButton, *iLogButton; + CEikLabel *iStatusLabel, *iErrorLabel, *iInfoLabel, *iVersionLabel; + CEikLabel *iTransportLabel, *iAddressLabel; + CStatChoice *iTransportEdit, *iAddressEdit; + + // Attributes + TInt iLoggingEnabled; + TBool bIsForeground; + TCommStatus iStatStatus; + MStatController *iStatController; + mutable TInt iClearLabelsOnly; // Ensure this is mutable and so can + // be updated from within the 'const' + // declared 'Draw' mehod. + + CActiveConnection *iAOConnection; // Active object whose + // only task is to open + // a TCP socket to initialise + // the socket server. + + // Ini data that we retain for the lifetime of the window. + CStatIniData *iIniData; +}; + +#endif //__STATUI_H__