diff -r 000000000000 -r e686773b3f54 phonebookengines/contactsmodel/cntsrv/src/CCntPropertiesMsgHandler.cpp --- /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(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 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 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)); + } +