diff -r 000000000000 -r d6fe6244b863 creator/src/creator_appui.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creator/src/creator_appui.cpp Tue Feb 02 00:17:27 2010 +0200 @@ -0,0 +1,360 @@ +/* +* 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 + +#include "creator.pan" +#include "creator_appui.h" +#include "creator_container.h" +#include "creator.hrh" + +#include +#include +#include +#include +#include +#include +#include +#include + +// delay before script running and application exiting in seconds +// when script is run from command line +const TInt KCommandLineDelay = 3; + +// ConstructL is called by the application framework +void CCreatorAppUi::ConstructL() + { + BaseConstructL(EAknEnableSkin); + + iAppView = CCreatorAppView::NewL(ClientRect()); + + AddToStackL(iAppView); + + iEnv=CEikonEnv::Static(); + + iEngine = CCreatorEngine::NewL(this); + + iMode = ETimerModeNone; + iTickCount = 0; + iTimer = CHeartbeat::NewL(0); + + // parse script name and random data file name from command line + iCommandLineScriptName = HBufC::NewL(User::CommandLineLength()); + iCommandLineRandomDataFileName = HBufC::NewL(User::CommandLineLength()); + HBufC* commandLine = HBufC::NewLC(User::CommandLineLength()); + TPtr16 ptr = commandLine->Des(); + User::CommandLine(ptr); + commandLine->Des().Trim(); + + TInt pos = commandLine->Des().Find(_L(" ")); + if (pos != KErrNotFound) + { + iCommandLineScriptName->Des().Copy(commandLine->Des().Left(pos)); + iCommandLineRandomDataFileName->Des().Copy(commandLine->Des().Mid(pos)); + iCommandLineRandomDataFileName->Des().Trim(); + } + else + { + iCommandLineScriptName->Des().Copy(commandLine->Des()); + iCommandLineRandomDataFileName->Des().Copy(KNullDesC); + } + + CleanupStack::PopAndDestroy(commandLine); + + if (iCommandLineScriptName->Des().Length() > 0) + { + iMode = ETimerModeStartScript; + iTimer->Start(ETwelveOClock, this); + } + } + + +CCreatorAppUi::CCreatorAppUi() + { + // add any construction that cannot leave here + } + + +CCreatorAppUi::~CCreatorAppUi() + { + + delete iCommandLineRandomDataFileName; + delete iCommandLineScriptName; + + if (iTimer) + { + iTimer->Cancel(); + delete iTimer; + iTimer = NULL; + } + + delete iEngine; + + if (iAppView) + { + RemoveFromStack(iAppView); + delete iAppView; + iAppView = NULL; + } + } + + +// handle any menu commands +void CCreatorAppUi::HandleCommandL(TInt aCommand) + { + switch(aCommand) + { + // main menus, not assigned to any commands + case ECmdCreateCalendarEntries: + case ECmdCreateBrowserEntries: + case ECmdCreateFileEntries: + case ECmdCreateLogEntries: + case ECmdCreateMessagingEntries: + case ECmdCreateMiscEntries: + case ECmdCreatePhoneBookEntries: + { + User::Panic (_L("Unused command"), 102); + } + break; + + // about + case ECmdAboutCreator: + { + CAknMessageQueryDialog* dialog = new (ELeave) CAknMessageQueryDialog; + dialog->ExecuteLD(R_CREATOR_ABOUT_DIALOG); + } + break; + + + // run script + case ECmdCreateFromFile: + { + iEngine->RunScriptL(); + } + break; + + // select random data file + case ECmdSelectRandomDataFile: + { + TFileName filename; + if (iEngine->GetRandomDataFilenameL(filename)) + { + iEngine->GetRandomDataFromFileL(filename); + } + } + break; + + + // commands: + case ECmdCreateCalendarEntryAppointments: + case ECmdCreateCalendarEntryEvents: + case ECmdCreateCalendarEntryAnniversaries: + case ECmdCreateCalendarEntryToDos: + case ECmdCreateCalendarEntryReminders: + + case ECmdCreateBrowserBookmarkEntries: + case ECmdCreateBrowserBookmarkFolderEntries: + case ECmdCreateBrowserSavedPageEntries: + case ECmdCreateBrowserSavedPageFolderEntries: + + case ECmdCreatePhoneBookEntryContacts: + case ECmdCreatePhoneBookEntryGroups: + + case ECmdCreateMiscEntryNotes: + case ECmdCreateMiscEntryLandmarks: + + case ECmdCreateLogEntryMissedCalls: + case ECmdCreateLogEntryReceivedCalls: + case ECmdCreateLogEntryDialledNumbers: + + case ECmdCreateMiscEntryAccessPoints: + case ECmdCreateMiscEntryIMPSServers: + + case ECmdCreateMessagingEntryMailboxes: + case ECmdCreateMessagingEntryMessages: + + 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 ECmdDeleteAllEntries: + case ECmdDeleteAllCreatorEntries: + 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: + { + iEngine->ExecuteOptionsMenuCommandL(aCommand); + } + break; + + case ECmdDeleteEntries: + case ECmdCreatePhoneBookEntrySubscribedContacts: + case ECmdCreateMessagingEntryCBSTopics: + case ECmdCreateMessagingEntrySMSMessageCenters: + case ECmdCreateMessagingEntryTemplates: + case ECmdCreateMiscEntryAppMenuFolders: + case ECmdCreateMiscEntrySyncSettings: + case ECmdCreateMessagingEntryDocumentsFolders: + { + CAknInformationNote* note = new(ELeave) CAknInformationNote; + note->ExecuteLD(_L("Please contact S60 CO if you need this feature...")); + } + break; + + case EEikCmdExit: + case EAknSoftkeyExit: + { + Exit(); + } + break; + + default: + User::Panic (_L("Invalid command"), 101); + break; + } + } + + +void CCreatorAppUi::DynInitMenuPaneL( TInt /*aResourceId*/, CEikMenuPane* /*aMenuPane*/ ) + { + } + +void CCreatorAppUi::RunScriptDone() + { + if (iMode == ETimerModeStartScript) + { + iMode = ETimerModeExitAppUi; + iTimer->Start(ETwelveOClock, this); + } + } + +void CCreatorAppUi::Beat() + { + Tick(); + } + +void CCreatorAppUi::Synchronize() + { + Tick(); + } + +void CCreatorAppUi::Tick() + { + iTickCount++; + if (iTickCount > KCommandLineDelay) + { + iTimer->Cancel(); + iTickCount = 0; + if (iMode == ETimerModeStartScript) + { + iEngine->GetRandomDataFromFileL(*iCommandLineRandomDataFileName); + TInt status = iEngine->RunScriptL(*iCommandLineScriptName); + if (status != KErrNone) + { + TBuf<128> noteMsg; + if (status == KErrNotFound) + { + _LIT(KMessage1, "Error in opening script file."); + noteMsg.Copy(KMessage1); + } + else if (status == KErrCorrupt) + { + _LIT(KMessage2, "Error in parsing script file."); + noteMsg.Copy(KMessage2); + } + else if (status == KErrCompletion) + { + _LIT(KMessage3, "Script file does not contain any elements."); + noteMsg.Copy(KMessage3); + } + else + { + _LIT(KMessage4, "Unknown error in opening script file."); + noteMsg.Copy(KMessage4); + } + CAknConfirmationNote* note = new(ELeave) CAknConfirmationNote; + note->ExecuteLD(noteMsg); + RunScriptDone(); + } + } + else if (iMode == ETimerModeExitAppUi) + { + iMode = ETimerModeNone; + Exit(); + } + } + }