--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/smartinstaller/adm/inc/ADMAppUi.h Wed Jun 30 11:01:26 2010 +0530
@@ -0,0 +1,445 @@
+/*
+* Copyright (c) 2009-2010 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:
+* Declares UI class for application.
+*
+*
+*/
+
+
+#ifndef __ADMAPPUI_h__
+#define __ADMAPPUI_h__
+
+// INCLUDE FILES
+#include <aknappui.h>
+#include <aknglobalnote.h>
+#include <aknglobalconfirmationquery.h>
+#include <etelmm.h>
+#include <flogger.h>
+#include "progressdialog.h"
+#include "globalwaitnote.h"
+#include "globalqueryobserver.h"
+#include "ADMDownloadHandler.h"
+#include "ADMInstallManager.h"
+#include "networkstatusobserver.h"
+
+#include "debug.h"
+
+_LIT(KADMPrivatePath, "c:\\private\\2002CCCE\\");
+_LIT(KADMResumeInfoFile, "c:\\private\\2002CCCE\\resume");
+
+// FORWARD DECLARATIONS
+class CEikonEnv;
+class CStateMachine;
+class CDepTree;
+class CXmlParser;
+class CSisParser;
+class CPackageInfo;
+class CAknGlobalNote;
+class CGlobalQueryObserver;
+class CGlobalWaitNoteObserver;
+class CNetworkStatusListener;
+
+enum TExitReason
+ {
+ EExitNoError = 0,
+ EUserCancelled,
+ EDownloadFailed,
+ EInsufficientMemory,
+ EDeviceNotSupported, // 5
+ EInstallationFailed,
+ EInvalidBootstrapVersion,
+ ERootInstallationFailed,
+
+ ELastExitState
+ };
+
+// Maximum length of the size prefix ("kB", "MB", "GB"). Must match resource
+// file definition (TBUF16).
+const TInt KMaxPrefixLen = 16;
+
+// CLASS DECLARATION
+/**
+ * CADMAppUi application UI class.
+ * Interacts with the user through the UI and request message processing
+ * from the handler class
+ */
+class CADMAppUi : public CAknAppUi,
+ public CGlobalQueryObserver::MGlobalQueryClient,
+ public CProgressDialog::MProgressDialogClient,
+ public CGlobalWaitNote::MGlobalWaitNoteClient
+ {
+public:
+ // Constructors and destructor
+
+ /**
+ * ConstructL.
+ * 2nd phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * CADMAppUi.
+ * C++ default constructor. This needs to be public due to
+ * the way the framework constructs the AppUi
+ */
+ CADMAppUi();
+
+ /**
+ * ~CADMAppUi.
+ * Virtual Destructor.
+ */
+ virtual ~CADMAppUi();
+
+ /**
+ * Handle the Global Query Response
+ */
+ void HandleGlobalQueryResponseL(const TInt aResponse);
+
+ // Returns EikonEnv
+ inline CEikonEnv* EikonEnv() const { return iEikonEnv; }
+
+ // -------------------------------------------------------------------------
+ // Interfaces for CStateFactory
+ /**
+ * Displays proper error dialogs before starting the cleanups.
+ * This function MUST NOT LEAVE.
+ */
+ void HandleFailure();
+
+ /**
+ * Shows the final error message, if any, and exits the application.
+ */
+ void ExitApp();
+
+ /**
+ * Shows the progress bar.
+ */
+ void ShowGlobalProgressL(const TInt aResourceId, const TInt aStartValue, const TInt aEndValue, const TInt aCurrent = -1, const TInt aLast = -1);
+
+ /**
+ * Shows global error dialog with 'OK' CBA.
+ */
+ void ShowGlobalErrorQueryL(const TInt aResourceId);
+
+ /**
+ * Display global query seeking user permission
+ * to fetch dependencies from the web server.
+ */
+ void ShowDownloadQueryL(const TInt aResourceId, const TInt aInfoResourceId = -1);
+
+ /**
+ * Shows the application launch confirmation prompt.
+ */
+ void ShowLaunchPromptL(const TDesC& aAppName, const TDesC& aIconFilename = KNullDesC);
+
+ /**
+ * Deletes a file pointed by aFilename.
+ */
+ void DeleteFile(const TDesC& aFilename);
+
+ // -------------------------------------------------------------------------
+
+private:
+ // Functions from base classes
+
+ /**
+ * From CEikAppUi, HandleCommandL.
+ * Takes care of command handling.
+ * @param aCommand Command to be handled.
+ */
+ void HandleCommandL(TInt aCommand);
+
+ /**
+ * Window server event. Handles key presses.
+ */
+ void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination );
+
+ //From MProgressDialogClient
+ void ProgressDialogCancelled();
+ void WaitNoteCancelled();
+
+ TInt ShowGlobalNoteL( const TAknGlobalNoteType aType , const TInt aResourceId );
+ TInt ShowExitNoteL();
+ void ShowWaitNoteL( const TInt aResourceId, const TBool aCancellable, const TInt aDetailedResourceId = -1 );
+ void ShowWaitNoteNumL( const TInt aResourceId, const TInt aCurrent, const TInt aLast );
+ void CancelWaitNote();
+ void CancelProgressBar();
+ void ProcessCommandLineArgsL();
+
+ /**
+ * Verifies available disk space.
+ *
+ * Returns true, if enough disk space is available
+ */
+ TBool VerifyAvailableDiskSpaceL();
+
+ /**
+ * Pretty prints aSize to aDescr and prefixes it with kB, MB or GB
+ * depending on the value of aSize.
+ */
+ void PrettyPrint(const TUint32 aSize, TDes &aDescr);
+
+ /**
+ * Reads the resources.
+ *
+ * Leaves with standard error codes, if it encounters errors.
+ */
+ void ReadStaticResourcesL();
+
+ /**
+ * Loads required icons.
+ */
+ void LoadIconsL();
+
+ /**
+ * Reads the configuration file.
+ *
+ * @return KErrNone if all succesful, error code otherwise
+ */
+ TInt ReadConfigurationL();
+
+ /**
+ * Returns the phone information
+ *
+ * @return KErrNone, if phone information was succesfully retrieved, error number otherwise.
+ */
+ TInt GetPhoneInformation();
+
+ /**
+ * Returns roaming status.
+ *
+ * @return ETrue, if phone is roaming
+ */
+ TBool RegisteredRoaming();
+
+ /**
+ * Returns the phone memory drive.
+ *
+ * @return Phone memory drive
+ */
+ TInt PhoneMemoryDrive();
+
+ /**
+ * Returns the memory card drive.
+ *
+ * @return Memory card drive
+ */
+ TInt MemoryCardDrive();
+
+ /**
+ * Returns true, if the user selected IAP is a WLAN access point.
+ */
+ TBool UsingWLAN();
+
+ /**
+ * Returns the Bearer type corresponding to the selected IAP Id.
+ *
+ * @return Bearer type
+ */
+ TInt BearerType();
+
+ /**
+ * Read the bootstrap version and file names from the resume file.
+ *
+ * @return Standard Symbian error code
+ */
+ TInt ReadResumeInfoL();
+
+private:
+ friend class CStateMachine;
+ friend class CDownloadHandler;
+
+ /**
+ * State machine running the application logic.
+ */
+ CStateMachine* iStateMachine;
+
+ /**
+ * Application exit reason
+ */
+ TExitReason iExitReason;
+
+ /**
+ * Silent installation completion status
+ */
+ TBool iSilentInstallationOk;
+
+ /**
+ * Set to ETrue, if non-silent installation was used. Used to hide
+ * our "Installation complete" note.
+ */
+ TBool iNonSilentInstallation;
+
+ CProgressDialog* iProgress;
+ CGlobalWaitNote* iWaitNote;
+ CAknGlobalConfirmationQuery* iGlobalConfirmationQuery;
+ CGlobalQueryObserver* iGlobalQueryObserver;
+
+ /**
+ * Full path to the application icon we're installing. Provided in the
+ * installer/wrapper package.
+ */
+ HBufC* iAppIconFilename;
+
+ /**
+ * Holds the current string shown in the query dialog
+ */
+ HBufC* iQueryMessage;
+
+ /**
+ * Path to dependency name. Given as a command line parameter.
+ */
+ HBufC* iDepFileName;
+
+ /**
+ * Path to the application sis file. Given as a command line parameter.
+ */
+ HBufC* iSisFileName;
+
+ /**
+ * The application name to be installed. Read from the resume file,
+ * not available if not resuming the installation.
+ */
+ HBufC* iMainAppName;
+
+ /**
+ * Bootstrap version that was used to launch ADM.
+ */
+ TInt iBootstrapVersion;
+
+ /**
+ * IAP for the download manager. We try to utilise any existing connection.
+ * If that is not available, browser default IAP will be used, if set.
+ * If that is not available, user will be prompted for the IAP.
+ */
+ TUint32 iIAP;
+
+ /**
+ * URL to server stored to config.ini. If configuration file does not exist,
+ * default hard-coded (KDefaultDepServerName) URL is used.
+ */
+ HBufC8* iConfigUrl;
+
+ /**
+ * The wrapper package UID. This package will be uninstalled
+ * after succesful installation as it is not required any longer.
+ */
+ TUid iWrapperPackageUid;
+
+ /**
+ * Handle to file server we got from CEikonEnv::Static()->FsSession().
+ */
+ RFs iRfs;
+
+ /**
+ * Telephony Server (etelmm).
+ */
+ RTelServer iTelServer;
+
+ /**
+ * Phone Object
+ */
+ RMobilePhone iPhone;
+
+ /**
+ * Software version string
+ */
+ HBufC* iSwVersion; ///< owned
+
+ /**
+ * Machine UID
+ */
+ TInt iMachineUid;
+
+ /**
+ * True, if resuming installation
+ */
+ TBool iResumingInstallation;
+
+ /**
+ * True, if installation resume information is required
+ */
+ TBool iIsResumeRequired;
+
+ /**
+ * True, if Ovi Store client is running
+ */
+ TBool iOviStoreRunning;
+
+ /**
+ * True, if App Launch is possible.
+ */
+ TBool iAppLaunch;
+
+#ifdef _DEBUG
+ /**
+ * Manufacturer ID as described by EHalData.
+ */
+ TInt iManufacturer;
+
+ /**
+ * Model ID
+ */
+ TInt iModel;
+
+ /**
+ * Hardware revision
+ */
+ TInt iHardwareRev;
+
+ /**
+ * Software revision
+ */
+ TInt iSoftwareRev;
+
+ /**
+ * Device family
+ */
+ TInt iDeviceFamily;
+
+ /**
+ * Device family revision
+ */
+ TInt iDeviceFamilyRev;
+
+ /**
+ * CPU architecture
+ */
+ TInt iCpuArch;
+
+ /**
+ * CPU ABI
+ */
+ TInt iCpuABI;
+
+ /**
+ * CPU speed
+ */
+ TInt iCpuSpeed;
+#endif
+
+ /**
+ * Localised resource strings for "kB", "MB" and "GB" used by PrettyPrint().
+ */
+ TBuf<KMaxPrefixLen> iPrefixKb;
+ TBuf<KMaxPrefixLen> iPrefixMb;
+ TBuf<KMaxPrefixLen> iPrefixGb;
+
+ INIT_OBJECT_DEBUG_LOG
+ };
+
+#endif // __ADMAPPUI_h__
+
+// End of File