creator/engine/inc/creator_modulebase.h
branchRCL_3
changeset 21 b3cee849fa46
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/creator/engine/inc/creator_modulebase.h	Tue Aug 31 15:15:20 2010 +0300
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+
+
+#ifndef __CREATOR_MODULEBASE_H__
+#define __CREATOR_MODULEBASE_H__
+
+#include <e32base.h>
+
+#include "engine.h"
+#include "creator_traces.h"
+
+// Dictionary uids for each Creator module.
+// Dictionaries are for storing item identifiers created by Creator.
+// Item identifiers are for enabling deletion of only items created by Creator. 
+const TUid KUidDictionaryUidContacts         = { 0x00 };
+const TUid KUidDictionaryUidContactGroups    = { 0x01 };
+const TUid KUidDictionaryUidCalendar         = { 0x02 };
+const TUid KUidDictionaryUidBrowserBookmarks = { 0x03 };
+const TUid KUidDictionaryUidFiles            = { 0x04 };
+const TUid KUidDictionaryUidLogs             = { 0x05 };
+const TUid KUidDictionaryUidMessages         = { 0x06 };
+const TUid KUidDictionaryUidMailbox          = { 0x07 };
+const TUid KUidDictionaryUidIAP              = { 0x08 };
+const TUid KUidDictionaryUidIMPS             = { 0x09 };
+const TUid KUidDictionaryUidNotes            = { 0x0A };
+const TUid KUidDictionaryUidLandmarks        = { 0x0B };
+const TUid KUidDictionaryUidBrowserSavedPg   = { 0x0C };
+const TUid KUidDictionaryUidBrowserBookmarkF = { 0x0D };
+const TUid KUidDictionaryUidBrowserSavedPgF  = { 0x0E };
+
+class CCreatorEngine;
+class MCreatorModuleBaseParameters;
+class CCommandParser;
+
+_LIT(KSavingText, "Saving");
+_LIT(KDeletingText, "Deleting");
+
+class MCreatorModuleBase
+    {
+public:
+
+private:
+    // constructs the module, add "iEngine = aEngine" and other construction stuff to the body
+    virtual void ConstructL( CCreatorEngine* aEngine ) = 0;
+
+public:
+    // this one is called when user select some features directly from menu, not running a script
+    // should call CreateRandomData() function
+    // returns ETrue when success, EFalse when user has cancelled
+    virtual TBool AskDataFromUserL( TInt aCommand ) = 0;
+    virtual void DeleteAllL() = 0;
+    virtual void DeleteAllCreatedByCreatorL() = 0;
+    };
+
+
+class CCreatorModuleBase : public CBase, public MCreatorModuleBase, public MUIObserver
+    {
+
+public:
+    enum TCreatorModuleStatus
+        {
+        ECreatorModuleDelete = 0, 
+        ECreatorModuleStart
+        };
+    
+    CCreatorModuleBase()
+        {
+        iEntriesToBeCreated = 1; 
+        }
+    
+    virtual TBool AskDataFromUserL(TInt aCommand)
+        {
+        iCommand = aCommand;
+        return EFalse;// will finish user interaction and engine will shutdown modules
+        }
+    
+    virtual void QueryDialogClosedL(TBool aPositiveAction, TInt aUserData)
+        {
+        LOGSTRING("Creator: CCreatorModuleBase::QueryDialogClosedL");
+        
+        if( aPositiveAction == EFalse )
+            {
+            iEngine->ShutDownEnginesL();
+            return;
+            }
+        const TDesC* showText = &KSavingText;
+        TBool finished(EFalse);
+        TBool retval(ETrue);
+        switch(aUserData)
+            {
+            case ECreatorModuleDelete:
+                showText = &KDeletingText;
+                iEntriesToBeCreated = 1;
+                finished = ETrue;
+                break;
+            case ECreatorModuleStart:
+                finished = ETrue;
+                break;
+            default:
+                //some error
+                retval = EFalse;
+                break;
+            }
+        if( retval == EFalse )
+            {
+            iEngine->ShutDownEnginesL();
+            }
+        else if( finished )
+            {
+            // add this command to command array
+            iEngine->AppendToCommandArrayL(iCommand, NULL, iEntriesToBeCreated);
+            // started exucuting commands
+            iEngine->ExecuteFirstCommandL( *showText );
+            }
+        }
+
+protected:
+    // constructs the module, add "iEngine = aEngine" and other construction stuff to the body
+    virtual void ConstructL(CCreatorEngine* aEngine)
+        {
+        iEngine = aEngine;
+        };
+    
+protected:
+    CCreatorEngine* iEngine;
+    TInt iCommand;
+    TInt iEntriesToBeCreated;
+    TInt iDummy;
+    };
+
+class MCreatorModuleBaseParameters
+    {
+    // a base class for the parameters, no default implementation
+    
+    public:
+    	enum TParseParams
+    	{
+    	EParamNone = 0,
+    	ECalendarMeeting,
+    	ECalendarMemo,
+    	ECalendarAnniv,
+    	ECalendarTodo
+    	};
+    
+public:
+	virtual void ParseL(CCommandParser* /*aParser*/, TParseParams /*aCase = 0*/) = 0;
+
+	
+    };
+    
+// Following struct represents the parameters that links for example contact groups
+// to contac-sets.
+typedef struct 
+    {
+    TInt iLinkId; // ID
+    TInt iLinkAmount; // Amount of elements in linked set 
+    } TLinkIdParam;
+
+        
+class CCreatorModuleBaseParameters : public CBase, public MCreatorModuleBaseParameters
+        {
+        public:
+        virtual void ParseL(CCommandParser* /*aParser*/, TParseParams /*aCase = 0*/){};
+        virtual TInt ScriptLinkId() const {return -1;};
+        virtual void SetScriptLinkId(TInt) {};
+        // a base class for the parameters, no default implementation
+        };
+        
+
+
+
+#endif  // __CREATOR_MODULEBASE_H__
+