--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationsystemui/locationsysui/locsysuiview/inc/locsettingsuipluginloader.h Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,165 @@
+/*
+* Copyright (c) 2006 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: Manages the E-Comm Plugin handling for the Settings UI.
+*
+*/
+
+#ifndef C_LOCSETTINGSUIPLUGINLOADER_H_
+#define C_LOCSETTINGSUIPLUGINLOADER_H_
+
+// System Include
+#include <e32base.h>
+#include <ecom/ecom.h>
+
+// Forward Declarations
+class CLocationSettings;
+class CAknViewAppUi;
+class MLocSettingsUiEcomNotifer;
+
+// Class Declarations
+
+/**
+ * Plugin loader class.
+ * Loads all the Settings related ECom plugins and also registers itself for
+ * notfication from the ECOM server. It takes up complete onus of the creation
+ * of the CSettingsUi objects.
+ *
+ * @lib locsysuiview.lib
+ * @since S60 v3.2
+ */
+ NONSHARABLE_CLASS( CLocSettingsUiPluginLoader ) : public CActive
+ {
+ private:
+ /**
+ * Overloaded Constructor
+ *
+ * @param aAppUi App UI Reference
+ */
+ CLocSettingsUiPluginLoader( CAknViewAppUi& aAppUi );
+ public:
+ /**
+ * Creates an instance of the Settings UI Plug-in Loader.
+ *
+ * @param aObserver Observer to the CLocSettingsUiPluginLoader
+ * class
+ * @param aAppUi App Ui Reference
+ * @return CLocSettingsUiPluginLoader* Reference to the instantiated class
+ */
+ static CLocSettingsUiPluginLoader* NewL( CAknViewAppUi& aAppUi );
+
+ /**
+ * Creates an instance of the Settings UI Plug-in Loader.
+ *
+ * @param aObserver Observer to the CLocSettingsUiPluginLoader
+ * class
+ * @param aAppUi App Ui Reference
+ * @return CLocSettingsUiPluginLoader* Reference to the instantiated class
+ */
+ static CLocSettingsUiPluginLoader* NewLC( CAknViewAppUi& aAppUi );
+
+ /**
+ * Destructor
+ */
+ virtual ~CLocSettingsUiPluginLoader();
+
+ /**
+ * Creates all the settings UI currently available in the system. The
+ * user if this interface should ensure that he passes an empty
+ * Settings Array structure.
+ *
+ * @param aDescArray Array of Settings UI.
+ */
+ void CreateAvailableSettingsUisL(
+ RPointerArray<CLocationSettings>& aSettingsArray );
+
+ /**
+ * Creates the Settings UI and the corresponding description entry. This
+ * function creates a new Setting UI ECOM plug-in and a Location Settings
+ * object. the created object is appended to the existing list and a reference to
+ * it returned. The ownership of the created Settings object is retained with
+ * the Settings array. This function assumes that the object doesnt already exists
+ *
+ * @param aImplementationUid The Implementation UID of the plug-in that
+ * has to be created
+ * @param aSettingsArray Array of Settings UIs
+ * @return CLocationSettings& Reference to the created object. The ownership is not
+ * by the return value.
+ */
+ CLocationSettings& CreateSettingsUiL(
+ TUid aImplementationUid,
+ RPointerArray<CLocationSettings>& aSettingsArray );
+ /**
+ * Updates the Settings UI list and the description structures. The new
+ * additions are appened in-order. The interface does not
+ * delete any instances if they are not in the current implementation
+ * list
+ *
+ * @param aSettingsArray Array of Settings UIs.
+ */
+ void UpdateAvailableSettingsUisL(
+ RPointerArray<CLocationSettings>& aSettingsArray );
+
+ /**
+ * Initiates a notify request on the ECom Session
+ *
+ * @param aSettingsNotifer Notifier for communication of changes in the
+ * Ecom loading and unloading for sub-settings
+ * plug-ins. The default value is used if the
+ * caller of this API intends to obtain a
+ * notification on the previously set observer.
+ */
+ void StartEComNotifyL( MLocSettingsUiEcomNotifer* aNotifier = NULL );
+
+ /**
+ * Stop the outstanding EComNotification
+ */
+ void StopEComNotify();
+
+ protected:
+ /**
+ * Inherited from CActive
+ */
+ void RunL();
+
+ /**
+ * Inherited from CActive
+ */
+ void DoCancel();
+
+ /**
+ * Inherited from CActive
+ */
+ TInt RunError( TInt aError );
+
+ private:
+ /**
+ * Reference to the Application Ui to which all the Settings UI would
+ * belong to
+ */
+ CAknViewAppUi& iAppUi;
+
+ /**
+ * Handle to the ECom Session
+ */
+ REComSession* iSession;
+
+ /**
+ * ECom notifier
+ */
+ MLocSettingsUiEcomNotifer* iNotifier;
+
+ };
+
+#endif // C_LOCSETTINGSUIPLUGINLOADER_H_
+