data/publisherif/inc/hspublisherimpl.h
changeset 0 b856a9924bbc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/data/publisherif/inc/hspublisherimpl.h	Wed Jun 02 13:22:05 2010 +0300
@@ -0,0 +1,267 @@
+/*
+* Copyright (c) {Year(s)} {Copyright owner}.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* {Name} {Company} ? Initial contribution
+*
+* Contributors:
+* {Name} {Company} ? {{Description of contribution}}
+*
+* Description:
+* {{Description of the file}}
+*
+*/
+
+
+#ifndef __HSPUBLISHERIMPL_H__
+#define __HSPUBLISHERIMPL_H__
+
+// System includes 
+#include <e32base.h>    
+#include <liwcommon.h>
+
+// User includes
+
+// Forward declarations
+class MHsWidgetObserver;
+class CLiwServiceHandler;
+class CLiwCriteriaItem;
+class CLiwGenericParamList;
+class MLiwInterface;
+class CFbsBitmap;
+class CTransaction;
+
+// Constants
+
+// Class declaration
+NONSHARABLE_CLASS( CHsPublisherImpl ) : public CBase,
+    public MLiwNotifyCallback
+    {
+public:
+    // constructors and destructor
+
+    /**
+     * Constructor
+     * 
+     * @param aObserver Widget observer interface.
+     * @param aEnablePersist ETrue if publisher wants to save published data to SQL database for later usage.
+     *        This option should be used with caution as it taxes runtime performance and resources.       
+     */
+    static CHsPublisherImpl* NewL( 
+        MHsWidgetObserver& aObserver,        
+        TBool aEnablePersist );
+            
+    /**
+     * Constructor
+     * 
+     * @param aObserver Widget observer interface.
+     * @param aEnablePersist ETrue if publisher wants to save published data to SQL database for later usage.
+     *        This option should be used with caution as it taxes runtime performance and resources.           
+     */
+    static CHsPublisherImpl* NewLC( 
+        MHsWidgetObserver& aObserver,        
+        TBool aEnablePersist );
+        
+    /**
+     * Destructor
+     */
+    ~CHsPublisherImpl();
+
+private:
+    // from MLiwNotifyCallback
+    
+    /**
+    * Handles notifications caused by an asynchronous Execute*CmdL call
+    * or an event.
+    *
+    * @param aCmdId The service command associated to the event.
+    * @param aEventId Occured event, see LiwCommon.hrh.
+    * @param aEventParamList Event parameters, if any, as defined per
+    *        each event.
+    * @param aInParamList Input parameters, if any, given in the
+    *        related HandleCommmandL.
+    * @return Error code for the callback.
+    */
+    TInt HandleNotifyL( TInt aCmdId, TInt aEventId,               
+        CLiwGenericParamList& aEventParamList,
+        const CLiwGenericParamList& aInParamList );
+    
+public:
+    // new functions
+           
+    /**
+     * Publishes text to a <text> element in the widget.
+     * 
+     * @param aWidgetId Widget Id identifying the widget instance.
+     * @param aElementId Element id identifying the text element in the widget.
+     * @param aText Text to set.          
+     */
+    void PublishTextL( 
+        const TDesC& aWidgetId, 
+        const TDesC8& aElementId, 
+        const TDesC& aText );
+
+    /**
+     * Publishes image to an <image> element in the widget.
+     * 
+     * @param aWidgetId Widget Id identifying the widget instance.
+     * @param aElementId Element id identifying the image element in the widget.
+     * @param aImage Image to set.
+     * @param aMask Mask to set.          
+     */    
+    void PublishImageL( 
+        const TDesC& aWidgetId, 
+        const TDesC8& aElementId,
+        const CFbsBitmap* aImage,
+        const CFbsBitmap* aMask );
+
+    /**
+     * Publishes image to an <image> element in the widget.
+     * 
+     * @param aWidgetId Widget Id identifying the widget instance.
+     * @param aElementId Element id identifying the image element in the widget.
+     * @param aImageHandle Handle to Image to set.     
+     * @param aMaskHandle Handle to mask to set.
+     */        
+    void PublishImageL( 
+        const TDesC& aWidgetId,      
+        const TDesC8& aElementId, 
+        TInt aImageHandle, 
+        TInt aMaskHandle );
+
+    /**
+     * Publishes image to an <image> element in the widget.
+     * 
+     * @param aWidgetId Widget Id identifying the widget instance.
+     * @param aElementId Element id identifying the image element in the widget.
+     * @param aSource Source for the image. Supported source formats are:
+     * - Filesystem path, i.e. _LIT( KMyImagePath, "c:\\data\\Installs\\MyWidget\\image.jpg");
+     * - skin(<majorId> <minorId>), i.e. _LIT( KMySkinImage, "skin(270501603 8586)" );
+     * - mif(<MifFileName.mif> <bitmapId> <maskId>), i.e. _LIT( KMyMifImage, "mif(c:\\data\\Installs\\MyWidget\\mymwidget.mif 16384 16385" );
+     */            
+    void PublishImageL( 
+        const TDesC& aWidgetId,      
+        const TDesC8& aElementId,
+        const TDesC& aSource );
+       
+    /**
+     * Publishes stream to a <data> element in widget.
+     * 
+     * @param aWidgetId Widget Id identifying the widget instance.
+     * @param aElementId Element id identifying the data element in the widget.
+     * @param aStream The stream as descriptor.              
+     */                
+    void PublishStreamL( 
+        const TDesC& aWidgetId,    
+        const TDesC8& aElementId, 
+        const TDesC8& aStream );
+    
+    /**
+     * Cleans published text from a <text> element.
+     * 
+     * @param aWidgetId Widget Id identifying the widget instance.
+     * @param aElementId Element id identifying the data element in the widget.     
+     */
+    void CleanTextL( const TDesC& aWidgetId,    
+        const TDesC8& aElementId );
+
+    /**
+     * Cleans published image from an <image> element.
+     * 
+     * @param aWidgetId Widget Id identifying the widget instance.
+     * @param aElementId Element id identifying the data element in the widget.     
+     */    
+    void CleanImageL( const TDesC& aWidgetId,    
+        const TDesC8& aElementId );
+    
+    /**
+     * Starts a publish transaction. Transaction must be committed  
+     * with CommitTransaction method.
+     * 
+     * @param aWidget Widget Id identifying the transaction for widget instance.
+     * @return System wide error code.
+     */                    
+    void StartTransactionL( 
+        const TDesC& aWidgetId );
+    
+    /**
+     * Commits the publish transaction and flushes changes to Homescreen.
+     * 
+     * @param aWidget Widget Id identifying the transaction for the widget instance.     
+     */                
+    void CommitTransactionL( 
+        const TDesC& aWidgetId );
+        
+private:
+    // new functions
+    
+    /** 
+     * Attaches to CPS service.
+     */
+    void AttachL();
+    
+    /**
+     * Detaches from CPS servive.
+     */
+    void DetachL();
+        
+    /**
+     * Process CPS notification and delegates it to MHsWidgetObserver.
+     * 
+     * @param aWidgetId The widget instance from the event was initiated.
+     * @param aEvent Event which maps to Content Model.
+     */
+    void ProcessEvent( 
+        const TDesC& aWidgetId, 
+        const TDesC8& aEvent ) const;    
+    
+    /**
+     * Gets transaction for aWidgetId.
+     * 
+     * @param aWidgetId The widget instance to use in transaction look-up.
+     * @return Transaction, NULL if not found.
+     */
+    CTransaction* Transaction( const TDesC& aWidgetId ) const;
+    
+private:
+    // private constructors
+    
+    /**
+     * C++ constructor
+     */
+    CHsPublisherImpl( 
+        MHsWidgetObserver& aObserver,        
+        TBool aEnablePersist );
+    
+    /**
+     * 2nd phase constructor
+     */
+    void ConstructL();
+
+private:
+    // data
+    
+    /** HS Widget observer, not owned */
+    MHsWidgetObserver& iObserver;        
+    /** SAPI service handler, owned */
+    CLiwServiceHandler* iServiceHandler;    
+    /** CPS SAPI service, owned */
+    CLiwCriteriaItem* iCpsService;    
+    /** Cps interface, owned */
+    MLiwInterface* iCpsInterface;
+    /** Publish transactions, owned */
+    RPointerArray< CTransaction > iTransactions;
+    /** Attached succesfully to CPS service */
+    TBool iCpServiceAvailable;
+    /** Flag Enable persist */
+    TBool iEnablePersist;
+    };
+
+#endif // __HSPUBLISHERIMPL_H__
+
+// End of file