diff -r f5050f1da672 -r 04becd199f91 javamanager/javasettings/appmngrplugin/inc/appmngr2midletpackageinfo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javasettings/appmngrplugin/inc/appmngr2midletpackageinfo.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,380 @@ +/* +* 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: MIDlet suite Package Info represents installable JAR/JAD files +* +*/ + + +#ifndef APPMNGR2MIDLETPACKAGEINFO_H +#define APPMNGR2MIDLETPACKAGEINFO_H + +#include // CAppMngr2PackageInfo +#include // SwiUI::RSWInstLauncher +#include // MDownloadedContentHandler +#include "appmngr2midletinfo.h" // MAppMngr2MidletInfo + +class CAppMngr2MidletInfoIterator; +class CAppMngr2MidletResourceHandler; + +void CleanUpResetAndDestroy(TAny *aArray); + +/** + * MIDlet Suite Installation Package Info + * + * MIDlet Suite Installation Package Info represents installable + * MIDlet suite packages (JAD/JAR files). + * It handles installation, removal, sending and shows details of + * installable JAD/JAR files. + * + * @lib appmngr2midletplugin.dll + * @since S60 v9.1 + */ +class CAppMngr2MidletPackageInfo : public CAppMngr2PackageInfo, + public MAppMngr2MidletInfo, + public MDownloadedContentHandler +{ +public: // constructor and destructor + + /** + * Two phase constructor + * + * @since S60 9.1 + * @return instance + * @param aRuntime Runtime + * @param aJadFileName MIDlet suite JAD file name, KNullDesC if not available + * @param aJarFileName MIDlet suite JAR file name, KNullDesC if not available + * @param aFs Handle to a file server session + */ + static CAppMngr2MidletPackageInfo* NewL( + CAppMngr2Runtime& aRuntime, + const TDesC& aJadFileName, + const TDesC& aJarFileName, + RFs& aFs, + CAppMngr2MidletResourceHandler& aResourceHandler); + + /** + * Two phase constructor + * + * @since S60 9.1 + * @return instance + * @param aRuntime Runtime + * @param aJadFileName MIDlet suite JAD file name, KNullDesC if not available + * @param aJarFileName MIDlet suite JAR file name, KNullDesC if not available + * @param aFs Handle to a file server session + */ + static CAppMngr2MidletPackageInfo* NewLC( + CAppMngr2Runtime& aRuntime, + const TDesC& aJadFileName, + const TDesC& aJarFileName, + RFs& aFs, + CAppMngr2MidletResourceHandler& aResourceHandler); + + /** + * Destructor + * + * @since S60 9.1 + */ + ~CAppMngr2MidletPackageInfo(); + +public: // from CAppMngr2InfoBase + + /** + * Icon index for the installed application or installation package. + * Returns icon index referring to the icon array loaded in function + * CAppMngr2Runtime::LoadIconsL(). If an item has a specific icon that + * no other items use, return EAppMngr2UseSpecificIcon and load the + * specific icon via CAppMngr2InfoBase::SpecificIconL(). + * @return TInt Index to the icon array + */ + TInt IconIndex() const; + + /** + * Name of the list item, first line + * @return const TDesC& Displayable name + */ + const TDesC& Name() const; + + /** + * Additional info, second line (usually size) + * @returns const TDesC& Displayable additional information line + */ + const TDesC& Details() const; + + /** + * Indicator icon index. Returns indexes to the icon array returned by + * CAppMngr2Runtime::LoadIconsL(). Also default icon indexes defined in + * AppMngr2Common.hrh (TAppMngr2IconIndex) can be used. Return + * EAppMngr2NoIndicatorIcon if no indicator icon should be displayed, or + * EAppMngr2UseSpecificIcon if item specific indicator icon is returned + * via CAppMngr2InfoBase::SpecificIndicatorIconL(). + * @return TInt Index to the icon array, or default icon number + */ + TInt IndicatorIconIndex() const; + + /** + * Defines item specific menu items. + * Empty default implementation is used, if plug-in does not override it. + * Menu commands are run via CAppMngr2InfoBase::HandleCommandL() + * @param aMenuCmds Array where plug-in specific menu items are added + */ + void GetMenuItemsL(RPointerArray& aMenuCmds); + + /** + * Can be used to enable generic menu commands. 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. + * @param aCmdId Generic command id + * @return TBool ETrue if command aCmdId is supported + */ + TBool SupportsGenericCommand(TInt aCmdId); + + /** + * Starts user invoked commands asynchronously. Command id may be a generic + * command id or a plug-in specific command id. Generic command ids are defined + * inAppMngr2Common.hrh (see TAppMngr2GenericCommand enum). Plug-in specific + * commands are defined via functions CAppMngr2InfoBase::GetMenuItemsL() and + * CAppMngr2InfoBase::GetMiddleSoftkeyCommandL(). If the command is synchronous, + * the plug-in must complete the aStatus by calling User::RequestComplete(). + * @param aCommandId Command id to be run + * @param aStatus Active object request status + */ + void HandleCommandL(TInt aCommandId, TRequestStatus& aStatus); + + /** + * If CAppMngr2InfoBase::HandleCommandResultL() started an asynchronous operation, + * this function is called when the operation completes. + * @param aStatus Completion code, KErrNone or some error code + */ + void HandleCommandResultL(TInt aStatus); + + /** + * Cancels asynchronously started HandleCommandL() command. This function + * may be called any time when an asynchronous command is running and it + * must cancel the running command as quickly as possible. + */ + void CancelCommand(); + +public: // from MDownloadContentHandler for browser integration + /** + * Handle downloaded content that has been saved to a file, + * and return ETrue if it was handled successfully. + * + * @since S60 9.1 + * @param aFileName File name with path. + * @param aParamList Generic parameter list. + * @param aContinue Output parameter: It must be ETrue if the caller wants + * Browser not to terminate after the content is handled. + * @return ETrue if the implementer has processed the content. If it is + * EFalse, BrowserLauncher opens that content in an + * appropriate viewer application. + */ + TBool HandleContentL(const TDesC& aFileName, + const CAiwGenericParamList& aParamList, + TBool& aContinue); + + /** + * From MDownloadContentHandler for browser integration + * @since S60 9.1 + * reserved for future use + */ + TAny* DownloadedContentHandlerReserved1(TAny* /*aAnyParam*/); + +public: // from MAppMngr2MidletInfo + /** + * Path to jad file + * + * @since S60 9.1 + * @return Path to jad file, return KNullDesC if not available + */ + const TDesC& JadFileName() const; + + /** + * Path to jar file + * + * @since S60 9.1 + * @return Path to jar file, return KNullDesC if not available + */ + const TDesC& JarFileName() const; + + /** + * Package MIME type + * + * @since S60 9.1 + * @return Package MIME type + */ + const TDesC8& MimeType() const; + +public: // new functions + /** + * Path to package file (Jar if no Jad file, else Jad) + * + * @since S60 9.1 + * @return path to package file + */ + const TDesC& FileName() const; + + /** + * Return true if package is DRM protected + * + * @since S60 9.1 + * @return package is DRM protected + */ + TBool IsDRMProtected() const; + + /** + * DRM protected package file path + * + * @since S60 9.1 + * @return Path to protected package if available, else return KNullDesC + */ + const TDesC& ProtectedFileName() const; + + +private: // new functions + + /** + * Constructor + * + * @since S60 9.1 + * @param aRuntime Runtime + * @param aFs Handle to a file server session + */ + CAppMngr2MidletPackageInfo(CAppMngr2Runtime& aRuntime, RFs& aFs, CAppMngr2MidletResourceHandler& aResourceHandler); + + /** + * Second phase constructor + * + * @since S60 9.1 + * @param aJadFileName MIDlet suite JAD file name, KNullDesC if not available + * @param aJarFileName MIDlet suite JAR file name, KNullDesC if not available + */ + void ConstructL(const TDesC& aJadFileName, const TDesC& aJarFileName); + + /** + * Removes MIDlet suite installation package + * + * @since S60 9.1 + */ + void RemoveL(); + + /** + * Installs MIDlet suite installation package + * + * @since S60 9.1 + * @param aStatus The request status. KErrNone on completion, + * otherwise another of the system-wide error codes. + */ + void InstallL(TRequestStatus& aStatus); + + /** + * Cancel MIDlet suite installation package installation + * + * @since S60 9.1 + */ + void CancelInstallationL(); + + /** + * Show MIDlet suite installation package details + * + * @since S60 9.1 + */ + void ShowDetailsL(); + + /** + * Send MIDlet suite installation package + * + * @since S60 9.1 + */ + void SendL(); + + /** + * Starts the browser with midlet's MIDLET-Info-URL parameter + * + * @since S60 9.1 + * @param aStatus The request status. KErrNone on completion, + * otherwise another of the system-wide error codes. + */ + void ShowInfoUrlL(); + + /** + * Return Info Iterator which implements MCUIInfoIterator API for + * CCUIDetailsDialog + * + * @since S60 9.1 + * @return Info iterator object + */ + CAppMngr2MidletInfoIterator& InfoIteratorL(); + +private: // data + + /** + * MIDlet suite is DRM protected + */ + TBool iIsDRMProtected; + + /** + * MIDlet suite name + * Owned + */ + HBufC* iName; + + /** + * MIDlet suite details + * Owned + */ + HBufC* iDetails; + + /** + * MIDlet suite file name (jad or jar) + * Owned + */ + HBufC* iFileName; + + /** + * MIDlet suite JAD file name + * Owned + */ + HBufC* iJadFileName; + + /** + * MIDlet suite JAR + * Owned + */ + HBufC* iJarFileName; + + /** + * MIDlet suite MIME type + * Owned + */ + HBufC8* iMimeType; + + /** + * Installer launcher + * Owned + */ + SwiUI::RSWInstLauncher* iSWInstLauncher; + + /** + * Info iterator + * Owned + */ + CAppMngr2MidletInfoIterator* iInfoIterator; + + CAppMngr2MidletResourceHandler& iResourceHandler; +}; + +#endif // APPMNGR2MIDLETPACKAGEINFO_H +