diff -r 000000000000 -r 3ce708148e4d devicediagnostics/devdiagapp/inc/devdiagplugincontainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/devicediagnostics/devdiagapp/inc/devdiagplugincontainer.h Thu Dec 17 08:40:12 2009 +0200 @@ -0,0 +1,297 @@ +/* +* Copyright (c) 2007-2007 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: Plug-in container. Displayes test plug-ins. +* +*/ + + + +#ifndef CDEVDIAGPLUGINCONTAINER_H +#define CDEVDIAGPLUGINCONTAINER_H + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include + + +// FORWARD DECLARATIONS +class CDevDiagPluginView; +class CDevDiagEngine; +class MDiagPlugin; +class CDiagResultsDatabaseItem; +class CAknDoubleLargeStyleListBox; + +// CLASS DECLARATION + +/** +* CDevDiagPluginContainer class +* @since S60 5.0 +* +*/ +class CDevDiagPluginContainer : public CCoeControl, + public MCoeControlObserver, + public MEikListBoxObserver + { + + // Container results + enum TContainerResult + { + ESuccess = 0, + EFailed, + ENotPerformed, + }; + + public: // Constructors and destructor + + /** + * NewL. + * + * @param aView Plug-in view. + * @param aEngine Diagnostics Engine. + * @param aRect The area to draw on. + */ + static CDevDiagPluginContainer* NewL( CDevDiagPluginView* aView, + CDevDiagEngine& aEngine, + const TRect& aRect ); + + /** + * Destructor. + */ + ~CDevDiagPluginContainer(); + + public: // Functions from base classes + + /** + * From MProgressDialogCallback. Gets called when the + * dialog is dismissed/closed. + * @param aButtonId Softkey Button Id + */ + void DialogDismissedL( const TInt aButtonId ); + + /** + * From CoeControl Responds to size changes. + * Sets the size and position of the contents of this control. + * @since Series 60 3.1 + * @param None. + * @return None. + */ + void SizeChanged(); + + /** + * From CoeControl Handles the situations where + * a resource (e.g. skin or layout) is changed. + * @since Series 60 3.1 + * @param aType Type of resource change. + * @return None. + */ + void HandleResourceChange( TInt aType ); + + /** + * From CoeControl Gets the number of controls contained + * in a compound control. + * @since Series 60 3.1 + * @param None. + * @return The number of component controls contained by this control. + */ + TInt CountComponentControls() const; + + /** + * From CoeControl Gets the specified component of a compound control. + * @since Series 60 3.1 + * @param aIndex The index of the control to get. + * @return Reference to the component control. + */ + CCoeControl* ComponentControl( TInt aIndex ) const; + + /** + * From CoeControl Draws the control. + * @since Series 60 3.1 + * @param aRect The region of the control to be redrawn. + * @return None. + */ + void Draw( const TRect& aRect ) const; + + /** + * From CoeControl Handles key events. + * @since Series 60 3.1 + * @param aKeyEvent The key event that occurred. + * @param aType The event type. + * @return Response to the key event. + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * Handle ListBox EventL + * @param CEikListBox* aListBox Pointer to used listbox + * @param TListBoxEvent aEventType Event type + * @return - + */ + void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ); + + /** + * From MCoeControlObserver Handles an event from an observed control. + * @since Series 60 3.1 + * @param aControl The control that sent the event. + * @param aEventType The event type. + * @return None. + */ + void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); + + /** + * From CoeControl Gets the control's help context. + * @since Series 60 3.1 + * @param aContext The control's help context + * @return None. + */ + void GetHelpContext( TCoeHelpContext& aContext ) const; + /** + * Handle Pointer EventL + * @since Series 60 3.2 + * @param aPointerEvent The event type + * @return None. + */ + //void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + public: //New functions + + /** + * Retrieve currently selected plug-in + * + * @param aPlugin Selected plug-in. + **/ + void SelectedPlugin( MDiagPlugin*& aPlugin ); + + /** + * Display plug-ins and their last results. + * Last results are retrieved from the results DB. + * Model provides a helper function for that. + * + * @param aArray plug-in result array. + **/ + void DisplayChildrenWithResultsL( + RPointerArray& aArray ); + + /** + * Change plug-in's text into "Testing ..." + * The container uses the currently selected plug-in. + **/ + void DisplayStartTestingL(); + + /** + * Move "Testing..." to the next plug-in in the listbox. + **/ + void MoveStartTestingDownL(); + + /** + * Reset listbox index. + **/ + void ResetL(); + + /** + * Loads children of the parent suite. + * Container keeps model in memory. + * @param aParentSuiteUid UID of the parent. + **/ + void UpdateModelL( TUid aParentSuiteUid ); + + protected: + + /** + * Change of focus + * @param - + * @return - + */ + void FocusChanged(TDrawNow aDrawNow); + + /** + * Appends icons to the contained listbox. + * @param None. + * @return None. + */ + void AddIconsL(); + + private: + + /** + * C++ default constructor. + */ + CDevDiagPluginContainer( CDevDiagPluginView* aView, CDevDiagEngine& aEngine ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( const TRect& aRect ); + + /** + * Load plug-in's test result text (localised). + **/ + HBufC* GetPluginResultL( TContainerResult aResult ) const; + + /** + * Load plug-in's test result text (localised). + **/ + HBufC* ConvertResultLC( const TDesC& aString, + TInt& aIconIndex, + CDiagResultsDatabaseItem* aResult ) const; + + /** + * Displays plug-in's result into the listbox. + * + * @param aListboxModel Listbox model. + * @param aPlugin The plug-in that is displayed. + * @param aItem Plug-in's test result. + **/ + void DisplayLastResultL( CDesCArray& aListboxModel, + MDiagPlugin*& aPlugin, + CDiagResultsDatabaseItem& aItem ); + + /** + * Display not performed. + * + * @param aListboxModel Listbox model. + * @param aPlugin The plug-in that is displayed. + **/ + void DisplayNotPerformedL( CDesCArray& aListboxModel, + MDiagPlugin*& aPlugin ); + + public: // data + + // The listbox. Own. + CAknDoubleLargeStyleListBox* iListBox; + + // Plug-in view. Not own. + CDevDiagPluginView* iView; + + // Diagnostics engine + CDevDiagEngine& iEngine; + + // Currently displayed plug-ins + // Plug-ins are owned by the engine. + // Do not call ResetAndDestroy. + // This is the model + RPointerArray iChildren; + + // Is the model updated. + TBool iModelUpdated; + }; + +#endif // CDEVDIAGPLUGINCONTAINER_H + +// End of File