diff -r 000000000000 -r 094583676ce7 wvuing/wvuieng/EngInc/MCAChatInterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/wvuieng/EngInc/MCAChatInterface.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,231 @@ +/* +* 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: Interface for getting access to message containers. +* +*/ + + +#ifndef MCACHATINTERFACE_H +#define MCACHATINTERFACE_H + +#include "impsbuilddefinitions.h" +#include "MCAMessagesReadInterface.h" + +// FORWARD CLASS DECLERATIONS +class MCAMessagesWriteInterface; +class MCABufferMemoryHandler; +class MCAMessageCreator; +class MCAChatObserver; +class MCAMessageContainerInfo; + +/** + * Internal buffer ids, these must be specified so that they can't appear in + * wireless village ids. And they must also be non-matchable to KNullDesC when + * comparing with neutral compare. + * + * From WV_CSP_v1.1.pdf: + * As per URI [RFC2396], certain reserved characters must be escaped if they + * occur within the User-ID, Resource, or Domain portions of a Wireless + * Village address. This includes the characters + * ";", "?", ":", "&", "=", "+", "$" and ",". + * + * When using neutral compare, atleast ";", "?", ":", "&", "=", "+", "#" and "," + * are invalid. + */ +_LIT( KSendBufferId, "$" ); +_LIT( KLoggerBufferId, "$$" ); + +// CLASS DECLARATION + +/** + * Interface for getting access to message containers. + * + * @lib CAEngine.dll + * @since 3.0 + */ +class MCAChatInterface + { + public: // Interface + + /** + * Provide access to chat messages. If messageContainer does not exists + * creates one. + * @param aServerAddress Part of identifier to identify container. + * @param aUserId Part of identifier to identify container. + * @param aTargetId Part of identifier to identify container. + * @param aType. Preferred type of container. If ENoneContainer, + * resolved by container. + * @return Read interface to container + */ + virtual MCAMessagesReadInterface& MessageReadInterfaceL( + const TDesC& aServerAddress, + const TDesC& aUserId, + const TDesC& aTargetId = KSendBufferId, + MCAMessagesReadInterface::TContainerType aType = + MCAMessagesReadInterface::ENoneContainer ) = 0; + + /** + * Provide access to append chat messages. + * If messageContainer does not exists, creates one. + * @param aServerAddress Part of identifier to identify container. + * @param aUserId Part of identifier to identify container. + * @param aTargetId Part of identifier to identify container. + * @param aType. Preferred type of container. If ENoneContainer, + * resolved by container. + * @return Write interface to container + */ + virtual MCAMessagesWriteInterface& MessageWriteInterfaceL( + const TDesC& aServerAddress, + const TDesC& aUserId, + const TDesC& aTargetId = KSendBufferId, + MCAMessagesReadInterface::TContainerType aType = + MCAMessagesReadInterface::ENoneContainer ) = 0; + + /** + * Delete identified chat container + * @param aServerAddress Part of identifier to identify container. + * @param aUserId Part of identifier to identify container. + * @param aTargetId Part of identifier to identify container. + */ + virtual void DeleteChatL( const TDesC& aServerAddress, + const TDesC& aUserId, + const TDesC& aTargetId = KSendBufferId ) = 0; + + + /** + * Close all open containers. + */ + virtual void CloseAllContainers() = 0; + + /** + * Check if chat exists or not. + * @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 Read interface if chat exists, NULL if not. + */ + virtual MCAMessagesReadInterface* ChatExistsL( + const TDesC& aServerAddress, + const TDesC& aUserId, + const TDesC& aTargetId = KSendBufferId ) = 0; + + /** + * Change identifier of chat. Also type of container can be changed. If + * old does not exists, creates new one. + * @param aOldServerAddress Part of old identifier to identify container. + * @param aOldUserId Part of old identifier to identify container. + * @param aOldTargetId Part of old identifier to identify container. + * @param aServerAddress Part of new identifier to identify container. + * @param aUserId Part of new identifier to identify container. + * @param aTargetId Part of new identifier to identify container. + * @param aType. Preferred type of container. If ENoneContainer, + * Resolved by container. + * @return Read interface to container + */ + virtual MCAMessagesReadInterface& ChangeChatIdL( + const TDesC& aOldServerAddress, + const TDesC& aOldUserId, + const TDesC& aOldTargetId, + const TDesC& aNewServerAddress, + const TDesC& aNewUserId, + const TDesC& aNewTargetId = KSendBufferId, + MCAMessagesReadInterface::TContainerType aType = + MCAMessagesReadInterface::ENoneContainer ) = 0; + + /** + * Get count of group chats. + * @return count of group chats. + */ + virtual TInt GroupCount() const = 0; + + /** + * Get count of ptop chats. + * @return Count of ptop chats. + */ + virtual TInt ChatCount() const = 0; + + /** + * Get group chat + * @param aIndex, Index of chat to get. + * @return Read interface based on index. + */ + virtual MCAMessagesReadInterface& GroupAt( TInt aIndex ) const = 0; + + /** + * Get ptop chat + * @param aIndex, Index of chat to get. + * @return Read interface based on index. + */ + virtual MCAMessagesReadInterface& ChatAt( TInt aIndex ) const = 0; + + /** + * Register observer for chat events. Remember to unregister + * when not needed + * @param aObserver Observer which is registered. + * @return KErrNone if succeed. + */ + virtual TInt RegisterChatObserver( MCAChatObserver* aObserver ) = 0; + + /** + * Unregister observer for chat events. + * @param aObserver Observer which is unregistered + * @return KErrNone if found and unregistered. + */ + virtual TInt UnregisterChatObserver( MCAChatObserver* aObserver ) = 0; + + /** + * Reset count of pending messages + */ + virtual void ResetPendingCount() = 0; + + /** + * Count of pending messages + * @param aCountOfChats. Count of different chats having pending + * messages + * @param aUnreadFilter Count all messages or just received messages + * @return count of messages. + */ + virtual TInt MessagesPendingCount( TInt& aCountOfChats, + MCAMessagesReadInterface::TUnreadFilter aUnreadFilter = + MCAMessagesReadInterface::EUnreadAll ) const = 0; + + /** + * First pending message containers info. + * @return First pending message containers info. + */ + virtual MCAMessageContainerInfo* PendingMessageInfo() const = 0; + +#ifdef RD_CHAT_GROUP_MESSAGE_INDICATION_NEW + /** + * Count of unread chat group messages. + * @param aCountOfChats. Count of different chats having pending + * messages + * @since S60 v3.2 + * @return count of messages. + */ + virtual TInt ChatGroupMessagesPendingCount( TInt& aCountOfChats ) const = 0; + + /** + * First pending message containers info. + * @return First pending message containers info of group Chat. + */ + virtual MCAMessageContainerInfo* ChatGroupPendingMessageInfo() const = 0 ; + +#endif // RD_CHAT_GROUP_MESSAGE_INDICATION_NEW + + }; + +#endif // MCACHATINTERFACE_H + +// End of File