--- a/gsprofilesrv_plat/settings_plugin_api/inc/GSPluginInterface.h Fri May 14 16:07:47 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,420 +0,0 @@
-/*
-* Copyright (c) 2005-2008 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: Header file for CGSPluginInterface class.
-*
-*/
-
-
-#ifndef GSPLUGININTERFACE_H
-#define GSPLUGININTERFACE_H
-
-// System includes
-#include <GSFrameworkRsc.rsg> // For default icons
-#include <gsfwicon.mbg>
-
-#include <aknview.h>
-#include <aknViewAppUi.h>
-#include <gulicon.h>
-#include <AknsUtils.h>
-#include <aknViewAppUi.h>
-#include <data_caging_path_literals.hrh>
-
-// Constant for plugin interface:
-const TUid KGSPluginInterfaceUid = { 0x10207236 };
-
-// Constant for listbox icon type:
-const TUid KGSIconTypeLbxItem = { 0x10207357 };
-// Constant for listbox settings item icon type:
-const TUid KGSIconTypeLbxSettingsItem = { 0x102750C5 };
-// Constant for tab icon type:
-const TUid KGSIconTypeTab = { 0x10207358 };
-// Constant for icon in D-Column:
-const TUid KGSIconTypeDColumn = { 0x10207359 };
-
-
-// Constant for indexing (iOrder):
-const TInt KGSPluginNotIndexed = -1;
-
-_LIT( KGSDefaultIconFileName, "Z:Gsfwicon.mbm" );
-
-/**
-* This enum is used for defining custom operations types.
-*/
-enum TGSCustomOperationType
- {
- // This operation type returns current status of the plugin's view.
- // If the plugin's view is active, ETrue will be returned, otherwise
- // EFalse. Currently supported by GSStandbyPlugin.
- EGSCustomOperationViewActive = 1
- };
-
-/**
-* Used by GetValue(). These are the keys for retrieving a specific
-* value. This enum can be extended to provide other values as well as
-* long as the original keys are not changed.
-*/
-enum TGSPluginValueKeys
- {
- // Value for this key is the localized string to be shown in the second row
- // of a listbox item. Plugins providing second row of text should provide
- // value for this key. Second row of list item text is used for following
- // listbox types:
- // - EGSListBoxTypeSingleLarge
- // - EGSListBoxTypeDouble2Large.
- // For plugins listed in these listbox types, second row value can either
- // be defined or left empty.
- EGSPluginKeySettingsItemValueString = 1,
- // Localized string to be used in case of custom MSK and menu activation
- // item. See TGSMenuActivationItems.
- EGSCustomMenuActivationText
- };
-
-/**
-* Used by PluginItemType(). These enumerations define the desired appearance
-* of the plugin in a parent plugin's listbox. Please notice that the parent
-* listbox type cannot be altered by a child plugin so plugins using these must
-* be aware of the parent plugin listbox type. Safest alternative is to leave
-* default implementation for ItemType() in which case EGSItemTypeSingleLarge is
-* used. This should fit most of the listbox types. Additionall types can be
-* implemented and defined as long as the old enumerations will not be changed.
-*
-* Different type of items are handled differently:
-* - In case of CAknView type items, such as EGSItemTypeSingleLarge and
-* EGSItemTypeSetting, the plugin's DoActivate() is called when user selects
-* the item.
-* - In case of items supporting dialogs, such as EGSItemTypeSettingDialog and
-* EGSItemTypeSettingIconDialog, HandleSelection() is called instead of
-* DoActivate().
-*
-* Item types can be described in a matrix:
-* X: Normal list tems with large icon,
-* settings items,
-* settings items with icon
-* Y: Items providing CAknView - activated by DoActivate(),
-* items providing dialog - activated by HandleSelection()
-*
-* All combinations of these are not allowed/supported.
-*/
-enum TGSListboxItemTypes
- {
- // CAknSingleLargeStyleListBox item:
- // Caption of the item is a descriptor from GetCaptionL().
- // Icon is from CreateIconL( KGSIconTypeLbxItem ).
- EGSItemTypeSingleLarge = 1, // Default
- // CAknSettingStyleListBox item providing a CAknView:
- // 1st row content is a descriptor from GetCaptionL()
- // 2nd row content is a descriptor (can be empty string id needed) from
- // GetValue( ..., EGSPluginKeySettingsItemValueString ).
- EGSItemTypeSetting,
- // CAknSettingStyleListBox item providing a CAknView:
- // 1st row content is a descriptor from GetCaptionL()
- // 2nd row content is a icon from CreateIconL( KGSIconTypeLbxSettingsItem )
- // GetValue(, EGSPluginKeySettingsItemValueString ).
- EGSItemTypeSettingIcon,
- // CAknSettingStyleListBox item launching a dialog:
- // 1st row content is a descriptor from GetCaptionL()
- // 2nd row content is a descriptor (can be empty string id needed) from
- // GetValue( ..., EGSPluginKeySettingsItemValueString ).
- EGSItemTypeSettingDialog,
- // CAknSingleLargeStyleListBox item launching a dialog:
- // Caption of the item is a descriptor from GetCaptionL().
- // Icon is from CreateIconL( KGSIconTypeLbxItem ).
- EGSItemTypeSingleLargeDialog
- };
-
-/**
-* These are used to define the type of the menu item which opens the selected
-* plugin. By default, parent plugin's menu has 'Open' item for child plugins.
-* If parent plugin's menu must have 'Change' instead of 'Open' for activating
-* the plugin, use EGSMenuActivationItemChange. This functionality is just for
-* the visual aspects for views in GS - requested by UI design. Plugins are
-* handled logically similarly regardless this value.
-*/
-enum TGSMenuActivationItems
- {
- // Default - will use the item defined in menu resource.
- EGSMenuActivationItemDefault = 0,
- // Menu should contain 'Open' Item.
- EGSMenuActivationItemOpen = 1,
- // Menu should contain 'Change' item.
- EGSMenuActivationItemChange,
- // Menu should contain custom text which is defined by GetValue() function:
- // GetValue( EGSCustomMenuActivationText, ... );
- // NOTE: When this custom menu item is selected, used menu command ID is
- // EGSCmdAppChange. This might be checked in for example plugin's
- // HandleCommand(). If text is empy, MSK is empty and there's no
- // corresponding item in options menu.
- EGSMenuActivationItemCustom
- };
-
-/**
-* Selection types. Used in HandleSelection().
-*/
-enum TGSSelectionTypes
- {
- // User selected the item by pressing selection key.
- EGSSelectionBySelectionKey = 1,
- // User selected the item by selecting a command from the menu.
- EGSSelectionByMenu
- };
-
-/**
-* Interface class for GS plugin. All GS plugins will implement this class.
-*
-* The main functionality GS framework will use from CAknView is:
-* -DoActivate()
-* -DoDeactivate()
-* -Id()
-* functions.
-*
-* Id() function must return the value of the plugin implementation UID. This
-* means that the main view of the plugin will have the same UID as the plugin
-* implementation. This will prevent multiple plugins from having same view
-* UIDs as their main view. If plugin has more views, it is plugin's
-* responsibility to ensure that the UIDs of the other views are unique. This
-* can be done for example reserving a unique UID from Symbian.
-*
-* Most of the functions have implementation using default values. Override
-* functions if different values or implementations are desired.
-*
-* CGSPluginInterface UID = 0x10207236
-*
-* See GSFWViewUIDs.h for plugin UIDs.
-*
-* Plugin implementation UID will be used when defining the parent view of a
-* plugin. If plugin belongs to application settings view, set the
-* ApplicationSettingsView plugin implementation Uid as a value in the plugin's
-* default_data field in plugin's implementation info resource file.
-*
-* Needed libraries (at least):
-* GSEcomPlugin.lib
-* GSFramework.lib
-* egul.lib
-* aknskins.lib
-* efsrv.lib
-*
-* @lib GSFramework.lib
-* @since Series60_3.1
-*/
-class CGSPluginInterface: public CAknView
- {
-
- // CGSPluginLoader accesses iOrder which should not be accessed outside.
- friend class CGSPluginLoader;
-
- public: // Constructors & destructors
-
- /**
- * Creates new GS plugin having the given UID.
- * Uses Leave code KErrNotFound if implementation is not found.
- *
- * @param aImplementationUid Implementation UID of the plugin to be
- * created.
- * @param aInitParams Plugin's initialization parameters. Make sure you know
- * what the plugin expects as initialization parameters. This
- * should be an agreement between the plugin client and the
- * plugin. Parameter can be used for example as sharing a common
- * data model between multiple plugins.
- */
- IMPORT_C static CGSPluginInterface* NewL(
- const TUid aImplementationUid,
- TAny* aInitParams );
-
- /**
- * Destructor
- */
- IMPORT_C ~CGSPluginInterface();
-
- public: // New
-
- /**
- * Method for getting caption of this plugin. This should be the
- * localized name of the settings view to be shown in parent view.
- *
- * @param aCaption pointer to Caption variable
- */
- virtual void GetCaptionL( TDes& aCaption ) const = 0;
-
- /**
- * Function for getting plugin's value for a certain key.
- * Override to provide own functionality.
- *
- * @param aKey Key for the value to be retrieved.
- * @parem aValue Value for the given gey in TDes format.
- */
- IMPORT_C virtual void GetValue( const TGSPluginValueKeys aKey,
- TDes& aValue );
-
- /**
- * This function is called in case plugin is an item in a settings
- * listbox and user selects the item. Override this if plugin needs to
- * provide functionality for item selection.
- *
- * Default implementation activates the plugin.
- * @param aSelectionType Defines how user selected the plugin. See
- * TGSSelectionTypes.
- */
- IMPORT_C virtual void HandleSelection(
- const TGSSelectionTypes aSelectionType );
-
- /**
- * This defines the appearance of the plugin in a parent plugin listbox.
- * Default value is EGSItemTypeSingleLarge. Please notice that the
- * parent listbox type cannot be defined by a child plugin so plugins
- * using these must be aware of the parent plugin listbox type.
- *
- * @return Desired listbox presentation and functional type for the
- * plugin.
- */
- IMPORT_C virtual TGSListboxItemTypes ItemType();
-
- /**
- * This function is only used for child plugins. Defines the dynamic
- * menu item that activates this plugin from parent plugin. This menu
- * item will override the item defined in resource file. Normally
- * 'Open' is used to open the child plugin. Override this to change the
- * activation to for example 'Change'. TGSMenuActivationItems defines the
- * different possible menu items that can be used to open this plugin.
- *
- * Note: This also defines MSK. Menu activation item and MSK have
- * identical label and behaviour. An exception to this is
- * when custom text is empty: in this case MSK is empty but there
- * is no item in options menu (no empty item in menu).
- *
- * @ return Type of the menu item and MSK that should activate this
- * child plugin from parent plugin.
- */
- IMPORT_C virtual TGSMenuActivationItems MenuActivationItem();
-
- /**
- * Creates a new icon of desired type. Override this to provide custom
- * icons. Othervise default icon is used for KGSIconTypeLbxItem. Other
- * icons are empty. Ownership of the created icon is transferred to the
- * caller.
- * NOTE: Return NULL if icon is not to be displayed.
- *
- * Icon type UIDs (use these defined constants):
- * KGSIconTypeLbxItem - ListBox item icon.
- * KGSIconTypeLbxSettingsItem - Settings item icon.
- * KGSIconTypeTab - Tab icon.
- * KGSIconTypeDColumn - Small icon in D-column.
- *
- * @param aIconType UID Icon type UID of the icon to be created.
- * @return Pointer of the icon or NULL.
- */
- IMPORT_C virtual CGulIcon* CreateIconL( const TUid aIconType );
-
- /**
- * Method for reading the ID of the plugin provider category. See
- * TGSPluginProviderCategory. PluginProviderCategory can be used for
- * sorting plugins.
- *
- * Default value is EGSPluginProvider3rdParty. Override this function
- * to change the category.
- *
- * @return Plugin provider category ID defined by
- * TGSPluginProviderCategory
- */
- IMPORT_C virtual TInt PluginProviderCategory() const;
-
- /**
- * Reserved for future use/plugin's custom functionality. This can be
- * overwritten if plugin needs to have custom functionality which cannot
- * be fulfilled otherwise.
- *
- * Use TGSCustomOperationType enumeration as aParam1 to
- * define operation type.
- */
- IMPORT_C virtual TAny* CustomOperationL( TAny* aParam1, TAny* aParam2 );
-
- /**
- * Method for checking, if plugin should be visible and used in GS FW.
- * (for example shown in listbox of the parent view).
- *
- * On default plugin is visible. Overwrite this function to enable or
- * disable your plugin dynamically.
- *
- * @return ETrue if plugin should be visible in GS.
- * @return EFalse if plugin should not be visible in GS.
- */
- IMPORT_C virtual TBool Visible() const;
-
- /**
- * Resets plugin's selected item index if this is supported. Default
- * implementation does nothing. This is needed when navigating from
- * child plugin back to parent plugin. In this case child plugin should
- * reset selected index in its listbox.
- */
- IMPORT_C virtual void ResetSelectedItemIndex();
-
- /**
- * Sets the Index of the plugin in listbox. Used for CGSPluginLoader. Default
- * value is KGSPluginNotIndexed which means not ordered. This value is
- * read, if defined, from the opaque_data field of the plugin's resource
- * definition. Index starts from 0.
- */
- IMPORT_C void SetOrder( TInt aOrder );
-
- /**
- * In case plug-in is loaded outside GS application and CGSPluginLoader,
- * cleaning up plug-in's ECOM resources must be done manually.
- *
- * Example:
- * CGSPluginInterface* myPlugin = CGSPluginInterface::NewL(...);
- * REComSession::DestroyedImplementation( myPlugin->GetEcomDestructorKey() );
- * delete myPlugin;
- *
- * @return UID of the plug-in instance which can be used to free dependent ECOM resources.
- */
- IMPORT_C TUid GetEcomDestructorKey();
-
- protected: // New
-
- /**
- * C++ constructor.
- */
- IMPORT_C CGSPluginInterface();
-
- public: // Enumerations
-
- /**
- * Category of the plugin provider. Provider's type affects the sorting
- * of the plugins. Type EGSPluginProvider3rdParty plugins are allowed
- * to be loaded only by Applications-plugin. Other categories may exist
- * but they should be used only internally.
- **/
- enum TGSPluginProviderCategory
- {
- EGSPluginProviderOEM = 1,
- EGSPluginProviderOperator = 2,
- EGSPluginProvider3rdParty = 3
- };
-
- private: // Data
-
- // ECOM plugin instance UID.
- TUid iDtor_ID_Key;
-
- /**
- * Index of the plugin in listbox. Used for CGSPluginLoader. Default
- * value is KGSPluginNotIndexed which means not ordered. This value is
- * read, if defined, from the opaque_data field of the plugin's resource
- * definition. Index starts from 0.
- */
- TInt iOrder;
-
- };
-
-#endif // GSPLUGININTERFACE_H
-//End of file