homescreenpluginsrv/inc/hspsresource.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 12 Mar 2010 15:43:54 +0200
branchRCL_3
changeset 18 bd874ee5e5e2
parent 0 79c6a41cd166
child 19 502e5d91ad42
permissions -rw-r--r--
Revision: 201007 Kit: 201008

/*
* 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:  Declaration of a file resource
*
*/


#ifndef hspsRESOURCE_H
#define hspsRESOURCE_H

#include <e32base.h>
#include <apmstd.h> // MIME
#include <s32mem.h> // streams
 
const TInt KMaxTagsLength = 50;

/**
* ThspsLockingPolicy
* Locking policy flag-definitions for HSPS. These are bit-masked.
*/
enum ThspsLockingPolicy
  {
  EhspsUnlocked           = 0x0000, //0b0000000000000000,			Resource is replaceable
  EhspsLocked             = 0x0001  //0b0000000000000001,			The resource is always fetched from ROM and it cannot be replaced
  };
    
/**
 * Resource file extension definitions for HSPS.
 */
_LIT(KODTFileExtension, ".o0000");
_LIT(KDTDFileExtension, ".dtd");
_LIT(KXMLFileExtension, ".xml");
_LIT(KDATFileExtension, ".dat");
    

/**
* ThspsResourceType
* Resource-type definitions for HSPS.
*/
enum ThspsResourceType
    {
    /**
    * EResourceNone. No type at all - juts a file path.
    */
    EResourceNone,
            
    /**
    * EResourceODT. Resource is ODT (HSPS Application Theme's binary format)
    */
    EResourceODT,
    
    /**
    * EResourceDTD.
    */
    EResourceDTD,
    
    /**
    * EResourceXML.
    */
    EResourceXML,
    
    /**
    * EResourceDAT.
    */
    EResourceDAT,
    
    /**
    * EResourceRES. Resource is some media content.
    */
    EResourceRES,
            
    /**
    * EResourceOther. Other extension. 
    */
    EResourceOther
    
    };


/**
 * ChspsResource is HSPS-utility class defining resource-structure.
 *
 * @lib hspsResource.lib
 * @since S60 5.0
 * @ingroup group_hspsresource 
 */
class ChspsResource : public CBase
    {
    public:  // Constructors and destructor
        
        /**
        * Two-phased constructor.
        * 
        * @since S60 5.0
        */
        IMPORT_C static ChspsResource* NewL();
        
        
        /**
        * Makes a clone of this class.
        * 
        * @since S60 5.0
        */
        IMPORT_C ChspsResource* CloneL();
        
        /**
        * Destructor.
        */
        virtual ~ChspsResource();

    public: // New functions
        
        /**
        * Sets value of iLockingPolicy data member.
        * 
        * @since S60 5.0
        * @param aLockingPolicy is new value for iLockingPolicy data member.
        */
        IMPORT_C void SetLockingPolicy( ThspsLockingPolicy aLockingPolicy );
        
        /**
        * Gets value of iLockingPolicy data member.
        * 
        * @since S60 5.0
        * @return ThspsLockingPolicy iLockingPolicy.
        */
        IMPORT_C ThspsLockingPolicy LockingPolicy() const;
        
        /**
        * Sets value of iResourceType data member.
        * 
        * @since S60 5.0
        * @param aResourceType is new value of iResourceType data member.
        */    
        IMPORT_C void SetResourceType( ThspsResourceType aResourceType );
        
        /**
        * Gets value of iResourceType data member.
        * 
        * @since S60 5.0
        * @return ThspsResourceType iResourceType.
        */
        IMPORT_C ThspsResourceType ResourceType() const;
        
        /**
        * Sets value of iResourceId data member.
        * 
        * @since S60 5.0
        * @param aResourceId is new value of iResourceId data member.
        */
        IMPORT_C void SetResourceIdL( const TDesC& aResourceId );
        
        /**
        * Gets value of iResourceId data member.
        * 
        * @since S60 5.0
        * @return TDesC& iResourceId.
        */
        IMPORT_C const TDesC& ResourceId() const;
        
        /**
        * Sets value of iFileName data member.
        * 
        * @since S60 5.0
        * @param aFileName is new iFileName value.
        */
        IMPORT_C void SetFileNameL( const TDesC& aFileName );
        
        /**
        * Gets value of iFileName data member.
        * 
        * @since S60 5.0
        * @return TDes& iFileName.
        */
        IMPORT_C const TDesC& FileName() const;
        
        /**
        * Sets value of iMimeType data member.
        *  
        * @since S60 5.0
        * @param aDataType is a new value of iMimeType.
        */
        IMPORT_C void SetMimeTypeL( const TDataType aDataType );
        
        /**
        * Get iMimeType of this ChspsResource-object.
        * 
        * @since S60 5.0
        * @return TDataType iMimeType.
        */
        IMPORT_C TDataType MimeType() const;
        
        /**
        * Externalizes ChspsResource-object's member data.
        * 
        * @since S60 5.0
        * @param aStream is a write stream given.
        */
        IMPORT_C void ExternalizeL( RWriteStream& aStream) const;
        
        /**
        * Internalizes ChspsResource-object's member data.
        * 
        * @since S60 5.0
        * @param aStream is data read stream given.
        */
        IMPORT_C void InternalizeL( RReadStream& aStream);
        
        /**
        * Set to ELangNone if the resource is common to all locales,
        * otherwise it's language specific.
        * 
        * @since S60 5.0
        * @param aLanguage is new value of iLanguage data member.
        */        
        IMPORT_C void SetLanguage( const TLanguage& aLanguage );
        
        /**
        * Gets value of iLanguage data member.
        * 
        * @since S60 5.0
        * @return TLanguage& iLanguage.
        */
        IMPORT_C const TLanguage& Language() const;

        /**
         * Sets value of the iConfigurationUid member
         * @since S60 5.0
         * @param aConfUid Configuration UID
         */
        IMPORT_C void SetConfigurationUid( const TInt aConfUid );
        
        /**
         * Gets value of the iConfigurationUid member
         * @since S60 5.0
         * @return UID
         */
        IMPORT_C TInt ConfigurationUid() const;
        
        /**
         * Sets value of the iTags member
         * @since S60 5.0
         * @param aTag Tags
         */
        IMPORT_C void SetTagsL( const TDesC& aTag );
        
        /**
         * Gets value of the iTags member
         * @since S60 5.0
         * @return tags descriptor
         */
        IMPORT_C const TDesC& Tags() const;
        
    private:

        /**
        * C++ default constructor.
        */
        ChspsResource();

        /**
        * By default Symbian 2nd phase constructor is private.
        */
        void ConstructL();

    private:     // Data
        
        // Not used?
        ThspsLockingPolicy iLockingPolicy;
        
        // Resource type
        ThspsResourceType iResourceType;
        
        // Language of the resource
        TLanguage iLanguage;
        
        // Identifies the configuration that owns the resource
        TInt iConfigurationUid;
        
        // Filename without the extension
        TDesC* iResourceID;
        
        // Full path and name
        TDesC* iFileName;
                
        TDataType iMimeType;
        
        // Tags seperated with a colon
        TDesC* iTags;

         // Reserved pointer for future extension
        TAny* iReserved;
    };

#endif      // hspsRESOURCE_H   
// End of File