diff -r 48060abbbeaf -r b3cee849fa46 creator/engine/inc/creator_modulebase.h --- /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 + +#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__ +