msg_plat/messaging_editor_api/inc/MsgEditorView.h
changeset 0 72b543305e3a
child 42 1367103c24e2
equal deleted inserted replaced
-1:000000000000 0:72b543305e3a
       
     1 /*
       
     2 * Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  MsgEditorView  declaration
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #ifndef CMSGEDITORVIEW_H
       
    21 #define CMSGEDITORVIEW_H
       
    22 
       
    23 // ========== INCLUDE FILES ================================
       
    24 
       
    25 #include <coecntrl.h>      // for CCoeControl
       
    26 #include <aknenv.h>        // for CAknEnv
       
    27 #include <ItemFinder.h>
       
    28 #include <ConeResLoader.h>
       
    29 
       
    30 #include "MsgBaseControlObserver.h"        // for MMsgBaseControlObserver
       
    31 #include "MsgEditorObserver.h"             // for MMsgEditorObserver
       
    32 #include "MsgEditor.hrh"                   // for typedefs
       
    33 
       
    34 // ========== CONSTANTS ====================================
       
    35 
       
    36 // ========== MACROS =======================================
       
    37 
       
    38 // ========== DATA TYPES ===================================
       
    39 
       
    40 // ========== FUNCTION PROTOTYPES ==========================
       
    41 
       
    42 // ========== FORWARD DECLARATIONS =========================
       
    43 
       
    44 class MMsgEditorObserver;
       
    45 class CMsgBaseControl;
       
    46 class CMsgHeader;
       
    47 class CMsgBody;
       
    48 class CMsgFormComponent;
       
    49 class CEikScrollBarFrame;
       
    50 class CAknsBasicBackgroundControlContext;
       
    51 
       
    52 // ========== CLASS DECLARATION ============================
       
    53 
       
    54 /**
       
    55 * Defines an API for message editor/viewer view.
       
    56 *
       
    57 * @lib MsgEditor.lib
       
    58 * @since S60 v2.0
       
    59 */
       
    60 class CMsgEditorView : public CCoeControl,
       
    61                        public MMsgBaseControlObserver,
       
    62                        public MCoeControlObserver,
       
    63                        public MEikScrollBarObserver
       
    64     {   
       
    65     public:
       
    66 
       
    67         enum TMsgEditorMode
       
    68             {
       
    69             EMsgEditorModeNone             = 0x00,
       
    70             EMsgEditorModeNormal           = 0x01,
       
    71             EMsgReadOnly                   = 0x02,
       
    72             EMsgDoNotUseDefaultBodyControl = 0x04
       
    73             };
       
    74 
       
    75     public:
       
    76 
       
    77         /**
       
    78         * Factory method.
       
    79         * @param aObserver
       
    80         * @param aEditorModeFlags
       
    81         * @return
       
    82         */
       
    83         IMPORT_C static CMsgEditorView* NewL( MMsgEditorObserver& aObserver,
       
    84                                               TUint32 aEditorModeFlags );
       
    85 
       
    86         /**
       
    87         * from MObjectProvider
       
    88         */
       
    89         IMPORT_C MObjectProvider* MopNext();
       
    90 
       
    91         /**
       
    92         * Destructor.
       
    93         */
       
    94         IMPORT_C ~CMsgEditorView();
       
    95 
       
    96         /**
       
    97         * Prepares the editor view for showing it on the screen.
       
    98         * @param aRect
       
    99         * @param aControlIdForFocus
       
   100         */
       
   101         IMPORT_C void ExecuteL( const TRect& aRect, TInt aControlIdForFocus );
       
   102 
       
   103         /**
       
   104         * Finds a control from the header and the body by id and returns a
       
   105         * pointer to it. If a control cannot be found, returns NULL.
       
   106         * @param aControlId
       
   107         * @return
       
   108         */
       
   109         IMPORT_C CMsgBaseControl* ControlById( TInt aControlId ) const;
       
   110 
       
   111         /**
       
   112         * Returns a pointer to a focused control. If no control is focused,
       
   113         * returns NULL.
       
   114         * @return
       
   115         */
       
   116         IMPORT_C CMsgBaseControl* FocusedControl() const;
       
   117 
       
   118         /**
       
   119         * Sets focus to a control aControlId.
       
   120         * @param aControlId
       
   121         */
       
   122         IMPORT_C void SetFocus( TInt aControlId );
       
   123 
       
   124         /**
       
   125         * Constructs a control of type aControlType from resource and adds it
       
   126         * to a form component aFormComponent. The control is added to a
       
   127         * position aIndex.
       
   128         *
       
   129         * Leaves with KErrNotFound if aControlType is incorrect.
       
   130         *
       
   131         * @param aResourceId
       
   132         * @param aControlType
       
   133         * @param aIndex
       
   134         * @param aFormComponent
       
   135         * @return
       
   136         */
       
   137         IMPORT_C TInt AddControlFromResourceL( TInt aResourceId,
       
   138                                                TInt aControlType,
       
   139                                                TInt aIndex,
       
   140                                                TMsgFormComponent aFormComponent );
       
   141 
       
   142         /**
       
   143         * Adds a control given by aControl to a form component aFormComponent.
       
   144         * The control is added to a position aIndex with control id aControlId.
       
   145         *
       
   146         * @param aControl
       
   147         * @param aControlId
       
   148         * @param aIndex
       
   149         * @param aFormComponent
       
   150         */
       
   151         IMPORT_C void AddControlL( CMsgBaseControl* aControl,
       
   152                                    TInt aControlId,
       
   153                                    TInt aIndex,
       
   154                                    TMsgFormComponent aFormComponent );
       
   155 
       
   156         /**
       
   157         * Removes the control aControlId from the header or the body and returns
       
   158         * pointer to it. If a control cannot be found, returns NULL.
       
   159         *
       
   160         * @param aControlId
       
   161         * @return
       
   162         */
       
   163         IMPORT_C CMsgBaseControl* RemoveControlL( TInt aControlId );
       
   164         
       
   165         /**
       
   166         * Removes and deletes the control aControlId from the header or the body if found.
       
   167         *
       
   168         * @param aControlId Control ID of the deleted control.
       
   169         */
       
   170         IMPORT_C void DeleteControlL( TInt aControlId );
       
   171         
       
   172         /**
       
   173         * Returns a reference to a form component.
       
   174         * @param aFormComponent
       
   175         * @return
       
   176         */
       
   177         IMPORT_C CCoeControl& FormComponent( TMsgFormComponent aFormComponent ) const;
       
   178 
       
   179         /**
       
   180         * Prepares the editor view for viewing it on the screen after screen
       
   181         * size change.
       
   182         * @param aRect
       
   183         */
       
   184         IMPORT_C void HandleScreenSizeChangeL( const TRect& aRect );
       
   185 
       
   186         /**
       
   187         * Resets (= clears) all controls.
       
   188         */
       
   189         IMPORT_C void ResetControls();
       
   190 
       
   191         /**
       
   192         * Resets (= clears) controls from header or body.
       
   193         * @param aFormComponent EMsgHeader or EMsgBody
       
   194         */
       
   195         IMPORT_C void ResetControls( TMsgFormComponent aFormComponent );
       
   196 
       
   197         /**
       
   198         * Checks if any control owned by view is modified.
       
   199         * @return ETrue if modified, EFalse if not.
       
   200         */
       
   201         IMPORT_C TBool IsAnyControlModified() const;
       
   202 
       
   203         /**
       
   204         * Updates modified flag of controls owned by view.
       
   205         * Call this with EFalse when you have populated controls to reset the
       
   206         * modifed flag.
       
   207         * @param aFlag ETrue or EFalse
       
   208         */
       
   209         IMPORT_C void SetControlsModified( TBool aFlag );
       
   210 
       
   211         inline void SetScrollParts( TInt aScrollParts );
       
   212         inline void SetCurrentPart( TInt aCurrentPart );
       
   213         
       
   214         /**
       
   215         * Returns used item finder pointer if any.
       
   216         *
       
   217         * @return CItemFinder pointer if item finder is used.
       
   218         *         NULL otherwise
       
   219         */        
       
   220         IMPORT_C CItemFinder* ItemFinder();
       
   221         
       
   222         /**
       
   223         * Sets edwin observer.
       
   224         * Edwin observer is added to every text editor control that currently exists
       
   225         * or is added after this call to the view.
       
   226         * 
       
   227         * aObserver IN Edwin observer. 
       
   228         *              Setting observer to NULL will remove the edwin observer.
       
   229         */
       
   230         IMPORT_C void SetEdwinObserverL( MEikEdwinObserver* aObserver );
       
   231         
       
   232     public:   // from CCoeControl
       
   233 
       
   234         /**
       
   235         * Handles key events.
       
   236         * @param aKeyEvent
       
   237         * @param aType
       
   238         * @return
       
   239         */
       
   240         IMPORT_C TKeyResponse OfferKeyEventL(
       
   241             const TKeyEvent& aKeyEvent,
       
   242             TEventCode       aType);
       
   243 
       
   244         /**
       
   245         * For handling dynamic layout switch.
       
   246         */
       
   247         void HandleResourceChange( TInt aType );
       
   248         
       
   249         /**
       
   250         * From CCoeControl. See coecntrl.h
       
   251         */
       
   252         void HandlePointerEventL( const TPointerEvent& aPointerEvent );
       
   253 
       
   254     public:  // from MMsgBaseControlObserver
       
   255         
       
   256         /**
       
   257         * Returns whether view is intialized.
       
   258         */
       
   259         TBool ViewInitialized() const;
       
   260         
       
   261         /**
       
   262         * Returns the current view rectangle.
       
   263         * @return
       
   264         */
       
   265         TRect ViewRect() const;
       
   266         
       
   267         /**
       
   268         * Handles an event from a control.
       
   269         * @param aControl
       
   270         * @param aRequest
       
   271         * @param aDelta
       
   272         * @return
       
   273         */
       
   274         TBool HandleBaseControlEventRequestL( CMsgBaseControl* aControl,
       
   275                                               TMsgControlEventRequest aRequest,
       
   276                                               TInt aDelta );
       
   277 
       
   278         /**
       
   279         * Handles an event from a control.
       
   280         * @param aControl
       
   281         * @param aRequest
       
   282         * @return
       
   283         */
       
   284         TBool HandleBaseControlEventRequestL( CMsgBaseControl* aControl,
       
   285                                               TMsgControlEventRequest aRequest );
       
   286 
       
   287         /**
       
   288         * Handles an event from a control.
       
   289         * @param aControl
       
   290         * @param aRequest
       
   291         * @param aArg1
       
   292         * @param aArg2
       
   293         * @param aArg3
       
   294         * @return
       
   295         */
       
   296         TInt HandleEditObserverEventRequestL( const CCoeControl* aControl,
       
   297                                               TMsgControlEventRequest aRequest,
       
   298                                               TAny* aArg1 = 0,
       
   299                                               TAny* aArg2 = 0,
       
   300                                               TAny* aArg3 = 0 );
       
   301         
       
   302      public: // New methods, from MObjectProvider
       
   303     	
       
   304     	IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
       
   305     
       
   306     public: // from MEikScrollBarObserver
       
   307 	    
       
   308 	    /**
       
   309 	    * Handles scroll events
       
   310 	    * 
       
   311 	    * @param aScrollBar Pointer to the originating scroll bar object.
       
   312 	    * @param aEventType A scroll event
       
   313 	    */
       
   314 	    void HandleScrollEventL( CEikScrollBar* aScrollBar, TEikScrollEvent aEventType );
       
   315     	
       
   316     protected:   // from CCoeControl
       
   317 
       
   318         /**
       
   319         * Returns a number of controls.
       
   320         * @return
       
   321         */
       
   322         TInt CountComponentControls() const;
       
   323 
       
   324         /**
       
   325         * Returns a control of index aIndex.
       
   326         * @param aIndex
       
   327         * @return
       
   328         */
       
   329         CCoeControl* ComponentControl( TInt aIndex ) const;
       
   330 
       
   331         /**
       
   332         * Sets new position for all the controls.
       
   333         */
       
   334         void SizeChanged();
       
   335 
       
   336         /**
       
   337         * This is called when the focus of the control is changed.
       
   338         * @param aDrawNow
       
   339         */
       
   340         void FocusChanged( TDrawNow aDrawNow );
       
   341 
       
   342         /**
       
   343         * Draw
       
   344         */
       
   345     	void Draw( const TRect& aRect ) const;
       
   346 
       
   347     protected:  // from MCoeControlObserver
       
   348 
       
   349         /**
       
   350         * Handle control event.
       
   351         * @param aControl
       
   352         * @param aEventType
       
   353         */
       
   354         void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
       
   355 
       
   356     private:
       
   357 
       
   358         enum TMsgFocus
       
   359             {
       
   360             EMsgNoneFocused,
       
   361             EMsgHeaderFocused,
       
   362             EMsgBodyFocused
       
   363             };
       
   364 
       
   365     private:
       
   366 
       
   367         /**
       
   368         * Constructor.
       
   369         * @param aObserver
       
   370         * @param aEditorModeFlags
       
   371         */
       
   372         CMsgEditorView( MMsgEditorObserver& aObserver, TUint32 aEditorModeFlags );
       
   373 
       
   374         /**
       
   375         * 2nd phase constructor.
       
   376         */
       
   377         void ConstructL();
       
   378 
       
   379         /**
       
   380         * Creates the header.
       
   381         */
       
   382         void CreateHeaderL();
       
   383 
       
   384         /**
       
   385         * Creates the body. Creates also the default body control if requested
       
   386         * in editor mode flags in constructor.
       
   387         */
       
   388         void CreateBodyL();
       
   389 
       
   390         /**
       
   391         * Creates the scroll bar.
       
   392         */
       
   393         void CreateScrollBarL();
       
   394 
       
   395         /**
       
   396         * Updates the scroll bar.
       
   397         */
       
   398         void UpdateScrollBarL();
       
   399 
       
   400         /**
       
   401         * Return virtual height and virtual Y position of the form.
       
   402         * @param aHeight
       
   403         * @param aPos
       
   404         */
       
   405         void GetVirtualFormHeightAndPos( TInt& aHeight, TInt& aPos );
       
   406 
       
   407         /**
       
   408         * Sets sizes for the header and the body and returns their total size
       
   409         * aSize as a reference. The function does not set new sizes for the
       
   410         * controls if the aInit argument is EFalse. If aInit == ETrue, this
       
   411         * function sets the size so that only a total height can change.
       
   412         *
       
   413         * @param aSize
       
   414         * @param aInit
       
   415         */
       
   416         void SetAndGetSizeL( TSize& aSize, TBool aInit );
       
   417 
       
   418         /**
       
   419         * Sets the positions for the controls and re-draws the view.
       
   420         */
       
   421         void RefreshViewL();
       
   422 
       
   423         /**
       
   424         * Prepares controls for viewing.
       
   425         * @param aEvent
       
   426         * @param aParam
       
   427         */
       
   428         void NotifyControlsForEvent( TMsgViewEvent aEvent, TInt aParam );
       
   429 
       
   430         /**
       
   431         * Sets focus to a control aControlId.
       
   432         * @param aControlId
       
   433         */
       
   434         void SetFocusByControlIdL( TInt aControlId,  
       
   435                                    TBool aCorrectFormPosition = ETrue,
       
   436                                    TBool aSetCursorPos = ETrue );
       
   437 
       
   438         /**
       
   439         * Does an actual add operation for the control by setting all the
       
   440         * necessary observers etc.
       
   441         *
       
   442         * @param aControl
       
   443         * @param aControlId
       
   444         * @param aIndex
       
   445         * @param aFormComponent
       
   446         */
       
   447         void DoAddControlL( CMsgBaseControl* aControl,
       
   448                             TInt aControlId,
       
   449                             TInt aIndex,
       
   450                             TMsgFormComponent aFormComponent);
       
   451 
       
   452         /**
       
   453         * Rotates focus up or down depending aDirection argument.
       
   454         * Returns ETrue if operation can be done.
       
   455         *
       
   456         * @param aDirection
       
   457         * @param aFocusEvent
       
   458         * @return
       
   459         */
       
   460         TBool RotateFocusL( TMsgFocusDirection aDirection,
       
   461                             MMsgEditorObserver::TMsgFocusEvent& aFocusEvent );
       
   462 
       
   463         /**
       
   464         * Ensures that the cursor is visible on the view and that the form
       
   465         * position is correct.
       
   466         *
       
   467         */
       
   468         TBool EnsureCorrectFormPosition( TBool aScrollDown, TBool aScrollUp = EFalse );
       
   469 
       
   470         /**
       
   471         * Handles the form's height change. Gets pointer aControl to a control
       
   472         * which height is changing. If aDeltaHeight > 0 the height is increasing.
       
   473         *
       
   474         * @param aControl
       
   475         * @param aDeltaHeight
       
   476         * @return
       
   477         */
       
   478         TBool HandleHeightChangedL( CMsgBaseControl* aControl, TInt aDeltaHeight );
       
   479 
       
   480         /**
       
   481         * Scrolls the form up or down depending given amount of pixels. 
       
   482         *
       
   483         * @param aDelta              Delta of pixels to move. If aDelta > 0,
       
   484         *                            the form is scrolled downward.
       
   485         * @param aUpdateScrollBarPos Indicates whether scroll bar focus position 
       
   486         *                            should be updated inside this function.
       
   487         *
       
   488         * @return ETrue if requested pixels where scrolled. Otherwise EFalse.
       
   489         */
       
   490         TBool ScrollForm( TInt aDelta, TBool aUpdateScrollBarPos );
       
   491 
       
   492         /**
       
   493         * Sets view rect.
       
   494         * @param aRect
       
   495         */
       
   496         void SetViewRect( const TRect& aRect );
       
   497 
       
   498         /**
       
   499         * Sets proper distances between controls to obey LAF coordinates.
       
   500         */
       
   501         void AdjustComponentDistances();
       
   502 
       
   503         /**
       
   504         * Sets all controls initialized.
       
   505         */
       
   506         void SetComponentsInitialized();
       
   507 
       
   508         /**
       
   509         *
       
   510         */
       
   511         TBool SetAfterFocusL( MMsgEditorObserver::TMsgAfterFocusEventFunc aAfterFocus );
       
   512 
       
   513         /**
       
   514         * Determines whether given control is fully visible on the screen.
       
   515         *
       
   516         * @return ETrue if fully visible.
       
   517         *         EFalse if not fully visible.
       
   518         */
       
   519         TBool ControlFullyVisible( CMsgBaseControl* aControl ) const;
       
   520 
       
   521         /**
       
   522         * Resolves next focusable control when given form is navigated to 
       
   523         * certain direction. 
       
   524         *
       
   525         * @param aFormComponent Form component that is navigated 
       
   526         *                       (i.e. either header or body)
       
   527         * @param aStart         Control ID of control where search should be started.
       
   528         * @param aDirection     Navigation direction.
       
   529         *
       
   530         * @return               Control ID of next focusable control.
       
   531         *                       KErrNotFound if next control is not found.
       
   532         */
       
   533         TInt NextFocusableFormControl( CMsgFormComponent* aFormComponent, 
       
   534                                        TInt aStart, 
       
   535                                        TMsgFocusDirection aDirection );
       
   536         
       
   537         /**
       
   538         *
       
   539         */
       
   540     	void ReportFocusMovement( TInt aFocusEvent );
       
   541 
       
   542         /**
       
   543         * Constructor (not available).
       
   544         */
       
   545         CMsgEditorView();
       
   546         
       
   547         /**
       
   548         * Ensures that a Visible-part is completely scrolled. 
       
   549         * 
       
   550         * @param aFocusPosition .
       
   551         * @param aDirection Scrolling direction.
       
   552         * 
       
   553         * @return               ETrue/EFalse
       
   554         */
       
   555         TBool EnsureVisiblePartScrollComplete( TInt aFocusPosition,
       
   556                                                TMsgScrollDirection aDirection );
       
   557         
       
   558         /**
       
   559         * Performs view scrolling to given direction. 
       
   560         * 
       
   561         * @param aPixelsToScroll Amount of pixels wanted to be scrolled.
       
   562         * @param aDirection Scrolling direction.
       
   563         * @param aMoveThumb If ETrue scroll thumb is moved at the end of scrolling.
       
   564         */
       
   565         void ScrollViewL( TInt aPixelsToScroll, 
       
   566                           TMsgScrollDirection aDirection, 
       
   567                           TBool aMoveThumb );
       
   568         
       
   569         /**
       
   570         * Returns control matching located at given screen position.
       
   571         *
       
   572         * @param aPosition          Screen coordinates where control should be returned.
       
   573         * @param aEvaluateHitText   If ETrue internal hit test evaluation is performed.
       
   574         *                           Otherwise hit text evaluation is not performed and control
       
   575         *                           location is solely based on it's physical coordinates.
       
   576         */
       
   577         CMsgBaseControl* ControlFromPosition( TPoint aPosition, TBool aEvaluateHitTest ) const;
       
   578         
       
   579         /**
       
   580         * Convenience function for casting the scroll bar model.
       
   581         */
       
   582         inline const TAknDoubleSpanScrollBarModel* AknScrollBarModel() const; 
       
   583         
       
   584         /**
       
   585         * Convenience function for checking whether view is on editor or viewer mode.
       
   586         */
       
   587         inline TBool IsReadOnly() const;
       
   588         
       
   589         /**
       
   590         * Ensures that cursor are located correctly relative to currently focused control.
       
   591         */
       
   592         void EnsureCorrectCursorPosition();
       
   593         
       
   594         /**
       
   595         * Ensures that correct scroll part is shown to the user.
       
   596         */
       
   597         void EnsureCorrectScrollPartL( TInt aFocusPosition );
       
   598         
       
   599         /**
       
   600         * Returns the number of currently scrolled scroll part.
       
   601         */
       
   602         TInt CurrentScrollPart( TInt aFocusPosition );
       
   603         
       
   604         /**
       
   605         * Determines if control is focusable (i.e. focus should
       
   606         * stop to the control).
       
   607         *
       
   608         * @since 3.2
       
   609         *
       
   610         * @param aControl   Control that is tested.
       
   611         * @param aDirection Navigation direction.
       
   612         *
       
   613         * @return ETrue if focus should stop to this control.
       
   614         *         EFalse if focus should not stop to this control.
       
   615         */
       
   616         TBool IsFocusable( CMsgBaseControl* aControl, TMsgFocusDirection aDirection ) const;
       
   617         
       
   618         /**
       
   619         * Shows scrollbar popup info text.
       
   620         */
       
   621         void ShowScrollPopupInfoTextL( CAknDoubleSpanScrollBar* aScrollBar, TInt aPartNumber );
       
   622         
       
   623         /**
       
   624         * Ensures that view position is valid and correctly positioned.  
       
   625         */
       
   626         void EnsureCorrectViewPosition();
       
   627         
       
   628         /**
       
   629          * Performs view scrolling to given direction. 
       
   630          * 
       
   631          * @param aPixelsToScroll Amount of pixels wanted to be scrolled. On return contains
       
   632          *                        the amount of pixels not scrolled.
       
   633          * @param aDirection Scrolling direction.
       
   634          */
       
   635          void DoScrollViewL( TInt& aPixelsToScroll, 
       
   636                              TMsgScrollDirection aDirection );
       
   637 
       
   638         
       
   639     private:
       
   640 
       
   641         MMsgEditorObserver& iEditorObserver;
       
   642         CMsgHeader*         iHeader;
       
   643         CMsgBody*           iBody;
       
   644         TMsgFocus           iCurrentFocus;
       
   645         TInt                iFormOffset;         // distance from the main window's top y to form's top y
       
   646         TUint32             iEditorModeFlags;
       
   647         TRect               iViewRect;
       
   648         TUint32             iStateFlags;
       
   649         CEikScrollBarFrame* iScrollBar;
       
   650         TInt                iScrollParts;
       
   651         TInt                iVisiblePart;
       
   652     	CAknsBasicBackgroundControlContext* iBgContext; // Skin background control context
       
   653     	TInt                iUniqueHandlePool;
       
   654     	TInt                iLineHeight;
       
   655         TInt                iBaseLineOffset;    	
       
   656     	TInt                iViewFocusPosition;
       
   657     	
       
   658     	CArrayFixFlat<TInt>* iScrollPartArray;
       
   659     	HBufC*               iScrollPopText;   
       
   660     	TInt                 iPopUpPart; 
       
   661     	TInt                 iVisiblePartHeight;
       
   662     	
       
   663     	MEikEdwinObserver*   iEdwinObserver;
       
   664     	RConeResourceLoader  iResourceLoader;
       
   665     };
       
   666 
       
   667 #include <MsgEditorView.inl>
       
   668 
       
   669 // =========================================================
       
   670 
       
   671 #endif // CMSGEDITORVIEW_H
       
   672 
       
   673 // End of File