--- /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