installationservices/swi/test/tasynccancel/installer.cpp
changeset 0 ba25891c3a9e
--- /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