phonebookengines/contactsmodel/cntsrv/inc/CCntViewMsgHandler.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/cntsrv/inc/CCntViewMsgHandler.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,112 @@
+/**
+* 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
+*/
+
+#ifndef CNTVIEWMSGHANDLER_H
+#define CNTVIEWMSGHANDLER_H
+
+class CCntMsgHandler;
+class CViewSubSessionBase;
+
+/**
+CCntViewMsgHandler class handles all View related operations. It uses
+a message handling method to handle the incoming op code.
+
+It delegates the incoming op code to appropriate message handling method by using
+a lookup table of member function pointers created by CCntServer.
+
+@internalComponent
+*/
+class CCntViewMsgHandler : public CCntMsgHandler
+	{
+public:
+	static CCntViewMsgHandler* NewLC(CCntSession& aSession);
+    virtual ~CCntViewMsgHandler();
+	TInt HandleMessageL(const RMessage2& aMessage);
+	
+private:
+	CCntViewMsgHandler(CCntSession& aSession);
+	void ConstructorL();
+	
+	// Helper methods
+	void CreateViewSubSessionL(const RMessage2& aMessage);
+	void CreateNamedViewSubSessionL(const RMessage2& aMessage);
+	void CloseViewSubSessionL(const RMessage2 &aMessage);
+	CViewSubSessionBase& ViewFromHandleL(TUint aHandle);
+	void CompleteMessage(TInt aRet, const RMessage2& aMessage);
+	
+	void ValidateViewContactL(const CViewContact& aViewContact, TInt aSessionId);
+
+public:	
+	void ItemAtL(const RMessage2& aMessage);
+	void OpenViewSessionL(const RMessage2& aMessage);
+	void CloseViewSessionL(const RMessage2& aMessage);
+	void ChangeSortOrderL(const RMessage2& aMessage);
+	void BeginIterateL(const RMessage2& aMessage);
+	void EndIterateL(const RMessage2& aMessage);
+	void NextItemL(const RMessage2& aMessage);	
+	void TextFieldL(const RMessage2& aMessage);
+    void ReadContactTextDefL(const RMessage2& aMessage);
+	void CreateViewL(const RMessage2& aMessage);
+	void CreateNamedViewL(const RMessage2& aMessage);
+	void CloseViewL(const RMessage2& aMessage);
+	void MatchesHintFieldL(const RMessage2& aMessage);
+	void ViewSubSessionServiceL(const RMessage2& aMessage);
+	
+private:
+	CObjectCon*  iContainer;
+	CObjectIx*   iSubSessions;
+	};
+	
+/**
+Subsession container object cleanup class.
+*/
+class TObjectCleanup
+	{
+public:
+	TObjectCleanup() : iObject(NULL),iIndex(NULL) {}
+	static void Cleanup(TAny* aSelf) 
+		{ 
+		TObjectCleanup* cleanupObj = static_cast<TObjectCleanup*>(aSelf);
+		cleanupObj->DoCleanup();
+		}
+private:
+	void DoCleanup()
+		{
+		if (iIndex)
+			{
+			iIndex->Remove(iHandle);
+			}
+		else if (iObject)
+			{
+			iObject->Close();
+			}
+		delete this;
+		}
+public:
+	CObject* iObject;
+	CObjectIx* iIndex;
+	TInt iHandle;
+	};
+	
+#endif