mobilemessaging/smsui/viewerinc/MsgSmsViewerAppUi.h
changeset 0 72b543305e3a
child 18 fbb813aef148
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/smsui/viewerinc/MsgSmsViewerAppUi.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,633 @@
+/*
+* Copyright (c) 2002 - 2009 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:  
+*      Sms Viewer
+*
+*/
+
+
+
+#ifndef MSGSMSVIEWERAPPUI_H
+#define MSGSMSVIEWERAPPUI_H
+
+//  INCLUDES
+#include <MsgEditorAppUi.h>             // CMsgEditorAppUi
+#include <msgbiocontrolObserver.h>
+#include <RPbkViewResourceFile.h>
+#include <PhCltTypes.h>                 // PhCltTypes
+#include "MsgSmsViewerPan.h"            // panic-codes
+#include <centralrepository.h>
+#include <cenrepnotifyhandler.h>
+
+#include <AknNaviDecoratorObserver.h>
+
+#ifdef RD_SCALABLE_UI_V2
+#include <akntoolbarobserver.h>
+#endif
+// FUNCTION PROTOTYPES
+GLREF_C void Panic(TMsgSmsPanic aPanic); 
+
+// FORWARD DECLARATIONS
+class CAknNavigationDecorator;
+class CAknNavigationControlContainer;
+class CSmsSettings;
+class CFindItemMenu;
+class CAiwServiceHandler;
+class CAiwGenericParamList;
+class CGmsWrapper;
+class CMsgBioBodyControl;
+class CEikRichTextEditor;
+class CSmsHeader;
+class CMsgVoIPExtension;
+class CSendUi;
+class CMsgExpandableControl;
+class CAknLocalScreenClearer;
+#ifdef RD_MSG_FAST_PREV_NEXT
+class CMessageIterator;
+#endif
+#ifdef RD_SCALABLE_UI_V2
+class CAknToolbar;
+#endif
+
+// CLASS DECLARATION
+
+/**
+*  CMsgSmsViewerAppUi
+*  Inherited from CMsgEditorAppUi
+*/
+class CMsgSmsViewerAppUi : public CMsgEditorAppUi,
+                           public MMsgBioControlObserver,
+                           public MMsvSingleOpWatcher,
+						   #ifdef RD_SCALABLE_UI_V2
+						     public MAknToolbarObserver,             //toolbar
+						   #endif
+                           public MCenRepNotifyHandlerCallback,
+                           public MAknNaviDecoratorObserver    
+   
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * C++ default constructor.
+        */
+        CMsgSmsViewerAppUi();
+
+        /**
+        * Destructor.
+        */
+        virtual ~CMsgSmsViewerAppUi();
+
+#ifdef RD_MSG_FAST_PREV_NEXT
+        /**
+        * Change message viewed to a new one
+        */
+        void EntryChangedL();
+#endif // RD_MSG_FAST_PREV_NEXT
+        /**
+        * From MMsgEditorObserver. Calls DoEditorObserverL()
+        *
+        * For passing events from Base Editor to AudioMessage
+        */
+        void EditorObserver(
+            TMsgEditorObserverFunc aFunc,
+            TAny* aArg1,
+            TAny* aArg2,
+            TAny* aArg3 );
+        void DoEditorObserverL(
+            TMsgEditorObserverFunc aFunc,
+            TAny* aArg1,
+            TAny* aArg2,
+            TAny* aArg3 );
+    protected: // New functions
+  
+        /**
+        * Check if text body part is focused
+        * @return TBool about is body focused
+        */
+        virtual TBool IsBodyFocused() const;        
+        
+          /**
+        * Check if sender part is focused
+        * @return TBool about is body focused
+        */
+        virtual TBool IsSenderFocused() const;          
+        
+        /**
+        * Confirm and delete message
+        */
+        virtual void DoFileDeleteL();
+        
+        /**
+        * Return a pointer to document-object
+        * @return CMsgSmsEditorDocument* a pointer to CMsgSmsViewerDocument-object
+        */        
+        virtual CMsgSmsViewerDocument* Document() const;
+        
+         /**
+         * Adds bio-specific menu-items, if needed. Called from DynInitMenuPane.
+         * @param aMenupane A pointer to the menu pane
+         */
+        virtual void AddBioCommandsToMenuL(CEikMenuPane* aMenuPane);
+
+         /**
+         * Launches dialog and moves entry from folder to folder.
+         */      
+        virtual void DoMoveEntryL();
+
+         /**
+         * Searches text for selected item
+         * @param aCommand transfers the command to find item dialog
+         */
+        virtual void DoSearchL(TInt aCommand);
+
+         /**
+         * Activates phoneclient and starts calling to sender
+         */
+        virtual void DoCallBackToSenderL();
+     
+          /**
+         * For creating contacts to phonebook.
+         * @param aCommand a menu command id
+         */
+        virtual void DoCreateContactCardL( TInt aCommand );
+
+        /**
+        * Launch msg info dialog
+        */
+        virtual void DoMessageInfoL();
+
+        /**
+        * Separate the LaunchBioViewL from LaunchViewL to have own function to BIO-launch 
+        * @param aTMsvEntry uid of the TMsvEntry in question
+        */
+        virtual void LaunchBioViewL( const TMsvEntry& aTMsvEntry );
+        
+        /**
+        * Separate the SmsBasedMsgHandlingL from LaunchViewL to have own function for Sms based msg handling. 
+        * @param BioType of the TMsvEntry in question
+        * @param aStore current message entry's msg store
+        */
+        virtual void SmsBasedMsgHandlingL( TInt32 aBioType, CMsvStore* aStore );
+
+        /**
+         * Returns options menu permission of bio control.
+         * @return permissions (the flags are in MMsgBioControl.h)
+         */
+        virtual TUint32 OptionsMenuPermissionsBioL();
+
+        /**
+        * Returns a pointer to current textbody
+        * @param aView pointer to CMsgEditorView
+        * @return reference to CEikRichTextEditor
+        */
+        virtual CEikRichTextEditor& BodyEditor() const;
+
+        /**
+        * Returns a pointer to current biobody
+        * @param aView pointer to CMsgEditorView
+        * @return reference to CMsgBioBodyControl
+        */
+        virtual CMsgBioBodyControl& BioBody() const;
+
+        /**
+        * The non-bio dynamic handling of opening options-menu
+        * @param aMenuPane pointer to CEikMenuPane
+        */
+        virtual void DynInitNonBioOptionsMenuL( CEikMenuPane* aMenuPane );
+
+        /**
+        * The non-bio dynamic handling of opening context-menu
+        * @param aMenuPane pointer to CEikMenuPane
+        */
+        virtual void DynInitNonBioContextMenuL( CEikMenuPane* aMenuPane );
+
+        /**
+        * The bio message dynamic option menu opening.
+        * @param aMenuId menu resource ID (different between GSM and CDMA)
+        * @param aMenuPane pointer to CEikMenuPane
+        */
+        virtual void DynInitBioOptionsMenuL(
+            TInt aMenuId,
+            CEikMenuPane* aMenuPane );
+
+        /**
+        * The bio message dynamic context menu opening.
+        * @param aMenuPane pointer to CEikMenuPane
+        */
+        virtual void DynInitBioContextMenuL( CEikMenuPane* aMenuPane );
+
+        /**
+        * Forwarding of GMS message.
+        * @param aTarget
+        */
+        virtual void ForwardGmsL(TMsvId aTarget);
+
+        /**
+        * Replying to a GMS message.
+        * @param aTarget
+        */
+        virtual void ReplyGmsL(TMsvId aTarget);
+
+        /**
+        * Actual forwarding or replying to GMS message.
+        * @param aTarget
+        * aForward ETrue if forwarding, and EFalse if replying.
+        */
+        virtual void DoFwdRepGmsL(TMsvId aTarget, TBool aForward);
+
+        /**
+        * For saving class 0 entry (actually making it visible)
+        * @param aShowNotes for showing / not showing notes during save
+        */
+        virtual void SaveClass0SmsL( TBool aShowNotes );
+
+        /**
+        * Approximates the needed disksize for forwards or replies the current sms.
+        * aForward ETrue if forwarding, and EFalse if replying.
+        * @return TInt approximation
+        */
+        virtual TInt ApproximateReplyForwardSize( TBool aForward );
+       
+        /**
+        * Checks diskspace and forwards or replies the current sms.
+        * aForward ETrue if forwarding, and EFalse if replying.
+        */
+        virtual void CheckDiskAndReplyForwardL( TBool aForward );
+
+        /**
+        * Launches help application
+        */
+        virtual void LaunchHelpL();
+
+        /**
+        * Returns a help context array.
+        * @param aHelpContext 
+        * @return CArrayFix<TCoeHelpContext>*
+        */
+        virtual CArrayFix<TCoeHelpContext>* CreateHelpContextArrayL(const TCoeHelpContext& aHelpContext ) const;
+
+        /**
+        * Handles SEND-key
+        */
+        virtual void DoHandleSendKeyL();
+
+        /**
+        * Set the state of automatic highlighting
+        * @param aSwitchON, ETrue if automatic highlighting is to used, otherwise EFalse
+        */
+        virtual void SetAutomaticHighlightL( const TBool aSwitchON );
+
+        /**
+        * Reads the shared data value used to initialize automatic highlighting
+        * @return TBool, ETrue if automatic highlighting is to be used
+        */
+        virtual void ReadAutoHlSharedDataValueAndSetNotifyL();
+
+        /** 
+        * From MMsvSingleOpWatcher
+        * @since 2.6
+        */
+        virtual void OpCompleted(
+            CMsvSingleOpWatcher& aOpWatcher,
+            TInt aCompletionCode );
+
+        /**
+        * Called by OpCompleted.
+        * @since 2.6
+        * @param aOperation
+        * @param aCompletionCode
+        */
+        virtual void DoOperationCompletedL(
+            CMsvOperation* aOperation,
+            TInt aCompletionCode );
+
+        /**
+        * Adds the subject field to view
+        * @since 2.6
+        */
+        void AddSubjectControlL();
+
+        /**
+        * Sets the content of subject field
+        * @since 2.6
+        * @param aText, text content to be inserted
+        */
+        void SetSubjectL( const TDesC& aText );
+
+        /**
+        * Returns the pointer to the subject control
+        * @since 2.6
+        * @return CMsgExpandableControl, pointer to the subject control
+        */
+        CMsgExpandableControl* SubjectControl() const;
+
+        /**
+        * Initializes AIW contact card create menu item
+        * @since 3.1U
+        * @param aMenuId menu resource ID
+        * @param aMenuPane pointer to CEikMenuPane
+        */
+        void InitAiwContactCardMenuL( TInt aMenuId, CEikMenuPane* aMenuPane );
+
+        /**
+        * Initializes AIW contact card sub-menu
+        * @since 3.1U
+        * @param aMenuPane pointer to CEikMenuPane
+        */
+        void InitAiwContactCardSubMenuL( CEikMenuPane* aMenuPane );
+
+        /**
+        * Initializes AIW create contact card command parameter list
+        * @since 3.1U
+        * @param aParamList parameter list to initialize
+        */
+        void InitAiwContactCardParamL( CAiwGenericParamList& aParamList ) const;
+
+        
+    protected: // Functions from base classes
+        
+        /**
+        * From MsgEditorAppUi 
+        */
+        virtual void DoMsgSaveExitL();
+            
+         /**
+        * From MMsgEditorLauncher 
+        */
+        virtual void LaunchViewL();
+
+        /**
+        * From CCoeAppUi 
+        * @param aKeyEvent look from CCoeAppUi
+        * @param aType look from CCoeAppUi
+        * @return TKeyResponse look from CCoeAppUi
+        */
+        virtual TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
+
+        /**
+        * From CEikAppUi 
+        * @param aCommand look from CEikAppUi
+        */
+        virtual void HandleCommandL(TInt aCommand);
+
+        /**
+        * From MEikMenuObserver 
+        * @param aMenuId look from MEikMenuObserver
+        * @param aMenuPane look from MEikMenuObserver
+        */
+        virtual void DynInitMenuPaneL(TInt aMenuId, CEikMenuPane* aMenuPane);
+
+        /**
+         * From MMsgBioControlObserver
+         * @return An index number that can be used as a starting index for Bio
+         *         Control specific commands.
+         */
+        virtual TInt FirstFreeCommand() const; 
+
+        /**
+         * From MMsgBioControlObserver
+         * The Bio Control can request the editor application to carry out
+         * specific commands.
+         * @param aCommand The command to be handled.
+         * @return KerrNone or KerrNotSupported
+         */
+        virtual TInt RequestHandleCommandL(TMsgCommands aCommand); 
+
+        /**
+         * From  MMsgBioControlObserver
+         * Returns ETrue or EFalse whether a requested aCommand is supported
+         * by the BIO message editor or not. This command should be used
+         * before requesting command handling by RequestHandleCommand().
+         * @param aCommand The command
+         * @return ETrue if command is support and EFalse if not.
+         */
+        virtual TBool IsCommandSupported(TMsgCommands aCommand) const; 
+
+        /**
+         * From CMsgEditorAppUi
+         * This handles the case if sms entry currently viewed is suddenly deleted from MSGS
+         */
+        virtual void HandleEntryDeletedL();
+
+        /**
+        * From CCoeAppUi
+        * Returns help context
+        */
+        virtual CArrayFix<TCoeHelpContext>* HelpContextL() const;  
+
+        /**
+        * From MCenRepNotifyHandlerCallback
+        * Handles the incoming notifications of key changes
+        * @since Series60 3.0
+        * @param aId, Key that has changed
+        * @param aNewValue, New value of the key    
+        */
+        void HandleNotifyInt( TUint32 aId, TInt aNewValue );
+
+        /**
+        * From MCenRepNotifyHandlerCallback
+        * Handles the notifier errors
+        * @since Series60 3.0
+        * @param aId, Key that has changed
+        * @param aNewValue, New value of the key    
+        */
+        void HandleNotifyError( 
+            TUint32 aId, 
+            TInt aError, 
+            CCenRepNotifyHandler* aHandler );
+
+        /**
+        * Reply to sender via MMS or Email
+        * @since Series 60 2.6
+        * @param aCase, reply via MMS, email, audiomsg or unieditor
+        */
+        virtual void  DoReplyViaL( TInt aCase );
+        
+        /**
+        * From MAknNaviDecoratorObserver
+        * Handles the events coming from arrow presses
+        *  related to next/previous message
+        */
+        void HandleNaviDecoratorEventL( TInt aEventID );            
+        
+        /**
+        * Actual Reply or Forward
+        * @since Series 60 5.0
+        * @param aForward, reply or forward
+        */
+        void DoReplyFwdL( TBool aForward );
+            
+    protected:
+
+        /**
+        * By default Symbian OS constructor is private.
+        */
+        virtual void ConstructL();
+
+    private: // new functions
+
+        /**
+        * ConstructL() without calling base class construct
+        */
+        void ConstructMembersL();
+
+        /**
+        * Initialize member data to a default state
+        */
+        void InitMembers();
+
+        /**
+        * Delete member data
+        */
+        void DestructMembers();
+        /**
+        * Set title icon
+        */
+        void SetTitleIconL();
+        
+        /**
+        * Handle resource change
+        */
+        void HandleResourceChangeL( TInt aType );
+        
+        /**
+        * Set title icon size
+        */
+        void SetTitleIconSize();
+#ifdef RD_MSG_FAST_PREV_NEXT
+    private: // from CMsgEditorAppUi
+        /**
+        * Check if message can fast opened
+        */
+        TBool CanFastOpenL( const CMessageIterator& aIterator );
+#endif // RD_MSG_FAST_PREV_NEXT
+        
+        /**
+         * From MAknNaviDecoratorObserver
+         * Handles the events coming from arrow presses
+         *  related to next/previous message
+         */
+
+#ifdef RD_SCALABLE_UI_V2
+#ifndef RD_MSG_NAVIPANE_IMPROVEMENT
+         void HandleNaviDecoratorEventL( TInt aEventID );   
+#endif
+#endif
+      
+#ifdef RD_SCALABLE_UI_V2
+
+         /**
+          * From MAknToolbarObserver
+          * Should be used to set the properties of some toolbar components 
+          * before it is drawn.
+          * @param aResourceId The resource ID for particular toolbar
+          * @param aToolbar The toolbar object pointer
+          */
+         //virtual void DynInitToolbarL(   TInt            aResourceId, 
+         //                                CAknToolbar*    aToolbar );
+         
+         /**
+          * From MAknToolbarObserver
+          * Handles toolbar events for a certain toolbar item.
+          * @param aCommand The command ID of some toolbar item.
+          */
+         virtual void OfferToolbarEventL( TInt aCommand );
+#endif
+         /**
+          * This is quick launch based on already existing view. Hence this function should  
+          * be called only for Proper SMS Text message for fast and optimized navigation.
+          * In case called for any bio-type messages, this will leave with KErrCancel so that 
+          * caller will TRAP the leave and call LaunchViewL() for complete launch.
+          * @param None
+          */
+         void QuicklaunchViewL();
+         
+         /**
+          * This will set the body text and update the control fields if any changes
+          * as compared to previous SMS message. 
+          * This function is called only for non-bio text messages for fast preview during navigation
+          * @param aStore current message entry's msg store
+          */
+         void QuickSmsMsgNaviHandlingL( CMsvStore* aStore );
+         
+    protected:     // Data
+
+        // Note:
+        // When adding data members, add initialization into InitMembers().
+        // Add construct/destruct into ConstructMembersL()/DestructMembers()
+        // functions if needed. Those functions are called during
+        // construction/destruction and also during fast open of prev/next
+        // message.
+
+        TBool                               iFullyConstructed;
+        TPhCltTelephoneNumber	            iNumber;          // phoneclient
+        TPhCltNameBuffer                    iRecipientstring; // phoneclient
+
+        // Boolean flags combined into a bitmap. Type bool is used instead of
+        // TBool as it's type safe
+        struct
+            {
+            bool iBioMsg:1;
+            bool iGms:1;   // picture msg
+            bool iIrBt:1;  // infrared or bluetooth message
+            bool iValidSenderNumber:1;
+            bool iHelpFeatureSupported:1;
+            bool iAutomaticHlInitialized:1;
+            bool iVoIPNumber:1;    // VoIP supported
+            bool iAudioMsgSupported:1;
+            bool iSmsRestrictedMode:1;
+            bool iAutomaticHlValue:1;
+            bool iAutoLockEnabled:1;
+
+            // GMS variation
+            bool iSmartMsgSmsGmsMessageReceiving:1;
+            bool iSmartMsgSmsGmsMessageSending:1;
+            
+            // Email flags
+            // Email feature supported
+            bool iEmailFeatureSupported:1;
+            // Email specific Subject control
+            // When created, it will newer be removed
+            bool iEmailSubjectControlPresent:1;
+            // If the message TP-PID is set to interworking with email, the
+            // message  is marked as Email message
+            bool iIsEmailMessage:1;
+            } iFlags;
+
+        CAknNavigationControlContainer*     iNaviPane;
+        TInt                                iControlId;
+        CEikButtonGroupContainer*           iClass0CBA;       // for Class0 softbuttons
+        CFindItemMenu*                      iFindItemMenu;    // find item
+        CAiwServiceHandler*                 iAiwServiceHandler; // for create contact card
+        CGmsWrapper*                        iGmsModel;
+        CSmsHeader*                         iSmsHeader;
+        CMsvSingleOpWatcher*                iViewerOperation;   // MessageInfo operation
+        // Contains VoIP profile counter.
+        CMsgVoIPExtension*                  iMsgVoIPExtension;
+        CSendUi*                            iSendUi;
+        // Central Repository session
+        CRepository*                        iCenRepSession;
+        // Notifier to listen changes of offline state
+        CCenRepNotifyHandler*               iNotifier;
+        CAknLocalScreenClearer*    					iScreenClearer;
+#ifdef RD_SCALABLE_UI_V2
+        CAknToolbar*                iToolbar;
+#endif
+        // SMS Icon
+        CGulIcon* iAppIcon;
+        TInt                                iTypeMsg; //for saving the PDU type of prev sms
+
+    };
+#endif // MSGSMSVIEWERAPPUI_H
+//  End of File