browserutilities/feedsengine/FeedsServer/Server/inc/ImportFeedsTask.h
changeset 0 dd21522fd290
child 36 0ed94ceaa377
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserutilities/feedsengine/FeedsServer/Server/inc/ImportFeedsTask.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,236 @@
+/*
+* Copyright (c) 2005 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:  A task to import Feeds from an OPML file.
+*
+*/
+
+
+#ifndef IMPORT_FEEDS_TASK_H
+#define IMPORT_FEEDS_TASK_H
+
+
+// INCLUDES
+#include <e32base.h>
+#include <f32file.h>
+
+#include "Task.h"
+#include "PackedFolder.h"
+#include "PackedAttributes.h"
+#include "FeedsDatabase.h"
+#include "FolderAttributes.h"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CIdle;
+class RFile;
+
+// CLASS DECLARATION
+
+
+/**
+*  The ImportFeedsTask's observer.
+*
+*  \b Library: FeedsEngine.lib
+*
+*  @since 3.2
+*/
+class MImportFeedsTaskObserver
+    {
+    public: 
+        /**
+        * Notifies the observer that the task is about to start a lengthy 
+        * operation.  In response the observer could display somekind of 
+        * status indicator.
+        *
+        * @since 3.2
+        * @return void.
+        */
+        virtual void StartImportWait() = 0;
+
+        /**
+        * Called upon completion of the task.
+        *
+        * @since 3.2
+        * @param aStatusCode The completion status of the request.
+        * @return Void
+        */
+        virtual void ImportCompleted(TInt aStatusCode) = 0;
+    };
+
+
+enum TImportFeedsTaskStates
+    {
+    EImportOpenOPMLFile,
+    EImportPreparePackedFolder,
+    EImportIntoDB,
+    EImportDone
+    };
+    
+
+/**
+*  A task to import Feeds.
+*
+*  \b Library: FeedsEngine.lib
+*
+*  @since 3.2
+*/
+class CImportFeedsTask: public CTask
+    {
+    public:  // Constructors and destructor
+        /**
+        * Two-phased constructor.
+        */
+        static CImportFeedsTask* NewL(CFeedsServer& aFeedsServer, MImportFeedsTaskObserver& aObserver, const RMessage2& aMessage);
+
+        /**
+        * Destructor.
+        */        
+        virtual ~CImportFeedsTask();
+        
+    public:  // From CTask
+        /**
+        * Starts the task.
+        *
+        * @since 3.2
+        * @return Void
+        */
+        virtual void StartTaskL();
+        
+
+    private:
+        /**
+        * C++ default constructor.
+        */
+        CImportFeedsTask(CFeedsServer& aFeedsServer, MImportFeedsTaskObserver& aObserver, const RMessage2& aMessage);
+        
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+	private:
+	
+        /**
+        * Callback function for CIdle task
+        *
+        * @since 3.2
+        * @param aPtr The this pointer.
+        * @return TBool - ETrue if callback has to be called again, EFalse if nomore calls has to be made
+        */        
+        static TBool StartImportStateMachine(TAny *aPtr);
+	
+        /**
+        * Opens the OPML file name
+        *
+        * @since 3.2
+        * @return Void.
+        */	
+        void OpenOPMLFileL();
+
+        /**
+        * Creates the packed folder by parsing the OPML file
+        *
+        * @since 3.2
+        * @return Void.
+        */	
+		void PreparePackedFolderL();
+		
+        /**
+        * Starts importing the packed folder into DB
+        *
+        * @since 3.2
+        * @return Void.
+        */	
+		void ImportIntoDBL();
+		
+        /**
+        * Import the packed folder into DB
+        *
+        * @since 3.2
+        * @return Void.
+        */	
+		void ImportFoldersL();
+
+        /**
+        * Cancel the ongoing OPML import task
+        *
+        * @since 3.2
+        * @return Void.
+        */	
+		void CleanupImportTaskL();
+
+        /**
+        * Callback function for import task completion
+        *
+        * @since 3.2
+        * @param aPtr The this pointer.
+        * @return Void.
+        */	
+		static void ReleaseImportTablesCallback(TAny *ptr);
+		
+        /**
+        * Closes all the OPML import related tables
+        *
+        * @since 3.2
+        * @return Void.
+        */	
+		void ReleaseImportTables();
+
+    private:
+
+   		TInt						iImportState;
+   		MImportFeedsTaskObserver&	iObserver;
+		const RMessage2& 			iMessage;
+        CIdle*						iIdle;
+        TBool						iMoreToAdd;
+
+		TInt						iFolderListId;
+		TBool						iClearFolderList;
+
+		RFs 						iRFs;
+		RFile						iImportFile;
+
+		HBufC*						iFullImportFileName;
+		TFileName					iDispImportFileName;
+
+		CPackedFolder*				iPackedFolder;
+		CFeedsDatabase*				iFeedsDatabase;
+		
+		TBool						iDBTransactInited;
+		
+	    RArray<TInt>        		iParentStack;
+	    RArray<TInt>        		iSiblingIndexStack;
+		
+		TBool						iFoundRootFolder;
+		
+		RArray<TInt>				iFolderItemIds;
+		RArray<TInt>				iFeedIds;
+		
+		
+	private:
+	
+		friend class CFeedsServerSession;		
+        
+    };
+    
+#endif      // IMPORT_FEEDS_TASK_H
+            
+// End of File