libraries/iosrv/server/config.cpp
changeset 0 7f656887cf89
child 83 706c7a69e448
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libraries/iosrv/server/config.cpp	Wed Jun 23 15:52:26 2010 +0100
@@ -0,0 +1,77 @@
+// config.cpp
+// 
+// Copyright (c) 2006 - 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 "config.h"
+#include <fshell/settings.h>
+
+
+// Default values (used if the config file can't be read).
+_LIT(KDefaultConsole, "defcons.dll");
+const TSize KDefaultSizeAdjustment(0, 0);
+
+// Config file details.
+_LIT(KConfigFileName, "\\system\\console\\iosrv.ini");
+_LIT(KConfigDescriptionFile, "\\resource\\iosrv.idf");
+
+// Configuration attributes.
+_LIT(KAttConsole, "console");
+_LIT(KAttConsoleSizeAdjustment, "console_size_adjustment");
+_LIT(KAttConsoleSizeDetect, "console_size_detect");
+
+
+TIoConfig::TIoConfig()
+	: iConsoleImplementation(KDefaultConsole), iConsoleSizeAdjustment(KDefaultSizeAdjustment), iConsoleSizeDetect(ETrue)
+	{
+	}
+
+TInt TIoConfig::Init()
+	{
+	LtkUtils::CIniFile* iniFile = NULL;
+	TRAPD(ret, iniFile = LtkUtils::CIniFile::NewL(KConfigFileName, KConfigDescriptionFile));
+	if (ret == KErrNone) ret = DoInit(iniFile);
+	delete iniFile;
+	return ret;
+	}
+
+TInt TIoConfig::DoInit(LtkUtils::CIniFile* iniFile)
+	{
+	TInt ret = KErrNone;
+	iConsoleImplementation.Copy(iniFile->GetString(KAttConsole).Left(iConsoleImplementation.MaxLength()));
+	iConsoleSizeDetect = iniFile->GetBool(KAttConsoleSizeDetect);
+	const TDesC& sizeAdjust(iniFile->GetString(KAttConsoleSizeAdjustment));
+	if (sizeAdjust.Length())
+		{
+		TLex lex(sizeAdjust);
+		ret = lex.Val(iConsoleSizeAdjustment.iWidth);
+		if (ret) return ret;
+		lex.Get(); // Skip delimiter.
+		ret = lex.Val(iConsoleSizeAdjustment.iHeight);
+		if (ret) return ret;
+		iConsoleSizeDetect = EFalse;
+		}
+	return ret;
+	}
+
+const TDesC& TIoConfig::ConsoleImplementation() const
+	{
+	return iConsoleImplementation;
+	}
+
+const TSize& TIoConfig::ConsoleSizeAdjustment() const
+	{
+	return iConsoleSizeAdjustment;
+	}
+
+TBool TIoConfig::ConsoleSizeDetect() const
+	{
+	return iConsoleSizeDetect;
+	}