--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/creator/src/creator_appui.cpp Wed Sep 01 12:30:35 2010 +0100
@@ -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 <creator.rsg>
+
+#include "creator.pan"
+#include "creator_appui.h"
+#include "creator_container.h"
+#include "creator.hrh"
+
+#include <bautils.h>
+#include <pathinfo.h>
+#include <aknmessagequerydialog.h>
+#include <eikmenub.h>
+#include <akntitle.h>
+#include <akncontext.h>
+#include <aknnotewrappers.h>
+#include <avkon.hrh>
+
+// 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();
+ }
+ }
+ }