web_plat/feeds_engine_api/inc/FeedsInterface.h
changeset 0 dd21522fd290
child 37 cb62a4f66ebe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web_plat/feeds_engine_api/inc/FeedsInterface.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,472 @@
+/*
+* 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 the License "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:  The client side connection to the FeedsSever.
+ *
+*/
+
+
+#ifndef FEED_INTERFACE_H
+#define FEED_INTERFACE_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <ApEngineconsts.h>
+//#include "Transaction.h"
+#include "FeedsEntity.h"
+#include "FeedAttributes.h"
+#include "FolderAttributes.h"
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CTransaction;
+
+// CLASS DECLARATION
+
+class MFeedsApiObserver
+    {
+public:
+    /**
+     * This function is called by Ctransaction class whenever
+     * request is completed
+     * 
+     * @param aTrans Pointer to current transaction class
+     * @param aEver event related to this call.
+     */
+     virtual void RequestCompleted(CTransaction* aTrans, TInt aEvent) = 0;
+
+    /**
+     * Request to create a network connection.
+     *
+     * @param aConnectionPtr A pointer to the new connection. If NULL, the 
+     *                       proxy filter will automatically create a network connection.
+     * @param aSockSvrHandle A handle to the socket server.
+     * @param aNewConn A flag if a new connection was created. If the 
+     *                 connection is not new, proxy filter optimization will not 
+     *                 read the proxy again from CommsBd.
+     * @param aBearerType The bearer type of the new connection
+     * @return void
+     */
+     virtual void
+    		NetworkConnectionNeededL(TInt* aConnectionPtr,
+    				TInt& aSockSvrHandle, TBool& aNewConn,
+    				TApBearerType& aBearerType) = 0 ;
+
+    };
+
+/**
+ *  The CTransaction observer interface.
+ *
+ */
+class MTransactionObserver
+    {
+public:
+    // New Methods
+    /**
+     * Requests the observer to send a command to the server.
+     *
+     * @param aFunction The function number identifying the request. 
+     * @param aArgs A set of up to 4 arguments and their types to be passed to the server.
+     * @param aStatus The request status object used to contain the completion status of the request.
+     * @return void.
+     */
+    virtual void SendAsyncCommand(TInt aFunction, const TIpcArgs& aArgs,
+    		TRequestStatus& aStatus) const = 0;
+
+    /**
+     * Notifies the observer that the request is completed.
+     *
+     * @param aRequestHandler The request handler.
+     * @param aStatus The result code of the request.
+     * @return void.
+     */
+    virtual void RequestHandlerCompleted(CTransaction& aRequestHandler,
+    		TInt aStatus) = 0;
+
+    /**
+     * Cancels all the commands
+     */
+    virtual void CancelAllCommandsL() = 0;
+
+    /**
+     * Request to create a network connection.
+     *
+     * @since 3.1
+     * @param aConnectionPtr A pointer to the new connection. If NULL, the 
+     *                       proxy filter will automatically create a network connection.
+     * @param aSockSvrHandle A handle to the socket server.
+     * @param aNewConn A flag if a new connection was created. If the 
+     *                 connection is not new, proxy filter optimization will not 
+     *                 read the proxy again from CommsBd.
+     * @param aBearerType The bearer type of the new connection
+     * @return void
+     */
+    virtual void
+            NetworkConnectionNeededL(TInt* aConnectionPtr,
+                TInt& aSockSvrHandle, TBool& aNewConn,
+                TApBearerType& aBearerType) = 0;
+    };
+
+struct TFeedsServerSetting
+    {
+    TBool iAutoUpdate;
+    TInt  iAutoUpdateFreq;
+    TUint iAutoUpdateAP;
+    TBool iAutoUpdateWhileRoaming;
+    };
+/**
+ *  The client side interface to the FeedsServer.
+ *
+ *  \b Library: FeedsEngine.lib
+ *
+ */
+
+class RFeedsInterface : public RSessionBase, public MTransactionObserver
+    {
+public:
+    /**
+     * C++ default constructor.
+     */
+    IMPORT_C RFeedsInterface(MFeedsApiObserver& aObserver,
+            TInt aFolderListId = 0);
+
+public:
+    // From RSessionBase
+    /**
+     * Connects to the server
+     *
+     * @return Error/success code
+     */
+    IMPORT_C TInt Connect();
+
+    /**
+     * Closes the connection to the server
+     *
+     * @return Error/success code
+     */
+    IMPORT_C void Close();
+
+    /**
+     * Returns the implementation's version.
+     *
+     * @return The version.
+     */
+    IMPORT_C TVersion Version() const;
+
+public: // From MRequestHandlerObserver
+    /**
+     * Requests the observer to send a command to the server.
+     *
+     * @param aFunction The function number identifying the request. 
+     * @param aArgs A set of up to 4 arguments and their types to be passed to the server.
+     * @param aStatus The request status object used to contain the completion status of the request.
+     * @return void.
+     */
+    virtual void SendAsyncCommand(TInt aFunction, const TIpcArgs& aArgs,
+    		TRequestStatus& aStatus) const;
+
+    /**
+     * Notifies the observer that the request is completed.
+     *
+     * @param aRequestHandler The request handler.
+     * @param aStatus The result code of the request.
+     * @return void.
+     */
+    virtual void RequestHandlerCompleted(CTransaction& aTransaction,
+    		TInt aStatus);
+
+    /**
+     * Request the FeedsServer to cancel all activities that can be cancelled.
+     */
+    virtual void CancelAllCommandsL();
+
+public:
+    /**
+     * Fetches Root folder (Asynchronous) Observer will be called when request completes
+     *
+     * @return TInt (KErrNone if successful).
+     */
+
+    IMPORT_C TInt GetRootFolderL();
+    /**
+     * Add new Feed/Folder into feedserver (Sync)
+     *
+     * @param aType (EFolder/EFeed)
+     * @param aArgs Map cotaining various values
+     * @param aParent Under which folder this object should be added
+     * 
+     * @return void.
+     */
+
+    IMPORT_C void AddL(TFeedsEntityType aType, const CFeedsMap& aArgs,const CFeedsEntity& aParent);
+    /**
+     * Deletes passed feeds/folders from list
+     *
+     * @param aFeedsEntities array of feedsentities to be deleted
+     * @return void.
+     */
+
+    IMPORT_C void DeleteL(const RPointerArray<const CFeedsEntity> aFeedsEntities);
+
+    /**
+    * Print tables of database.
+    *
+    * @return void
+    */
+    IMPORT_C void RFeedsInterface::DebugPrintTablesL();
+
+    /**
+    * Disconnect connection provided by client for manual update.
+    *
+    * @return void
+    */
+    IMPORT_C void RFeedsInterface::DisconnectManualUpdateConnectionL();
+
+     /**
+     * Fetches feed (async)
+     *
+     * @param aEntity Feed to be fetched.
+     * @param aForceUpdate If ETrue the feed is always updated before returning it.
+     * @param aNoCache If ETrue the feed isn't placed in database after updating.
+     * @return void.
+     */
+
+    IMPORT_C TInt FetchL(const CFeedsEntity& aEntity, TBool aForceUpdate, TBool aNoCache);
+    /**
+     * Fetches feed (async)
+     *
+     * @param aEntity Feed to be fetched.
+     * @param aForceUpdate If ETrue the feed is always updated before returning it.
+     * @param aNoCache If ETrue the feed isn't placed in database after updating.
+     * @return TInt.
+     */
+
+    IMPORT_C TInt FetchL(const TDesC& aUrl, TBool aForceUpdate, TBool aNoCache);
+     
+    /**
+     * Update Given list of folders(or All if only RootFolder is provided)
+     *
+     * @param aFeedsArray array of feeds to be updated
+     * @return void
+     */
+
+    IMPORT_C TInt UpdateL(const RPointerArray<const CFeedsEntity>& aFeedsArray);
+
+    //	TInt Find(TFeedsEntityType aType
+
+    /**
+     * Fetches settings from server.
+     *
+     * @param aFeedsSettings This Struct will contain settings if request is successful
+     * @return void 
+     */
+
+    IMPORT_C TInt GetSettingsL(TFeedsServerSetting& aFeedsSetting, TBool aAsync = ETrue); 
+
+     /**
+     * Sets new setting.
+     *
+     * @param aFeedsSettings new settings.
+     * @return void
+     */
+
+    IMPORT_C void SetSettingsL(const TFeedsServerSetting& aFeedsSetting);
+
+     /**
+     * Sets up a notifier to execute when the settings change.
+     *
+     * @return void.
+     */
+
+     IMPORT_C void RFeedsInterface::WatchSettingsL();
+
+     /**
+     * Export passed folder in OPML file
+     *
+     * @param aFeedsArray array of folder/feed to be exported
+     * @param aFileName name of opml file.
+     * @return void.
+     */
+
+    IMPORT_C void ExportFoldersL(const RPointerArray<const CFeedsEntity>& aFeedsArray,const TDesC& aFileName);
+    /**
+     * Imports OPML file
+     *
+     * @param aFileName name of OPML file to be imported
+     * @return void.
+     */
+
+    IMPORT_C void ImportOPMLL(const TDesC& aFileName);
+    /**
+     * Cancels all pending requests
+     *
+     * @return void.
+     */
+
+    IMPORT_C void CancelAllL();
+    /**
+     * Moves list of folders/feeds to diff folder.
+     *
+     * @param aSourceFolders array of folder/feeds to be moved
+     * @param aDestinationFolder 
+     * @return void.
+     */
+
+    IMPORT_C void MoveToFolderL(const RPointerArray<const CFeedsEntity>& aSourceFolders,const CFeedsEntity& aDestinationFolder);
+    /**
+     * Changes index of folders.
+     *
+     * @param aFolderItems array of folderitem whose index are to be changed
+     * @param aIndex new index
+     * @return void
+     */
+
+    IMPORT_C void MoveL(const RPointerArray<const CFeedsEntity>& aFolderItems,TInt aIndex);
+
+    /**
+     * Sets attribute (Changes will be sent to feedserver)
+     *
+     * @param aFeedEntity Feed/Folder/Item whose attributes are to be changed
+     * @param aNewValues map containing new attribute values.
+     * @return void.
+     */
+
+    IMPORT_C TInt SetAttributeL(const CFeedsEntity& aFeedEntity, const CFeedsMap& aNewValues);
+    /**
+     * Returns Root folder
+     *
+     * @return pointer to CFeedsEntity (rootfolder)
+     */
+
+    IMPORT_C CFeedsEntity* RootFolder();
+    /**
+     * Fetches currently fetched feed
+     *
+     * @return pointer to CFeedsEntity (current feed)
+     */
+
+    IMPORT_C CFeedsEntity* Feed();
+    /**
+     * Sets notifier for folder list changes
+     *
+     * @return void
+     */
+
+    IMPORT_C void WatchFolderListL();
+    /**
+     * Uses aFeed attribute to change correponding feed attributes in aRootFolder tree
+     *
+     * @return TInt (KErrNone if successful).
+     */
+    TBool UpdateFeed(CFeedsEntity* aRootFolder,CFeedsEntity* aFeed);
+
+    /**
+     * Searches CFeedsEntity pertaining to aFeedId
+     *
+     * @param aFeedId (feed id to be searched)
+     * @param aSearch folder/feed under which search will be performed.
+     * @return TInt (KErrNone if successful).
+     */
+
+    IMPORT_C CFeedsEntity* SearchFeed(TInt aFeedId,CFeedsEntity* aSearch);
+
+    /**
+     * Request the feeds server to update the feed's item status. 
+     *
+     * @since 7.1
+     * @param aItemIds The id's of the items to update.
+     * @param aItemStatus The new item status.
+     * @return void
+     */
+     IMPORT_C void UpdateFeedItemStatusL(const RArray<TInt>& aItemIds,
+                const RArray<TFeedItemStatus>& aItemStatus, TInt aUnreadCount);
+
+    /**
+     * return currently fetched settings. 
+     *
+     * @since 7.1
+     * @return TFeedsServerSetting.
+     */   
+     IMPORT_C TFeedsServerSetting Settings();
+
+public:
+    /**
+     * Request to create a network connection.
+     *
+     * @param aConnectionPtr A pointer to the new connection. If NULL, the 
+     *                       proxy filter will automatically create a network connection.
+     * @param aSockSvrHandle A handle to the socket server.
+     * @param aNewConn A flag if a new connection was created. If the 
+     *                 connection is not new, proxy filter optimization will not 
+     *                 read the proxy again from CommsBd.
+     * @param aBearerType The bearer type of the new connection
+     * @return void
+     */
+    void NetworkConnectionNeededL( TInt* aConnectionPtr, TInt& aSockSvrHandle,
+    		TBool& aNewConn, TApBearerType& aBearerType );
+
+    /**
+     * Calls synchronous SendReceive on current session
+     *
+     * @param aFunction The function number identifying the request. 
+     * @param aArgs A set of up to 4 arguments and their types to be passed to the server.
+     * @return void.
+     */
+    TInt SendReceiveSync(TInt aFunction, const TIpcArgs& aArgs) const;
+
+private:
+    /**
+     * Gets unique transaction (Factory function)
+     *
+     * @return new CTransaction
+     */
+
+    CTransaction* GetTransactionL();
+    /**
+     * Create the server thread/process
+     *
+     * @since 3.1
+     * @return An error code.
+     */
+    TInt StartServer();
+
+private:
+    MFeedsApiObserver& iObserver;
+
+    CFeedsEntity* iRootFolder;
+    CFeedsEntity* iCurrentFeed;
+
+    RPointerArray<CTransaction> iActiveTransaction;
+    TInt iFolderListId;
+    TInt iIsConnected;
+    TFeedsServerSetting iSetting;
+
+private:
+    //Used for creating connection
+    TBool iConnectionReady;
+    TInt iConnectionPtr;
+    TInt iSockSvrHandle;
+    TBool iNewConn;
+    TApBearerType iBearerType;
+
+    };
+    
+#endif  // FEED_INTERFACE_H
+// End of File
\ No newline at end of file