locationsystemui/locationsysui/locsysuiview/inc/locsettingsui.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 15:23:31 +0300
changeset 18 3825cf2dc8c2
parent 0 667063e416a2
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
* 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:  E-Comm Plugin interface. Defines a settings UI component. The 
*				 Settings UI component should contain one or more Window owning 
*				 control that provides the Setting funtionality.
*
*/


#ifndef C_LOCSETTINGSUI_H_
#define C_LOCSETTINGSUI_H_

// System Include
#include <e32base.h>

// Forward Declarations
class CLocSettingsUiParams;
class MLocSettingsUiObserver;
class CAknViewAppUi;

// Global Constants
/**
 * The Interface UID for the ECom interface. The implementations of this ECom
 * plug-in have to the use this value as their Interface UID if they intend 
 * to link to the Location System UI Engine
 */
const TUid	KSettingsUiInterfaceUID			=  { 0x10275061 };

// Class Definition
/**
 * Settings UI ECom plug-in interface
 *
 * Interface class that provides the Settings UI funtionality. Any Settings UI
 * component should derive from this class and implement the abstract funtions
 * Includes support for launching a UI, premature closing of a running UI and 
 * re-launching a suspended UI application. The plug-in does not mandate the 
 * nature of the Settings Ui. Unless the Settings UI transfers the ownership
 * of its component objects ( For eg. It might decide to implement a view and 
 * transfer its ownership to the AppUi class ), it is responsible for completely
 * handling them
 *
 * @lib locsysuiview.lib
 * @since S60 v3.1
 */
class CLocSettingsUi : public CBase
	{		
	public:
        /**
         * Creates and initializes the Settings UI component. The component 
         * creation is handled through the E-Comm server
         *
         * @param aImplementationUid  Implementation UID of the Settings Ui that
         *							  has to be launched
         * @param aInitParams		  Initialization Parameters
         */
		inline static CLocSettingsUi* NewL( const TUid				aImplementationUid,
										    CLocSettingsUiParams&	aInitParams );
        /**
         * Destructor. Handles the destruction of the object through the 
         * EComm Session
         */
		inline virtual ~CLocSettingsUi();

        /**
         * Returns the Settings UI Id. A unique identifer that identifies the 
         * Settings UI. Could be the E-Comm destructor Id
         *
         * @since S60 v3.1
         * @return Settings UI Identifier
         */
        inline TUid GetSettingsUiID();

        /**
         * Launches the Settings UI
         *
         * @since S60 v3.1
         * @param aUiLaunchParams	Flags that define specific configuration of
         *                          if the Settings UI, that the user of the API
         *                          wants to launch. If more than one functionality
         *                          is requested then the various combinations
         *                          are to be ORed. The interpretation of these
         *                          flag values is a part of the understanding
         *                          between the API user and the Settings UI
         */
        virtual void LaunchL( TInt		aUiLaunchParams )			   		= 0;

        /**
         * Launches the Settings UI
         *
         * @since S60 v9.2
         * @param aUiInputParams String passed as a parameter to the
         *                       Location UI, that the user of the API wants to
         *                       launch. The interpretation of this string is
         *                       a part of the understanding between the API user
         *                       and the corresponding Location UI.
         */
        virtual void LaunchL( const TDesC&		aUiLaunchParams );

        /**
         * Closes the running Settings UI prematurely. The UI can be closed 
         * permanently or could be temporarily suspended and relaunched. Incase of 
         * temporary suspension it is left to the implementation to decide to
         * either store its current state or discard the same. The Settings UI
         * is expected to release all the resources that it owns on the Close
         * call.
         *
         * @since S60 v3.1
         */
        virtual void Close()							   = 0;

        /**
         * Method for getting caption of this plugin. This should be the 
         * localized name of the settings view to be shown in parent view.
         *
         * @since S60 v3.1
         * @param aCaption Pointer to Caption variable. The memory for the 
         *                 variable has to be allocated by the calling 
         *                 function. If it is found that there is insufficient
         *                 memory then the function can leave accordingly
         */
        virtual void GetCaptionL( TDes& aCaption ) const					   = 0;

        /**
         * Returns the priority of the UI module. The priority value is defined 
         * by the position in which the UI would be present when displayed to 
         * the user. 
         * 
         * @since S60 v3.1
         * @return Priority of the Settings UI
         */
        virtual TInt GetPriority()											   = 0;
        
	protected:
        /**
         * Default Constructor
         */
        inline CLocSettingsUi( MLocSettingsUiObserver&		aSettingsUiObserver,
        		 		       CAknViewAppUi&				aAppUi );
        		 		       
	protected:
        /**
         * Observer for the Settings UI Class
         */	    
		MLocSettingsUiObserver&		iSettingsUiObserver;
		
		/**
         * Reference to the Application Ui to which the Settings UI would belong to
         */
		CAknViewAppUi&				iAppUi;
			
	private:
        /**
         * ECOM plugin instance UID.
         */
		TUid						iDtor_ID_Key;
	};

#include "locsettingsui.inl"

#endif // C_LOCSETTINGSUI_H_