--- 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 <cntdb.h>//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 <apparc.h>
-#include <eikappui.h>
-#include <eikapp.h>
-#include <bitmaptransforms.h>
-
-_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<CEikDialog**>(&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<CBrowserParameters*>(iCommandArray->At(iCurrentEntry).iParameters)); } break;
- case ECmdCreateBrowserBookmarkFolderEntries: { iBrowser->CreateBookmarkFolderEntryL(reinterpret_cast<CBrowserParameters*>(iCommandArray->At(iCurrentEntry).iParameters)); } break;
- case ECmdCreateBrowserSavedPageEntries: { iBrowser->CreateSavedDeckEntryL(reinterpret_cast<CBrowserParameters*>(iCommandArray->At(iCurrentEntry).iParameters)); } break;
- case ECmdCreateBrowserSavedPageFolderEntries: { iBrowser->CreateSavedDeckFolderEntryL(reinterpret_cast<CBrowserParameters*>(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<CNotepadParameters*>(iCommandArray->At(iCurrentEntry).iParameters)); } break;
-
- case ECmdCreateLogEntryMissedCalls: { iLogs->CreateMissedCallEntryL(reinterpret_cast<CLogsParameters*>(iCommandArray->At(iCurrentEntry).iParameters)); } break;
- case ECmdCreateLogEntryReceivedCalls: { iLogs->CreateReceivedCallEntryL(reinterpret_cast<CLogsParameters*>(iCommandArray->At(iCurrentEntry).iParameters)); } break;
- case ECmdCreateLogEntryDialledNumbers: { iLogs->CreateDialledNumberEntryL(reinterpret_cast<CLogsParameters*>(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<CLandmarkParameters*>(iCommandArray->At(iCurrentEntry).iParameters)); } break;
-
- case ECmdCreateMessagingEntryMailboxes: { iMailboxes->CreateMailboxEntryL(reinterpret_cast<CMailboxesParameters*>(iCommandArray->At(iCurrentEntry).iParameters)); } break;
-
- #ifdef __PRESENCE
- case ECmdCreateMiscEntryIMPSServers: { iIMPS->CreateIMPSServerEntryL(reinterpret_cast<CIMPSParameters*>(iCommandArray->At(iCurrentEntry).iParameters)); } break;
- #endif
-
- case ECmdCreateMessagingEntryMessages: { iMessages->CreateMessageEntryL(reinterpret_cast<CMessagesParameters*>(iCommandArray->At(iCurrentEntry).iParameters), ETrue); } break;
- case ECmdCreateMessagingEntryMessagesViaScript: { iMessages->CreateMessageEntryL(reinterpret_cast<CMessagesParameters*>(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<CFilesParameters*>(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; i<CommandArrayCount(); i++)
- {
- if ( iCommandArray->At(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; i<aNumberOfEntries; i++)
- iCommandArray->AppendL( 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<TInt>& 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<TInt>& 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<TInt> 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<TUint32>& 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<TUint32>& 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<TUint32> 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 );
- }