creator/src/creator_appui.cpp
branchRCL_3
changeset 22 fad26422216a
parent 0 d6fe6244b863
--- /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();
+	    	}
+		}
+	}