plugins/consoles/tefcons/tefcons.cpp
changeset 3 859da167ccfe
child 81 72ffa331d78d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/consoles/tefcons/tefcons.cpp	Sun Jul 04 15:58:56 2010 +0100
@@ -0,0 +1,164 @@
+// tefcons.cpp
+// 
+// Copyright (c) 2010 Accenture. All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the "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:
+// Accenture - Initial contribution
+//
+
+#include <e32std.h>
+#include <e32cons.h>
+#include <e32keys.h>
+#include <test/testexecutelogger.h>
+#include <fshell/consoleextensions.h>
+
+NONSHARABLE_CLASS(CTefConsole) : public CConsoleBase
+	{
+public:
+	CTefConsole();
+	virtual ~CTefConsole();
+	virtual TInt Create(const TDesC &aTitle,TSize aSize);
+	virtual void Read(TRequestStatus &aStatus);
+	virtual void ReadCancel();
+	virtual void Write(const TDesC &aDes);
+	virtual TPoint CursorPos() const;
+	virtual void SetCursorPosAbs(const TPoint &aPoint);
+	virtual void SetCursorPosRel(const TPoint &aPoint);
+	virtual void SetCursorHeight(TInt aPercentage);
+	virtual void SetTitle(const TDesC &aTitle);
+	virtual void ClearScreen();
+	virtual void ClearToEndOfLine();
+	virtual TSize ScreenSize() const;
+	virtual TKeyCode KeyCode() const;
+	virtual TUint KeyModifiers() const;
+	virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);
+
+	void WriteStdErr(const TDesC &aDes);
+
+private:
+	CTestExecuteLogger* iLogger;
+	};
+
+CTefConsole::CTefConsole()
+	{
+	}
+
+TInt CTefConsole::Create(const TDesC& aTitle, TSize /*aSize*/)
+	{
+	iLogger = new CTestExecuteLogger();
+	if (!iLogger) return KErrNoMemory;
+	TInt logMode = TLoggerOptions(ELogHTMLOnly);
+	TInt logLevel = RFileFlogger::TLogSeverity(ESevrAll);
+	iLogger->SetLoggerOptions(logMode);
+	TInt err = iLogger->Connect();
+	if (err) return err;
+	const TDesC& logFilePath(aTitle);
+	err = iLogger->HtmlLogger().CreateLog(logFilePath, RTestExecuteLogServ::ELogModeAppend);
+	if (err) return err;
+	iLogger->HtmlLogger().SetLogLevel(TLogSeverity(logLevel));
+
+	iLogger->HtmlLogger().Write(_L("<pre>\r\n")); // horrible horrible tef logging - the client is responsible for writing markup!
+	return KErrNone;
+	}
+
+
+CTefConsole::~CTefConsole()
+	{
+	if (iLogger)
+		{
+		iLogger->HtmlLogger().Write(_L("</pre>\r\n")); // horrible horrible tef logging - the client is responsible for writing markup!
+		iLogger->Close();
+		delete iLogger;
+		}
+	}
+
+void CTefConsole::Read(TRequestStatus &aStatus)
+	{
+	TRequestStatus *pS=(&aStatus);
+	User::RequestComplete(pS, KErrNotSupported);
+	}
+
+void CTefConsole::ReadCancel()
+	{
+	}
+
+void CTefConsole::Write(const TDesC& aDes)
+	{
+	//TODO sort out the file and line
+	//iLogger->LogExtra(((TText8*)__FILE__), __LINE__, ESevrInfo, aDes);
+	iLogger->HtmlLogger().Write(aDes);
+	}
+
+void CTefConsole::WriteStdErr(const TDesC &aDes)
+	{
+	//iLogger->LogExtra(((TText8*)__FILE__), __LINE__, ESevrErr, aDes);
+	iLogger->HtmlLogger().Write(aDes);
+	}
+
+TPoint CTefConsole::CursorPos() const
+	{
+	return TPoint(0,0);
+	}
+
+void CTefConsole::SetCursorPosAbs(const TPoint& /*aPoint*/)
+	{
+	}
+
+void CTefConsole::SetCursorPosRel(const TPoint& /*aPoint*/)
+	{
+	}
+
+void CTefConsole::SetCursorHeight(TInt /*aPercentage*/)
+	{
+	}
+
+void CTefConsole::SetTitle(const TDesC& /*aTitle*/)
+	{
+	}
+
+void CTefConsole::ClearScreen()
+	{
+	}
+
+void CTefConsole::ClearToEndOfLine()
+	{
+	}
+
+TSize CTefConsole::ScreenSize() const
+	{
+	return TSize(10,10);
+	}
+
+TKeyCode CTefConsole::KeyCode() const
+	{
+	return EKeyNull;
+	}
+
+TUint CTefConsole::KeyModifiers() const
+	{
+	return 0;
+	}
+
+extern "C" EXPORT_C TAny *NewConsole()
+	{
+	return(new CTefConsole);
+	}
+
+TInt CTefConsole::Extension_(TUint aExtensionId, TAny*& a0, TAny* a1)
+	{
+	if (aExtensionId == ConsoleStdErr::KWriteStdErrConsoleExtension)
+		{
+		TDesC* des = (TDesC*)a1;
+		WriteStdErr(*des);
+		return KErrNone;
+		}
+	else
+		{
+		return CConsoleBase::Extension_(aExtensionId, a0, a1);
+		}
+	
+	}