idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h
branchRCL_3
changeset 30 a5a39a295112
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h	Wed Sep 01 12:22:09 2010 +0100
@@ -0,0 +1,357 @@
+/*
+* Copyright (c) 2005-2007 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:  Plug-in main class
+*
+*/
+
+
+#ifndef WRTDATAPLUGIN_H
+#define WRTDATAPLUGIN_H
+
+// System includes
+
+// User includes
+#include <hscontentpublisher.h>
+#include <aicontentmodel.h>
+
+// Forward declarations
+class MAiContentObserver;
+class MAiContentItemIterator;
+class CWrtData;
+class CGulIcon;
+class CLiwDefaultMap;
+
+/**
+ *  @ingroup group_wrtdataplugin
+ *
+ *  Plug-in main class
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CWrtDataPlugin ) : public CHsContentPublisher
+    {    
+public:
+    // type definitions
+    
+     /**
+     * Plugin's network state.
+     */
+    enum TPluginNetworkStatus 
+        {
+        EUnknown, 
+        EOffline,
+        EOnline
+        };
+    
+    /**
+     * Plugin's state.
+     */
+    enum TPluginStates
+        {
+        EStopped,
+        EStarted,
+        EResume,
+        ESuspend    
+        };
+    
+    /**
+     * Content Items
+     */
+    enum TContentItem
+        {
+        EDefaultImage,
+        EDefaultText,
+        EImage1
+        };  
+        
+public:
+    // constructor and destructor
+
+    static CWrtDataPlugin* NewL();
+    
+    ~CWrtDataPlugin();
+
+private:
+    // constructors
+    
+    /**
+    * C++ constructor
+    */
+    CWrtDataPlugin();
+
+    /**
+    * 2nd phase constructor
+    */
+    void ConstructL();
+    
+public: 
+    // from CHsContentPublisher
+    
+    /**
+     * @see CHsContentPublisher
+     */
+    void Start( TStartReason aReason );
+
+    /**
+     * @see CHsContentPublisher
+     */    
+    void Stop( TStopReason aReason );
+    
+    /**
+     * @see CHsContentPublisher
+     */    
+    void Resume( TResumeReason aReason );
+    
+    /**
+     * @see CHsContentPublisher
+     */    
+    void Suspend( TSuspendReason aReason );
+    
+    /**
+     * @see CHsContentPublisher
+     */    
+    void SetOnline();
+    
+    /**
+     * @see CHsContentPublisher
+     */
+    void SetOffline();
+    
+    /**
+     * @see CHsContentPublisher
+     */    
+    void SubscribeL( MAiContentObserver& aObserver );
+    
+    /**
+     * @see CHsContentPublisher
+     */    
+    void ConfigureL( RAiSettingsItemArray& aSettings );
+    
+    /**
+     * @see CHsContentPublisher
+     */
+    void SetProperty( TProperty aProperty, TAny* aAny );
+    
+    /**
+     * @see CHsContentPublisher
+     */    
+    TAny* GetProperty( TProperty aProperty );
+    
+    /**
+     * @see CHsContentPublisher
+     */    
+    void HandleEvent( const TDesC& aEventName, const TDesC& aParam );
+
+public:
+
+    /**
+    * Gets the id of a content  
+    *
+    * @param aObjectId image or text id
+    * @return id of the content
+    */
+    TInt GetIdL( TDesC16& aObjectId );
+    
+    /**
+    * Gets the type of a specific content
+    *
+    * @param aObjectId image or text id
+    * @param aType type
+    * @return void
+    */
+    void GetTypeL( TDesC16& aObjectId, TDes16& aType );
+    
+    /**
+    * RefereshL a specific image of text in the widget
+    *
+    * @param aOperation operation performed
+	* @param aDataMap data map
+    * @return void
+    */
+    void RefreshL( TDesC16& aOperation, CLiwDefaultMap* aDataMap );
+    
+    /**
+    * Is plugin active to publish the data 
+    *
+    * @param void 
+    * @return boolean (ETrue/EFalse)
+    */
+    TBool IsActive() const;
+    
+    /**
+    * Is plugin stopped 
+    *
+    * @param void 
+    * @return boolean (ETrue/EFalse)
+    */
+    TBool IsStopped() const;    
+    
+    /**
+    * Publish a specific text of the widget  
+    *
+    * @param aObserver observer
+    * @param aContentId content model id
+    * @param aContentValue content value
+    * @return void
+    */
+    void PublishTextL( MAiContentObserver* aObserver, 
+        TInt aContentId, const TDesC16& aContentValue );
+
+    /**
+    * Publish a specific image of the widget  
+    *
+    * @param aObserver observer
+    * @param aContentId content model id
+    * @param aHandle image handle 
+    * @param aMaskHandle handle of the mask image
+    * @return void
+    */
+    void PublishImageL( MAiContentObserver* aObserver, 
+        TContentItem aContentId, TInt aHandle, TInt aMaskHandle );
+
+    /**
+    * Publish a specific image of the widget  
+    *
+    * @param aObserver observer
+    * @param aContentId content model id
+    * @param aPath image path / skin id pattern / mif id Pattern 
+    * @return void
+    */
+    void PublishImageL( MAiContentObserver* aObserver,
+            TContentItem aContentId, const TDesC16& aPath );
+    
+    /**
+    * Cleans a data from the widget
+    *
+    * @param aObserver observer
+    * @param aContentId content model id
+    * @return void
+    */
+    void Clean( MAiContentObserver* aObserver, 
+            TInt aContentId );
+
+   /**
+    * Shows the loading icon animation 
+    *
+    * @param aObserver observer
+    * @return void
+    */
+    void ShowLoadingIcon( MAiContentObserver* aObserver );
+
+    /**
+    * Hides the loading icon animation 
+    *
+    * @param aObserver observer
+    * @return void
+    */
+    void HideLoadingIcon( MAiContentObserver* aObserver );    
+	
+    /**
+     * CWrtData getter
+     * @return Pointer to CWrtData
+     */
+    CWrtData* Data() const;
+
+    /*
+     * Plugin's network status getter
+     * @return Pointer to Harvester status observer
+     */
+    TPluginNetworkStatus NetworkStatus() const;
+    
+    /**
+    * Creates initial data republishing timer if needed and starts it
+    */
+    void StartTimer();
+
+private:
+    // new functions
+    
+    /**
+    * Publishes widget's initial texts and images
+    *
+    * @param void
+    * @return void
+    */
+    void PublishInitialDataL();
+        
+	/**
+	* Resolves skin item id and Mif id from pattern 
+	* skin( <majorId> <minorId> (<colourGroupId>) 
+	* mif(<MifFileName.mif> <bitmapId> <maskId>)
+	* 
+	* @param aPath  skin pattern / mif pattern value
+	* @param aItemId skin item id  
+	* @param aMifId  mif id 
+	* @param aMaskId  mask id 
+	* @param aFilename mif file name
+	* @return boolean (ETrue/EFalse)  
+	*/
+	TBool ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId,
+	        TInt& aMifId, TInt& aMaskId, TDes& aFilename );
+
+    /**
+    * Cancels transaction in case of leave
+    *
+    * @param aObserver Transaction target
+    */
+    static void CancelTransaction( TAny* aObserver );
+  
+    /**
+    * Cancels initial data republishing timer
+    */
+    void CancelTimer();
+
+    /**
+    * Stops and deletes initial data republishing timer. 
+    */
+    void StopTimer();
+
+    /**
+    * Timeout callback from timer. Used if publishing of initial data has failed.
+    *
+    * @param aPtr Contains pointer to instance of this class 
+    */
+    static TInt Timeout( TAny* aPtr );
+
+
+private: 
+    // data
+
+    /** Iterator for plugin content, owned */
+    MAiContentItemIterator* iContent;
+    /** Array of content observers, owned */
+    RPointerArray< MAiContentObserver > iObservers;     
+    /** Number of data in the content model */
+    TInt iDataCount;     
+    /** Dynamic content model, owned */ 
+    TAiContentItem* iContentModel;  
+    /** Reference array for Published text, owned */    
+    RPointerArray< HBufC > iDataArray;  
+    /** Service API Data Subscriber, owned */   
+    CWrtData* iData;    
+    /* References array for published images, owned */     
+    RArray< CGulIcon* > iIconArray;    
+    /** Plugin's network status */
+    TPluginNetworkStatus iNetworkStatus;    
+    /** Plugin state */    
+    TPluginStates iPluginState;
+    /** File server session handle, owned */
+    RFs iRfs;
+    /** Timer for initial data republishing, owned */
+    CPeriodic* iTimer;
+    };
+
+#endif // WRTDATAPLUGIN_H
+
+