--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuieng/EngSrc/CCAMessageContainer.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,416 @@
+/*
+* Copyright (c) 2004 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 class for messages.
+*
+*/
+
+
+#ifndef __CCAMESSAGECONTAINER_H__
+#define __CCAMESSAGECONTAINER_H__
+
+#include "MCAMessagesReadInterface.h"
+#include "MCAMessagesWriteInterface.h"
+#include "MCAMessageContainerInfo.h"
+#include "MCAContentProcessObserver.h"
+
+// FORWARD CLASS DECLERATIONS
+class MCABufferMemoryHandler;
+class MCAChatObserver;
+class MCALoggerWriteInterface;
+class MCALoggerMessage;
+
+// CLASS DECLARATION
+
+/**
+ * Container class for messages.
+ *
+ * @lib CAEngine.dll
+ * @since 3.0
+ */
+
+class CCAMessageContainer : public CBase,
+ public MCAMessagesReadInterface,
+ public MCAMessagesWriteInterface,
+ public MCAMessageContainerInfo,
+ public MCAContentProcessObserver
+ {
+ public: // Construction
+
+ /**
+ * Construction
+ * @param aIdentifier, Identifier of container
+ * @param aMemoryHandler Handles memory
+ * @param aType Type of container. EGroupContainer, EChatContainer
+ * @return Pointer to new created instance of CCAMessageContainer
+ */
+ static CCAMessageContainer* NewL( const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId,
+ MCABufferMemoryHandler& aMemoryHandler,
+ TContainerType aType );
+
+ /**
+ * Construction
+ * @param aIdentifier, Identifier of container
+ * @param aMemoryHandler Handles memory
+ * @param aType Type of container. EGroupContainer, EChatContainer
+ * @return Pointer to new created instance of CCAMessageContainer
+ */
+ static CCAMessageContainer* NewLC( const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId,
+ MCABufferMemoryHandler& aMemoryHandler,
+ TContainerType aType );
+
+ /**
+ * Destruction
+ */
+ ~CCAMessageContainer();
+
+ private: // Construction
+
+ /**
+ * Constructor
+ * @param aMemoryHandler Handles memory
+ */
+ CCAMessageContainer( MCABufferMemoryHandler& aMemoryHandler );
+
+ /**
+ * Constructor
+ * @param aIdentifier, Identifier of container
+ * @param aType Type of container. EGroupContainer, EChatContainer
+ */
+ void ConstructL( const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId,
+ TContainerType aType );
+
+ private: // Methods from MCAMessagesReadInterface
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ TInt UnreadCount( TUnreadFilter aUnreadFilter = EUnreadAll ) const;
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ TInt MessageCount() const;
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ void Read( TReadType aReadType, TInt aReadAmount = 0 );
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ MCAMessage& Message( TInt aIndex ) const;
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ MCAMessage& ReadNextUnread();
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ MCAMessage& ReadUnreadFromIndex( TInt aIndex );
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ void SetObserver( MCAMessageObserver* aObserver );
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ TPtrC Name() const;
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ void DeleteMessage( TInt aIndex );
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ void StartLoggingL( const TDesC& aLogFilename );
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ void EndLoggingL();
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ TBool IsLoggingOn() const;
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ TInt FindIndex( TInt aOperationCode ) const;
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ TInt FindIndex( MCAMessage& aMessage ) const;
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ MCAMessageContainerInfo& TargetId();
+
+ /**
+ * @see MCAMessagesReadInterface
+ */
+ void Lock( TBool aLocked );
+
+ //fix - refer Ui Spec Approved Version 1.0
+ //(Instant Messaging NG 001 151006.pdf)
+ //Section 10.2.10 Pg 131 -
+ //"In case user has saved the image already or sent it
+ //by himself, this option(save) is not available."
+
+ /**
+ * Added newly - Plz dont remove while merging
+ * @see MCAMessagesReadInterface
+ */
+ void ReLoggingL( MCALoggerMessageHeader& aFile );
+
+ /**
+ * Added newly - Plz dont remove while merging
+ * @see MCAMessagesReadInterface
+ */
+ void EndReLoggingL();
+
+ private: // Methods from MCAMessagesWriteInterface
+
+ /**
+ * @see MCAMessagesWriteInterface
+ */
+ void AppendL( MCAMessage* aMessage, TBool aSharedOwnership );
+
+ /**
+ * @see MCAMessagesWriteInterface
+ */
+ void SetScreenNameL( const TDesC& aScreenName );
+
+ /**
+ * @see MCAMessagesWriteInterface
+ */
+ const TDesC& OwnScreenName() const;
+
+ /**
+ * @see MCAMessagesWriteInterface
+ */
+ void LockBufferMemoryHandling( TBool aLocked );
+
+ /**
+ * @see MCAMessagesWriteInterface
+ */
+ TTime Time();
+
+ private: // From MCAMessageContainerInfo
+
+ /**
+ * @see MCAMessageContainerInfo
+ */
+ const TDesC& ServerAddress() const;
+
+ /**
+ * @see MCAMessageContainerInfo
+ */
+ const TDesC& UserId() const;
+
+ /**
+ * @see MCAMessageContainerInfo
+ */
+ const TDesC& Target() const;
+
+ /**
+ * @see MCAMessageContainerInfo
+ */
+ const TDesC& ScreenName() const;
+
+ /**
+ * @see MCAMessageContainerInfo
+ */
+ void SetAddToContactAsked( TBool aIsAsked );
+
+ /**
+ * @see MCAMessageContainerInfo
+ */
+ TBool IsAddToContactAsked() const;
+
+ private: // From MCAContentProcessObserver
+
+ /**
+ * @see MCAContentProcessObserver
+ */
+ void HandleProcessingComplete( MCAContentProcessor& aProcessor,
+ MCAMessage& aMessage, TInt aStatus );
+
+ public: // New methods
+
+ /**
+ * Ordering function for ordering Message containers
+ * @param aSourceA First compare item.
+ * @param aSourceB Second compare item.
+ * @return -1, 0 or +1, like CompareC.
+ */
+ static TInt OrderUid( const CCAMessageContainer& aSourceA,
+ const CCAMessageContainer& aSourceB );
+
+ /**
+ * Type of container
+ * @return Type of container. EGroupContainer, EChatContainer
+ */
+ TContainerType ContainerType() const;
+
+ /**
+ * Change identifier
+ * @param aNewId, new identifier
+ * @param aType, new type. If ENoneContainer, Resolved automaticly.
+ */
+ void ChangeIdL( const TDesC& aServerAddress,
+ const TDesC& aUserId,
+ const TDesC& aTargetId,
+ MCAMessagesReadInterface::TContainerType aType );
+
+ /**
+ * Get recipient of message identified by operation code.
+ * aStatus updated to KErrNone if success. KErrNotFound if not.
+ * @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 chat observer.
+ * @param aObserver. Observer to set.
+ */
+ void SetChatObserver( MCAChatObserver* aObserver );
+
+ private: // New helper methods
+
+ /**
+ * Resolve type of container by identifier.
+ * @param aType, new type. If ENoneContainer, Resolved automaticly.
+ */
+ void ResolveType( TContainerType aType );
+
+ /**
+ * Make log.
+ * @param aMessage Message to log.
+ */
+ void MakeLogL( MCALoggerMessage& aMessage );
+
+ /**
+ * Notify contact for pending count change.
+ */
+ void NotifyContactForPending() const;
+
+ /**
+ * Returns target id to be used for
+ * comparisons.
+ * @since S60 v3.1
+ * @return Target id.
+ */
+ const TDesC& ComparableTarget() const;
+
+ public:
+
+ /**
+ * Get count of all messages. Unread and read.
+ * @return Count of messages
+ */
+ TInt AllMessagesCount() const;
+
+ /**
+ * Access to any message. Also unread.
+ * @param aIndex Index of message
+ * @return Reference to message.
+ */
+ MCAMessage& MessageFromAll( TInt aIndex ) const;
+
+ /**
+ * Delete from all messages. Unread and read messages available.
+ * @param aIndex. Index of message.
+ */
+ void DeleteMessageFromAll( TInt aIndex );
+
+ /**
+ * Is container locked or not. ETrue locked, EFalse not.
+ * @return Locked status.
+ */
+ TBool IsLocked() const;
+
+ /**
+ * Sizes of messages in container in bytes.
+ * @since S60 v3.1
+ * @return Size in bytes.
+ */
+ TInt ContainerSizeInBytes() const;
+
+ private: // Member data
+
+ /// Chat group id / conversation party id
+ HBufC* iServerAddress;
+ HBufC* iUserId;
+ HBufC* iTargetId;
+ HBufC* iDecodedTargetId;
+
+ /// Screen name of user corresponding the container.
+ HBufC* iScreenName;
+
+ /// Offset to last unread message
+ TInt iUnreadOffset;
+
+ /// Array of messages.
+ RPointerArray< MCAMessage > iMessageContainer;
+
+ /// Reference to memory handler
+ MCABufferMemoryHandler& iMemoryHandler;
+
+ /// Observer class
+ MCAMessageObserver* iObserver;
+
+ /// Type of container
+ TContainerType iContainerType;
+
+ /// Not own. Chat observer
+ MCAChatObserver* iChatObserver;
+
+ // Owns. Write interface for logging.
+ MCALoggerWriteInterface* iLogger;
+
+ // Tells if add to contacts is asked
+ TBool iAddToContactAsked;
+
+ // Locked status
+ TBool iLocked;
+
+ // Buffer memory handling locked
+ TBool iMemoryHandlingLocked;
+
+ // Size of contained messages in bytes
+ TInt iContainerSizeInBytes;
+ };
+
+#endif // __CCAMESSAGECONTAINER_H__
+
+// End of File