appinstall_plat/appmngr2runtimeapi/inc/appmngr2infobase.h
changeset 80 9dcba1ee99f7
parent 77 d1838696558c
--- a/appinstall_plat/appmngr2runtimeapi/inc/appmngr2infobase.h	Thu Oct 14 14:11:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,382 +0,0 @@
-/*
-* Copyright (c) 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:   Base class definitions for items displayed in AppMngr2
-*
-*/
-
-
-#ifndef C_APPMNGR2INFOBASE_H
-#define C_APPMNGR2INFOBASE_H
-
-#include <e32base.h>                    // CBase
-#include <eikmenup.h>                   // CEikMenuPaneItem::SData
-
-class CAppMngr2Runtime;
-
-enum TAppMngr2Location
-    {
-    EAppMngr2LocationPhone,
-    EAppMngr2LocationMemoryCard,
-    EAppMngr2LocationMassStorage
-    };
-
-/**
- * CAppMngr2InfoBase is the base class for objects representing:
- * - installed applications and
- * - installation packages (aka installation files).
- * 
- * Installed applications and installation packages are displayed in the
- * Appliction Manager UI using the data that Runtime plug-ins provide with
- * CAppMngr2InfoBase derived objects. Application Manager gets the data via
- * GetInstalledAppsL() and GetInstallationFilesL() metods in CAppMngr2Runtime
- * class.
- * 
- * CAppMngr2InfoBase contains the common functionality for both installed
- * applications and installation packages. Derived classes CAppMngr2AppInfo
- * and CAppMngr2PackageInfo are placeholders for more specific functionality.  
- * 
- * CAppMngr2InfoBase, as well as CAppMngr2AppInfo and CAppMngr2PackageInfo,
- * are abstracts classes. Runtime plug-ins must provide the actual implementation
- * by using derived classes.
- * 
- * @lib appmngr2pluginapi.lib
- * @since S60 v5.1
- */
-class CAppMngr2InfoBase : public CBase
-    {
-public:     // constructor and destructor
-    void ConstructL();
-    ~CAppMngr2InfoBase();
-
-public:     // new functions
-    /**
-     * Reference to the CAppMngr2Runtime object of this plugin.
-     * 
-     * @return CAppMngr2Runtime&  Runtime object
-     */
-    IMPORT_C CAppMngr2Runtime& Runtime() const;
-    
-    /**
-     * Icon index of this item (installed application or installation package).
-     * 
-     * Items are displayed in a list in the UI. Each item has an icon image,
-     * two labels (name and details) and an optional small indicator icon.
-     * IconIndex() method provides index for the icon image.
-     * 
-     * Icon index can be either:
-     * - index to icon array loaded in CAppMngr2Runtime::LoadIconsL() method
-     * - special value EAppMngr2UseSpecificIcon defined in AppMngr2Common.hrh
-     * 
-     * If item has a specific icon that no other items use, return value
-     * EAppMngr2UseSpecificIcon and load the specific icon via SpecificIconL().
-     * 
-     * There are no default icons, each plug-in must provide implementation
-     * for IconIndex() method.
-     * 
-     * @return TInt  Icon index
-     */
-    virtual TInt IconIndex() const = 0;
-
-    /**
-     * Optional specific icon for this item.
-     * 
-     * Returns new icon specific for the item. Note that this method is not
-     * used unless IconIndex() method returns EAppMngr2UseSpecificIcon value.
-     * 
-     * The caller of this method is responsible to delete the returned
-     * icon object.
-     * 
-     * Default implementation leaves with KErrNotSupported. Plug-in must
-     * override it if IconIndex() returns EAppMngr2UseSpecificIcon value.
-     * 
-     * If the same icon bitmap is used in many items, it is more efficient
-     * to load it once in CAppMngr2Runtime::LoadIconsL() and return icon
-     * indexes form IconIndex() method.
-     *  
-     * @return CGulIcon  Item specific icon
-     */
-    IMPORT_C virtual CGulIcon* SpecificIconL() const;
-
-    /**
-     * Name of this item. 
-     * 
-     * Items are displayed in a list in the UI. The list uses two labels
-     * (name and details) for each item. Descriptor that the Name() method
-     * returns is displayed as the first label (the 1st line of the item).
-     * 
-     * @return const TDesC&  Displayable name
-     */
-    virtual const TDesC& Name() const = 0;
-
-    /**
-     * Details (size) of this item.
-     * 
-     * Items are displayed in a list in the UI. The list uses two labels
-     * (name and details) for each item. Descriptor that the Details() method
-     * returns is displayed as the second label (the 2nd line of the item).
-     * 
-     * Plug-ins can use SizeStringWithUnitsL() method to create details
-     * string to display the item size in UI.
-     * 
-     * @returns const TDesC&  Displayable additional information line
-     */
-    virtual const TDesC& Details() const = 0;
-
-    /**
-     * Indicator icon index of this item.
-     * 
-     * Icon index can be either:
-     * - default icon index defined in TAppMngr2IconIndex in AppMngr2Common.hrh
-     * - index to icon array loaded in CAppMngr2Runtime::LoadIconsL() method
-     * - special value EAppMngr2UseSpecificIcon defined in AppMngr2Common.hrh
-     * 
-     * Default implementation returns the default icon indexes based on
-     * the value of iLocation member variable, so plug-ins usually does not
-     * need to override this method.
-     * 
-     * If EAppMngr2UseSpecificIcon value is returned, SpecificIndicatorIconL()
-     * method is  called to get the indicator icon.
-     * 
-     * @return TInt  Index to the icon array, or a TAppMngr2IconIndex value
-     */
-    IMPORT_C virtual TInt IndicatorIconIndex() const;
-
-    /**
-     * Optional specific indicator icon for this item.
-     * 
-     * Returns new indicator icon specific for the item. Note that this
-     * method is not used unless IndicatorIconIndex() method returns
-     * special EAppMngr2UseSpecificIcon value.
-     * 
-     * The caller of this method is responsible to delete the returned
-     * icon object.
-     * 
-     * Default implementation leaves with KErrNotSupported. Plug-in must
-     * override it if IndicatorIconIndex() returns EAppMngr2UseSpecificIcon.
-     * 
-     * If the same icon bitmap is used in many items, it is more efficient
-     * to load it once in CAppMngr2Runtime::LoadIconsL() and return icon
-     * indexes form IconIndex() method.
-     * 
-     * @return CGulIcon  Item specific icon
-     */
-    IMPORT_C virtual CGulIcon* SpecificIndicatorIconL() const;
-
-    /**
-     * ShowOnTop highlight status of this item.
-     * 
-     * Returns ETrue if this item should be highlighted (e.g. displayed
-     * separately on top of other items in installation files/installed
-     * applications list). All items are displayed in alphabetical order.
-     * If ShowOnTop flag is set, then the item is displayed before other
-     * items (or in completely separate list of highligted items). All
-     * separately displayed items are listed in alphabetical order too. 
-     * 
-     * @return TBool  ETrue, if this item should be displayed separately
-     */
-    IMPORT_C TBool IsShowOnTop() const;
-
-    /**
-     * Optional specific menu items for this item.
-     * 
-     * If the item supports specific menu commands, return the menu pane
-     * data. Plug-in can use ReadMenuItemDataFromResourceL() method to
-     * read menu pane data from resources. Menu commands are run via
-     * HandleCommandL() method.
-     * 
-     * The caller of this method is responsible to delete the returned
-     * CEikMenuPaneItem::SData data structs.
-     * 
-     * Default implementation is empty. 
-     * 
-     * @param aMenuCmds  Array where plug-in specific menu items are added
-     */
-    IMPORT_C virtual void GetMenuItemsL( RPointerArray<CEikMenuPaneItem::SData>& aMenuCmds );
-
-    /**
-     * Enable generic menu commands for this item.
-     * 
-     * Generic menu commands are defined in TAppMngr2GenericCommands enum in
-     * AppMngr2Common.hrh. Generic commands are hidden from the menu if the
-     * currently selected item does not support them. Return ETrue for those
-     * command ids that are supported by this item. Generic commands are
-     * run via HandleCommandL() method.
-     * 
-     * @param aCmdId Generic command id
-     * @return TBool ETrue if command aCmdId is supported
-     */
-    IMPORT_C virtual TBool SupportsGenericCommand( TInt aCmdId );
-
-    /**
-     * Optional specific middle softkey command for this item.
-     *
-     * If the item supports specific middle softkey command, return TBUF
-     * resource id (for the command label) and command id. Item specific
-     * command is run via HandleCommandL() method when user presses the
-     * middle softkey. 
-     * 
-     * Default middle softkey command is used, if plug-in does not override it.
-     *
-     * @param aResourceId  Command label to be displayed in UI (TBUF resource)
-     * @param aCommandId  Command id to be passed to HandleCommandL 
-     */
-    IMPORT_C virtual void GetMiddleSoftkeyCommandL( TInt& aResourceId, TInt& aCommandId );
-
-    /**
-     * Starts asynchronously a user invoked command.
-     * 
-     * The command can be a generic one or specific to the plug-in. The ids
-     * for the generic commands are defined in AppMngr2Common.hrh (see the 
-     * enumeration TAppMngr2GenericCommand). The plug-in specific commands 
-     * are defined via GetMenuItemsL() and GetMiddleSoftkeyCommandL() methods. 
-     *
-     * The caller of this method must call HandleCommandResultL() after the
-     * asynchronous request has been completed.
-     *
-     * This asynchronous request must be completed properly using the method 
-     * User::RequestComplete() even if the command itself has been implemented 
-     * in synchronous manner.
-     *
-     * @param aCommandId  Id of the command to be run
-     * @param aStatus  Active object request status
-     */
-    virtual void HandleCommandL( TInt aCommandId, TRequestStatus& aStatus ) = 0;
-
-    /**
-     * Handles the completion result of an asynchronous command. 
-     *
-     * This method is provided so that the plug-in may decide upon handling
-     * possible errors encountered during the command processing (note that 
-     * the completion status is received directly by the caller of the method
-     * HandleCommandL() and not by this plug-in). These actions may include 
-     * for example closing open sessions and deleting objects.
-     *
-     * This function should leave if an error note should be displayed in
-     * the UI (e.g. KErrNoMemory). Note that the result may be KErrCancel
-     * or SwiUI::KSWInstErrUserCancel if the user cancelled the operation.
-     *
-     * @param aResult  Completion code, KErrNone or some error code
-     */
-    virtual void HandleCommandResultL( TInt aResult ) = 0;
-
-    /**
-     * Cancels the current asynchronous command.
-     * 
-     * This method may be called at any time when an asynchronous command
-     * is started using HandleCommandL() method. It must cancel the running
-     * command as quickly as possible.  
-     */
-    virtual void CancelCommand() = 0;
-    
-    /**
-     * Utility function to create displayable string that contains size
-     * followed by kilobyte (kB), megabyte (MB) or gigabyte (GB) units.
-     * 
-     * Size is rounded and formatted using the relevant unit, for example
-     * SizeStringWithUnitsL( 5120 ) returns "5 kB".
-     * 
-     * The caller of this method is responsible to delete the returned string.
-     * 
-     * @param aSizeInBytes  Item size
-     * @return HBufC*  New string that contains displayable size string 
-     */
-    IMPORT_C HBufC* SizeStringWithUnitsL( TInt64 aSizeInBytes );
-
-    /**
-     * Utility function to construct CEikMenuPaneItem from MENU_ITEM resource.
-     * 
-     * @param aResourceId  MENU_ITEM resource id
-     * @param aMenuItem  CEikMenuPaneItem::SData struct that is filled in
-     */ 
-    IMPORT_C void ReadMenuItemDataFromResourceL( TInt aResourceId,
-            CEikMenuPaneItem::SData& aMenuItem );
-
-    /**
-     * Returns the location of installation file or installed application.
-     * 
-     * Remote drives are not supported. Derived class must fill in the
-     * iLocation member variable to provide data for this function.
-     * 
-     * @return TAppMngr2Location  Location of the item
-     */ 
-    IMPORT_C TAppMngr2Location Location() const;
-
-    /**
-     * Returns the drive where installation file is located, or where
-     * installed application is installed.
-     * 
-     * Derived class must fill in the iLocationDrive member variable
-     * to provide data for this function.
-     * 
-     * @return TDriveUnit  Drive where the item is located
-     */
-    IMPORT_C TDriveUnit LocationDrive() const;
-    
-protected:  // new functions
-    /**
-     * Constructor, not exported because used via CAppMngr2AppInfo and CAppMngr2PackageInfo
-     */
-    CAppMngr2InfoBase( CAppMngr2Runtime& aRuntime, RFs& aFsSession );
-
-protected:  // data
-    /**
-     * Location of this item.
-     * 
-     * Default implementation of IndicatorIconIndex() function uses this
-     * value to return the default indicator icon index. See also the
-     * Location() function defined above.
-     */
-    TAppMngr2Location iLocation;
-    
-    /**
-     * Drive of this item.
-     * 
-     * Location drive defines the drive where this item resides (either
-     * installation package is stored, or application is installed).
-     * CAppMngr2InfoIterator uses this value to display the drive
-     * in "Details" dialog. See also the LocationDrive() function
-     * defined above.
-     */
-    TDriveUnit iLocationDrive;
-    
-    /**
-     * ShowOnTop (highlight) flag.
-     * 
-     * If ShowOnTop flag is ETrue, the item is highlighted in UI. It
-     * may be displayed on top of other items in installed application
-     * or installation files list, or it may be displayed in separate
-     * list of highlighted items.
-     * 
-     * For example, new or untrusted installed applications can be highlighted.
-     * When set, the item needs to show the reason why iShowOnTop is enabled
-     * (e.g. by using "new" or "untrusted" icon). See also the IsShowOnTop()
-     * function defined above.
-     */
-    TBool iShowOnTop;
-
-    /**
-     * File server session, provided by framework when item is created.
-     */
-    RFs& iFs;
-    
-private:    // data
-    /**
-     * Reference to CAppMngr2Runtime class for this item.
-     * See also the Runtime() function defined above. 
-     */
-    CAppMngr2Runtime& iRuntime;
-    };
-
-#endif // C_APPMNGR2INFOBASE_H
-