idlehomescreen/inc/xnresource.h
changeset 0 f72a12da539e
child 27 7a8b39b569cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/inc/xnresource.h	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,456 @@
+/*
+* Copyright (c) 2002-2004 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:  
+*
+*  Xuikon CXnResource-class defines all information what is needed to maintain
+*  resources of Application Theme. Every CXnResource-objects defines just one 
+*  resource source, however, the same resource source could be referenced
+*  multiple times inside a theme - resources are usually shared. 
+*  Xuikon Application Theme Management system supports theme resourcing by 
+*  offering resource conversations and storing services, and offering Rendering
+*  Engines the following services:
+*  1) the way to match a resource quoted in xml- or css-module to the 
+*  corresponding resource source, and 2) a secure way to access a resource 
+*  through the Symbian Platform Security's process separation wall.
+*
+*
+*/
+
+
+#ifndef XNRESOURCE_H
+#define XNRESOURCE_H
+
+#include <e32base.h>
+#include <apmstd.h> // MIME
+#include <s32mem.h> // streams
+ 
+/**
+* TXnLockingPolicy
+* Locking policy flag-definitions for Xuikon. These are bit-masked.
+*/
+enum TXnLockingPolicy
+  {
+  EXnUnlocked           = 0x0000, //0b0000000000000000,
+  EXnLocked             = 0x0001  //0b0000000000000001,
+  };
+    
+/**
+* TXnCacheType
+* Cache-type definitions for Xuikon.
+*/
+enum TXnCacheType
+    {
+    /**
+    * ECacheNone. Resource is not cached = direct file access in resources original format.
+    *
+    */
+    ECacheNone,
+    
+    /**
+    * ECacheFile. Resource is externalized to file stream - it can be internalized from given 
+    *               file stream on construct. 
+    */
+    ECacheFile, 
+    
+    /**
+    * ECacheNone. Resource is externalized in to iBuffer - it can be internalized from this
+    *               buffer on construct.
+    */  
+    ECacheMemory
+    };
+
+/**
+*   Resource file extension definitions for Xuikon.
+*/
+_LIT(KRLBFileExtension,".r");
+_LIT(KODTFileExtension,".o");
+_LIT(KDTDFileExtension,".dtd");
+_LIT(KXMLFileExtension,".xml");
+_LIT(KCSSFileExtension,".css");
+_LIT(KDATFileExtension,".dat");
+
+_LIT(KFBSFileExtension,".fbs");
+_LIT(KMBMFileExtension,".mbm");
+_LIT(KMIFFileExtension,".mif");
+_LIT(KBMPFileExtension,".bmp");
+_LIT(KJPGFileExtension,".jpg");
+_LIT(KJPEGFileExtension,".jpeg");
+_LIT(KPNGFileExtension,".png");
+_LIT(KGIFFileExtension,".gif");
+_LIT(KAACFileExtension,".aac");
+_LIT(KWAVFileExtension,".wav");
+_LIT(KMIDFileExtension,".mid");
+_LIT(KMP3FileExtension,".mp3");
+_LIT(KM3GFileExtension,".m3g");
+_LIT(KSVGFileExtension,".svg");
+_LIT(KSWFFileExtension,".swf");
+_LIT(KTXTFileExtension,".txt");
+
+/**
+* TXnResourceType
+* Resource-type definitions for Xuikon.
+*/
+enum TXnResourceType
+    {
+    /**
+    * EResourceNone. No type at all - juts a file path.
+    */
+    EResourceNone,
+    
+    /**
+    * EResourceRLB.
+    */
+    EResourceRLB,
+    
+    /**
+    * EResourceODT. Resource is ODT (Xuikon Application Theme's binary format)
+    */
+    EResourceODT,
+    
+    /**
+    * EResourceDTD.
+    */
+    EResourceDTD,
+    
+    /**
+    * EResourceXML.
+    */
+    EResourceXML,
+    
+    /**
+    * EResourceCSS.
+    */
+    EResourceCSS,
+    
+    /**
+    * EResourceDAT.
+    */
+    EResourceDAT,
+    
+    /**
+    * EResourceRES. Resource is some media content.
+    */
+    EResourceRES,
+    
+    /**
+    * EResourceFBS. Resource is externalized CFbsBitmap.
+    */
+    EResourceFBS,
+    
+    /**
+    * EResourceMBM. Resource is Symbian MBM-multiple-image.
+    */
+    EResourceMBM,
+    
+    /**
+    * EResourceMIF. Resource is Symbian MIF.
+    */
+    
+    EResourceMIF,
+    
+    /**
+    * EResourceBMP. Resource is BMP-image.
+    */
+    EResourceBMP,
+    
+    /**
+    * EResourceJPG and EResourceJPEG. Resource is JPEG-compliant image.
+    */
+    EResourceJPG,
+    EResourceJPEG,
+    
+    /**
+    * EResourcePNG. Resource is in PNG-format.
+    */
+    EResourcePNG,
+    
+    /**
+    * EResourceGIF. Resourec is in GIF-format. 
+    */
+    EResourceGIF,  
+    
+    /**
+    * EResourceAAC. Resource is a AAC audio file.
+    */
+    EResourceAAC, 
+    
+    /**
+    * EResourceWAV. Resource is a WAV audio file
+    */
+    EResourceWAV,
+    
+    /**
+    * EResourceMID. Resource is a MID audio file.
+    */
+    EResourceMID,
+    
+    /**
+    * EResourceMP3. Resource is a MP3 audio file.
+    */
+    EResourceMP3,
+        
+    /**
+    * EResourceM3G. Resource is M3G.
+    */
+    EResourceM3G,
+    
+    /**
+    * EResourceSVG. Resource is SVG. 
+    */
+    EResourceSVG,
+       
+    /**
+    * EResourceSWF. Resource is a Macromedia shock wave i.e. flash file
+    */
+    EResourceSWF,
+    
+    /**
+    * EResourceMIME. Resource is in Symbian OS 9.x supported MIME-type format.
+    */
+    EResourceMIME,
+
+    /**
+    * EResourceTXT. Resource is TXT.
+    */
+    EResourceTXT
+    
+    };
+
+
+/**
+*  @ingroup group_xnresource
+*  
+*  CXnResource is Xuikon-utility class defining resource-structure.
+*
+*  @lib XnResource.lib
+*  @since S60 3.1
+*/
+class CXnResource : public CBase
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        IMPORT_C static CXnResource* NewL();
+        /**
+        * Two-phased constructor.
+        * @param aStream The read stream
+        */
+        IMPORT_C static CXnResource* NewLC( RReadStream& aStream );
+        
+        /**
+        * CXnResource::CloneL(). Makes a clone of this class.
+        * @since S60 3.1
+        * @return void
+        */
+        IMPORT_C CXnResource* CloneL();
+        /**
+        * Destructor.
+        */
+        virtual ~CXnResource();
+
+    public: // New functions
+        
+        /**
+        * CXnResource::SetLockingPolicy(). Sets value of iLockingPolicy data member.
+        * @since S60 3.1
+        * @param aLockingPolicy is new value for iLockingPolicy data member.
+        * @return void
+        */
+        IMPORT_C void SetLockingPolicy( TXnLockingPolicy aLockingPolicy );
+        
+        /**
+        * CXnResource::LockingPolicy(). Gets value of iLockingPolicy data member.
+        * @since S60 3.1
+        * @return TXnLockingPolicy iLockingPolicy.
+        */
+        IMPORT_C TXnLockingPolicy LockingPolicy() const;
+        
+        /**
+        * CXnResource::SetCacheType(). Sets value of iCacheType data member.
+        * @since S60 3.1
+        * @param aCacheType is new value for iCacheType data member.
+        * @return void
+        */
+        IMPORT_C void SetCacheType( TXnCacheType aCacheType );
+        
+        /**
+        * CXnResource::CacheType(). Gets value of iCacheType data member.
+        * @since S60 3.1
+        * @return TXnCacheType iCacheType.
+        */
+        IMPORT_C TXnCacheType CacheType() const;
+     
+        /**
+        * CXnResource::SetResourceType(). Sets value of iResourceType data member.
+        * @since S60 3.1
+        * @param aResourceType is new value of iResourceType data member.
+        * @return void
+        */    
+        IMPORT_C void SetResourceType( TXnResourceType aResourceType );
+        
+        /**
+        * CXnResource::ResourceType(). Gets value of iResourceType data member..
+        * @since S60 3.1
+        * @return TXnResourceType iResourceType.
+        */
+        IMPORT_C TXnResourceType ResourceType() const;
+        
+        /**
+        * CXnResource::SetResourceIdL(). Sets value of iResourceId data member.
+        * @since S60 3.1
+        * @param aResourceId is new value of iResourceId data member.
+        * @return void
+        */
+        
+        IMPORT_C void SetResourceIdL( const TDesC& aResourceId );
+        
+        /**
+        * CXnResource::ResourceId(). Gets value of iResourceId data member.
+        * @since S60 3.1
+        * @return TDesC& iResourceId.
+        */
+        IMPORT_C const TDesC& ResourceId() const;
+        
+        /**
+        * CXnResource::SetNameSpaceL(). Sets value of iNameSpace data member.
+        * @since S60 3.1
+        * @param aNameSpace is new value of iNameSpace data member.
+        * @return void
+        */
+        IMPORT_C void SetNameSpaceL( const TDesC& aNameSpace );
+        
+        /**
+        * CXnResource::NameSpace(). Gets value of iNameSpace data member.
+        * @since S60 3.1
+        * @return TDesC& iNameSpace
+        */
+        IMPORT_C const TDesC& NameSpace() const;
+        
+        /**
+        * CXnResource::SetFileNameL(). Sets value of iFileName data member.
+        * @since S60 3.1
+        * @param aFileName is new iFileName value.
+        * @return void
+        */
+        IMPORT_C void SetFileNameL( const TDesC& aFileName );
+        
+        /**
+        * CXnResource::FileName(). Gets value of iFileName data member.
+        * @since S60 3.1
+        * @return TDes& iFileName.
+        */
+        IMPORT_C const TDesC& FileName() const;
+        
+        /**
+        * CXnResource::SetMimeTypeL(). Sets value of iMimeType data member. 
+        * @since S60 3.1
+        * @param aDataType is a new value of iMimeType.
+        * @return void
+        */
+        IMPORT_C void SetMimeTypeL( const TDataType aDataType );
+        
+        /**
+        * CXnResource::MimeType(). Get iMimeType of this CXnResource-object.
+        * @since S60 3.1
+        * @return TDataType iMimeType.
+        */
+        IMPORT_C TDataType MimeType() const;
+        
+        /**
+        * CXnResource::WriteStream(). Gets write stream on iBuffer.
+        * @since S60 3.1
+        * @param aOffset a buffer position of iBuffer to write data.
+        * @return RBufWriteStream& write stream.
+        */
+        IMPORT_C RBufWriteStream& CXnResource::WriteStream( TUint aOffset = 0 );      
+        
+        /**
+        * CXnResource::ReadStream(). Gets read stream on iBuffer.
+        * @since S60 3.1
+        * @param aOffset a buffer position of iBuffer to read data. 
+        * @return RBufReadStream& read stream
+        */
+        IMPORT_C RBufReadStream& CXnResource::ReadStream(TUint aOffset = 0 );
+
+        /**
+        * CXnResource::SetOffset(). Sets internal data pointer of iBuffer.
+        * @since S60 3.1
+        * @param aOffset is new offset of iBuffer data pointer.
+        * @return void
+        */
+        IMPORT_C void SetOffset( TUint aOffset );
+        
+        /**
+        * CXnResource::Offset(). Internal iBuffer data pointer position.
+        * @since S60 3.1
+        * @return TUint iOffset pointing iBuffer data pointer.
+        */
+        IMPORT_C TUint Offset() const;
+        
+        /**
+        * CXnResource::ExternalizeL(). Externalizes CXnResource-object's member data.
+        * @since S60 3.1
+        * @param aStream is a write stream given.
+        * @return void
+        */
+        IMPORT_C void ExternalizeL( RWriteStream& aStream) const;
+        
+        /**
+        * CXnResource::InternalizeL(). Internalizes CXnResource-object's member data.
+        * @since S60 3.1
+        * @param aStream is data read stream given.
+        * @return void
+        */
+        IMPORT_C void InternalizeL( RReadStream& aStream);
+        
+        /**
+        * CXnResource::GetDataStreamLength().
+        * @since S60 3.1
+        * @return TInt data length of CXnResource-data members for streaming functions.
+        */
+        IMPORT_C TInt GetDataStreamLength() const;
+        
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CXnResource();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+    private:     // Data
+        TXnLockingPolicy iLockingPolicy;
+        TXnCacheType iCacheType;
+        TXnResourceType iResourceType;
+        TDesC* iResourceID;
+        TDesC* iNameSpace;
+        TDesC* iFileName;
+        TDataType iMimeType;
+        CBufSeg* iBuffer;
+        TUint iOffset;
+        RBufWriteStream iWriteStream;
+        RBufReadStream iReadStream;
+
+         // Reserved pointer for future extension
+        TAny* iReserved;
+    };
+
+#endif      // XNRESOURCE_H   
+// End of File