installationservices/swi/test/tmimehandler/tmimehandler.cpp
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tmimehandler/tmimehandler.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,170 @@
+/*
+* Copyright (c) 2005-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 "tmimehandler.h"
+#include <apacmdln.h>
+
+const TInt KUidMimeAppValue=0x1021234d ; 
+
+void CMimeAppUi::DoExitL()
+	{
+	
+	CVwsSessionWrapper* ses=CVwsSessionWrapper::NewLC();
+	ses->EnableServerEventTimeOut(ETrue);
+	CleanupStack::PopAndDestroy();
+	Exit();
+	}
+
+CMimeAppUi::CMimeAppUi()
+	{
+	}
+	
+void CMimeAppUi::ConstructL()
+    {
+	BaseConstructL();
+	}
+
+CMimeAppUi::~CMimeAppUi()
+	{
+	}
+
+TBool CMimeAppUi::ProcessCommandParametersL(TApaCommand aCommand, 
+	TFileName& aDocumentName, const TDesC8& /*aTail*/)
+	{
+	switch (aCommand)
+		{
+		case EApaCommandOpen:
+			{
+			//Open the file for read the path and create the file.
+			TBuf8 <KMaxFileName> readBuffer;
+			RFs fs;
+			User::LeaveIfError(fs.Connect());
+			CleanupClosePushL(fs);			
+			RFile file;
+			User::LeaveIfError(file.Open(fs, aDocumentName, EFileStreamText));
+			User::LeaveIfError(file.Read(readBuffer));
+			file.Close();
+			HBufC* buf1 = HBufC::NewLC(KMaxFileName);
+			TPtr tptr = buf1->Des();
+			tptr.Copy(readBuffer);
+			TInt pos = tptr.Locate(' ');
+			TInt count1 = tptr.Length();
+			TInt count2 = count1-pos;
+			tptr.Delete(pos,count2);
+			User::LeaveIfError(file.Replace(fs,tptr,EFileWrite));
+			CleanupStack::PopAndDestroy(2, &fs);
+			}
+		break;	   
+		}
+		
+	return ETrue;	
+	}
+	
+TBool CMimeAppUi::ProcessCommandParametersL(CApaCommandLine& aCommandLine)
+	{
+	switch (aCommandLine.Command())
+		{
+		case EApaCommandOpen:
+			{		
+			// Open the file and use the handle to install it
+			RFile fileHandle;
+			CleanupClosePushL(fileHandle);
+			aCommandLine.GetFileByHandleL(fileHandle);
+			
+			if (fileHandle.SubSessionHandle() != KNullHandle)
+				{
+				HBufC8* buf1 = HBufC8::NewLC(KMaxFileName);
+				TPtr8 tptr = buf1->Des();
+				fileHandle.Read(tptr);
+				TInt pos = tptr.Locate(' ');
+				TInt count1 = tptr.Length();
+				TInt count2 = count1-pos;
+				tptr.Delete(pos,count2);
+				RFs fs;
+				User::LeaveIfError(fs.Connect());
+				CleanupClosePushL(fs);
+				RFile file;
+				CleanupClosePushL(file);
+				TBuf <KMaxFileName> fileName;
+				fileName.Copy(tptr);				
+				User::LeaveIfError(file.Replace(fs,fileName,EFileWrite));
+				CleanupStack::PopAndDestroy(3, buf1); // file, fs, buf1
+				}
+			else
+				{
+				TFileName name=aCommandLine.DocumentName();
+				// No file handle, launch by document name
+				ProcessCommandParametersL(aCommandLine.Command(), name, aCommandLine.TailEnd());
+				}
+			CleanupStack::PopAndDestroy(&fileHandle); // fileHandle
+			
+			Exit();
+			}
+		break;	
+		}
+	return ETrue;	
+	}
+	
+	
+CMimeDocument::CMimeDocument(CMimeApplication& aApp)
+		: CEikDocument(aApp)
+	{
+	__DECLARE_NAME(_S("CMimeDocument"));
+	}
+	
+CEikAppUi* CMimeDocument::CreateAppUiL()
+	{
+    return(new(ELeave) CMimeAppUi);
+	} 
+
+
+	
+// ===========================================================================
+// CMimeApplication
+// Main application class
+// ===========================================================================
+	
+TUid CMimeApplication::AppDllUid() const
+	{
+	const TUid KUidMimeApp={KUidMimeAppValue};
+	return(KUidMimeApp);
+	}
+	
+CApaDocument* CMimeApplication::CreateDocumentL()
+	{
+	return(new(ELeave) CMimeDocument(*this));
+	}
+	
+
+// ===========================================================================
+// Main EPOC app startup
+// ===========================================================================
+
+EXPORT_C CApaApplication* NewApplication()
+	{
+	return(new CMimeApplication);
+	}
+
+GLDEF_C TInt E32Main()
+	{
+	// Wait 1 second on startup for the benefit of synchronous filerun tests.
+	// Some tests depend on tmimehandler not completing before an install
+	// test step finishes.
+	User::After(1000000);
+	return EikStart::RunApplication(NewApplication);
+	}