diff -r 000000000000 -r d6fe6244b863 creator/inc/creator_model.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creator/inc/creator_model.h Tue Feb 02 00:17:27 2010 +0200 @@ -0,0 +1,455 @@ +/* +* 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 "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 __CREATORENGINE_H__ +#define __CREATORENGINE_H__ + + +#include "creator_appui.h" +#include "creator.hrh" + +#include "creator_std.h" +#include "creator_scriptentry.h" +#include "creator_modulebase.h" +#include "creator_browser.h" +#include "creator_calendar.h" +#include "creator_phonebookbase.h" +#include "creator_note.h" +#include "creator_log.h" +#include "creator_connectionmethodbase.h" +#include "creator_mailbox.h" +#include "creator_imps.h" +#include "creator_message.h" +#include "creator_landmark.h" +#include "creator_randomdataparser.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include //TFrameInfo + +class CCreatorAppUi; +class TCommand; +class CCreatorBrowser; +class CCreatorCalendarBase; +class CCreatorNotepad; +class CCreatorLogs; +class CCreatorAccessPoints; +class CCreatorMailboxes; +class CCreatorIMPS; +class CCreatorFiles; +class CCreatorMessages; +class CCreatorLandmarks; +class CDictionaryFileStore; +class CImageDecoder; +class CFbsBitmap; +class CBitmapScaler; + +// Common constant for undefined integer value: +const TInt KUndef = KErrNotFound; + +class CCreatorEngine : public CActive, public MProgressDialogCallback + { +public: + + enum TRandomStringType + { + EFirstName = 0, + ESurname, + ECompany, + EAddress, + EJobTitle, + EPhoneNumber, + EGroupName, + EMeetingReason, + EMeetingPlace, + EMemoText, + EAnniversaryReason, + EToDoText, + EReminderText, + EMessageSubject, + EMessageText, + ECity, + ECountry, + EPostcode, + EState, + EPobox, + EPrefix, + ESuffix, + ELandmarkName, + ELandmarkDescription + }; + + +// note! changing order will cause regression in other modules + + enum TTestDataPath + { + EJPEG_25kB = 0, + EJPEG_200kB, + EJPEG_500kB, + EPNG_15kB, + EGIF_2kB, + ERNG_1kB, + EMIDI_10kB, + EWAVE_20kB, + EAMR_20kB, + EExcel_15kB, + EWord_20kB, + EPowerPoint_40kB, + EText_10kB, + EText_70kB, + E3GPP_70kB, + EMP3_250kB, + EAAC_100kB, + ERM_95kB, + EBMP_25kB, + EHTML_20kB, + EJAD_1kB, + EJAR_10kB, + EJP2_65kB, + EMP4_200kB, + EMXMF_40kB, + ERAM_1kB, + ESVG_15kB, + ESWF_15kB, + ETIF_25kB, + EVCF_1kB, + EVCS_1kB, + ESISX_10kB, + EWMA_50kB, + EWMV_200kB, + ESavedDeck_1kB, + LAST_FILE_ID//When you add new items to enum, add them before last item, so random number generations does not need to be updated also + }; + + enum TRandomDateType + { + EDatePast, + EDateFuture + }; + +public: + static CCreatorEngine* NewL(CCreatorAppUi* aAppUi); + ~CCreatorEngine(); + +private: + CCreatorEngine(); + void ConstructL(CCreatorAppUi* aAppUi); + void Init(); + void RunL(); + TInt RunError(TInt aError); + void DoCancel(); + + void ExecuteFirstCommandL(const TDesC& aText); + void ExecuteCommand(); + void StartEnginesL(); + void ShutDownEnginesL(); + void CheckForMoreCommandsL(); + void DialogDismissedL(TInt aButtonId); //from MProgressDialogCallback + + TBool IsDeleteCommand( TInt aCommand ); + + TInt ReadRandomDataL(const TRandomStringType aRandomStringType, + const TInt aResourceId, + const TDesC& aFilename, + const CCreatorRandomDataParser::TRandomDataType aRandomDataType); + void GenerateSourceImageFileL( const TTestDataPath aFileType, const TDesC& aFileName ); + void GenereteSourceTextFileL( const TDesC& aFileName, TInt aSize ); + +public: + void ExecuteOptionsMenuCommandL(TInt aCommand); + void RunScriptL(); + TInt RunScriptL(const TDesC& aScriptFile); + + void AppendToCommandArrayL(TInt aCommand, CCreatorModuleBaseParameters* aParameters, TInt aNumberOfEntries = 1); + TInt CommandArrayCount(); + + TBool EntriesQueryDialogL(TInt& aNumberOfEntries, const TDesC& aPrompt, TBool aAcceptsZero=EFalse); + TBool TimeQueryDialogL(TTime& aTime, TInt aResourceId); + TBool YesNoQueryDialogL(const TDesC& aPrompt); + + TPtrC TestDataPathL(enum TTestDataPath aTestDataPath); + TPtrC RandomSoundFileL(); // Returns temporary path, which will be removed on shutdown + TPtrC RandomPictureFileL(); // Returns temporary path, which will be removed on shutdown + TPtrC CreateRandomSoundFileL(); // Copies file to new location and returns the new path + TPtrC CreateSoundFileL(TTestDataPath aId); // Copies file to new location and returns the new path + + void CopyFileL(const TFileName& aSourceFile, const TFileName& aTargetFile, TBool aOverwrite = EFalse ); + /* + * Gets attacment file id based on the file id string + * @return Attachment file id + * @param aAttachmentIdStr Attachment file id string + */ + TInt GetAttachmentIdL( const TDesC& aAttachmentIdStr ) const; + + TUint32 GetDefaultIAPL(); + TUint32 AccessPointNameToIdL(const TDesC& aAPName, TBool aAnyIfNotFound = EFalse ); + + TPtrC RandomString(enum TRandomStringType aRandomStringType); + TInt RandomNumber(TInt aRange); + TInt RandomNumber(TInt aMin, TInt aMax); + TTime RandomDate(TRandomDateType type, TInt aMinDays = 0, TInt aMaxDays = 360 ); + TTime RandomDate(TTime baseTime, TRandomDateType type, TInt aMinDays = 0, TInt aMaxDays = 360); + TTime RandomTime(TTime baseTime, TRandomDateType type, TInt aMinHours=0, TInt aMaxHours=24, TInt aMinMinutes=0, TInt aMaxMinutes=60 ); + CDesCArrayFlat* SoundFilesL(); + CDesCArrayFlat* PictureFilesL(); + + HBufC* CreateEmailAddressLC(); + HBufC* CreateHTTPUrlLC(); + HBufC* CreateRandomStringLC(TInt aStrLen); + + HBufC* CreateEmailAddressLC( + const TDesC& firstname, + const TDesC& lastname, + const TDesC& domain, + const TDesC& country ) const; + + HBufC* CreateUrlLC( + const TDesC& protocol, + const TDesC& prefix, + const TDesC& domain, + const TDesC& country) const; + + void SetDefaultPathForFileCommandL(TInt aCommand, TFileName& aPath); + + TBool GetRandomDataFilenameL(TDes& aFilename); + TBool GetRandomDataFromFileL(const TDesC& aFilename); + void CancelComplete(); + CDictionaryFileStore* FileStoreLC(); + void ReadEntryIdsFromStoreL( RArray& aEntryIds, const TUid aModuleUid ); + void WriteEntryIdsToStoreL( RArray& aEntryIds, const TUid aModuleUid ); + void ReadEntryIdsFromStoreL( RArray& aEntryIds, const TUid aModuleUid ); + void WriteEntryIdsToStoreL( RArray& aEntryIds, const TUid aModuleUid ); + void RemoveStoreL( const TUid aModuleUid ); + +private: + // needed by the engine itself + RTimer iTimer; + CEikonEnv* iEnv; + CCreatorAppUi* iAppUi; + TInt iCurrentEntry; + TInt iEntriesToBeCreated; + TInt iFailedCommands; + + CDesCArrayFlat* iSoundFileArray; + CDesCArrayFlat* iPictureFileArray; + CCommandArray* iCommandArray; + RPointerArray iParameterArray; + // progress bar + CAknProgressDialog* iProgressDialog; + CEikProgressInfo* iProgressInfo; + + // for the random data generator + TInt64 iSeed; + + class TStringArrayPtr + { + public: + TStringArrayPtr(TRandomStringType aType, CDesCArray* aPtr) + { + iStringType = aType; + iArrayPtr = aPtr; + }; + TRandomStringType iStringType; + CDesCArray* iArrayPtr; + }; + + RArray iStringArrays; + + // modules + CCreatorBrowser* iBrowser; + CCreatorCalendarBase* iCalendar; + CCreatorPhonebookBase* iPhonebook; + CCreatorNotepad* iNotepad; + CCreatorLogs* iLogs; + CCreatorConnectionSettingsBase* iAccessPoints; + CCreatorMailboxes* iMailboxes; + CCreatorIMPS* iIMPS; + CCreatorFiles* iFiles; + CCreatorMessages* iMessages; + CCreatorLandmarks* iLandmarks; + + // options menu command home module + MCreatorModuleBase* iUsedOptionsMenuModule; + + HBufC* iTempPath; + + RPointerArray iAllocatedFilePaths; + TBool iUserCancelled; + + // For generating missing bitmaps + HBufC8* iBitmapData; + CFbsBitmap* iBitmap; + CFbsBitmap* iScaledBitmap; + CImageDecoder* iDecoder; + TFrameInfo iFrameinfo; + CImageEncoder* iEncoder; + CFrameImageData* iFrameImageData; + CBitmapScaler* iScaler; + +public: + + }; + +// this class contains a command which will be executed +class TCommand + { +public: + TInt iCommandId; + CCreatorModuleBaseParameters* iParameters; +public: + TCommand(TInt aCommandId, CCreatorModuleBaseParameters* aParameters); + ~TCommand(); + + }; + + +// utility class for waiting for asychronous requests +class CAsyncWaiter : public CActive + { +public: + static CAsyncWaiter* NewL( TInt aPriority = EPriorityStandard ); + static CAsyncWaiter* NewLC( TInt aPriority = EPriorityStandard ); + ~CAsyncWaiter(); + + void StartAndWait(); + TInt Result() const; + +private: + CAsyncWaiter( TInt aPriority ); + + // from CActive + void RunL(); + void DoCancel(); + +private: + CActiveSchedulerWait iWait; + TInt iError; + }; + + +/* + * Maps file id string (file name) to TTestDataPath (file id) and TCreatorIds (command id) + */ +// File ids: + + _LIT(K3GPP_70KB, "3GPP-70kB"); + _LIT(KAAC_100KB, "AAC-100kB"); + _LIT(KAMR_20KB, "AMR-20kB"); + _LIT(KXLS_15KB, "XLS-15kB"); + _LIT(KGIF_2KB, "GIF-2kB"); + _LIT(KJPEG_200KB, "JPEG-200kB"); + _LIT(KJPEG_25KB, "JPEG-25kB"); + _LIT(KJPEG_500KB, "JPEG-500kB"); + _LIT(KMIDI_10KB, "MIDI-10kB"); + _LIT(KMP3_250KB, "MP3-250kB"); + _LIT(KPNG_15KB, "PNG-15kB"); + _LIT(KPPT_40KB, "PPT-40kB"); + _LIT(KRM_95KB, "RM-95kB"); + _LIT(KRNG_1KB, "RNG-1kB"); + _LIT(KTXT_10KB, "TXT-10kB"); + _LIT(KTXT_70KB, "TXT-70kB"); + _LIT(KWAV_20KB, "WAV-20kB"); + _LIT(KDOC_20KB, "DOC-20kB"); + _LIT(KSWF_15KB, "SWF-15kB"); + _LIT(KJAD_1KB, "JAD-1kB"); + _LIT(KJAR_10KB, "JAR-10kB"); + _LIT(KTIF_25KB, "TIF-25kB"); + _LIT(KMXMF_40KB, "MXMF-40kB"); + _LIT(KBMP_25KB, "BMP-25kB"); + _LIT(KJP2_25KB, "JP2-25kB"); + _LIT(KSVG_15KB, "SVG-15kB"); + _LIT(KHTML_20KB, "HTML-20kB"); + _LIT(KVCF_1KB, "VCF-1kB"); + _LIT(KVCS_1KB, "VCS-1kB"); + _LIT(KMP4_200KB, "MP4-200kB"); + _LIT(KSISX_10KB, "SISX-10kB"); + _LIT(KRAM_1KB, "RAM-1kB"); + _LIT(KDECK_1KB, "DECK-1kB"); + _LIT(KWMA_50KB, "WMA-50kB"); + _LIT(KWMV_200KB, "WMV-200kB"); + +class FileMapping + { + public: + FileMapping(const TDesC& aFileName, TInt aFileId, TInt aCommandId ); + const TDesC& FileName() const; + TInt FileId() const; + TInt CommandId() const; + + private: + const TDesC& iFileName; + TInt iFileId; + TInt iCommandId; + }; + + /* + * This table contains the string <-> TTestDataPath mappings for the file types + */ + static FileMapping FileMap[] = + { + + FileMapping(K3GPP_70KB, CCreatorEngine::E3GPP_70kB, ECmdCreateFileEntry3GPP_70kB), + FileMapping(KAAC_100KB, CCreatorEngine::EAAC_100kB, ECmdCreateFileEntryAAC_100kB), + FileMapping(KAMR_20KB, CCreatorEngine::EAMR_20kB, ECmdCreateFileEntryAMR_20kB), + FileMapping(KXLS_15KB, CCreatorEngine::EExcel_15kB, ECmdCreateFileEntryXLS_15kB), + FileMapping(KGIF_2KB, CCreatorEngine::EGIF_2kB, ECmdCreateFileEntryGIF_2kB), + FileMapping(KJPEG_200KB, CCreatorEngine::EJPEG_200kB, ECmdCreateFileEntryJPEG_200kB), + FileMapping(KJPEG_25KB, CCreatorEngine::EJPEG_25kB, ECmdCreateFileEntryJPEG_25kB), + FileMapping(KJPEG_500KB, CCreatorEngine::EJPEG_500kB, ECmdCreateFileEntryJPEG_500kB), + FileMapping(KMIDI_10KB, CCreatorEngine::EMIDI_10kB, ECmdCreateFileEntryMIDI_10kB), + FileMapping(KMP3_250KB, CCreatorEngine::EMP3_250kB, ECmdCreateFileEntryMP3_250kB), + FileMapping(KPNG_15KB, CCreatorEngine::EPNG_15kB, ECmdCreateFileEntryPNG_15kB), + FileMapping(KPPT_40KB, CCreatorEngine::EPowerPoint_40kB, ECmdCreateFileEntryPPT_40kB), + FileMapping(KRM_95KB, CCreatorEngine::ERM_95kB, ECmdCreateFileEntryRM_95kB), + FileMapping(KRNG_1KB, CCreatorEngine::ERNG_1kB, ECmdCreateFileEntryRNG_1kB), + FileMapping(KTXT_10KB, CCreatorEngine::EText_10kB, ECmdCreateFileEntryTXT_10kB), + FileMapping(KTXT_70KB, CCreatorEngine::EText_70kB, ECmdCreateFileEntryTXT_70kB), + FileMapping(KWAV_20KB, CCreatorEngine::EWAVE_20kB, ECmdCreateFileEntryWAV_20kB), + FileMapping(KDOC_20KB, CCreatorEngine::EWord_20kB, ECmdCreateFileEntryDOC_20kB), + FileMapping(KBMP_25KB, CCreatorEngine::EBMP_25kB, ECmdCreateFileEntryBMP_25kB), + FileMapping(KDECK_1KB, CCreatorEngine::ESavedDeck_1kB, ECmdCreateFileEntryDeck_1kB), + FileMapping(KHTML_20KB, CCreatorEngine::EHTML_20kB, ECmdCreateFileEntryHTML_20kB), + FileMapping(KJAD_1KB, CCreatorEngine::EJAD_1kB, ECmdCreateFileEntryJAD_1kB), + FileMapping(KJAR_10KB, CCreatorEngine::EJAR_10kB, ECmdCreateFileEntryJAR_10kB), + FileMapping(KJP2_25KB, CCreatorEngine::EJP2_65kB, ECmdCreateFileEntryJP2_65kB), + FileMapping(KMP4_200KB, CCreatorEngine::EMP4_200kB, ECmdCreateFileEntryMP4_200kB), + FileMapping(KMXMF_40KB, CCreatorEngine::EMXMF_40kB, ECmdCreateFileEntryMXMF_40kB), + FileMapping(KRAM_1KB, CCreatorEngine::ERAM_1kB, ECmdCreateFileEntryRAM_1kB), + FileMapping(KSVG_15KB, CCreatorEngine::ESVG_15kB, ECmdCreateFileEntrySVG_15kB), + FileMapping(KSWF_15KB, CCreatorEngine::ESWF_15kB, ECmdCreateFileEntrySWF_15kB), + FileMapping(KTIF_25KB, CCreatorEngine::ETIF_25kB, ECmdCreateFileEntryTIF_25kB), + FileMapping(KVCF_1KB, CCreatorEngine::EVCF_1kB, ECmdCreateFileEntryVCF_1kB), + FileMapping(KVCS_1KB, CCreatorEngine::EVCS_1kB, ECmdCreateFileEntryVCS_1kB), + FileMapping(KSISX_10KB, CCreatorEngine::ESISX_10kB, ECmdCreateFileEntrySISX_10kB), + FileMapping(KWMA_50KB, CCreatorEngine::EWMA_50kB, ECmdCreateFileEntryWMA_50kB), + FileMapping(KWMV_200KB, CCreatorEngine::EWMV_200kB, ECmdCreateFileEntryWMV_200kB) + }; + +#endif // __CREATORENGINE_H__ +