--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenpluginsrv/inc/hspsodt.h Wed Sep 01 12:22:09 2010 +0100
@@ -0,0 +1,543 @@
+/*
+* 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: Class represents an ODT (Object Description Tree).
+*
+*/
+
+
+#ifndef hspsODT_H
+#define hspsODT_H
+
+#include <e32base.h>
+
+class RWriteStream;
+class RReadStream;
+class ChspsDomDocument;
+class ChspsResource;
+
+const TInt KArrayGranularity = 5;
+const TInt KHeaderDataLength = KMaxFileName;
+const TInt KMaxDescLength = 255;
+
+/**
+* Class represents an Object Description Tree of HSPS.
+* ODT is cabable of marshaling itself into HBufC8 descriptor and unmarshaling
+* from descriptor stream.
+* A Header is an ODT instance which has not internalized it's resources
+* nor it's DOM (XML payload).
+*
+* @lib hspsODT.lib
+* @since S60 5.0
+* @ingroup group_hspsodt
+*/
+class ChspsODT : public CBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ *
+ * @since S60 5.0
+ */
+ IMPORT_C static ChspsODT* NewL();
+
+ /**
+ * Two-phased constructor.
+ *
+ * @since S60 5.0
+ * @param aStreamData The read stream.
+ */
+ IMPORT_C static ChspsODT* NewLC( const TDesC8& aStreamData );
+
+ /**
+ * Destructor.
+ */
+ virtual ~ChspsODT();
+
+ public:
+ /**
+ * Externalizes the object.
+ *
+ * @since S60 5.0
+ * @param aStream The write stream.
+ */
+ IMPORT_C void ExternalizeL( RWriteStream& aStream) const;
+
+ /**
+ * Internalizes the object.
+ *
+ * @since S60 5.0
+ * @param aStream The read stream.
+ */
+ IMPORT_C void InternalizeL( RReadStream& aStream);
+
+ public: // New functions
+
+ /**
+ * Marshals the ODT header into descriptor stream.
+ *
+ * @since S60 5.0
+ * @return HBufC8* A descriptor object containing the ODT header.
+ */
+ IMPORT_C HBufC8* MarshalHeaderL() const;
+
+ /**
+ * Unmarshals the header information from the stream and returns
+ * ODT instance.
+ *
+ * @since S60 5.0
+ * @param aStreamData Descriptor stream containing the ODT header data.
+ * @return ChspsODT* An ODT object prefilled with the header information.
+ */
+ IMPORT_C static ChspsODT* UnMarshalHeaderLC( const TDesC8& aStreamData );
+
+ /**
+ * Unmarshals the header information from the stream and saves the data
+ * into same instance.
+ *
+ * @since S60 5.0
+ * @param aStreamData Descriptor stream containing the ODT header data.
+ */
+ IMPORT_C void UnMarshalHeaderL( const TDesC8& aStreamData );
+
+ /**
+ * Externalizes the ODT header.
+ *
+ * @since S60 5.0
+ * @param aStream The read stream.
+ */
+ IMPORT_C void ExternalizeHeaderL( RWriteStream& aStream ) const;
+
+ /**
+ * Internalizes the ODT header.
+ *
+ * @since S60 5.0
+ * @param aStream The read stream.
+ */
+ IMPORT_C void InternalizeHeaderL( RReadStream& aStream );
+
+ /**
+ * Adds a resource-object into ODT.
+ *
+ * @since S60 5.0
+ * @param aResource ChspsResource to add. ODT takes ownership.
+ */
+ IMPORT_C void AddResourceL( ChspsResource* aResource );
+
+ /**
+ * Checks duplicates.
+ *
+ * @since S60 5.0
+ * @param aResource ChspsResource to check.
+ * @return 0 if there were no duplicate resources, index otherwise.
+ */
+ TInt CheckResourceL( ChspsResource* aResource );
+
+ /**
+ * Deletes a resource from the ODT.
+ *
+ * @since S60 5.0
+ * @param aIndex Index of the resource to be deleted.
+ */
+ IMPORT_C void DeleteResourceL( TInt aIndex );
+
+ /**
+ * Deletes all resources from the ODT.
+ *
+ * @since S60 5.0
+ */
+ IMPORT_C void DeleteAllResources();
+
+ /**
+ * Gets a resource.
+ *
+ * @since S60 5.0
+ * @param aIndex Index of the resource to be retrieved.
+ * @return A ChspsResource-object to be accessed. Ownership remains.
+ */
+ IMPORT_C ChspsResource& ResourceL( TInt aIndex ) const;
+
+ /**
+ * Amount of resources in ODT.
+ *
+ * @since S60 5.0
+ * @return TInt Amount of elements.
+ */
+ IMPORT_C TInt ResourceCount() const;
+
+ /**
+ * Externalizes the Resource List.
+ *
+ * @since S60 5.0
+ * @param aStream The read stream.
+ */
+ IMPORT_C void ExternalizeResourceListL( RWriteStream& aStream ) const;
+
+ /**
+ * Internalizes the Resource List.
+ *
+ * @since S60 5.0
+ * @param aStream The read stream.
+ */
+ IMPORT_C void InternalizeResourceListL( RReadStream& aStream );
+
+
+ /**
+ * Set Uid of the application or interface, which uses the theme.
+ *
+ * @since S60 5.0
+ * @param aUid The root UID.
+ */
+ IMPORT_C void SetRootUid( TInt aUid );
+
+ /**
+ * Get RootUid.
+ *
+ * @since S60 5.0
+ * @return TInt The root UID.
+ */
+ IMPORT_C TInt RootUid() const;
+
+ /**
+ * Set providerUid.
+ *
+ * @since S60 5.0
+ * @param aUid The UID of the theme provider.
+ */
+ IMPORT_C void SetProviderUid( TInt aUid );
+
+ /**
+ * Get ProviderUid
+ *
+ * @since S60 5.0
+ * @return TInt The UID of the theme provider.
+ */
+ IMPORT_C TInt ProviderUid() const;
+
+ /**
+ * Set ThemeUid.
+ *
+ * @since S60 5.0
+ * @param aUid Theme UID.
+ */
+ IMPORT_C void SetThemeUid( TInt aUid );
+
+ /**
+ * Get ThemeUid.
+ *
+ * @since S60 5.0
+ * @return TInt Theme UID.
+ */
+ IMPORT_C TInt ThemeUid() const;
+
+ /**
+ * Set ProviderName.
+ *
+ * @since S60 5.0
+ * @param aName The name of the theme provider.
+ */
+ IMPORT_C void SetProviderNameL( const TDesC& aName );
+
+ /**
+ * Get ProviderName.
+ *
+ * @since S60 5.0
+ * @return TDesC& The name of the theme provider.
+ */
+ IMPORT_C const TDesC& ProviderName() const;
+
+ /**
+ * Set ThemeFullName.
+ *
+ * @since S60 5.0
+ * @param aName Themes' name.
+ */
+ IMPORT_C void SetThemeFullNameL( const TDesC& aName );
+
+ /**
+ * Get ThemeFullName.
+ *
+ * @since S60 5.0
+ * @return TDesC& The name of the theme.
+ */
+ IMPORT_C const TDesC& ThemeFullName() const;
+
+ /**
+ * Set ThemeShortName.
+ *
+ * @since S60 5.0
+ * @param aName Themes' short name.
+ */
+ IMPORT_C void SetThemeShortNameL( const TDesC& aName );
+
+ /**
+ * Get ThemeShortName
+ *
+ * @since S60 5.0
+ * @return TDesC& The short name of the theme.
+ */
+ IMPORT_C const TDesC& ThemeShortName() const;
+
+ /**
+ * Set ThemeVersion.
+ *
+ * @since S60 5.0
+ * @param aVersion Themes' version.
+ */
+ IMPORT_C void SetThemeVersionL( const TDesC& aVersion );
+
+ /**
+ * Get ThemeVersion.
+ * @since S60 5.0
+ * @return TDesC& The version of the theme.
+ */
+ IMPORT_C const TDesC& ThemeVersion() const;
+
+ /**
+ * Set OdtLanguage.
+ *
+ * @since S60 5.0
+ * @param aLanguage Themes' language.
+ */
+ IMPORT_C void SetOdtLanguage( TInt aLanguage );
+
+ /**
+ * Get OdtLanguage.
+ *
+ * @since S60 5.0
+ * @return TInt OdtLanguage.
+ */
+ IMPORT_C TInt OdtLanguage() const;
+
+ /**
+ * Set status flag-definitions for themes.
+ *
+ * @since S60 5.0
+ * @param aFlags Flags to be set.
+ */
+ IMPORT_C void SetFlags( TUint aFlags );
+
+ /**
+ * Get status flag-definitions for themes.
+ *
+ * @since S60 5.0
+ * @return TUint status flag-definitions.
+ */
+ IMPORT_C TUint Flags() const;
+
+ /**
+ * Get the DomDocument.
+ *
+ * @since S60 5.0
+ * @return ChspsDomDocument& Dom document.
+ */
+ IMPORT_C ChspsDomDocument& DomDocument() const;
+
+
+ /**
+ * Clones this ChspsODT.
+ *
+ * @since S60 5.0
+ * @return ChspsODT* pointer to the cloned ODT.
+ */
+ IMPORT_C ChspsODT* CloneL() const;
+
+ /**
+ * Clones given ODT to this ODT.
+ *
+ * @since S60 5.0
+ * @param aODT Source ODT.
+ */
+ IMPORT_C void CloneL( ChspsODT& aODT );
+
+ /**
+ * Clones the aDom and sets it as this ChspsODT's DomDocument.
+ *
+ * @since S60 5.0
+ * @param aDom Dom to be cloned.
+ */
+ IMPORT_C void CopyDomDocumentL( ChspsDomDocument& aDom );
+
+ /**
+ * Set configurationt type.
+ *
+ * @since S60 5.0
+ * @param aType Type.
+ */
+ IMPORT_C void SetConfigurationType( TUint aType );
+
+ /**
+ * Get configuration type.
+ *
+ * @since S60 5.0
+ * @return TUint configuration type.
+ */
+ IMPORT_C TUint ConfigurationType() const;
+
+ /**
+ * Set family.
+ * Identifies the resolution and user interface for which
+ * the resource/widget was designed for (e.g. vga, qhd_tch).
+ *
+ * @since S60 5.0
+ * @param aFamily Family mask (supported resolution bits set)
+ */
+ IMPORT_C void SetFamily( const TUint32 aFamilyMask );
+
+ /**
+ * Get family.
+ *
+ * @since S60 5.0
+ * @return The family mask
+ */
+ IMPORT_C TUint32 Family() const;
+
+ /**
+ * Set Widget instance count
+ *
+ * @since S60 5.0
+ * @param aMultiInstance multiinstance.
+ */
+ IMPORT_C void SetMultiInstance( TInt aMultiInstance );
+
+ /**
+ * Get Widget instance count
+ *
+ * @since S60 5.0
+ * @return TInt multiinstance.
+ */
+ IMPORT_C TInt MultiInstance() const;
+
+ /**
+ * Sets description of the widget
+ * @since S60 5.0
+ * @param aDesc Text
+ */
+ IMPORT_C void SetDescriptionL( const TDesC& aDesc );
+
+ /**
+ * Gets description of the widget
+ * @since S60 5.0
+ * @return text
+ */
+ IMPORT_C const TDesC& Description() const;
+
+ /**
+ * Sets path of the logo file
+ * @since S60 5.0
+ * @param aPath Path to the file
+ */
+ IMPORT_C void SetLogoFileL( const TDesC& aPath );
+
+ /**
+ * Gets path to the logo file
+ * @since S60 5.0
+ * @return path
+ */
+ IMPORT_C const TDesC& LogoFile() const;
+
+ /**
+ * Sets path of the preview file
+ * @since S60 5.0
+ * @param aPath Path to the file
+ */
+ IMPORT_C void SetPreviewFileL( const TDesC& aPath );
+
+ /**
+ * Gets path to the preview file
+ * @since S60 5.0
+ * @return path
+ */
+ IMPORT_C const TDesC& PreviewFile() const;
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ ChspsODT();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ private:
+ /**
+ * Helper to ODT cloning. Prevents duplicate code in two clone methods.
+ *
+ * @param aSource Source ODT
+ * @param aTarget Target ODT
+ */
+ static void CopyODTDataL( const ChspsODT& aSource, ChspsODT& aTarget );
+
+ /**
+ * Calculate header size in bytes.
+ *
+ * @return TInt Header size.
+ */
+ TInt HeaderSize() const;
+
+ private: // Data
+ // Identifies specific configuration
+ TUint iThemeUid;
+ HBufC* iProviderName;
+ HBufC* iThemeFullName;
+ HBufC* iThemeShortName;
+
+ // Revision number
+ HBufC* iThemeVersion;
+
+ // Description of the widget
+ HBufC* iDescription;
+
+ // Path to the logo file
+ HBufC* iLogoFile;
+
+ // Path to the preview file
+ HBufC* iPreviewFile;
+
+ // Family mask (bits for e.g. vga, qhd_tch etc resolutions)
+ TUint32 iFamilyMask;
+
+ // Configuration type
+ TUint iConfigurationType;
+
+ // Application or interface uid
+ TUint iRootUid;
+
+ // The publisher
+ TUint iProviderUid;
+
+ // ThspsThemeStatus
+ TUint iFlags;
+
+ // Language of the ODT instance
+ TInt iLanguage;
+
+ // Multiple instances allowed/not
+ TInt iMultiInstance;
+
+ // Pointer to list of unlocalized resources
+ CArrayPtrSeg<ChspsResource>* iResourceList;
+
+ ChspsDomDocument* iDomDocument;
+
+ // Reserved pointer for future extension
+ TAny* iReserved;
+ };
+
+#endif // hspsODT_H
+
+// End of File