--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuieng/EngSrc/CCAChatContainer.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,293 @@
+/*
+* Copyright (c) 2004-2005 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: Container for message containers
+*
+*/
+
+
+#ifndef CCACHATCONTAINER_H
+#define CCACHATCONTAINER_H
+
+#include "impsbuilddefinitions.h"
+#include "MCABufferMemoryHandler.h"
+#include "MCAChatInterface.h"
+#include "MCAChatObserver.h"
+
+// FORWARD CLASS DECLERATIONS
+class CCAMessageContainer;
+class MCASettings;
+
+// CLASS DECLARATION
+
+/**
+ * Container for message containers
+ *
+ * @lib CAEngine.dll
+ * @since 3.0
+ */
+class CCAChatContainer : public CBase,
+ public MCAChatInterface,
+ public MCABufferMemoryHandler,
+ public MCAChatObserver
+ {
+ public: // Construction
+
+ /**
+ * Construction
+ */
+ static CCAChatContainer* NewL( MCASettings& aSettingsInterface );
+
+ /**
+ * Destruction
+ */
+ ~CCAChatContainer();
+
+ private: // Construction
+
+ /**
+ * Constructor
+ */
+ CCAChatContainer( MCASettings& aSettingsInterface );
+
+ private: // Methods from MCAChatInterface
+
+ /**
+ * @see MCAChatInterface
+ */
+ MCAMessagesReadInterface& MessageReadInterfaceL(
+ const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId,
+ MCAMessagesReadInterface::TContainerType aType );
+
+ /**
+ * @see MCAChatInterface
+ */
+ MCAMessagesWriteInterface& MessageWriteInterfaceL(
+ const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId,
+ MCAMessagesReadInterface::TContainerType aType );
+
+ /**
+ * @see MCAChatInterface
+ */
+ void DeleteChatL( const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId );
+
+ /**
+ * @see MCAChatInterface
+ */
+ void CloseAllContainers();
+
+ /**
+ * @see MCAChatInterface
+ */
+ MCAMessagesReadInterface* ChatExistsL( const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId );
+
+ /**
+ * @see MCAChatInterface
+ */
+ MCAMessagesReadInterface& ChangeChatIdL(
+ const TDesC& aOldServerAddress,
+ const TDesC& aOldUserId,
+ const TDesC& aOldTargetId,
+ const TDesC& aNewServerAddress,
+ const TDesC& aNewUserId,
+ const TDesC& aNewTargetId,
+ MCAMessagesReadInterface::TContainerType aType );
+
+
+
+ /**
+ * @see MCAChatInterface
+ */
+ TInt GroupCount() const;
+
+ /**
+ * @see MCAChatInterface
+ */
+ TInt ChatCount() const;
+
+ /**
+ * @see MCAChatInterface
+ */
+ MCAMessagesReadInterface& GroupAt( TInt aIndex ) const;
+
+ /**
+ * @see MCAChatInterface
+ */
+ MCAMessagesReadInterface& ChatAt( TInt aIndex ) const;
+
+ /**
+ * @see MCAChatInterface
+ */
+ TInt RegisterChatObserver( MCAChatObserver* aObserver );
+
+ /**
+ * @see MCAChatInterface
+ */
+ TInt UnregisterChatObserver( MCAChatObserver* aObserver );
+
+ /**
+ * @see MCAChatInterface
+ */
+ void ResetPendingCount();
+
+ /**
+ * @see MCAChatInterface
+ */
+ TInt MessagesPendingCount( TInt& aCountOfChats,
+ MCAMessagesReadInterface::TUnreadFilter aUnreadFilter =
+ MCAMessagesReadInterface::EUnreadAll ) const;
+
+ /**
+ * @see MCAChatInterface
+ */
+ MCAMessageContainerInfo* PendingMessageInfo() const;
+
+#ifdef RD_CHAT_GROUP_MESSAGE_INDICATION_NEW
+ /**
+ * @see MCAChatInterface
+ */
+ TInt ChatGroupMessagesPendingCount( TInt& aCountOfChats ) const;
+
+ /**
+ * @see MCAChatInterface
+ */
+ MCAMessageContainerInfo* ChatGroupPendingMessageInfo() const;
+
+#endif // RD_CHAT_GROUP_MESSAGE_INDICATION_NEW
+
+ private: // Methods from MCABufferMemoryHandler
+
+ /**
+ * @see MCABufferMemoryHandler
+ */
+ TBool FreeMemoryIfNeededL( TInt aSize );
+
+ /**
+ * @see MCABufferMemoryHandler
+ */
+ void SetAccessInterface( MCAChatInterface* aAccess );
+
+ private: // Methods from MCAChatObserver
+
+ /**
+ * @see MCAChatObserver
+ */
+ void HandleChatEvent( TChatEventType aEvent,
+ MCAMessage* aMessage = NULL );
+
+ public: // New methods
+
+ /**
+ * Resolve recipient of message identified by operation code.
+ * @param aOperationCode, Identifier for getting right message.
+ * @param aStatus. Status of operation. KErrNone/KErrNotFound
+ * @return Message recipient
+ */
+ const TDesC& MessageRecipient( TInt aOperationCode,
+ TInt& aStatus ) const;
+
+ /**
+ * Set external memoryhandler. Set with NULL,
+ * if wanted to reset external handler.
+ */
+ void SetExternalMemoryHandler( MCABufferMemoryHandler* aMemoryHandler );
+
+ private: // New helper methods
+
+ /**
+ * Return index to chat. Try to create if does not exists.
+ * Leave if not possible. e.g. KErrNoMemory.
+ * @param aServerAddress Part of identifier to identify container.
+ * @param aUserId Part of identifier to identify container.
+ * @param aTargetId Part of identifier to identify container.
+ * @return Index of container.
+ */
+ TInt ChatL( const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId,
+ MCAMessagesReadInterface::TContainerType aType =
+ MCAMessagesReadInterface::ENoneContainer );
+
+ /**
+ * Returns latest found item by index.
+ * FindChat or ChatL( id, type ) must be called before this one.
+ * @param aIndex, Index of needed item.
+ * @param aResetLatest. Reset type of latest found container.
+ * ETrue, Reset, EFalse, No reseting.
+ * @return Pointer to right container.
+ */
+ CCAMessageContainer* ChatL( TInt aIndex, TBool aResetLatest = ETrue );
+
+ /**
+ * FindChat or ChatL( id, type ) must be called before this one.
+ * @param aIndex, Index of needed item.
+ * @param aResetLatest. Reset type of latest found container.
+ * ETrue, Reset, EFalse, No reset.
+ */
+ void RemoveChat( TInt aIndex, TBool aResetLatest = ETrue );
+
+ /**
+ * Finds if container exists and returns index.
+ * @param aChat Reference chat.
+ * @return Index of container. If container is not found,
+ * KErrNotFound is returned.
+ */
+ TInt FindChat( const CCAMessageContainer& aChat );
+
+ /**
+ * Create new container. Change aServerAddress and userid to
+ * current ones, if KNullDesC used.
+ * @see CCAMessageContainer
+ */
+ CCAMessageContainer* CreateContainerLC(
+ const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId,
+ MCABufferMemoryHandler& aMemoryHandler,
+ MCAMessagesReadInterface::TContainerType aType );
+ private: // Member data
+
+ /// Access to settings
+ MCASettings& iSettingsInterface;
+
+ /// Container of chats. Owns items.
+ RPointerArray< CCAMessageContainer > iChatContainer;
+
+ /// Container of groups. Owns items.
+ RPointerArray< CCAMessageContainer > iGroupContainer;
+
+ /// Container of send buffers. Owns items.
+ RPointerArray< CCAMessageContainer > iSendContainer;
+
+ /// Container of observers. Does not own items.
+ RPointerArray< MCAChatObserver > iObservers;
+
+ /// External memory handler if set.
+ MCABufferMemoryHandler* iExternalMemoryHandler;
+
+ /// Last found item type
+ MCAMessagesReadInterface::TContainerType iLatestType;
+ };
+
+
+#endif // CCACHATCONTAINER_H
+
+// End of File