williamr@2: /* williamr@2: * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Loads the UI library and creates the instance of the document class. williamr@2: * williamr@2: */ williamr@2: williamr@2: #ifndef __FLASH_UI_H__ williamr@2: #define __FLASH_UI_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: /** @file flash_ui.h williamr@2: * The API to start Viewer UI for playing Flash content file from a Viewer or a stub williamr@2: * application. williamr@2: * williamr@2: * The point here is to offer easy-of-use API for stubs applications which has williamr@2: * dedicated set of platform security capabilities for rendering private SWF content. williamr@2: * However, also standard Flash Viewer can utilize the same API as well. williamr@2: * williamr@2: * Example usage of the API: williamr@2: * williamr@2: * @code williamr@2: * LOCAL_C CApaApplication* NewApplication( ) williamr@2: * { williamr@2: * return new(ELeave) CFlashStubApplication; williamr@2: * } williamr@2: * williamr@2: * GLDEF_C TInt E32Main() williamr@2: * { williamr@2: * return EikStart::RunApplication(NewApplication); williamr@2: * } williamr@2: * williamr@2: * CFlashStubApplication::~CFlashStubApplication() williamr@2: * { williamr@2: * if (iFlashLibrary.Handle()) williamr@2: * { williamr@2: * iFlashLibrary.Close(); williamr@2: * } williamr@2: * } williamr@2: * williamr@2: * const TUid KUidFlashStubApp = { 0x1027367B }; williamr@2: * williamr@2: * TUid CFlashStubApplication::AppDllUid() const williamr@2: * { williamr@2: * return KUidFlashStubApp; williamr@2: * } williamr@2: * williamr@2: * williamr@2: * _LIT(KStubFlashContent, "C:\\Data\\Others\\example.swf"); williamr@2: * williamr@2: * const TUint32 KContentChecksum = 0; williamr@2: * williamr@2: * CApaDocument* CFlashStubApplication::CreateDocumentL() williamr@2: * { williamr@2: * FlashUIConfig config; williamr@2: * config.iIsMMI = EFalse; williamr@2: * config.iIsStubApp = ETrue; williamr@2: * config.iContentFileName.Copy(KStubFlashContent); williamr@2: * config.iContentChecksum = KContentChecksum; williamr@2: * config.iExtensions = NULL; williamr@2: * williamr@2: * if(!FlashStubsSupported()) williamr@2: * { williamr@2: * User::Leave(KErrNotSupported); williamr@2: * } williamr@2: * return CreateFlashDocumentL(iFlashLibrary, this, config); williamr@2: * } williamr@2: * @endcode williamr@2: */ williamr@2: williamr@2: /** williamr@2: Structure containing configuration information for UI. williamr@2: */ williamr@2: struct FlashUIConfig williamr@2: { williamr@2: /** williamr@2: * ETrue if MMI is supported. williamr@2: */ williamr@2: TBool iIsMMI; williamr@2: williamr@2: /** williamr@2: * ETrue if is a stub application. williamr@2: */ williamr@2: TBool iIsStubApp; williamr@2: williamr@2: /** williamr@2: * The swf file which accesses the MMI features. williamr@2: */ williamr@2: TFileName iContentFileName; williamr@2: williamr@2: /** williamr@2: * Check sum for security. williamr@2: */ williamr@2: TUint32 iContentChecksum; williamr@2: williamr@2: /** williamr@2: * Name of the ECom plug-in williamr@2: */ williamr@2: const TDesC8* iExtensions; williamr@2: williamr@2: /** williamr@2: * Reserved for future use williamr@2: */ williamr@2: const TDesC8* iReserved1; williamr@2: williamr@2: /** williamr@2: * Reserved for future use williamr@2: */ williamr@2: TUint32 iReserved2; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * The Flash UI dll name. williamr@2: */ williamr@2: _LIT(KFlashUILibraryName, "flash2ui.dll"); williamr@2: williamr@2: /** williamr@2: * The ordinal of the exported function in the Flash UI dll. williamr@2: */ williamr@2: const TInt KFlashCreateDocumentOrdinal = 1; williamr@2: williamr@2: /** williamr@2: * Pointer to a function that creates the document class. williamr@2: */ williamr@2: typedef void* (*PFNC_CreateFlashDocumentL)(CEikApplication* aApp, const FlashUIConfig& aUIConfig); williamr@2: williamr@2: class CEikApplication; williamr@2: /** williamr@2: * CreateFlashDocumentL creates a Flash document for an application and williamr@2: * starts playing the given SWF file. If there is no S60 Flash Lite williamr@2: * Viewer Framework DLL installed in the device, the function leaves with error williamr@2: * code returned from the RLibrary::Load. williamr@2: * williamr@2: * @since S60 v3.1 williamr@2: * williamr@2: * @param aLibrary Handle to the flash UI dll. williamr@2: * @param aApp Instance of the application class. williamr@2: * @param aUIConfig Instance of the class that contains the configuration for the UI. williamr@2: * @return The new document object. williamr@2: * @leave KErrGeneral Error in using the successfully loaded Flash Viewer Framework DLL williamr@2: */ williamr@2: inline CApaDocument* CreateFlashDocumentL(RLibrary& aLibrary, CEikApplication* aApp, const FlashUIConfig& aUIConfig) williamr@2: { williamr@2: CApaDocument* doc = NULL; williamr@2: User::LeaveIfError(aLibrary.Load(KFlashUILibraryName)); williamr@2: PFNC_CreateFlashDocumentL pFncCreateFlashDocumentL = (PFNC_CreateFlashDocumentL)aLibrary.Lookup(KFlashCreateDocumentOrdinal); williamr@2: if (pFncCreateFlashDocumentL == NULL) williamr@2: { williamr@2: User::Leave(KErrGeneral); williamr@2: } williamr@2: doc = (CApaDocument*)pFncCreateFlashDocumentL(aApp, aUIConfig); williamr@2: return doc; williamr@2: } williamr@2: williamr@2: /** williamr@2: * Checks whether S60 Flash Lite Viewer Framework DLL exists in the device for stub williamr@2: * applications. williamr@2: * @return ETrue if Flash Lite stub applications is suppported, EFalse otherwise. williamr@2: */ williamr@2: inline TBool FlashStubsSupported() williamr@2: { williamr@2: williamr@2: RLibrary library; williamr@2: TInt err = library.Load(KFlashUILibraryName); williamr@2: if(err == KErrNone) williamr@2: { williamr@2: library.Close(); williamr@2: return ETrue; williamr@2: } williamr@2: else williamr@2: { williamr@2: return EFalse; williamr@2: } williamr@2: } williamr@2: #endif // __FLASH_UI_H__