phonebookengines/contactsmodel/cntsrv/src/CCntPropertiesMsgHandler.cpp
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/cntsrv/src/CCntPropertiesMsgHandler.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,192 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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:
+//
+
+/**
+ @file
+ @internalComponent
+ @released
+*/
+
+#include "CCntMsgHandler.h"
+#include "CCntMsgHandlerFptr.h"
+#include "CCntPropertiesMsgHandler.h"
+
+#include "CCntServer.h"
+#include "CCntIpcCodes.h"
+#include "CCntRequest.h"
+#include "CCntDbManager.h"
+#include "CCntStateMachine.h"
+#include "CCntPackager.h"
+
+const TInt KCntPropertiesIpcCodes[] =
+	{
+	ECntChangeViewDef,
+	ECntMachineID,
+	ECntFileUniqueId,
+	ECntOverrideMachineID,
+	ECntReCreateTemplate,
+	ECntGetPrefTemplateId,
+	ECntSetPrefTemplateId,
+	ECntOpsTimeOut,
+	ECntICCTemplateId,
+	ECntPhonebookGroupId
+	};
+	
+CCntPropertiesMsgHandler* CCntPropertiesMsgHandler::NewLC(CCntSession& aSession)
+	{
+	CCntPropertiesMsgHandler* CntPropertiesMsgHandler = new (ELeave) CCntPropertiesMsgHandler(aSession);
+	CleanupStack::PushL(CntPropertiesMsgHandler);
+	return CntPropertiesMsgHandler;
+	}
+	
+
+CCntPropertiesMsgHandler::CCntPropertiesMsgHandler(CCntSession& aSession)
+:CCntMsgHandler(aSession)
+	{	
+	}
+	
+CCntPropertiesMsgHandler::~CCntPropertiesMsgHandler()
+	{
+	}
+	
+/**
+Delegates the incoming op code to a message handling method.
+
+First checks if this class services the op code, it then uses the lookup table and finds 
+function pointer(to message handling method) mapped to the incoming message function (op code)
+and finally delegates the message to handling method.
+
+It returns KErrNotFound if op code not handled.
+*/
+TInt CCntPropertiesMsgHandler::HandleMessageL(const RMessage2& aMessage)
+	{
+	MsgHandlerFptr func_ptr = LookupHandlerMethodL(aMessage.Function(), KCntPropertiesIpcCodes, sizeof(KCntPropertiesIpcCodes)/sizeof(TInt));
+	
+	if(func_ptr)
+		{
+		PropertiesMsgHandlerFptr mem_func_ptr = static_cast<PropertiesMsgHandlerFptr>(func_ptr);
+		(this->*mem_func_ptr)(aMessage);
+		return (KErrNone);
+		}
+	
+	return (KErrNotFound);
+	}
+	
+/** 
+Sets the default view definition.  The default view definition is used in calls
+to ReadContactL(), ReadContactLC() and ReadContactAndAgentL() when no view
+definition is explicitly specified.
+
+@param aMessage.Ptr0() View definition (from client).
+*/
+void CCntPropertiesMsgHandler::ChangeCntViewDefL(const RMessage2& aMessage)
+	{
+	// Destroy any existing view definition.
+	delete iView;
+	iView = NULL;
+	
+	iPackager.SetBufferFromMessageL(aMessage);
+	iView = iPackager.UnpackCntViewDefLC();
+	CleanupStack::Pop(iView);
+
+	aMessage.Complete(KErrNone);
+	}
+
+/**
+Message handling methods.
+
+Properties contains all logic to handle client-side get/set operation on
+server-side objects and variables.  These objects and variables are used
+throughout the server and Persistence Layer.
+*/
+void CCntPropertiesMsgHandler::ChangeViewDefL(const RMessage2& aMessage)
+	{
+	ChangeCntViewDefL(aMessage);
+	}
+
+void CCntPropertiesMsgHandler::MachineIdL(const RMessage2& aMessage)
+	{
+	// Maps to RCntModel::MachineId().
+	
+	CheckForManagerL();
+	TPckg<TInt64> pckg(iManager->GetPersistenceLayer().ContactProperties().MachineIdL());
+	aMessage.WriteL(0,pckg);
+	aMessage.Complete(KErrNone);
+	}
+	
+void CCntPropertiesMsgHandler::FileUniqueIdL(const RMessage2& aMessage)
+	{
+	// Maps to RCntModel::FileUidL().
+	
+	CheckForManagerL();
+	aMessage.WriteL(0, iManager->GetPersistenceLayer().ContactProperties().UniqueIdL());
+	aMessage.Complete(KErrNone);
+	}
+	
+void CCntPropertiesMsgHandler::OverrideMachineIdL(const RMessage2& aMessage)
+	{
+	// Maps to RCntModel::OverrideMachineUniqueId().
+	
+	CheckForManagerL();
+	#if defined(_DEBUG)
+	TInt64 machineId;
+	TPckg<TInt64> package(machineId);
+	aMessage.ReadL(0, package);
+	iManager->GetPersistenceLayer().ContactProperties().SetMachineIdL(machineId);
+	#endif			
+	aMessage.Complete(KErrNone);
+	}
+	
+void CCntPropertiesMsgHandler::ReCreateTemplateL(const RMessage2& aMessage)
+	{
+	// Maps to RCntModel::ReCreateTemplate().
+	CheckForManagerL();
+	iManager->RecreateSystemTemplateL();
+	aMessage.Complete(KErrNone);
+	}
+	
+void CCntPropertiesMsgHandler::GetPrefTemplateIdL(const RMessage2& aMessage)
+	{
+	CheckForManagerL();
+	aMessage.Complete(iManager->GetPersistenceLayer().ContactProperties().CardTemplatePrefIdL());
+	}
+	
+void CCntPropertiesMsgHandler::SetPrefTemplateIdL(const RMessage2& aMessage)
+	{
+	CheckForManagerL();
+	TContactItemId newCardTemplatePrefId = aMessage.Int0();
+	iManager->SetCardTemplatePrefIdL(newCardTemplatePrefId, iSessionId);
+	aMessage.Complete(KErrNone);
+	}
+	
+void CCntPropertiesMsgHandler::OpsTimeOut(const RMessage2& aMessage)
+	{
+	iTimeOut = aMessage.Int0();
+	aMessage.Complete(KErrNone);
+	}
+	
+void CCntPropertiesMsgHandler::ICCTemplateIdL(const RMessage2& aMessage)
+	{
+	CheckForManagerL();
+	const TUid phonebookUid(TUid::Uid(aMessage.Int0()));
+	aMessage.Complete(iManager->GetPersistenceLayer().ContactProperties().ICCTemplateIdL(phonebookUid, iSessionId));
+	}
+	
+void CCntPropertiesMsgHandler::PhonebookGroupIdL(const RMessage2& aMessage)
+	{
+	CheckForManagerL();
+	aMessage.Complete(iManager->GetPersistenceLayer().ContactProperties().PhonebookGroupIdL(iSessionId));
+	}
+