--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/devicediagnosticsfw/diagframework/inc/diagplugin.h Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,240 @@
+/*
+* Copyright (c) 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: Abstract class that represents a diagnostics plug-in
+*
+*/
+
+
+#ifndef DIAGPLUGIN_H
+#define DIAGPLUGIN_H
+
+// INCLUDES
+#include <badesca.h> // CPtrCArray . Needed since this is typedef.
+
+//Forward declarations
+class CGulIcon;
+class MDiagEngineCommon;
+
+// Constants for plugin interfaces
+const TUid KDiagPluginInterfaceUid = { 0x2000AFEB };
+
+// UID of top most root suite uid. All plug-ins are descendant of this suite.
+const TUid KDiagRootSuiteUid = { 0x00000000 };
+
+/**
+* Abstract class that repsesents a diagnostics plug-in.
+*
+* @since S60 v5.0
+**/
+class MDiagPlugin
+ {
+public: //data structures
+
+ /**
+ * Indicates is the plug-in a suite or a test plug-in
+ **/
+ enum TPluginType
+ {
+ ETypeTestPlugin,
+ ETypeSuitePlugin
+ };
+
+ /**
+ * Layout type of name being requested.
+ */
+ enum TNameLayoutType
+ {
+ ENameLayoutListSingle, // list_single_graphic_heading_pane_t1_cp2
+ ENameLayoutPopupNoteWaitWindow, // popup_note_wait_window
+ ENameLayoutListLargeGraphic, // list_single_large_graphic_pane_t1
+ ENameLayoutHeadingPane, // heading_pane_t1
+ ENameLayoutPopupInfoPane, // popup_info_list_pane_t1
+ ENameLayoutTitlePane, // title_pane_t2/opt12
+ ENameLayoutListSingleGraphic, // list_single_graphic_pane_t1
+ ENameLayoutListDoubleGraphic // list_double_graphic_pane_t1
+ };
+
+public: // public methods
+
+ /**
+ * Virtual destructor. This ensures that when the interface is deleted,
+ * compiler will look up virtual table to find correct destructor.
+ */
+ virtual ~MDiagPlugin() {}
+
+ /**
+ * Method for getting the name of the plugin. Name returned should be based
+ * on the layout requested, and it should fit within the layout.
+ *
+ * @param aLayoutType - Layout where text will be displayed in. @see TNameLayoutType
+ * @return Localized name of the plug-in. Ownership is transferred to caller.
+ */
+ virtual HBufC* GetPluginNameL( TNameLayoutType aLayoutType ) const = 0;
+
+ /**
+ * Get the name of the service that the plug-in provides.
+ * Service name is defined in the ECOM resource file, thus, it is not localized.
+ *
+ * @return The name of the service.
+ **/
+ virtual const TDesC& ServiceLogicalName() const = 0;
+
+ /**
+ * Get logical dependencies. One plug-in can have multiple dependencies to other plug-ins.
+ *
+ * @param aArray An array of logical names.
+ * @see ServiceLogicalName.
+ **/
+ virtual void GetLogicalDependenciesL( CPtrCArray& aArray ) const = 0;
+
+ /**
+ * Return the type of the plug-in.
+ *
+ * @return The type.
+ * @see TPluginType.
+ **/
+ virtual TPluginType Type() const = 0;
+
+ /**
+ * Create an icon that represents the plug-in.
+ *
+ * @return An icon.
+ **/
+ virtual CGulIcon* CreateIconL() const = 0;
+
+ /** Method for checking, if plugin should be visible.
+ * (for example shown in listbox).
+ * Overwrite this function to show or hide your plugin dynamically.
+ *
+ * @return ETrue if plugin should be visible, EFalse otherwise.
+ */
+ virtual TBool IsVisible() const = 0;
+
+ /** Method for checking, if plugin is supported.
+ * Overwrite this function to enable or disable your plugin dynamically.
+ * If EFalse, plug-in will not be loaded by plugin pool.
+ *
+ * @return ETrue if plugin is supported, EFalse otherwise.
+ */
+ virtual TBool IsSupported() const = 0;
+
+ /**
+ * Get localised description of the test. Description should be used to explain
+ * the test for the user. It can contain comments that this service needs for
+ * example access point and it creates costs or that the duration might be long.
+ *
+ * @return Allocated buffer containing localized description of the plugin.
+ **/
+ virtual HBufC* GetDescriptionL() const = 0;
+
+ /**
+ * Get UID of this plug-in.
+ *
+ * @return the UID.
+ **/
+ virtual TUid Uid() const = 0;
+
+ /**
+ * Get the order number that this plug-in should appear in its parent list.
+ *
+ * @return TUint order number.
+ **/
+ virtual TUint Order() const = 0;
+
+ /**
+ * Get UID of the parent.
+ *
+ * @return The parent UID.
+ **/
+ virtual TUid ParentUid() const = 0;
+
+ /**
+ * Set ECom Destructor ID Key.
+ *
+ * @param aDtorIdKey Uid returned by REComSession::CreateImplementationL()
+ **/
+ virtual void SetDtorIdKey( TUid aDtorIdKey ) = 0;
+
+
+ /**
+ * Initialization Step. This method is called before any plugin are executed.
+ * This can be used to clean up any left over data from previous execution
+ * sessions. All plug-ins in execution plan will have a chance to clean
+ * up before any plug-ins are run. This is a synchrouns method.
+ *
+ * @param aEngine - Reference to engine.
+ * @param aSkipDependencyCheck - If ETrue, plug-in will be executed
+ * even if dependencies are not executed.
+ * @param aCustomParams Custom parameters for plug-ins.
+ * It can used to pass arbitrary data from application to the plug-ins.
+ * Owership is not transferred and plug-in must not delete
+ * this parameter. Ownership is not transferred since
+ * client does not always know the type of pointer.
+ **/
+ virtual void TestSessionBeginL( MDiagEngineCommon& aEngine,
+ TBool aSkipDependencyCheck,
+ TAny* aCustomParams ) = 0;
+
+
+ /**
+ * Cleanup Step. This method is called after all plug-ins in the
+ * execution plan is completed to clean up any left over data from
+ * current sesison. This can be used to clean up any data that
+ * provides dependent service created for its dependencies.
+ * This is a synchrouns method.
+ *
+ * @param aEngine - Reference to engine.
+ * @param aSkipDependencyCheck - If ETrue, plug-in as executed
+ * even if dependencies are not executed.
+ * @param aCustomParams Custom parameters for plug-ins.
+ * It can used to pass arbitrary data from application to the plug-ins.
+ * Owership is not transferred and plug-in must not delete
+ * this parameter. Ownership is not transferred since
+ * client does not always know the type of pointer.
+ **/
+ virtual void TestSessionEndL( MDiagEngineCommon& aEngine,
+ TBool aSkipDependencyCheck,
+ TAny* aCustomParams ) = 0;
+
+
+ /**
+ * Reserved for future use/plugin's custom functionality.
+ *
+ * @param aUid Unique identifier of the operation.
+ * @param aParam Custom parameter.
+ * @return TAny pointer. Custom data.
+ * It can used to pass arbitrary data from application to the plug-ins.
+ * Owership is not transferred and plug-in must not delete
+ * this parameter. Ownership is not transferred since
+ * client does not always know the type of pointer.
+ **/
+ virtual TAny* CustomOperationL( TUid aUid, TAny* aParam ) = 0;
+
+ /**
+ * Reserved for future use/plugin's custom functionality.
+ *
+ * @param aParam Custom parameter.
+ * @return TAny pointer. Custom data.
+ * It can used to pass arbitrary data from application to the plug-ins.
+ * Owership is not transferred and plug-in must not delete
+ * this parameter. Ownership is not transferred since
+ * client does not always know the type of pointer.
+ **/
+ virtual TAny* GetCustomL( TUid aUid, TAny* aParam ) = 0;
+ };
+
+#endif // DIAGPLUGIN_H
+
+// End of File
+