diff -r 7d48bed6ce0c -r 987c9837762f cbs/cbsui/UiInc/CCbsUIMsgView.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cbs/cbsui/UiInc/CCbsUIMsgView.h Wed Sep 01 12:15:03 2010 +0100 @@ -0,0 +1,362 @@ +/* +* Copyright (c) 2002 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: +* Class for viewing messages. +* +* +*/ + + +#ifndef __CBSMSGVIEW_H +#define __CBSMSGVIEW_H + +// INCLUDES +#include +#include +#include +#include "MCbsUiTopicMonitorObserver.h" +#include "MSaveMessageController.h" +#include "CbsUiDebug.h" + + +// FORWARD DECLARATIONS +class CCbsUiTopicView; +class CCbsUiMsgViewContainer; +class CAknNavigationDecorator; +class CFindItemMenu; +class MCbs; +class CAknNavigationControlContainer; + +// CLASS DECLARATION +/** +* It is the class for viewing messages. +*/ +class CCbsUiMsgView : public CAknView, + public MCbsUiTopicMonitorObserver, + public MSaveMessageController, + public MAknNaviDecoratorObserver + { + public: // Constructors and destructor + + /** + * Destructor. + */ + ~CCbsUiMsgView(); + + /** + * Two-phased constructor. + * + * @param aServer Reference to cbs server. + */ + static CCbsUiMsgView* NewL( MCbs& aServer ); + + private: // From MEikMenuObserver + + /* + * Adds find item and checks weather delete, keep or both of + * them should be removed. + * + * @param aResourceId resource ID for identifying the menu pane being + * initialised. + * @param aMenuPane the in-memory representation of the menu pane. + */ + void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ); + + private: // From MAknNaviDecoratorObserver + + /** + * Method for handling touch events on navigator (navi pane) + * + * @param aEventID Id of the event. + */ + void HandleNaviDecoratorEventL( TInt aEventID ); + + public: // From MEikCommandObserver + + /** + * Closes context menu if it exists. + * + * @param aCommandId Command id, which has been pressed. + */ + void ProcessCommandL( TInt aCommandId ); + + public: // From CAknView + + /** + * Returns view id. + * + * @return View ID. + */ + TUid Id() const; + + /** + * Handles the command. + * + * @param aCommand menu command which user has selected from + * option menu + */ + void HandleCommandL( TInt aCommand ); + + /** + * Activates the message view. Actiovation depends on the message. + * Three variations are: normal, immediate and + * soft notification messages. + * + * @param aPrevViewId Previous view id. + * @param aCustomMessageId With this different mechanism of activations + * are used. Immediate message uses + * KCbsImmediateMessageIdInt and normal message + * uses KCbsUiCustomMessageId. If the message id + * differ from these, the message is activated + * by soft notification + * @param aCustomMessage Message content. + */ + void DoActivateL( + const TVwsViewId& aPrevViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage ); + + /** + * Deactivates the view and destroys needed objects. + */ + void DoDeactivate(); + + public: // From MSaveMessageController, these are called from + // CbsUiUtility + + /** + * Saves a message (the saved message won't be deleted to make + * room for new messages). + * + * Return codes: + * KErrNone Message is saved. + * KErrGeneral Message not saved -- total maximum of saved + * messages reached. + * KErrNotFound Message not saved -- no message associated + * with the given handle. + * KErrDiskFull Message not saved -- FFS out of space. + * + * @param aHandle Handle to the message to be saved. + * @return Return code. + */ + TInt SaveMessage( const TCbsMessageHandle& aHandle ); + + public: + + /** + * Sets the message information to navi pane. e.g. Message 1/3. + */ + void UpdateNaviPaneL(); + + /** + * When called, next message is displayed + */ + void MoveToNextMessageL(); + + /** + * When called, previous message is displayed + */ + void MoveToPreviousMessageL(); + + /** + * Topic list or topic messages are changed. + * + * @param aEvent reason for event + * @param aTopicNumber topic number, which caused the event + */ + void TopicListChangedL( + TCbsTopicListEvent aEvent, TCbsTopicNumber aTopicNumber ); + + /** + * Handle changes in container when rect changes. + * Update message and set new rect to container. + */ + void HandleRectChangeInContainerL(); + + private: // Data structures + + enum TMsgViewSetHandle + { + EToNext, + EToPrevious + }; + + private: // New functions + + /** + * Creates a find item dialog and pass a message to + * it and gives the search case, what to look. + * + * @param aCommand search case + */ + void DoSearchL( TInt aCommand ); + + /** + * Removes and destroys the context menu. + */ + void CloseContextMenu(); + + /** + * Launch the context menu. + */ + void LaunchContextMenuL(); + + /** + * Deletes a old message. + */ + void DeleteOldMessage(); + + /** + * Loads a message from topic view. + * + * @return error code if Loading of message has been leaved and catched. + */ + TInt DoLoadMessageL(); + + /** + * Activates topic view with defined topic number and message handle. + * + * @param aTopicNumber which topic the message belongs + * @param aHandle which message handle is activating topic view. + */ + void ActivateTopicViewL( + TCbsTopicNumber aTopicNumber, TCbsMessageHandle aHandle); + + /** + * Sets current message handle to aMessageHandle. + * + * @param aMessageHandle message handle + */ + void SetCurrentMessageHandle( const TDesC8& aMessageHandle ); + + /** + * Loads current message buffer. + */ + void LoadMessageL(); + + /** + * Adds date and time to a aMessage. + * + * @param aTime A time when message was received. + * @param aMessage Address of actual pointer variable. So after + * reallocation real message content is also changed. + * @param aResourceArrayId Used resource array for date and time format. + */ + void AddDateAndTimeL( + const TInt64 aTime, HBufC** aMessage, TUint aResourceArrayId ) const; + + /** + * Returns topic number of current message. + * + * @return current topic number + */ + TCbsTopicNumber CurrentTopicNumber() const; + + /** + * Gets message position in topic where th aHandle belongs. + * + * @param aHandle message handle + * @param aPosition It will contain the message position in topic. + * @param aTotal It will contain the total message count in topic, + * @return error code + */ + TInt GetMessagePosition( + TCbsMessageHandle aHandle, TInt& aPosition, TInt& aTotal ); + + /** + * Sets aHandle to previous or next according to aTo + * if possible. + * + * @param aTo sets aHandle to prev or next + * @return ETrue if aHandle has been set. + */ + TBool SetHandleTo( TCbsMessageHandle& aHandle, TMsgViewSetHandle aTo ); + + /** + * Deletes a message according to a aHandle. + * + * @param aHandle handle to be deleted. + * @return ETrue if message was deleted + */ + TBool DeleteMessageL( TCbsMessageHandle aHandle ); + + /** + * Activates topic list view. + */ + void ActivateTopicListViewL() const; + + /** + * Sets current message to newest hot marked message or + * activates the topic list view. + * + * @return ETrue if new view is launched + */ + TBool HandleSoftNotificationL(); + + private: + + /** + * C++ constructor. + * + * @param aServer Reference to cbs server. + */ + CCbsUiMsgView( MCbs& aServer ); + + /** + * Two-phased constructor. + */ + void ConstructL(); + + private: // Data + + // message buffer + HBufC* iMessage; + + // Container class + CCbsUiMsgViewContainer* iContainer; + + // Navi pane variables + CAknNavigationControlContainer* iNaviContainer; + + // NaviPaneDecorator + CAknNavigationDecorator* iDecoratedLabel; + + // NaviPaneDecorator + CAknNavigationDecorator* iPreviousDecoratedLabel; + + // Find item common component + CFindItemMenu* iFindItemMenu; + + // Context sensitive menu, which appears when pushed ok key + CEikMenuBar* iContextMenu; + + // To get a topic count and messages inside + // a topic. + MCbs& iServer; + + // Tells if the message is class 0. + TBool iIsClass0; + + // Current message handle + TCbsMessageHandle iCurrentHandle; + + // True if launched from the other application. + TBool iFromOtherApplication; + + }; + +#endif //__CBSMSGVIEW_H + + +// End of file