diff -r 48060abbbeaf -r b3cee849fa46 creator/src/creator_model.cpp --- a/creator/src/creator_model.cpp Thu Aug 19 09:55:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2554 +0,0 @@ -/* -* 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: -* -*/ - - - -#include //For Math - -#include "creator_model.h" -#include "creator_traces.h" -#include "creator_factory.h" -#include "creator_scriptparser.h" -#include "creator_appui.h" -#include "creator_app.h" // KUidCreatorApp -#include "creator_file.h" -#if(!defined __SERIES60_30__ && !defined __SERIES60_31__) - #include "creator_contactsetcache.h" -#endif - -#include -#include -#include -#include - -_LIT(KTempPathDrive, "d"); -_LIT(KTempPath, ":\\Creator\\"); -_LIT(KSavingText, "Saving"); -_LIT(KDeletingText, "Deleting"); -const TInt KRegisterDrive = EDriveC; -_LIT(KRegisterFileName, "creator_created_items.dat"); - - -// --------------------------------------------------------------------------- - -CCreatorEngine* CCreatorEngine::NewL(CCreatorAppUi* aAppUi) - { - LOGSTRING("Creator: CCreatorEngine::NewL"); - CCreatorEngine* self = new(ELeave) CCreatorEngine; - CleanupStack::PushL(self); - self->ConstructL(aAppUi); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------------------------- - -CCreatorEngine::CCreatorEngine() -: -CActive(0) -{} - -// --------------------------------------------------------------------------- - -void CCreatorEngine::ConstructL(CCreatorAppUi* aAppUi) - { - LOGSTRING("Creator: CCreatorEngine::ConstructL"); - - iEnv = CEikonEnv::Static(); - User::LeaveIfError(iTimer.CreateLocal()); - - iAppUi = aAppUi; - - // these are needed by the random data generator - TTime now; - now.HomeTime(); - iSeed=now.Int64(); - - iTempPath = HBufC::NewL(KTempPathDrive().Length() + KTempPath().Length()); - iTempPath->Des().Copy(KTempPathDrive); - iTempPath->Des().Append(KTempPath); - - GetRandomDataFromFileL(KNullDesC); - - CActiveScheduler::Add(this); - - } - -// --------------------------------------------------------------------------- - -CCreatorEngine::~CCreatorEngine() - { - LOGSTRING("Creator: CCreatorEngine::~CCreatorEngine"); - - Cancel(); - - for( TInt i = 0; i < iStringArrays.Count(); ++i ) - { - delete iStringArrays[i].iArrayPtr; - } - iStringArrays.Close(); - iAllocatedFilePaths.ResetAndDestroy(); - iAllocatedFilePaths.Close(); - iTimer.Close(); - - delete iPictureFileArray; - delete iSoundFileArray; - delete iTempPath; - delete iFrameImageData; - delete iEncoder; - delete iScaler; - delete iDecoder; - delete iScaledBitmap; - delete iBitmap; - delete iBitmapData; - } - -void CCreatorEngine::CopyFileL(const TFileName& aSourceFile, const TFileName& aTargetFile, TBool aOverwrite ) - { - if( !aOverwrite && ConeUtils::FileExists(aTargetFile)) - { - // File already exists - return; - } - - // Make sure that the path exists. Creates the directory if it does not exist already: - ConeUtils::EnsurePathExistsL(aTargetFile); - User::LeaveIfError(BaflUtils::CopyFile(CEikonEnv::Static()->FsSession(), aSourceFile, aTargetFile)); - } -// --------------------------------------------------------------------------- - -void CCreatorEngine::ExecuteFirstCommandL(const TDesC& aText) - { - LOGSTRING("Creator: CCreatorEngine::ExecuteFirstCommand"); - - // init the progress bar - iProgressDialog = new(ELeave)CAknProgressDialog((reinterpret_cast(&iProgressDialog)), ETrue); - iProgressDialog->SetCallback(this); - iProgressDialog->PrepareLC(R_PROGRESS_NOTE); - iProgressDialog->SetCurrentLabelL( EAknCtNote, aText ); - iProgressInfo = iProgressDialog->GetProgressInfoL(); - iProgressInfo->SetFinalValue( CommandArrayCount() ); - iProgressDialog->RunLD(); - iProgressDialog->MakeVisible( ETrue ); - - iFailedCommands = 0; - - // starts executing commands - ExecuteCommand(); - } - -// --------------------------------------------------------------------------- - -void CCreatorEngine::ExecuteCommand() - { - LOGSTRING("Creator: CCreatorEngine::ExecuteCommand"); - - // make sure the engine isn't active, should never happen - __ASSERT_ALWAYS(!IsActive(), User::Panic(_L("IsActive"), 500)); - - // execute a command after a very short delay (75ms) - iTimer.After(iStatus, 75); - SetActive(); - } - -// --------------------------------------------------------------------------- - -void CCreatorEngine::RunL() - { - LOGSTRING("Creator: CCreatorEngine::RunL"); - LOGSTRING2("Creator: CCreatorEngine::RunL iCommandId=%d", iCommandArray->At(iCurrentEntry).iCommandId); - - if ( iUserCancelled ) return; - - if (!iCommandArray->At(iCurrentEntry).iParameters) - { - LOGSTRING("Creator: CCreatorEngine::RunL - iParameters==NULL !"); - } - - // launch a command - - TCreatorIds cmd = (TCreatorIds)iCommandArray->At(iCurrentEntry).iCommandId; - switch( cmd ) - { - case ECmdCreateBrowserBookmarkEntries: { iBrowser->CreateBookmarkEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - case ECmdCreateBrowserBookmarkFolderEntries: { iBrowser->CreateBookmarkFolderEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - case ECmdCreateBrowserSavedPageEntries: { iBrowser->CreateSavedDeckEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - case ECmdCreateBrowserSavedPageFolderEntries: { iBrowser->CreateSavedDeckFolderEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - - case ECmdCreateCalendarEntryAppointments: { iCalendar->CreateAppointmentEntryL(iCommandArray->At(iCurrentEntry).iParameters); } break; - case ECmdCreateCalendarEntryEvents: { iCalendar->CreateEventEntryL(iCommandArray->At(iCurrentEntry).iParameters); } break; - case ECmdCreateCalendarEntryAnniversaries: { iCalendar->CreateAnniversaryEntryL(iCommandArray->At(iCurrentEntry).iParameters); } break; - case ECmdCreateCalendarEntryToDos: { iCalendar->CreateTodoEntryL(iCommandArray->At(iCurrentEntry).iParameters); } break; - case ECmdCreateCalendarEntryReminders: { iCalendar->CreateReminderEntryL(iCommandArray->At(iCurrentEntry).iParameters); } break; - - - case ECmdCreatePhoneBookEntryContacts: { iPhonebook->CreateContactEntryL(iCommandArray->At(iCurrentEntry).iParameters); } break; - case ECmdCreatePhoneBookEntryGroups: { iPhonebook->CreateGroupEntryL(iCommandArray->At(iCurrentEntry).iParameters); } break; - case ECmdCreatePhoneBookEntrySubscribedContacts: { iPhonebook->CreateSubscribedContactEntryL(iCommandArray->At(iCurrentEntry).iParameters); } break; - - case ECmdCreateMiscEntryNotes: { iNotepad->CreateNoteEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - - case ECmdCreateLogEntryMissedCalls: { iLogs->CreateMissedCallEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - case ECmdCreateLogEntryReceivedCalls: { iLogs->CreateReceivedCallEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - case ECmdCreateLogEntryDialledNumbers: { iLogs->CreateDialledNumberEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - - case ECmdCreateMiscEntryAccessPoints: { iAccessPoints->CreateConnectionSettingsEntryL(iCommandArray->At(iCurrentEntry).iParameters); } break; - case ECmdDeleteIAPs: { iAccessPoints->DeleteAllL(); } break; - case ECmdDeleteCreatorIAPs: { iAccessPoints->DeleteAllCreatedByCreatorL(); } break; - - case ECmdCreateMiscEntryLandmarks: { iLandmarks->CreateLandmarkEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - - case ECmdCreateMessagingEntryMailboxes: { iMailboxes->CreateMailboxEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - - #ifdef __PRESENCE - case ECmdCreateMiscEntryIMPSServers: { iIMPS->CreateIMPSServerEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - #endif - - case ECmdCreateMessagingEntryMessages: { iMessages->CreateMessageEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters), ETrue); } break; - case ECmdCreateMessagingEntryMessagesViaScript: { iMessages->CreateMessageEntryL(reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters)); } break; - - case ECmdCreateRandomEntrySMSInbox: - case ECmdCreateRandomEntrySMSDrafts: - case ECmdCreateRandomEntrySMSOutbox: - case ECmdCreateRandomEntrySMSSent: - case ECmdCreateRandomEntryMMSInbox: - case ECmdCreateRandomEntryMMSDrafts: - case ECmdCreateRandomEntryMMSOutbox: - case ECmdCreateRandomEntryMMSSent: - case ECmdCreateRandomEntryAMSInbox: - case ECmdCreateRandomEntryAMSDrafts: - case ECmdCreateRandomEntryAMSOutbox: - case ECmdCreateRandomEntryAMSSent: - case ECmdCreateRandomEntryEmailInbox: - case ECmdCreateRandomEntryEmailDrafts: - case ECmdCreateRandomEntryEmailOutbox: - case ECmdCreateRandomEntryEmailSent: - case ECmdCreateRandomEntryBIOInbox: - case ECmdCreateRandomEntryBIODrafts: - case ECmdCreateRandomEntryBIOOutbox: - case ECmdCreateRandomEntryBIOSent: - case ECmdCreateRandomEntryIRInbox: - case ECmdCreateRandomEntryIRDrafts: - case ECmdCreateRandomEntryIROutbox: - case ECmdCreateRandomEntryIRSent: - case ECmdCreateRandomEntryBTInbox: - case ECmdCreateRandomEntryBTDrafts: - case ECmdCreateRandomEntryBTOutbox: - case ECmdCreateRandomEntryBTSent: - { iMessages->CreateRandomMessageEntryL(iCommandArray->At(iCurrentEntry).iCommandId); } break; - - case ECmdCreateFileEntryEmptyFolder: - case ECmdCreateFileEntry3GPP_70kB: - case ECmdCreateFileEntryAAC_100kB: - case ECmdCreateFileEntryAMR_20kB: - case ECmdCreateFileEntryBMP_25kB: - case ECmdCreateFileEntryDeck_1kB: - case ECmdCreateFileEntryDOC_20kB: - case ECmdCreateFileEntryGIF_2kB: - case ECmdCreateFileEntryHTML_20kB: - case ECmdCreateFileEntryJAD_1kB: - case ECmdCreateFileEntryJAR_10kB: - case ECmdCreateFileEntryJP2_65kB: - case ECmdCreateFileEntryJPEG_200kB: - case ECmdCreateFileEntryJPEG_25kB: - case ECmdCreateFileEntryJPEG_500kB: - case ECmdCreateFileEntryMIDI_10kB: - case ECmdCreateFileEntryMP3_250kB: - case ECmdCreateFileEntryMP4_200kB: - case ECmdCreateFileEntryMXMF_40kB: - case ECmdCreateFileEntryPNG_15kB: - case ECmdCreateFileEntryPPT_40kB: - case ECmdCreateFileEntryRAM_1kB: - case ECmdCreateFileEntryRM_95kB: - case ECmdCreateFileEntryRNG_1kB: - case ECmdCreateFileEntrySVG_15kB: - case ECmdCreateFileEntrySWF_15kB: - case ECmdCreateFileEntryTIF_25kB: - case ECmdCreateFileEntryTXT_10kB: - case ECmdCreateFileEntryTXT_70kB: - case ECmdCreateFileEntryVCF_1kB: - case ECmdCreateFileEntryVCS_1kB: - case ECmdCreateFileEntryWAV_20kB: - case ECmdCreateFileEntryXLS_15kB: - case ECmdCreateFileEntrySISX_10kB: - case ECmdCreateFileEntryWMA_50kB: - case ECmdCreateFileEntryWMV_200kB: - { iFiles->CreateFileEntryL( reinterpret_cast(iCommandArray->At(iCurrentEntry).iParameters), iCommandArray->At(iCurrentEntry).iCommandId ); } break; - case ECmdDeleteContacts: - { - iPhonebook->DeleteAllL(); - break; - } - case ECmdDeleteContactGroups: - { - iPhonebook->DeleteAllGroupsL(); - break; - } - case ECmdDeleteCreatorContacts: - { - iPhonebook->DeleteAllCreatedByCreatorL(); - break; - } - case ECmdDeleteCreatorContactGroups: - { - iPhonebook->DeleteAllGroupsCreatedByCreatorL(); - break; - } - case ECmdDeleteCalendarEntries: - { - iCalendar->DeleteAllL(); - break; - } - case ECmdDeleteCreatorCalendarEntries: - { - iCalendar->DeleteAllCreatedByCreatorL(); - break; - } - case ECmdDeleteLogs: - { - iLogs->DeleteAllL(); - break; - } - case ECmdDeleteCreatorLogs: - { - iLogs->DeleteAllCreatedByCreatorL(); - break; - } - case ECmdDeleteMessages: - { - iMessages->DeleteAllL(); - break; - } - case ECmdDeleteCreatorMessages: - { - iMessages->DeleteAllCreatedByCreatorL(); - break; - } - case ECmdDeleteLandmarks: - { - iLandmarks->DeleteAllL(); - break; - } - case ECmdDeleteCreatorLandmarks: - { - iLandmarks->DeleteAllCreatedByCreatorL(); - break; - } - case ECmdDeleteMailboxes: - { - iMailboxes->DeleteAllL(); - break; - } - case ECmdDeleteCreatorMailboxes: - { - iMailboxes->DeleteAllCreatedByCreatorL(); - break; - } - case ECmdDeleteNotes: - { - iNotepad->DeleteAllL(); - break; - } - case ECmdDeleteIMPSs: - { - iIMPS->DeleteAllL(); - break; - } - case ECmdDeleteCreatorIMPSs: - { - iIMPS->DeleteAllCreatedByCreatorL(); - break; - } - case ECmdDeleteBrowserBookmarks: - { - iBrowser->DeleteAllBookmarksL(); - break; - } - case ECmdDeleteCreatorBrowserBookmarks: - { - iBrowser->DeleteAllBookmarksCreatedByCreatorL(); - break; - } - case ECmdDeleteBrowserBookmarkFolders: - { - iBrowser->DeleteAllBookmarkFoldersL(); - break; - } - case ECmdDeleteCreatorBrowserBookmarkFolders: - { - iBrowser->DeleteAllBookmarkFoldersCreatedByCreatorL(); - break; - } - case ECmdDeleteBrowserSavedPages: - { - iBrowser->DeleteAllSavedPagesL(); - break; - } - case ECmdDeleteCreatorBrowserSavedPages: - { - iBrowser->DeleteAllSavedPagesCreatedByCreatorL(); - break; - } - case ECmdDeleteBrowserSavedPageFolders: - { - iBrowser->DeleteAllSavedPageFoldersL(); - break; - } - case ECmdDeleteCreatorBrowserSavedPageFolders: - { - iBrowser->DeleteAllSavedPageFoldersCreatedByCreatorL(); - break; - } - case ECmdDeleteCreatorFiles: - { - iFiles->DeleteAllCreatedByCreatorL(); - break; - } - default: - User::Panic (_L("ExecuteOptionsMenuCommandL"), 205); - break; - } - - TRAP_IGNORE( CheckForMoreCommandsL() ); - - } - -CDesCArrayFlat* CCreatorEngine::PictureFilesL() - { - if( iPictureFileArray == 0 ) - { - _LIT(KImageFile, "JPEG*.jpg"); - _LIT(KImageFileDir, "C:\\Data\\"); - _LIT(KImageFileDir2, "Z:\\Data\\"); - iPictureFileArray = new (ELeave) CDesCArrayFlat(8); - TInt err = CreatorFileUtils::FindFilesRecursiveL(iPictureFileArray, KImageFile, KImageFileDir); - if( iPictureFileArray->Count() == 0 ) - { - err = CreatorFileUtils::FindFilesRecursiveL(iPictureFileArray, KImageFile, KImageFileDir2); - } - } - return iPictureFileArray; - } - -CDesCArrayFlat* CCreatorEngine::SoundFilesL() - { - if( iSoundFileArray == 0 ) - { - _LIT(KSoundFile, "*.aac"); - _LIT(KSoundFileDir, "Z:\\data\\Sounds\\"); - iSoundFileArray = new (ELeave) CDesCArrayFlat(8); - TInt err = CreatorFileUtils::FindFilesRecursiveL(iSoundFileArray, KSoundFile, KSoundFileDir); - } - return iSoundFileArray; - } -// --------------------------------------------------------------------------- - -TInt CCreatorEngine::RunError(TInt aError) - { - LOGSTRING2("Creator: CCreatorEngine::RunError %d", aError); - - iFailedCommands++; - - _LIT(KMessage, "Command error %d"); - TBuf<128> noteMsg; - noteMsg.Format(KMessage, aError); - iEnv->InfoMsg(noteMsg); - - TRAP_IGNORE( CheckForMoreCommandsL() ); - - return KErrNone; - } - -// --------------------------------------------------------------------------- - -void CCreatorEngine::CheckForMoreCommandsL() - { - LOGSTRING("Creator: CCreatorEngine::CheckForMoreCommandsL"); - if ( iUserCancelled ) return; - // update the progress bar - iProgressInfo->IncrementAndDraw(1); - - // check if we have more commands to be executed - if (iCurrentEntry >= CommandArrayCount() - 1) - { - LOGSTRING("Creator: CCreatorEngine::CheckForMoreCommandsL all done"); - - // all done, free resources and show a note - ShutDownEnginesL(); - - iProgressDialog->ProcessFinishedL(); - - if (iFailedCommands == 0) - { - _LIT(KMessage, "Done"); - - CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote; - note->ExecuteLD(KMessage); - } - else - { - _LIT(KMessage, "Done, %d commands failed"); - TBuf<128> noteMsg; - noteMsg.Format(KMessage, iFailedCommands); - - CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote; - note->ExecuteLD(noteMsg); - } - - iAppUi->RunScriptDone(); - - } - else - { - // maintain requests - iCurrentEntry++; - - LOGSTRING2("Creator: CCreatorEngine::CheckForMoreCommandsL iCurrentEntry=%d", iCurrentEntry); - - ExecuteCommand(); - } - } - -// --------------------------------------------------------------------------- - -// This callback function is called when cancel button of the progress bar was pressed -void CCreatorEngine::DialogDismissedL(TInt aButtonId) - { - LOGSTRING("Creator: CCreatorEngine::DialogDismissedL"); - - // check if cancel button was pressed - if (aButtonId == EAknSoftkeyCancel) - { - iUserCancelled = ETrue; - // cancel the active object, command executer - Cancel(); - - // delete parameters from the command array, otherwise there might be memory leaks - for (TInt i=iCurrentEntry; iAt(i).iParameters ) - delete iCommandArray->At(i).iParameters; - iCommandArray->At(i).iParameters = NULL; - } - - if ( iPhonebook && iPhonebook->IsActive() ) - { - // virtual phonebook is known to require asynchronous - // cancelling of operation - iPhonebook->CancelOperation(); - } - else if ( iDecoder ) - { - iDecoder->Cancel(); - // CancelComplete() will be called from GenerateSourceImageFileL - } - else if ( iScaler ) - { - iScaler->Cancel(); - // CancelComplete() will be called from GenerateSourceImageFileL - } - else if ( iEncoder ) - { - iEncoder->Cancel(); - // CancelComplete() will be called from GenerateSourceImageFileL - } - else - { - // free resources and show a note - ShutDownEnginesL(); - - CAknInformationNote* note = new (ELeave) CAknInformationNote; - note->ExecuteLD(_L("Cancelled")); - } - } - } - -// --------------------------------------------------------------------------- - -void CCreatorEngine::StartEnginesL() - { - LOGSTRING("Creator: CCreatorEngine::StartEnginesL"); - - // reset user cancel flag - iUserCancelled = EFalse; - - // start from the beginning - iCurrentEntry = 0; - - // we'll retrieve a correct number for this later - iEntriesToBeCreated = 0; - - // init the command array - __ASSERT_ALWAYS(!iCommandArray, User::Panic(_L("iCommandArray"), 701)); - iCommandArray = new(ELeave) CCommandArray(10000); - - // init all modules here - TInt err(KErrNone); - TRAP(err, iBrowser = CCreatorBrowser::NewL(this)); - TRAP(err, iCalendar = CCreatorInterimCalendar::NewL(this)); - TRAP(err, iPhonebook = (CCreatorPhonebookBase*)TCreatorFactory::CreatePhoneBookL(this)); - TRAP(err, iNotepad = CCreatorNotepad::NewL(this)); - TRAP(err, iLogs = CCreatorLogs::NewL(this)); - TRAP(err, iAccessPoints = (CCreatorConnectionSettingsBase*)TCreatorFactory::CreateConnectionSettingsL(this)); - TRAP(err, iMailboxes = CCreatorMailboxes::NewL(this)); - TRAP(err, iFiles = CCreatorFiles::NewL(this)); - TRAP(err, iMessages = CCreatorMessages::NewL(this)); - TRAP(err, iLandmarks = CCreatorLandmarks::NewL(this)); - - #ifdef __PRESENCE - TRAP(err, iIMPS = CCreatorIMPS::NewL(this)); - #endif - - - -#if(!defined __SERIES60_30__ && !defined __SERIES60_31__) - // Initialize contact-set cache: - ContactLinkCache::InitializeL(); -#endif - // ... - // ... - // ... - - } -// --------------------------------------------------------------------------- - -void CCreatorEngine::ShutDownEnginesL() - { - LOGSTRING("Creator: CCreatorEngine::ShutDownEnginesL"); - - - // delete all modules here and free resources which aren't anymore needed - - - #ifdef __PRESENCE - delete iIMPS; - iIMPS = NULL; - #endif - - delete iMessages; - iMessages = NULL; - delete iFiles; - iFiles = NULL; - delete iMailboxes; - iMailboxes = NULL; - delete iAccessPoints; - iAccessPoints = NULL; - delete iLogs; - iLogs = NULL; - delete iNotepad; - iNotepad = NULL; - delete iPhonebook; - iPhonebook = NULL; - delete iCalendar; - iCalendar = NULL; - delete iBrowser; - iBrowser = NULL; - delete iLandmarks; - iLandmarks = NULL; - - // ... - // ... - // ... - - - // now delete the command array - delete iCommandArray; - iCommandArray = NULL; - - - iParameterArray.ResetAndDestroy(); - iParameterArray.Close(); - - - // clear temp drive - CFileMan* fileMan = CFileMan::NewL( iEnv->FsSession() ); - CleanupStack::PushL( fileMan ); - fileMan->RmDir( iTempPath->Des() ); - CleanupStack::PopAndDestroy(); //fileMan - -#if(!defined __SERIES60_30__ && !defined __SERIES60_31__) - // Cleanup the contact-set cache: - ContactLinkCache::DestroyL(); -#endif - - } - -// --------------------------------------------------------------------------- - -void CCreatorEngine::DoCancel() - { - LOGSTRING("Creator: CCreatorEngine::DoCancel"); - - iTimer.Cancel(); - } - -// --------------------------------------------------------------------------- - -void CCreatorEngine::RunScriptL() - { - LOGSTRING("Creator: CCreatorEngine::RunScriptL"); - - // startup modules (also inits the command array): - StartEnginesL(); - - // use the command parser module to init the command array from a script file - CCommandParser* commandParser = CCommandParser::NewLC(this); - RFile scriptFile; - TBool ret = commandParser->OpenScriptL(scriptFile); - CleanupClosePushL(scriptFile); - if( ret ) - { - // wait dialog - CAknGlobalNote* waitDialog = CAknGlobalNote::NewLC(); - waitDialog->SetSoftkeys( R_AVKON_SOFTKEYS_CANCEL ); - TInt dialogId = waitDialog->ShowNoteL( EAknGlobalWaitNote, _L("Parsing") ); - - TInt parseErr( KErrNone ); - TRAPD( parserErr, - CCreatorScriptParser* scriptParser = CCreatorScriptParser::NewLC(this); - scriptParser->ParseL(scriptFile); - parseErr = scriptParser->GetError(); - CleanupStack::PopAndDestroy( scriptParser ); - ); - waitDialog->CancelNoteL( dialogId ); - CleanupStack::PopAndDestroy( waitDialog ); - User::LeaveIfError( parserErr ); - - if(parseErr != KErrNone) - { - // show error note - CAknErrorNote* note = new (ELeave) CAknErrorNote; - _LIT(KErrMsg, "Parser error: %d"); - TBuf<32> msgBuf; - msgBuf.Format(KErrMsg, parseErr); - note->ExecuteLD(msgBuf); - CleanupStack::PopAndDestroy(); //commandParser - ShutDownEnginesL(); - return; - } - } - CleanupStack::PopAndDestroy( &scriptFile ); - CleanupStack::PopAndDestroy( commandParser ); - - // start executing commands if commands in the command array - if (CommandArrayCount() > 0) - { - ExecuteFirstCommandL( KSavingText ); - } - else - { - ShutDownEnginesL(); - } - - } -/* -void CCreatorEngine::RunScriptL() - { - LOGSTRING("Creator: CCreatorEngine::RunScriptL"); - - // startup modules (also inits the command array): - StartEnginesL(); - - // use the command parser module to init the command array from a script file - CCommandParser* commandParser = CCommandParser::NewLC(this); - commandParser->OpenScriptL(); - - CleanupStack::PopAndDestroy(); //commandExecuter - - // start executing commands if commands in the command array - if (CommandArrayCount() > 0) - { - ExecuteFirstCommandL(KSavingText); - } - else - { - ShutDownEnginesL(); - } - - } - -*/ - -// --------------------------------------------------------------------------- - -TInt CCreatorEngine::RunScriptL(const TDesC& aScriptFile) - { - LOGSTRING("Creator: CCreatorEngine::RunScriptL"); - - // startup modules (also inits the command array): - StartEnginesL(); - - RFile scriptFile; - if (scriptFile.Open(CEikonEnv::Static()->FsSession(), aScriptFile, EFileRead) != KErrNone) - { - ShutDownEnginesL(); - return KErrNotFound; // file error - } - - CleanupClosePushL(scriptFile); - CCreatorScriptParser* scriptParser = CCreatorScriptParser::NewLC(this); - scriptParser->ParseL(scriptFile); - TInt err = scriptParser->GetError(); - CleanupStack::PopAndDestroy(); //scriptParser - CleanupStack::Pop(); // scriptFile - scriptFile.Close(); - - if (err != KErrNone) - { - ShutDownEnginesL(); - return KErrCorrupt; // parser error - } - - // start executing commands if commands in the command array - if (CommandArrayCount() > 0) - { - ExecuteFirstCommandL( KSavingText ); - return KErrNone; // executing commands is started - } - else - { - ShutDownEnginesL(); - return KErrCompletion; // nothing to do - } - } - -// --------------------------------------------------------------------------- - -void CCreatorEngine::ExecuteOptionsMenuCommandL(TInt aCommand) - { - LOGSTRING("Creator: CCreatorEngine::ExecuteOptionsMenuCommandL"); - - // startup modules (also inits the command array): - StartEnginesL(); - - // set the home module - switch(aCommand) - { - case ECmdCreateBrowserBookmarkEntries: - case ECmdCreateBrowserBookmarkFolderEntries: - case ECmdCreateBrowserSavedPageEntries: - case ECmdCreateBrowserSavedPageFolderEntries: - case ECmdDeleteBrowserBookmarks: - case ECmdDeleteBrowserBookmarkFolders: - case ECmdDeleteBrowserSavedPages: - case ECmdDeleteBrowserSavedPageFolders: - case ECmdDeleteCreatorBrowserBookmarks: - case ECmdDeleteCreatorBrowserBookmarkFolders: - case ECmdDeleteCreatorBrowserSavedPages: - case ECmdDeleteCreatorBrowserSavedPageFolders: - { - iUsedOptionsMenuModule = iBrowser; - } - break; - - case ECmdCreateCalendarEntryAppointments: - case ECmdCreateCalendarEntryEvents: - case ECmdCreateCalendarEntryAnniversaries: - case ECmdCreateCalendarEntryToDos: - case ECmdCreateCalendarEntryReminders: - case ECmdDeleteCalendarEntries: - case ECmdDeleteCreatorCalendarEntries: - { - iUsedOptionsMenuModule = iCalendar; - } - break; - - case ECmdCreatePhoneBookEntryContacts: - case ECmdCreatePhoneBookEntryGroups: - case ECmdCreatePhoneBookEntrySubscribedContacts: - case ECmdDeleteContacts: - case ECmdDeleteCreatorContacts: - case ECmdDeleteContactGroups: - case ECmdDeleteCreatorContactGroups: - { - iUsedOptionsMenuModule = iPhonebook; - } - break; - - case ECmdCreateMiscEntryNotes: - case ECmdDeleteNotes: - { - iUsedOptionsMenuModule = iNotepad; - } - break; - - case ECmdCreateLogEntryMissedCalls: - case ECmdCreateLogEntryReceivedCalls: - case ECmdCreateLogEntryDialledNumbers: - case ECmdDeleteLogs: - case ECmdDeleteCreatorLogs: - { - iUsedOptionsMenuModule = iLogs; - } - break; - - case ECmdCreateMiscEntryAccessPoints: - case ECmdDeleteIAPs: - case ECmdDeleteCreatorIAPs: - { - iUsedOptionsMenuModule = iAccessPoints; - } - break; - - case ECmdCreateMessagingEntryMailboxes: - case ECmdDeleteMailboxes: - case ECmdDeleteCreatorMailboxes: - { - iUsedOptionsMenuModule = iMailboxes; - } - break; - - #ifdef __PRESENCE - case ECmdCreateMiscEntryIMPSServers: - case ECmdDeleteIMPSs: - case ECmdDeleteCreatorIMPSs: - { - iUsedOptionsMenuModule = iIMPS; - } - break; - #endif - - case ECmdCreateFileEntryEmptyFolder: - case ECmdCreateFileEntry3GPP_70kB: - case ECmdCreateFileEntryAAC_100kB: - case ECmdCreateFileEntryAMR_20kB: - case ECmdCreateFileEntryBMP_25kB: - case ECmdCreateFileEntryDeck_1kB: - case ECmdCreateFileEntryDOC_20kB: - case ECmdCreateFileEntryGIF_2kB: - case ECmdCreateFileEntryHTML_20kB: - case ECmdCreateFileEntryJAD_1kB: - case ECmdCreateFileEntryJAR_10kB: - case ECmdCreateFileEntryJP2_65kB: - case ECmdCreateFileEntryJPEG_200kB: - case ECmdCreateFileEntryJPEG_25kB: - case ECmdCreateFileEntryJPEG_500kB: - case ECmdCreateFileEntryMIDI_10kB: - case ECmdCreateFileEntryMP3_250kB: - case ECmdCreateFileEntryMP4_200kB: - case ECmdCreateFileEntryMXMF_40kB: - case ECmdCreateFileEntryPNG_15kB: - case ECmdCreateFileEntryPPT_40kB: - case ECmdCreateFileEntryRAM_1kB: - case ECmdCreateFileEntryRM_95kB: - case ECmdCreateFileEntryRNG_1kB: - case ECmdCreateFileEntrySVG_15kB: - case ECmdCreateFileEntrySWF_15kB: - case ECmdCreateFileEntryTIF_25kB: - case ECmdCreateFileEntryTXT_10kB: - case ECmdCreateFileEntryTXT_70kB: - case ECmdCreateFileEntryVCF_1kB: - case ECmdCreateFileEntryVCS_1kB: - case ECmdCreateFileEntryWAV_20kB: - case ECmdCreateFileEntryXLS_15kB: - case ECmdCreateFileEntrySISX_10kB: - case ECmdCreateFileEntryWMA_50kB: - case ECmdCreateFileEntryWMV_200kB: - case ECmdDeleteCreatorFiles: - - { - iUsedOptionsMenuModule = iFiles; - } - break; - - - case ECmdCreateMessagingEntryMessages: - case ECmdDeleteMessages: - case ECmdDeleteCreatorMessages: - { - iUsedOptionsMenuModule = iMessages; - } - break; - - case ECmdCreateMiscEntryLandmarks: - case ECmdDeleteLandmarks: - case ECmdDeleteCreatorLandmarks: - { - iUsedOptionsMenuModule = iLandmarks; - } - break; - case ECmdDeleteAllEntries: - case ECmdDeleteAllCreatorEntries: - { - break; - } - default: - User::Panic (_L("ExecuteOptionsMenuCommandL"), 201); - break; - } - - - //If it's a delete command, asking do you really want to delete - if( IsDeleteCommand( aCommand ) ) - { - if ( aCommand == ECmdDeleteAllEntries ) - { - if ( YesNoQueryDialogL( _L("Delete all entries?") ) ) - { - AppendToCommandArrayL( ECmdDeleteContacts, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteContactGroups, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCalendarEntries, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteBrowserBookmarks, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteBrowserBookmarkFolders, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteBrowserSavedPages, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteBrowserSavedPageFolders, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteLogs, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteMessages, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteIAPs, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteIMPSs, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteNotes, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteLandmarks, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorFiles, NULL, 1 ); - - // started exucuting delete commands - ExecuteFirstCommandL( KDeletingText ); - } - else - { - // cancelled, free resources - ShutDownEnginesL(); - } - } - else if ( aCommand == ECmdDeleteAllCreatorEntries ) - { - if ( YesNoQueryDialogL( _L("Delete all entries created with Creator?") ) ) - { - AppendToCommandArrayL( ECmdDeleteCreatorContacts, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorContactGroups, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorCalendarEntries, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorBrowserBookmarks, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorBrowserBookmarkFolders, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorBrowserSavedPages, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorBrowserSavedPageFolders, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorFiles, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorLogs, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorMessages, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorIAPs, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorIMPSs, NULL, 1 ); - AppendToCommandArrayL( ECmdDeleteCreatorLandmarks, NULL, 1 ); - - // started exucuting delete commands - ExecuteFirstCommandL( KDeletingText ); - } - else - { - // cancelled, free resources - ShutDownEnginesL(); - } - } - else if ( iUsedOptionsMenuModule->AskDataFromUserL( aCommand, iEntriesToBeCreated ) ) - { - // add this command to command array - AppendToCommandArrayL( aCommand, NULL, 1 ); - - // started exucuting commands - ExecuteFirstCommandL( KDeletingText ); - } - else - { - // cancelled, free resources - ShutDownEnginesL(); - } - } - - // ask user data, if query accepted start processing... - else if (iUsedOptionsMenuModule->AskDataFromUserL(aCommand, iEntriesToBeCreated)) - { - // add this command to command array - AppendToCommandArrayL(aCommand, NULL, iEntriesToBeCreated); - - // started exucuting commands - ExecuteFirstCommandL( KSavingText ); - } - else - { - // cancelled, free resources - ShutDownEnginesL(); - } - } - - - -TBool CCreatorEngine::IsDeleteCommand(TInt aCommand) - { - LOGSTRING("Creator: CCreatorEngine::IsDeleteCommand"); - - switch(aCommand) - { - //Add supported delete command here - case ECmdDeleteAllEntries: - case ECmdDeleteAllCreatorEntries: - case ECmdDeleteEntries: - case ECmdDeleteContacts: - case ECmdDeleteCreatorContacts: - case ECmdDeleteContactGroups: - case ECmdDeleteCreatorContactGroups: - case ECmdDeleteCalendarEntries: - case ECmdDeleteCreatorCalendarEntries: - case ECmdDeleteBrowserBookmarks: - case ECmdDeleteCreatorBrowserBookmarks: - case ECmdDeleteBrowserBookmarkFolders: - case ECmdDeleteCreatorBrowserBookmarkFolders: - case ECmdDeleteBrowserSavedPages: - case ECmdDeleteCreatorBrowserSavedPages: - case ECmdDeleteBrowserSavedPageFolders: - case ECmdDeleteCreatorBrowserSavedPageFolders: - case ECmdDeleteCreatorFiles: - case ECmdDeleteLogs: - case ECmdDeleteCreatorLogs: - case ECmdDeleteMessages: - case ECmdDeleteCreatorMessages: - case ECmdDeleteMailboxes: - case ECmdDeleteCreatorMailboxes: - case ECmdDeleteIAPs: - case ECmdDeleteCreatorIAPs: - case ECmdDeleteIMPSs: - case ECmdDeleteCreatorIMPSs: - case ECmdDeleteNotes: - case ECmdDeleteLandmarks: - case ECmdDeleteCreatorLandmarks: - { - return ETrue; - } - default: - { - return EFalse; - } - } - - } - -// --------------------------------------------------------------------------- - -TBool CCreatorEngine::GetRandomDataFilenameL(TDes& aFilename) - { - CCommandParser* commandParser = CCommandParser::NewLC(this); - TBool ret = commandParser->GetRandomDataFilenameL(aFilename); - CleanupStack::PopAndDestroy(commandParser); - return ret; - } - -// --------------------------------------------------------------------------- - -TBool CCreatorEngine::GetRandomDataFromFileL(const TDesC& aFilename) - { - // wait dialog - CAknGlobalNote* waitDialog = CAknGlobalNote::NewLC(); - waitDialog->SetSoftkeys(R_AVKON_SOFTKEYS_CANCEL); - TInt dialogId = waitDialog->ShowNoteL(EAknGlobalWaitNote, _L("Reading random data")); - - for (TInt i = 0; i < iStringArrays.Count(); ++i) - { - delete iStringArrays[i].iArrayPtr; - } - iStringArrays.Reset(); - - TBool errorDetected = EFalse; - - // NOTE: These must be exactly in same order as in enumeration: - - if (ReadRandomDataL(EFirstName, R_DATA_FIRSTNAMES, aFilename, CCreatorRandomDataParser::EFirstName) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(ESurname, R_DATA_SURNAMES, aFilename, CCreatorRandomDataParser::ESurname) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(ECompany, R_DATA_COMPANIES, aFilename, CCreatorRandomDataParser::ECompany) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EAddress, R_DATA_ADDRESSES, aFilename, CCreatorRandomDataParser::EAddress) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EJobTitle, R_DATA_JOBTITLES, aFilename, CCreatorRandomDataParser::EJobTitle) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EPhoneNumber, R_DATA_PHONENUMBERS, aFilename, CCreatorRandomDataParser::EPhoneNumber) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EGroupName, R_DATA_GROUPNAMES, aFilename, CCreatorRandomDataParser::EGroupName) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EMeetingReason, R_DATA_MEETINGREASONS, aFilename, CCreatorRandomDataParser::EMeetingReason) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EMeetingPlace, R_DATA_MEETINGPLACES, aFilename, CCreatorRandomDataParser::EMeetingPlace) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EMemoText, R_DATA_MEMOS, aFilename, CCreatorRandomDataParser::EMemoText) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EAnniversaryReason, R_DATA_ANNIVERSARIES, aFilename, CCreatorRandomDataParser::EAnniversaryReason) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EToDoText, R_DATA_TODOS, aFilename, CCreatorRandomDataParser::EToDoText) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EReminderText, R_DATA_REMINDERS, aFilename, CCreatorRandomDataParser::EReminderText) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EMessageSubject, R_DATA_MESSAGESUBJECTS, aFilename, CCreatorRandomDataParser::EMessageSubject) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EMessageText, R_DATA_MESSAGETEXTS, aFilename, CCreatorRandomDataParser::EMessageText) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(ECity, R_DATA_CITIES, aFilename, CCreatorRandomDataParser::ECity) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(ECountry, R_DATA_COUNTRIES, aFilename, CCreatorRandomDataParser::ECountry) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EPostcode, R_DATA_POSTCODES, aFilename, CCreatorRandomDataParser::EPostcode) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EState, R_DATA_STATES, aFilename, CCreatorRandomDataParser::EState) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EPobox, R_DATA_POBOXES, aFilename, CCreatorRandomDataParser::EPobox) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(EPrefix, R_DATA_PREFIXES, aFilename, CCreatorRandomDataParser::EPrefix) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(ESuffix, R_DATA_SUFFIXES, aFilename, CCreatorRandomDataParser::ESuffix) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(ELandmarkName, R_DATA_LANDMARK_NAMES, aFilename, CCreatorRandomDataParser::ELandmarkName) != KErrNone) - { - errorDetected = ETrue; - } - if (ReadRandomDataL(ELandmarkDescription, R_DATA_LANDMARK_DESCRIPTIONS, aFilename, CCreatorRandomDataParser::ELandmarkDescription) != KErrNone) - { - errorDetected = ETrue; - } - - // remove the wait dialog - waitDialog->CancelNoteL(dialogId); - CleanupStack::PopAndDestroy(waitDialog); - - if (errorDetected) - { - CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote; - note->ExecuteLD(_L("Error in reading random data.")); - } - - return !errorDetected; - } - -// --------------------------------------------------------------------------- - -TInt CCreatorEngine::ReadRandomDataL(const TRandomStringType aRandomStringType, - const TInt aResourceId, - const TDesC& aFilename, - const CCreatorRandomDataParser::TRandomDataType aRandomDataType) - { - TInt error = KErrNone; - if (aFilename == KNullDesC) - { - iStringArrays.AppendL(TStringArrayPtr(aRandomStringType, iEnv->ReadDesCArrayResourceL(aResourceId))); - } - else - { - CCreatorRandomDataParser* dataParser = CCreatorRandomDataParser::NewLC(); - CDesCArrayFlat* array = NULL; - - TRAP(error, array = dataParser->ParseL(aFilename, aRandomDataType)); - if (error == KErrNone) - { - error = dataParser->GetError(); - } - if ((error == KErrNone) && (array->MdcaCount() > 0)) - { - iStringArrays.AppendL(TStringArrayPtr(aRandomStringType, array)); - } - else - { - if (array) - { - array->Reset(); - delete array; - } - iStringArrays.AppendL(TStringArrayPtr(aRandomStringType, iEnv->ReadDesCArrayResourceL(aResourceId))); - } - CleanupStack::PopAndDestroy(dataParser); - } - return error; - } - -// --------------------------------------------------------------------------- - -void CCreatorEngine::AppendToCommandArrayL(TInt aCommand, CCreatorModuleBaseParameters* aParameters, TInt aNumberOfEntries) - { - LOGSTRING("Creator: CCreatorEngine::AppendToCommandArrayL"); - iParameterArray.AppendL(aParameters); - - for (TInt i=0; iAppendL( TCommand(aCommand, aParameters) ); - } - -// --------------------------------------------------------------------------- - -TInt CCreatorEngine::CommandArrayCount() - { - TInt count(0); - - if (iCommandArray) - count = iCommandArray->Count(); - - LOGSTRING2("Creator: CCreatorEngine::CommandArrayCount returns %d", count); - - return count; - } - -// --------------------------------------------------------------------------- - -//returs fileid by its name, eg. 1 in -TInt CCreatorEngine::GetAttachmentIdL( const TDesC& aAttachmentIdStr ) const - { - TInt mapCount = sizeof(FileMap) / sizeof(FileMapping); - - for( TInt i = 0; i < mapCount; ++i ) - { - if( FileMap[i].FileName() == aAttachmentIdStr ) - return FileMap[i].FileId(); - } - LOGSTRING2("CCreatorEngine::GetAttachmentIdL: Unknown attachment file id: %s", &aAttachmentIdStr); - User::Leave(KErrGeneral); - return KErrNotFound; // Not reached, but disables a compiler warning - } - -// --------------------------------------------------------------------------- - -// returns a random string from the resource files -TPtrC CCreatorEngine::TestDataPathL (enum TTestDataPath aTestDataPath ) - { - LOGSTRING("Creator: CCreatorEngine::TestDataPathL"); - - TFileName filePath; - - switch (aTestDataPath ) - { - case ESavedDeck_1kB: - { - filePath.Copy (_L("Deck-1kB.saveddeck") ); - } - break; - - case EJPEG_25kB: - { - filePath.Copy (_L("JPEG-25kB.jpg") ); - } - break; - - case EJPEG_200kB: - { - filePath.Copy (_L("JPEG-200kB.jpg") ); - } - break; - - case EJPEG_500kB: - { - filePath.Copy (_L("JPEG-500kB.jpg") ); - } - break; - - case EPNG_15kB: - { - filePath.Copy (_L("PNG-15kB.png") ); - } - break; - - case EGIF_2kB: - { - filePath.Copy (_L("GIF-2kB.gif") ); - } - break; - - case ERNG_1kB: - { - filePath.Copy (_L("RNG-1kB.rng") ); - } - break; - - case EMIDI_10kB: - { - filePath.Copy (_L("MIDI-10kB.mid") ); - } - break; - - case EWAVE_20kB: - { - filePath.Copy (_L("WAV-20kB.wav") ); - } - break; - - case EAMR_20kB: - { - filePath.Copy (_L("AMR-20kB.amr") ); - } - break; - - case EExcel_15kB: - { - filePath.Copy (_L("XLS-15kB.xls") ); - } - break; - - case EWord_20kB: - { - filePath.Copy (_L("DOC-20kB.doc") ); - } - break; - - case EPowerPoint_40kB: - { - filePath.Copy (_L("PPT-40kB.ppt") ); - } - break; - - case EText_10kB: - { - filePath.Copy (_L("TXT-10kB.txt") ); - } - break; - - case EText_70kB: - { - filePath.Copy (_L("TXT-70kB.txt") ); - } - break; - - case E3GPP_70kB: - { - filePath.Copy (_L("3GPP-70kB.3gpp") ); - } - break; - - case EMP3_250kB: - { - filePath.Copy (_L("MP3-250kB.mp3") ); - } - break; - - case EAAC_100kB: - { - filePath.Copy (_L("AAC-100kB.aac") ); - } - break; - - case ERM_95kB: - { - filePath.Copy (_L("RM-95kB.rm") ); - } - break; - - case EBMP_25kB: - { - filePath.Copy (_L("BMP-25kB.bmp") ); - } - break; - case EHTML_20kB: - { - filePath.Copy (_L("HTML-20kB.html") ); - } - break; - case EJAD_1kB: - { - filePath.Copy (_L("JAD-1kB.jad") ); - } - break; - case EJAR_10kB: - { - filePath.Copy (_L("JAR-10kB.jar") ); - } - break; - case EJP2_65kB: - { - filePath.Copy (_L("JP2-65kB.jp2") ); - } - break; - case EMP4_200kB: - { - filePath.Copy (_L("MP4-200kB.mp4") ); - } - break; - case EMXMF_40kB: - { - filePath.Copy (_L("MXMF-40kB.mxmf") ); - } - break; - case ERAM_1kB: - { - filePath.Copy (_L("RAM-1kB.ram") ); - } - break; - case ESVG_15kB: - { - filePath.Copy (_L("SVG-15kB.svg") ); - } - break; - case ESWF_15kB: - { - filePath.Copy (_L("SWF-15kB.swf") ); - } - break; - case ETIF_25kB: - { - filePath.Copy (_L("TIF-25kB.tif") ); - } - break; - case EVCF_1kB: - { - filePath.Copy (_L("VCF-1kB.vcf") ); - } - break; - case EVCS_1kB: - { - filePath.Copy (_L("VCS-1kB.vcs") ); - } - break; - case ESISX_10kB: - { - filePath.Copy (_L("SISX-10kB.sisx") ); - } - break; - case EWMA_50kB: - { - filePath.Copy (_L("WMA-50kB.wma") ); - } - break; - case EWMV_200kB: - { - filePath.Copy (_L("WMV-200kB.wmv") ); - } - break; - - default: - User::Panic (_L("Test data"), 401 ); - break; - } - - TFileName fullTargetPath; - fullTargetPath.Copy( iTempPath->Des() ); - fullTargetPath.Append( filePath ); - if (ConeUtils::FileExists(fullTargetPath)) - { - // No need to copy, if the file already exists. - LOGSTRING2("Creator: CCreatorEngine::TestDataPathL %S already exists", &fullTargetPath); - return fullTargetPath; - } - - // Define the path where the testdata can be retrieved - // get the data from the private directory in secure platform - TFileName fullAppPath = iEnv->EikAppUi()->Application()->AppFullName(); - TChar driveLetter = fullAppPath[0]; - TInt driveNumber; - - iEnv->FsSession().CharToDrive(driveLetter, driveNumber); - iEnv->FsSession().SetSessionToPrivate( driveNumber ); // "\\private\\20011383\\" - - - // check the file exists - if (!ConeUtils::FileExists(filePath)) - { - LOGSTRING2("Creator: CCreatorEngine::TestDataPathL %S not found", &filePath); - - TInt generatingError( KErrNone ); - - // The file could be on C drive - iEnv->FsSession().SetSessionToPrivate( KRegisterDrive ); - - if ( !ConeUtils::FileExists( filePath ) ) - { - // The file is not on C drive, see if we can generate it - - // Make sure that the private path of this app in c-drive exists - iEnv->FsSession().CreatePrivatePath( KRegisterDrive ); - - TFileName privatePath; - iEnv->FsSession().PrivatePath( privatePath ); - privatePath.Append( filePath ); - TChar privateDriveChar; - iEnv->FsSession().DriveToChar( KRegisterDrive, privateDriveChar ); - TFileName fullPrivatePath; // full path of a file to be generated - fullPrivatePath.Append( privateDriveChar ); - fullPrivatePath.Append( ':' ); - fullPrivatePath.Append( privatePath ); - - switch ( aTestDataPath ) - { - case EJPEG_25kB: - case EJPEG_200kB: - case EJPEG_500kB: - case EBMP_25kB: - case EGIF_2kB: - { - TRAP( generatingError, GenerateSourceImageFileL( aTestDataPath, fullPrivatePath ) ); - // GenerateSourceImageFileL calls TestDataPathL -> private session points to z - // change it back to KRegisterDrive, because generated source file is there - // and we need to copy it at the end of this function. - iEnv->FsSession().SetSessionToPrivate( KRegisterDrive ); - break; - } - case EText_10kB: - { - TRAP( generatingError, GenereteSourceTextFileL( fullPrivatePath, 10000 ) ); - // GenerateSourceImageFileL calls TestDataPathL -> private session points to z - // change it back to KRegisterDrive, because generated source file is there - // and we need to copy it at the end of this function. - iEnv->FsSession().SetSessionToPrivate( KRegisterDrive ); - break; - } - case EText_70kB: - { - TRAP( generatingError, GenereteSourceTextFileL( fullPrivatePath, 70000 ) ); - break; - } - default: - { - generatingError = KErrNotSupported; - break; - } - } - } - - if ( iUserCancelled ) - { - LOGSTRING("Creator: CCreatorEngine::TestDataPathL iUserCancelled" ); - User::Leave( KErrCancel ); - } - - if ( generatingError ) - { - // Generating the file failed - - // cancel the dialog - iProgressDialog->ProcessFinishedL(); - DialogDismissedL(EAknSoftkeyBack); - - // show error note - CAknErrorNote* note = new (ELeave) CAknErrorNote; - note->ExecuteLD(_L("Test data missing")); - - User::Leave(KErrPathNotFound); - } - } - - // now copy the data to D-drive to make the file public - iEnv->FsSession().MkDirAll( iTempPath->Des() ); - TInt copyErr = BaflUtils::CopyFile(iEnv->FsSession(), filePath, fullTargetPath); - LOGSTRING4("Creator: CCreatorEngine::TestDataPathL copy %S to %S returns=%d", &filePath, &fullTargetPath, copyErr); - - // make sure that the file won't have a read only attribute - TEntry fileEntry; - iEnv->FsSession().Entry(fullTargetPath, fileEntry); - iEnv->FsSession().SetEntry(fullTargetPath, fileEntry.iModified, NULL, KEntryAttReadOnly); - - filePath = fullTargetPath; // change the reference to the temp path - return filePath; - } - -// --------------------------------------------------------------------------- - -// a generic query which can be used by the modules -TBool CCreatorEngine::EntriesQueryDialogL(TInt& aNumberOfEntries, const TDesC& aPrompt, TBool aAcceptsZero) - { - LOGSTRING("Creator: CCreatorEngine::EntriesQueryDialogL"); - - CAknNumberQueryDialog* dialog = CAknNumberQueryDialog::NewL(aNumberOfEntries, CAknQueryDialog::ENoTone); - dialog->SetMinimumAndMaximum (1, 99999); - - if(dialog->ExecuteLD(R_ENTRY_QUERY, aPrompt)) - { - if (aAcceptsZero) - { - if (aNumberOfEntries>=0) - return ETrue; - else - return EFalse; - } - else - { - if (aNumberOfEntries>0) - return ETrue; - else - return EFalse; - } - } - else - return EFalse; // cancelled - - - } - -// --------------------------------------------------------------------------- - -// a generic query which can be used by the modules -TBool CCreatorEngine::TimeQueryDialogL(TTime& aTime, TInt aResourceId) - { - LOGSTRING("Creator: CCreatorEngine::TimeQueryDialogL"); - - CAknTimeQueryDialog* dialog = CAknTimeQueryDialog::NewL(aTime, CAknQueryDialog::ENoTone); - return dialog->ExecuteLD(aResourceId); - } - -// --------------------------------------------------------------------------- - -// a generic YES NO query which can be used by the modules -TBool CCreatorEngine::YesNoQueryDialogL(const TDesC& aPrompt) - { - LOGSTRING("Creator: CCreatorEngine::YesNoQueryDialogL"); - - CAknQueryDialog* dialog = CAknQueryDialog::NewL( ); - - TInt yes = dialog->ExecuteLD(R_YES_NO_DIALOG, aPrompt); - - return (TBool)yes; - - } - -// --------------------------------------------------------------------------- - - - -// a method to return a default Internet Access Point -TUint32 CCreatorEngine::GetDefaultIAPL() - { - LOGSTRING("Creator: CCreatorEngine::GetDefaultIAPL"); - - TUint32 lIAPid = 1; // Default value - - CCommsDatabase* cDatabase = CCommsDatabase::NewL(); - CleanupStack::PushL(cDatabase); - - CCommsDbTableView* tableView = cDatabase->OpenTableLC(TPtrC(IAP)); - - TInt errorCode = tableView->GotoFirstRecord(); - - if ( errorCode == KErrNone ) - { - TUint32 iValue; - tableView->ReadUintL(TPtrC(COMMDB_ID),iValue); - lIAPid = iValue; - } - - CleanupStack::PopAndDestroy(2); // cDatabase,tableView - - return lIAPid; - } - -// --------------------------------------------------------------------------- - -TUint32 CCreatorEngine::AccessPointNameToIdL(const TDesC& aAPName, TBool aAnyIfNotFound ) - { - LOGSTRING("Creator: CCreatorEngine::AccessPointNameToIdL"); - // Accespoint impl moved from engine to accespoint implementations for supporting 3.0-3.1 and 3.2-> - return iAccessPoints->AccessPointNameToIdL(aAPName, aAnyIfNotFound ); - } - -static CCreatorEngine::TTestDataPath SoundFiles[] = { - CCreatorEngine::EMIDI_10kB, - CCreatorEngine::EWAVE_20kB, - CCreatorEngine::EMP3_250kB, - CCreatorEngine::EAAC_100kB - }; - -static CCreatorEngine::TTestDataPath PictureFiles[] = - { - CCreatorEngine::EJPEG_25kB, - CCreatorEngine::EJPEG_200kB, - CCreatorEngine::EJPEG_500kB, - CCreatorEngine::EPNG_15kB, - CCreatorEngine::EGIF_2kB - }; - -TPtrC CCreatorEngine::CreateSoundFileL(TTestDataPath aId) -{ - TPtrC tempPath(TestDataPathL(aId)); - // Copy file to permanent location: - TParse parser; - parser.Set(tempPath, NULL, NULL); - TPtrC fileName(parser.NameAndExt()); - HBufC* fullTargetPath = HBufC::NewLC( KMaxFileName ); - fullTargetPath->Des().Copy( PathInfo::PhoneMemoryRootPath() ); - fullTargetPath->Des().Append( PathInfo::DigitalSoundsPath() ); - - fullTargetPath->Des().Append(fileName); - CopyFileL(tempPath, *fullTargetPath); - iAllocatedFilePaths.AppendL(fullTargetPath); - CleanupStack::Pop(); // fullTargetPath - return fullTargetPath->Des(); -} -TPtrC CCreatorEngine::CreateRandomSoundFileL() -{ - TInt numOfFiles = sizeof(SoundFiles) / sizeof(TTestDataPath); - return CreateSoundFileL(SoundFiles[RandomNumber(0, numOfFiles-1)]); -} -TPtrC CCreatorEngine::RandomSoundFileL() -{ - TInt numOfFiles = sizeof(SoundFiles) / sizeof(TTestDataPath); - return TestDataPathL(SoundFiles[RandomNumber(0, numOfFiles-1)]); -} - -TPtrC CCreatorEngine::RandomPictureFileL() -{ - TInt numOfFiles = sizeof(PictureFiles) / sizeof(TTestDataPath); - return TestDataPathL(PictureFiles[RandomNumber(0, numOfFiles-1)]); -} -// --------------------------------------------------------------------------- - -// returns a random string from the resource files -TPtrC CCreatorEngine::RandomString(enum TRandomStringType aRandomStringType) - { - LOGSTRING("Creator: CCreatorEngine::RandomString"); - - // Let's see if the array is OK and the string arrays are in correct order: - if( ((TInt) aRandomStringType) < iStringArrays.Count() && - iStringArrays[aRandomStringType].iStringType == aRandomStringType) - { - TInt rand = (TInt) (iStringArrays[aRandomStringType].iArrayPtr->Count() * Math::FRand(iSeed)); - return (*iStringArrays[aRandomStringType].iArrayPtr)[rand]; - } - - // Now let's loop the arrays and try to find one with the type: - for( TInt i = 0; i < iStringArrays.Count(); ++i ) - { - if( iStringArrays[i].iStringType == aRandomStringType ) - { - TInt rand = (TInt) (iStringArrays[i].iArrayPtr->Count() * Math::FRand(iSeed)); - return (*iStringArrays[i].iArrayPtr)[rand]; - } - } - - User::Panic (_L("Random string"), 402); - return NULL; - } - -// --------------------------------------------------------------------------- - -// returns a random number -TInt CCreatorEngine::RandomNumber(TInt aRange) - { - LOGSTRING2("Creator: CCreatorEngine::RandomNumber aRange=%d", aRange); - - return (TInt) (aRange*Math::FRand(iSeed)); - } - -// --------------------------------------------------------------------------- - -// returns a random number -TInt CCreatorEngine::RandomNumber(TInt aMin, TInt aMax) - { - LOGSTRING3("Creator: CCreatorEngine::RandomNumber aMin=%d aMax=%d", aMin, aMax); - - TInt range = (aMax > aMin ? aMax - aMin : aMin - aMax) + 1; - TInt random = (TInt) (range*Math::FRand(iSeed)); - - random = (random % range) + aMin; - - if (random > aMax) - random = aMax; - else if (random < aMin) - random = aMin; - - return random; - } - -TTime CCreatorEngine::RandomTime(TTime baseTime, TRandomDateType type, TInt aMinHours, TInt aMaxHours, TInt aMinMinutes, TInt aMaxMinutes ) - { - TInt randomHours = RandomNumber(aMinHours, aMaxHours); - TInt randomMinutes = RandomNumber(aMinMinutes, aMaxMinutes); - - switch( type ) - { - case EDatePast: - return (baseTime - TTimeIntervalHours(randomHours)) - TTimeIntervalMinutes(randomMinutes); - case EDateFuture: - return (baseTime + TTimeIntervalHours(randomHours)) + TTimeIntervalMinutes(randomMinutes); - default: - break; - } - return baseTime; - } - -TTime CCreatorEngine::RandomDate(TTime baseTime, TRandomDateType type, TInt aMinDays, TInt aMaxDays) - { - TInt random = RandomNumber(aMinDays, aMaxDays); - - switch( type ) - { - case EDatePast: - return baseTime - TTimeIntervalDays(random); - case EDateFuture: - return baseTime + TTimeIntervalDays(random); - default: - break; - } - - return baseTime; - } - -TTime CCreatorEngine::RandomDate(TRandomDateType type, TInt aMinDays, TInt aMaxDays) - { - TTime time; - // Set to current time: - time.HomeTime(); - return RandomDate(time, type, aMinDays, aMaxDays); - } - -HBufC* CCreatorEngine::CreateEmailAddressLC() - { - _LIT(KCountry, "com"); - return CreateEmailAddressLC(RandomString(EFirstName), RandomString(ESurname), RandomString(ECompany), KCountry); - } - -HBufC* CCreatorEngine::CreateHTTPUrlLC() - { - _LIT(KProtocol, "http://"); - _LIT(KPrefix, "www"); - _LIT(KCountry, "com"); - return CreateUrlLC(KProtocol, KPrefix, RandomString(ECompany), KCountry); - } - -HBufC* CCreatorEngine::CreateRandomStringLC(TInt aStrLen) - { - TInt minAscii = 65; - TInt maxAscii = 90; - HBufC* str = HBufC::NewL(aStrLen); - CleanupStack::PushL(str); - for( TInt i = 0; i < aStrLen; ++i ) - { - TInt random = RandomNumber(minAscii, maxAscii); - TChar randomChar = TChar((TUint) random); - str->Des().Append(randomChar); - } - return str; - } - -HBufC* CCreatorEngine::CreateEmailAddressLC( - const TDesC& firstname, - const TDesC& lastname, - const TDesC& domain, - const TDesC& country ) const - { - HBufC* email = HBufC::New(firstname.Length() + lastname.Length() + domain.Length() + country.Length() + 3); - CleanupStack::PushL(email); - _LIT(KEmailAddr, "%S.%S@%S.%S"); - email->Des().Format(KEmailAddr, &firstname, &lastname, &domain, &country); - return email; - } - -HBufC* CCreatorEngine::CreateUrlLC( - const TDesC& protocol, - const TDesC& prefix, - const TDesC& domain, - const TDesC& country) const - { - HBufC* url = HBufC::New(protocol.Size() + prefix.Size() + domain.Size() + country.Size() + 2); - CleanupStack::PushL(url); - _LIT(KUrl, "%S%S.%S.%S"); - url->Des().Format(KUrl, &protocol, &prefix, &domain, &country); - return url; - } -// --------------------------------------------------------------------------- - -void CCreatorEngine::SetDefaultPathForFileCommandL(TInt aCommand, TFileName& aPath) - { - aPath.Copy( PathInfo::PhoneMemoryRootPath() ); - switch (aCommand) - { - case ECmdCreateFileEntryJPEG_25kB: - case ECmdCreateFileEntryJPEG_200kB: - case ECmdCreateFileEntryJPEG_500kB: - case ECmdCreateFileEntryPNG_15kB: - case ECmdCreateFileEntryGIF_2kB: - case ECmdCreateFileEntryBMP_25kB: - case ECmdCreateFileEntrySVG_15kB: - case ECmdCreateFileEntryTIF_25kB: - case ECmdCreateFileEntryJP2_65kB: - - { aPath.Append( PathInfo::ImagesPath() ); break; } - - case ECmdCreateFileEntryRNG_1kB: - { aPath.Append( PathInfo::SimpleSoundsPath() ); break; } - - case ECmdCreateFileEntryMIDI_10kB: - case ECmdCreateFileEntryWAV_20kB: - case ECmdCreateFileEntryAMR_20kB: - case ECmdCreateFileEntryMP3_250kB: - case ECmdCreateFileEntryAAC_100kB: - case ECmdCreateFileEntryWMA_50kB: - { aPath.Append( PathInfo::DigitalSoundsPath() ); break; } - - case ECmdCreateFileEntry3GPP_70kB: - case ECmdCreateFileEntryRM_95kB: - case ECmdCreateFileEntryMP4_200kB: - case ECmdCreateFileEntryWMV_200kB: - - { aPath.Append( PathInfo::VideosPath() ); break; } - - case ECmdCreateFileEntryEmptyFolder: - { aPath.Append( _L("MyFolder\\") ); break; } - - default: - { aPath.Append( PathInfo::OthersPath() ); break; } - - } - } - - -// --------------------------------------------------------------------------- - -void CCreatorEngine::CancelComplete() - { - LOGSTRING("Creator: CCreatorEngine::CancelComplete"); - // free resources and show a note - TRAP_IGNORE( ShutDownEnginesL() ); - - TRAP_IGNORE( - CAknInformationNote* note = new (ELeave) CAknInformationNote; - note->ExecuteLD(_L("Cancelled")); - ); - } - -// --------------------------------------------------------------------------- - -TCommand::TCommand(TInt aCommandId, CCreatorModuleBaseParameters* aParameters) - { - iCommandId = aCommandId; - iParameters = aParameters; - } - -// --------------------------------------------------------------------------- - -TCommand::~TCommand() - { - } - -// --------------------------------------------------------------------------- - -CAsyncWaiter* CAsyncWaiter::NewL(TInt aPriority) - { - CAsyncWaiter* self = new(ELeave) CAsyncWaiter(aPriority); - return self; - } - -CAsyncWaiter* CAsyncWaiter::NewLC(TInt aPriority) - { - CAsyncWaiter* self = new(ELeave) CAsyncWaiter(aPriority); - CleanupStack::PushL(self); - return self; - } - -CAsyncWaiter::CAsyncWaiter(TInt aPriority) : CActive(aPriority) - { - CActiveScheduler::Add(this); - } - -CAsyncWaiter::~CAsyncWaiter() - { - Cancel(); - } - -void CAsyncWaiter::StartAndWait() - { - LOGSTRING("Creator: CAsyncWaiter::StartAndWait"); - - iStatus = KRequestPending; - SetActive(); - iWait.Start(); - } - -TInt CAsyncWaiter::Result() const - { - return iError; - } - -void CAsyncWaiter::RunL() - { - LOGSTRING("Creator: CAsyncWaiter::RunL"); - - iError = iStatus.Int(); - CAknEnv::StopSchedulerWaitWithBusyMessage( iWait ); - } - -void CAsyncWaiter::DoCancel() - { - LOGSTRING("Creator: CAsyncWaiter::DoCancel"); - - iError = KErrCancel; - if( iStatus == KRequestPending ) - { - TRequestStatus* s=&iStatus; - User::RequestComplete( s, KErrCancel ); - } - - CAknEnv::StopSchedulerWaitWithBusyMessage( iWait ); - } - -FileMapping::FileMapping( const TDesC& aAttName, TInt aAttId, TInt aCommandId ) - : - iFileName(aAttName), - iFileId(aAttId), - iCommandId(aCommandId) - {} - - const TDesC& FileMapping::FileName() const - { - return iFileName; - } - - TInt FileMapping::FileId() const - { - return iFileId; - } - - TInt FileMapping::CommandId() const - { - return iCommandId; - } - -// --------------------------------------------------------------------------- -CDictionaryFileStore* CCreatorEngine::FileStoreLC() - { - LOGSTRING("Creator: CCreatorEngine::FileStoreLC"); - CDictionaryFileStore* store; - - // make sure that the private path of this app in c-drive exists - CEikonEnv::Static()->FsSession().CreatePrivatePath( KRegisterDrive ); // c:\\private\\20011383\\ - - // handle register always in the private directory - User::LeaveIfError( CEikonEnv::Static()->FsSession().SetSessionToPrivate( KRegisterDrive ) ); - store = CDictionaryFileStore::OpenLC( CEikonEnv::Static()->FsSession(), KRegisterFileName, KUidCreatorApp ); - return store; - } - -// --------------------------------------------------------------------------- -void CCreatorEngine::ReadEntryIdsFromStoreL( RArray& aEntryIds, const TUid aModuleUid ) - { - LOGSTRING("Creator: CCreatorEngine::ReadEntryIdsFromStoreL"); - CDictionaryFileStore* store = FileStoreLC(); - User::LeaveIfNull( store ); - if ( store->IsPresentL( aModuleUid ) ) - { - RDictionaryReadStream in; - in.OpenLC( *store, aModuleUid ); - TFileName fullPath; - TInt err( KErrNone ); - TInt id( KErrNotFound ); - while ( !err ) - { - TRAP( err, id = in.ReadInt32L() ); // will leave with KErrEof - if ( !err ) - { - aEntryIds.Append( id ); - } - } - CleanupStack::PopAndDestroy( &in ); - } - CleanupStack::PopAndDestroy( store ); - } - -// --------------------------------------------------------------------------- -void CCreatorEngine::WriteEntryIdsToStoreL( RArray& aEntryIds, const TUid aModuleUid ) - { - LOGSTRING("Creator: CCreatorEngine::WriteEntryIdsToStoreL"); - CDictionaryFileStore* store = FileStoreLC(); - User::LeaveIfNull( store ); - - // backup previous ids from store - // otherwise they would be overwritten when calling out.WriteL - RArray previousIds; - CleanupClosePushL( previousIds ); - - if ( store->IsPresentL( aModuleUid ) ) - { - RDictionaryReadStream in; - in.OpenLC( *store, aModuleUid ); - TInt err( KErrNone ); - TInt id( KErrNotFound ); - while ( !err ) - { - TRAP( err, id = in.ReadInt32L() ); // will leave with KErrEof - if ( !err ) - { - previousIds.Append( id ); - } - } - CleanupStack::PopAndDestroy( &in ); - } - - RDictionaryWriteStream out; - out.AssignLC( *store, aModuleUid ); - - // restore previous ids to store - for ( TInt i = 0; i < previousIds.Count(); i++ ) - { - out.WriteInt32L( previousIds[i] ); - } - - // write new ids to store - for ( TInt i = 0; i < aEntryIds.Count(); i++ ) - { - out.WriteInt32L( aEntryIds[i] ); - } - - out.CommitL(); - CleanupStack::PopAndDestroy( &out ); - - store->CommitL(); - CleanupStack::PopAndDestroy( &previousIds ); - CleanupStack::PopAndDestroy( store ); - } - -// --------------------------------------------------------------------------- -void CCreatorEngine::ReadEntryIdsFromStoreL( RArray& aEntryIds, const TUid aModuleUid ) - { - LOGSTRING("Creator: CCreatorEngine::ReadEntryIdsFromStoreL"); - CDictionaryFileStore* store = FileStoreLC(); - User::LeaveIfNull( store ); - if ( store->IsPresentL( aModuleUid ) ) - { - RDictionaryReadStream in; - in.OpenLC( *store, aModuleUid ); - TFileName fullPath; - TInt err( KErrNone ); - TUint32 id( KErrNone ); - while ( !err ) - { - TRAP( err, id = in.ReadUint32L() ); // will leave with KErrEof - if ( !err ) - { - aEntryIds.Append( id ); - } - } - CleanupStack::PopAndDestroy( &in ); - } - CleanupStack::PopAndDestroy( store ); - } - -// --------------------------------------------------------------------------- -void CCreatorEngine::WriteEntryIdsToStoreL( RArray& aEntryIds, const TUid aModuleUid ) - { - LOGSTRING("Creator: CCreatorEngine::WriteEntryIdsToStoreL"); - CDictionaryFileStore* store = FileStoreLC(); - User::LeaveIfNull( store ); - - // backup previous ids from store - // otherwise they would be overwritten when calling out.WriteL - RArray previousIds; - CleanupClosePushL( previousIds ); - - if ( store->IsPresentL( aModuleUid ) ) - { - RDictionaryReadStream in; - in.OpenLC( *store, aModuleUid ); - TInt err( KErrNone ); - TUint32 id( KErrNone ); - while ( !err ) - { - TRAP( err, id = in.ReadUint32L() ); // will leave with KErrEof - if ( !err ) - { - previousIds.Append( id ); - } - } - CleanupStack::PopAndDestroy( &in ); - } - - RDictionaryWriteStream out; - out.AssignLC( *store, aModuleUid ); - - // restore previous ids to store - for ( TInt i = 0; i < previousIds.Count(); i++ ) - { - out.WriteUint32L( previousIds[i] ); - } - - // write new ids to store - for ( TInt i = 0; i < aEntryIds.Count(); i++ ) - { - out.WriteUint32L( aEntryIds[i] ); - } - - out.CommitL(); - CleanupStack::PopAndDestroy( &out ); - - store->CommitL(); - CleanupStack::PopAndDestroy( &previousIds ); - CleanupStack::PopAndDestroy( store ); - } - -// --------------------------------------------------------------------------- -void CCreatorEngine::RemoveStoreL( const TUid aModuleUid ) - { - LOGSTRING("Creator: CCreatorEngine::RemoveStoreL"); - CDictionaryFileStore* store = FileStoreLC(); - User::LeaveIfNull( store ); - if ( store->IsPresentL( aModuleUid ) ) - { - // entries of this module should be deleted by now, - // remove the Creator internal registry for this module - store->Remove( aModuleUid ); - store->CommitL(); - } - CleanupStack::PopAndDestroy( store ); - } - -//---------------------------------------------------------------------------- -void CCreatorEngine::GenerateSourceImageFileL( - const CCreatorEngine::TTestDataPath aFileType, - const TDesC& aFileName ) - { - LOGSTRING("Creator: CCreatorEngine::GenerateSourceImageFileL"); - - // Peek file size - RFile file; - TInt fileSize( 0 ); - // Using png file as the source file - TFileName fileName = TestDataPathL( CCreatorEngine::EPNG_15kB ); - User::LeaveIfError( file.Open( iEnv->FsSession(), - fileName, - EFileRead | EFileShareAny ) ); - CleanupClosePushL( file ); - User::LeaveIfError( file.Size( fileSize ) ); - CleanupStack::PopAndDestroy( &file ); - - // Using heap variables, because bitmaps - // may reserve large amount of memory. - - // Read data from the file - RFileReadStream ws; - User::LeaveIfError( ws.Open( iEnv->FsSession(), - fileName, - EFileStream | EFileRead | EFileShareAny ) ); - CleanupClosePushL( ws ); - delete iBitmapData; - iBitmapData = NULL; - iBitmapData = HBufC8::NewL( fileSize ); - TPtr8 dataPtr = iBitmapData->Des(); - ws.ReadL( dataPtr, fileSize ); - CleanupStack::PopAndDestroy( &ws ); - - // Create decoder for the data - delete iDecoder; - iDecoder = NULL; - iDecoder = CImageDecoder::DataNewL( iEnv->FsSession(), dataPtr ); - iFrameinfo = iDecoder->FrameInfo(); - - // Create bitmap handle for the source image - iBitmap = new (ELeave) CFbsBitmap(); - User::LeaveIfError( iBitmap->Create( iFrameinfo.iFrameCoordsInPixels.Size(), EColor16M ) ); - - // Convert the data from the file into bitmap format (inmemory) - CAsyncWaiter* waiter = CAsyncWaiter::NewLC(); - iDecoder->Convert( &waiter->iStatus, *iBitmap ); - waiter->StartAndWait(); - delete iDecoder; - iDecoder = NULL; - delete iBitmapData; - iBitmapData = NULL; - if ( iUserCancelled ) - { - CancelComplete(); - User::Leave( KErrCancel ); - } - User::LeaveIfError( waiter->Result() ); - - // Define the target dimensions and image quality - // so that the generated file size will match required size. - // Quality and scaling factors are defined experimentally. - delete iScaler; - iScaler = NULL; - iScaler = CBitmapScaler::NewL(); - iScaledBitmap = new (ELeave) CFbsBitmap(); - // use original size as base - TSize scaledSize( iFrameinfo.iFrameCoordsInPixels.Size() ); - delete iFrameImageData; - iFrameImageData = NULL; - iFrameImageData = CFrameImageData::NewL(); - TBuf8<64> mimeType; - TJpegImageData* jpegImageData( NULL ); - TBmpImageData* bmpImageData( NULL ); - switch ( aFileType ) - { - case CCreatorEngine::EJPEG_25kB: - // QualityFactor = 93 and size factor = 2 -> 25kB jpeg file - mimeType.Copy( _L8("image/jpeg") ); - jpegImageData = new (ELeave) TJpegImageData; - // Set some format specific data - jpegImageData->iSampleScheme = TJpegImageData::EColor444; - jpegImageData->iQualityFactor = 93; // 0..100 - // ownership passed to iFrameImageData after AppendImageData - User::LeaveIfError( iFrameImageData->AppendImageData( jpegImageData ) ); - scaledSize.iHeight *= 2; - scaledSize.iWidth *= 2; - break; - case CCreatorEngine::EJPEG_200kB: - { - mimeType.Copy( _L8("image/jpeg") ); - jpegImageData = new (ELeave) TJpegImageData; - // Set some format specific data - jpegImageData->iSampleScheme = TJpegImageData::EColor444; -#ifdef __WINS__ - // QualityFactor = 95 and size factor = 7 -> 196kB jpeg file - jpegImageData->iQualityFactor = 95; // 0..100 - scaledSize.iHeight *= 7; - scaledSize.iWidth *= 7; -#else - // In hw the image compression seems to work - // more efficiently. Need to set greater values. - jpegImageData->iQualityFactor = 100; // 0..100 - scaledSize.iHeight *= 7; - scaledSize.iWidth *= 7; - // 100, 7, 7 -> 213kB -#endif - // ownership passed to iFrameImageData after AppendImageData - User::LeaveIfError( iFrameImageData->AppendImageData( jpegImageData ) ); - break; - } - case CCreatorEngine::EJPEG_500kB: - { - mimeType.Copy( _L8("image/jpeg") ); - jpegImageData = new (ELeave) TJpegImageData; - // Set some format specific data - jpegImageData->iSampleScheme = TJpegImageData::EColor444; -#ifdef __WINS__ - // QualityFactor = 99 and size factor = 8 -> 514kB jpeg file - jpegImageData->iQualityFactor = 99; // 0..100 - scaledSize.iHeight *= 8; - scaledSize.iWidth *= 8; -#else - // In hw the image compression seems to work - // more efficiently. Need to set greater values. - jpegImageData->iQualityFactor = 100; // 0..100 - scaledSize.iHeight *= 13; - scaledSize.iWidth *= 13; - // 100, 13, 13 -> 535kB -#endif - // ownership passed to iFrameImageData after AppendImageData - User::LeaveIfError( iFrameImageData->AppendImageData( jpegImageData ) ); - break; - } - case CCreatorEngine::EBMP_25kB: - { - // bit depyh 8 and 11/10 size factor -> 25kB bmp - mimeType.Copy( _L8("image/bmp") ); - bmpImageData = new (ELeave) TBmpImageData; - bmpImageData->iBitsPerPixel = 8; - // ownership passed to iFrameImageData after AppendImageData - User::LeaveIfError( iFrameImageData->AppendImageData( bmpImageData ) ); - scaledSize.iHeight *= 11; - scaledSize.iWidth *= 11; - scaledSize.iHeight /= 10; - scaledSize.iWidth /= 10; - break; - } - case CCreatorEngine::EGIF_2kB: - { - // size factor 1/2 -> 2560B gif - mimeType.Copy( _L8("image/gif") ); - // GIF encoder is not configurable, only the size matters here - scaledSize.iHeight /= 2; - scaledSize.iWidth /= 2; - break; - } - default: break; - } - - // Scale to reach target size - User::LeaveIfError( iScaledBitmap->Create( scaledSize, EColor16M ) ); - iScaler->Scale( &waiter->iStatus, *iBitmap, *iScaledBitmap ); - waiter->StartAndWait(); - delete iBitmap; - iBitmap = NULL; - delete iScaler; - iScaler = NULL; - if ( iUserCancelled ) - { - CancelComplete(); - User::Leave( KErrCancel ); - } - User::LeaveIfError( waiter->Result() ); - - // Encode to target format - delete iEncoder; - iEncoder = NULL; - // Creating CImageEncoder opens the target file - iEncoder = CImageEncoder::FileNewL( iEnv->FsSession(), aFileName, mimeType ); - - // Do the conversion to target format, this will write to the file - iEncoder->Convert( &waiter->iStatus, *iScaledBitmap, iFrameImageData ); - waiter->StartAndWait(); - delete iEncoder; - iEncoder = NULL; - delete iFrameImageData; - iFrameImageData = NULL; - delete iScaledBitmap; - iScaledBitmap = NULL; - if ( iUserCancelled ) - { - CancelComplete(); - User::Leave( KErrCancel ); - } - User::LeaveIfError( waiter->Result() ); - CleanupStack::PopAndDestroy( waiter ); - } - -//---------------------------------------------------------------------------- -void CCreatorEngine::GenereteSourceTextFileL( const TDesC& aFileName, TInt aSize ) - { - LOGSTRING("Creator: CCreatorEngine::GenereteSourceTextFileL"); - RFile txtFile; - _LIT8( KTestContent, "Testing... "); - _LIT8( KTestContentCRLF, "\r\n"); - txtFile.Create( iEnv->FsSession(), - aFileName, - EFileStreamText | EFileWrite | EFileShareAny ); - CleanupClosePushL( txtFile ); - for ( TInt i = 1; i*KTestContent().Length() < aSize; i++ ) - { - User::LeaveIfError( txtFile.Write( KTestContent ) ); - if ( !( i % 10 ) ) // linefeed for every 10th - { - User::LeaveIfError( txtFile.Write( KTestContentCRLF ) ); - } - } - CleanupStack::PopAndDestroy( &txtFile ); - }