diff -r 000000000000 -r dd21522fd290 browserutilities/feedsengine/FeedsServer/Server/inc/ImportFeedsTask.h --- /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 +#include + +#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 iParentStack; + RArray iSiblingIndexStack; + + TBool iFoundRootFolder; + + RArray iFolderItemIds; + RArray iFeedIds; + + + private: + + friend class CFeedsServerSession; + + }; + +#endif // IMPORT_FEEDS_TASK_H + +// End of File