--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tasynccancel/installer.cpp Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 "installer.h"
+#include <swi/asynclauncher.h>
+
+
+
+CInstaller::CInstaller()
+ :CActive(EPriorityNormal)
+ {
+ iFinishedInstallation=1;
+ iFinishedCanceling=0;
+ CActiveScheduler::Add(this);
+ }
+
+CInstaller* CInstaller::NewLC(CInstallPrefs* aPrefs)
+ {
+ CInstaller* result= new (ELeave) CInstaller;
+ CleanupStack::PushL(result);
+ result->ConstructL(aPrefs);
+ return result;
+ }
+
+CInstaller* CInstaller::NewL(CInstallPrefs* aPrefs)
+ {
+ CInstaller *result= CInstaller::NewLC(aPrefs);
+ CleanupStack::Pop(result);
+ return result;
+ }
+
+void CInstaller::ConstructL(CInstallPrefs* aPrefs)
+ {
+ iLauncher = CAsyncLauncher::NewL();
+ if (aPrefs==NULL)
+ {
+ iDeletePrefs=1;
+ iPrefs = CInstallPrefs::NewL();
+ }
+ else
+ {
+ iDeletePrefs=0;
+ iPrefs=aPrefs;
+ }
+ iUiHandler=CUIScriptAdaptor::NewL();
+ }
+
+CInstaller::~CInstaller()
+ {
+ delete iLauncher;
+ if (iDeletePrefs==1)
+ {
+ delete iPrefs;
+ }
+ delete iUiHandler;
+ }
+
+void CInstaller::StartL(const TDesC& aSisToInstall)
+ {
+ iCancelationSuccess=0;
+ iFinishedInstallation=1; // will be set to 0 when CancelInstallation is called
+ iFinishedCanceling=0;
+ iEndStatus=iStatus.Int();
+
+ TFileName name(aSisToInstall);
+
+ iLauncher->InstallL( *iUiHandler , name, *iPrefs, iStatus) ;
+
+
+ SetActive();
+ }
+
+void CInstaller::CancelInstallation()
+ {
+ iFinishedInstallation=0;
+ iLauncher->CancelOperation();
+ }
+
+void CInstaller::RunL()
+ {
+ iEndStatus=iStatus.Int();
+
+ if (iFinishedInstallation==1)
+ {
+ // We didn't make it in time to cancel installation, but that isn't an error
+ iCancelationSuccess=(iStatus==KErrNone)?1:iStatus.Int();
+ }
+ else
+ {
+ if (iFinishedInstallation==0 && iStatus==KErrCancel)
+ {
+ iCancelationSuccess=1;
+ }
+ else
+ {
+ if (iStatus==KErrNone)
+ {
+ iCancelationSuccess=1;
+ }
+ else
+ {
+ iCancelationSuccess=0;
+ }
+ }
+ }
+
+ // This will be checked by the canceltimer to determine if cancellation has finished
+ iFinishedCanceling=1;
+ }
+
+void CInstaller::DoCancel()
+ {
+ }
+
+// End of file