--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imstutils/imconversationview/imcvuiapp/inc/cimcvappviewcontainer.h Wed Sep 01 12:33:36 2010 +0100
@@ -0,0 +1,432 @@
+/*
+* Copyright (c) 2007-2008 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: main view container class
+*
+*/
+
+
+
+#ifndef _CIMCVAPPVIEWCONTAINER_H
+#define _CIMCVAPPVIEWCONTAINER_H
+
+// INCLUDES
+#include "cimcvapprichtextcontainercache.h"
+#include "mimcvapplayoutchangeobserver.h"
+#include "mimcvtapeventobserver.h"
+#include "cimcvappmessageeditor.h"
+
+#include <badesca.h> //For the CDesCArray
+#include <AknWaitDialog.h>
+#include "cimcvengine.h"
+// FORWARD DECLARATIONS
+class CIMCVAppMessageExtensionsHandler;
+class CIMCVAppViewControl;
+class MIMCVEngineMessageReadInterface;
+class MIMCVEngineMessageWriteInterface;
+class MIMCVEngineMessage;
+class CIMCVAppUi;
+class MIMCVUiAppSkinVariant;
+class MIMCVRecipientObserver;
+class CIMCVAppLoginEventListener;
+class CIMCVAppView;
+class CIMCVAppMessageEditor;
+class MIMCVEngineFactory;
+
+// CLASS DECLARATION
+
+/**
+* This is container class for conversation view
+*/
+class CIMCVAppViewContainer : public CCoeControl,
+ public MEikEdwinSizeObserver,
+ public MIMCVAppLayoutChangeObserver,
+ public MCoeControlObserver,
+ public MIMCVAppMessageEditorObserver,
+ public MIMCVTapEventObserver
+ {
+ public: // Enumerations
+
+ /**
+ * Observed controls
+ */
+ enum TTouchableControls
+ {
+ EMessageList = 1,
+ EMessageEditor
+ };
+
+ public: // Constructors and destructor
+
+ /**
+ * Symbian OS default constructor.
+ * @param aRect Frame rectangle for container.
+ * @param aEngine, refence to engine
+ * @param aReadInterface to read the messages
+ * @param aWriteInterface for writing the messages
+ * @param aParent Context access mechanism.
+ * @param aMessageHandler Handling messages
+ * @param aCba Pointer to cba of view.
+ * @param aRecipientId, recipient user id
+ * @param aBrandingAccess, brand accessor
+ */
+ static CIMCVAppViewContainer* NewL( const TRect& aRect,
+ CIMCVEngine* aEngine,
+ MIMCVEngineMessageReadInterface* aReadInterface,
+ MIMCVEngineMessageWriteInterface* aWriteInterface,
+ CIMCVAppView* aParent,
+ CIMCVAppMessageExtensionsHandler& aMessageHandler,
+ CEikButtonGroupContainer* aCba,
+ const TDesC& aRecipientId,
+ MIMCVRecipientObserver* aRecipientObserver,
+ CIMCVAppRichTextContainerCache* aRTContainerCache,
+ CGulIcon* aFromMe, CGulIcon* aToMe);
+
+
+ /**
+ * Destructor.
+ */
+ virtual ~CIMCVAppViewContainer();
+
+
+ private:
+
+ /**
+ * Symbian OS default constructor.
+ * @param aRect Frame rectangle for container.
+ * @param aParent Context access mechanism.
+ */
+ void ConstructL( const TRect& aRect, MObjectProvider* aParent,
+ CGulIcon* aFromMe, CGulIcon* aToMe ,
+ const TDesC& aRecipientId );
+
+
+ public: // New functions
+ const TRect TextRect() const;
+
+
+ /**
+ * Switches the Containers ReadInterface & WriteInterface
+ * @param aReadInterface to read the messages
+ * @param aWriteInterface for writing the messages
+ */
+ void SwitchViewL( MIMCVEngineMessageReadInterface* aReadInterface,
+ MIMCVEngineMessageWriteInterface* aWriteInterface,
+ const TDesC& aRecipientId );
+
+ /*
+ * assigned new engine instance
+ */
+ void SetServiceParametersL(CIMCVEngine* aNewEngine ) ;
+ /**
+ * Returns buffer containing the currently selected text
+ * (or empty buffer if nothing selected)
+ */
+ HBufC* SelectedItemL();
+
+ /**
+ * @return Type of selected item
+ */
+ TInt SelectedItemType();
+
+
+ /**
+ * This method starts scrolling
+ * @since 5.0
+ */
+ void StartScrollingL();
+
+ /**
+ * This method stops scrolling
+ * @since 5.0
+ */
+ void StopScrollingL();
+
+ void StartConversationL();
+
+
+ /**
+ * This closes the active conversation
+ * @since 5.0
+ */
+ TInt CloseConversationL(const TDesC& aBuddyId );
+
+ /**
+ * This will deactivate the active conversation
+ * @since 5.0
+ */
+ TInt DeactivateConversationL();
+
+ /**
+ * This method handles message sending
+ * @since 5.0
+ */
+ void SendMessageL();
+
+ /**
+ * This method insert a message about the presence status changes
+ * @since 5.0
+ */
+ void InsertStatusChangedMessageL(CIMCVEngine& aEngine, TInt aServiceId,const TDesC& aBuddyId );
+
+ /**
+ * Return reference of CIMCVAppMessageEditor object.
+ */
+ CIMCVAppMessageEditor& Editor() const ;
+
+ /**
+ * This checks if scroll mode is on or off
+ * @since 3.2
+ * @return Returns if scrolling is stopped or not (TBool)
+ */
+ TBool IsStopped() const;
+
+ /**
+ * Sets item highlighting on or off (automatic find)
+ * @param aHihghlight ETrue to set finder on
+ */
+ void SetItemHighlightL( TBool aHighlight );
+
+
+ /**
+ * Should we fetch new messages or not
+ * @param aFetch ETrue if this chat is in foreground and should receive
+ * messages, EFalse otherwise.
+ */
+ void FetchMessages( TBool aFetch );
+
+
+ /**
+ * Method to force refresh in the rich text editor,
+ * called from view when adding a smiley.
+ * @since 3.0
+ */
+ void RefreshEditorL();
+
+ /**
+ * Loads fome/tome icons
+ * @param aId, Id of the element required by the brnading server
+ * aBitmapId, id of the icon
+ * aMaskId of the icon
+ */
+ CGulIcon* LoadBitmapL(const TDesC8& aId, const TInt aBitmapId,const TInt aMaskId );
+
+ /**
+ * IsLoggedIn
+ * @return ETrue if logged in else EFalse
+ * @since 5.0
+ */
+ TBool IsLoggedIn() const;
+
+
+ /**
+ * Update the CBA labels
+ */
+ void UpdateCbaL();
+
+ /*
+ * Saves the message typed in the message editor of
+ * container
+ */
+ void StoreEditorMessageL();
+ void SmileyDialogLaunched (TBool aLaunched);
+ void UpdateChatViewL ();
+
+ private:
+
+ /**
+ * This function does basic clearing after the message is sent
+ */
+ void ResetAfterSendL();
+
+ /**
+ * This function displays information notes
+ * @param aResourceId Resource ID of note
+ */
+ void DisplayInfoNoteL( const TInt aResourceId );
+
+ void ResizeIcons( TRect aParentRect ) ;
+
+
+ private:
+
+ void MapFromBitmapIdToAknsItemId( TInt aBitmapId,
+ TAknsItemID& aItemId, TInt& aColorGroupId );
+
+ //does not Owns. "From me" icon
+ CGulIcon* iFromMe;
+
+ //does n0t Owns. "To me" icon
+ CGulIcon* iToMe;
+
+
+ private: // Functions from base classes
+
+ /**
+ * From MIMCVAppLayoutChangeObserver, for layout change observing
+ */
+ void LayoutChangedL( TInt aType );
+
+
+ /**
+ * From MEikEdwinSizeObserver, This method handles edwin's size change
+ * @param aEdwin The edwin for which the size event is being handled
+ * @param aEventType The event type
+ * @param aDesirableEdwinSize The desired size for the edwin identified
+ * by aEdwin
+ * @return The return value depends on your implementation.
+ * Return ETrue if you wish to redraw the edwin.
+ * EFalse otherwise
+ */
+ TBool HandleEdwinSizeEventL( CEikEdwin* aEdwin,
+ TEdwinSizeEvent aEventType, TSize aDesirableEdwinSize );
+
+
+
+ private: // From MCoeControlObserver
+
+ /**
+ * @see MCoeControlObserver
+ */
+ void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType );
+
+ private: // Functions CCoeControl
+
+ /**
+ * From CoeControl, Handles "size changed"-events..
+ */
+ void SizeChanged();
+
+ /**
+ * From CoeControl,
+ * Returns the number of control contained by this class.
+ * @return Number of controls contained
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl, Returns handle to control pointed by aIndex
+ * @param aIndex Wanted control's index [0..n]
+ * @return Handle to wanted control
+ */
+ CCoeControl* ComponentControl( TInt aIndex ) const;
+
+ /**
+ * From CCoeControl, Gets called when drawing is needed (by framework)
+ * @param aRect Rect that needs to be drawed
+ */
+ void Draw( const TRect& aRect ) const;
+
+ /**
+ * From CCoeControl, Handles key-events
+ * @param aKeyEvent Event that occured
+ * @param aType Type of key-event
+ * (EEventKey, EEventKeyUp or EEventKeyDown)
+ * @return Containers response to event
+ * (EKeyWasNotConsumed/ EKeyWasConsumed)
+ */
+ TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+ TEventCode aType );
+
+
+ private: // From MIMCVAppMessageEditorObserver
+
+ /**
+ * Handle editor event.
+ */
+ void HandleMessageEditorEventL( TEditorEvent aEvent );
+
+ private: // new functions
+ /**
+ * Constructor
+ * @param aEngine, refence to engine
+ * @param aReadInterface to read the messages
+ * @param aWriteInterface for writing the messages
+ * @param aMessageHandler Handling messages
+ * @param aCba Pointer to cba of view.
+ * @param aRecipientId, recipient user id
+ */
+ CIMCVAppViewContainer(
+ CIMCVEngine* aEngine,
+ MIMCVEngineMessageReadInterface* aReadInterface,
+ MIMCVEngineMessageWriteInterface* aWriteInterface,
+ CIMCVAppMessageExtensionsHandler& aMessageHandler,
+ CEikButtonGroupContainer* aCba,
+ MIMCVRecipientObserver* aRecipientObserver,
+ CIMCVAppView& aAppView,
+ CIMCVAppRichTextContainerCache* aRTContainerCache
+ );
+
+ private: // From MIMCVTapEventObserver
+
+ /**
+ * @see MIMCVTapEventObserver
+ */
+ void HandleTapEventL( TTapEvent aEvent, TUint aControlId );
+
+
+ private: // Data
+ // not owned, reference to uiengine
+ CIMCVEngine* iActiveEngine ;
+
+ // not owned., reference to appui
+ CIMCVAppUi* iAppUi;
+ // Owns. Chat view control
+ CIMCVAppViewControl* iChatView;
+ // not owned, message read interface
+ MIMCVEngineMessageReadInterface* iReadInterface;
+ // not owned, message witre interface
+ MIMCVEngineMessageWriteInterface* iWriteInterface;
+
+
+ // owned, outer line
+ TAknLayoutRect iOutLine;
+ // owned, horizontal line
+ TAknLayoutRect iHoriline;
+ // owned, vertical line
+ TAknLayoutRect iVertLine;
+
+
+ // not owned, message extention handler
+ CIMCVAppMessageExtensionsHandler& iMessageExtensionsHandler;
+
+
+ // Does not own. Pointer to cba of view.
+ CEikButtonGroupContainer* iCba;
+
+
+ //holds the reference to the contact to which
+ //conversation has been established.
+ HBufC* iRecipientId;
+
+ // owned, message content
+ HBufC* iEditorMessage;
+
+ // not owned
+ MIMCVUiAppSkinVariant* iSkinVaiant;
+
+
+ //Doesn't own. Handle to recipient observer
+ MIMCVRecipientObserver* iRecipientObserver;
+
+ //Reference to the AppView object
+ CIMCVAppView& iAppView;
+ //owns. meesage editor
+ CIMCVAppMessageEditor* iMsgEditor;
+ //Does nt Owns. Cache to store CIMCVAppRichTextContainer objects
+ CIMCVAppRichTextContainerCache* iRTContainerCache;
+ };
+
+#endif // _CIMCVAPPVIEWCONTAINER_H
+
+// End of File