messagingappbase/msgeditor/viewinc/MsgBodyControlEditor.h
author hgs
Wed, 03 Nov 2010 22:55:44 +0530
changeset 80 8b14b30db193
parent 79 2981cb3aa489
permissions -rw-r--r--
201044_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  MsgBodyControlEditor  declaration
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef CMSGBODYCONTROLEDITOR_H
hgs
parents:
diff changeset
    21
#define CMSGBODYCONTROLEDITOR_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// ========== INCLUDE FILES ================================
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include <ItemFinder.h>
hgs
parents:
diff changeset
    26
#include <itemfinderobserver.h>
hgs
parents:
diff changeset
    27
#include "MsgExpandableControlEditor.h"            // for CMsgExpandableControlEditor
hgs
parents:
diff changeset
    28
#include "MsgEditor.hrh"
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
// ========== CONSTANTS ====================================
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// ========== MACROS =======================================
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// ========== DATA TYPES ===================================
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// ========== FUNCTION PROTOTYPES ==========================
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
// ========== FORWARD DECLARATIONS =========================
hgs
parents:
diff changeset
    39
class CMsgEditorCustomDraw;
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// ========== CLASS DECLARATION ============================
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
/**
hgs
parents:
diff changeset
    45
* Defines an editor for the body control.
hgs
parents:
diff changeset
    46
*/
hgs
parents:
diff changeset
    47
class CMsgBodyControlEditor : public CMsgExpandableControlEditor,
hgs
parents:
diff changeset
    48
                              public MItemFinderObserver,
hgs
parents:
diff changeset
    49
                              public MAknItemFinderObserver
hgs
parents:
diff changeset
    50
    {
hgs
parents:
diff changeset
    51
    public:
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
        /**
hgs
parents:
diff changeset
    54
        * Constructor.
hgs
parents:
diff changeset
    55
        * @param aFlags
hgs
parents:
diff changeset
    56
        */
hgs
parents:
diff changeset
    57
        CMsgBodyControlEditor(
hgs
parents:
diff changeset
    58
            const CCoeControl*       aParent,
hgs
parents:
diff changeset
    59
            TUint32&                 aFlags,
hgs
parents:
diff changeset
    60
            MMsgBaseControlObserver* aBaseControlObserver );
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
        /**
hgs
parents:
diff changeset
    63
        * Destructor.
hgs
parents:
diff changeset
    64
        */
hgs
parents:
diff changeset
    65
        virtual ~CMsgBodyControlEditor();
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
        /**
hgs
parents:
diff changeset
    68
        * 2nd phase constructor.
hgs
parents:
diff changeset
    69
        */
hgs
parents:
diff changeset
    70
        void ConstructL();
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
        /**
hgs
parents:
diff changeset
    73
        * Calculates and sets the size of the control and returns new size as reference aSize.
hgs
parents:
diff changeset
    74
        * @param aSize
hgs
parents:
diff changeset
    75
        */
hgs
parents:
diff changeset
    76
        void SetAndGetSizeL( TSize& aSize );
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
        /**
hgs
parents:
diff changeset
    79
        * Inserts a character to the editor.
hgs
parents:
diff changeset
    80
        * @param aCharacter
hgs
parents:
diff changeset
    81
        */
hgs
parents:
diff changeset
    82
        void InsertCharacterL( const TChar& aCharacter );
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
        /**
hgs
parents:
diff changeset
    85
        * Inserts text to the editor.
hgs
parents:
diff changeset
    86
        * @param aText
hgs
parents:
diff changeset
    87
        */
hgs
parents:
diff changeset
    88
        void InsertTextL( const TDesC& aText );
hgs
parents:
diff changeset
    89
        
hgs
parents:
diff changeset
    90
        /**
hgs
parents:
diff changeset
    91
        * Prepares focus transition.
hgs
parents:
diff changeset
    92
        */
hgs
parents:
diff changeset
    93
        void PrepareFocusTransition();
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
    public:  // from CMsgExpandableControlEditor
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
        /**
hgs
parents:
diff changeset
    98
        * Checks if the cursor is on the last line.
hgs
parents:
diff changeset
    99
        * @return
hgs
parents:
diff changeset
   100
        */
hgs
parents:
diff changeset
   101
        TBool CursorInLastLine();
hgs
parents:
diff changeset
   102
        
hgs
parents:
diff changeset
   103
        /**
hgs
parents:
diff changeset
   104
        * Reads layout data from "LAF".
hgs
parents:
diff changeset
   105
        */
hgs
parents:
diff changeset
   106
        void ResolveLayouts();
hgs
parents:
diff changeset
   107
        
hgs
parents:
diff changeset
   108
        /**
hgs
parents:
diff changeset
   109
        * Sets text format.
hgs
parents:
diff changeset
   110
        */
hgs
parents:
diff changeset
   111
        void LayoutEdwin();
hgs
parents:
diff changeset
   112
        
hgs
parents:
diff changeset
   113
        /**
hgs
parents:
diff changeset
   114
        * Sets the currently applicable text skin color ID. 
hgs
parents:
diff changeset
   115
        * Overwrites expandable editor behaviour and sets
hgs
parents:
diff changeset
   116
        * only single text color independent of the control state.
hgs
parents:
diff changeset
   117
        */
hgs
parents:
diff changeset
   118
        void SetTextSkinColorIdL();
hgs
parents:
diff changeset
   119
        
hgs
parents:
diff changeset
   120
        /**
hgs
parents:
diff changeset
   121
         * For handling dynamic layout switch.
hgs
parents:
diff changeset
   122
         */
hgs
parents:
diff changeset
   123
         void HandleResourceChange( TInt aType );
hgs
parents:
diff changeset
   124
         
hgs
parents:
diff changeset
   125
         /**
hgs
parents:
diff changeset
   126
         * Preparing for readonly/ viewers
hgs
parents:
diff changeset
   127
         */
hgs
parents:
diff changeset
   128
         void PrepareForReadOnlyL( TBool aReadOnly );
hgs
parents:
diff changeset
   129
        
hgs
parents:
diff changeset
   130
    public:  // from CEikRichTextEditor
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
        /**
hgs
parents:
diff changeset
   133
        * Handles key events.
hgs
parents:
diff changeset
   134
        * @param aKeyEvent
hgs
parents:
diff changeset
   135
        * @param aType
hgs
parents:
diff changeset
   136
        * @return
hgs
parents:
diff changeset
   137
        */
hgs
parents:
diff changeset
   138
        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
        /**
hgs
parents:
diff changeset
   141
        * From CCoeControl. See coecntrl.h
hgs
parents:
diff changeset
   142
        */
hgs
parents:
diff changeset
   143
        void HandlePointerEventL( const TPointerEvent& aPointerEvent );
hgs
parents:
diff changeset
   144
        
hgs
parents:
diff changeset
   145
    public: // from MItemFinderObserver
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
        void HandleParsingComplete();
hgs
parents:
diff changeset
   148
        
hgs
parents:
diff changeset
   149
    public: // from MAknItemFinderObserver  
hgs
parents:
diff changeset
   150
       
hgs
parents:
diff changeset
   151
        void HandleFindItemEventL(
hgs
parents:
diff changeset
   152
                        const CItemFinder::CFindItemExt& aItem,
hgs
parents:
diff changeset
   153
                        MAknItemFinderObserver::TEventFlag aEvent,
hgs
parents:
diff changeset
   154
                        TUint aFlags = 0 );
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
    public: // new
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
        /**
hgs
parents:
diff changeset
   159
        * 
hgs
parents:
diff changeset
   160
        */
hgs
parents:
diff changeset
   161
        TBool IsFocusChangePossibleL( TMsgFocusDirection aDirection );
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
        /**
hgs
parents:
diff changeset
   164
        * Should be called when focus is changed to body. 
hgs
parents:
diff changeset
   165
        * @param aBeginning: ETrue if search started from the beginning of the body text, EFalse if from the end
hgs
parents:
diff changeset
   166
        */
hgs
parents:
diff changeset
   167
        void SetupAutomaticFindAfterFocusChangeL( TBool aBeginning );
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
    protected: // new
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
        /**
hgs
parents:
diff changeset
   172
        *
hgs
parents:
diff changeset
   173
        */
hgs
parents:
diff changeset
   174
        void SetHighlightL( TInt aCursorPos, TMsgFocusDirection aDirection, TBool aInit = EFalse );
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
    private:  // from CCoeControl
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
        /**
hgs
parents:
diff changeset
   179
        *
hgs
parents:
diff changeset
   180
        */
hgs
parents:
diff changeset
   181
        void ActivateL();
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
    private:
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
        /**
hgs
parents:
diff changeset
   186
        * Constructor (not available).
hgs
parents:
diff changeset
   187
        */
hgs
parents:
diff changeset
   188
        CMsgBodyControlEditor();
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
        /**
hgs
parents:
diff changeset
   191
        * Performs parsing complete handling.
hgs
parents:
diff changeset
   192
        */
hgs
parents:
diff changeset
   193
        void DoHandleParsingCompleteL();
hgs
parents:
diff changeset
   194
        
hgs
parents:
diff changeset
   195
    private:
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
        TBool iTextParsed;
hgs
parents:
diff changeset
   198
        TBool iFocusChangedBeforeParseFinish;
hgs
parents:
diff changeset
   199
        TBool iInitTop; // ETrue if start from top, EFalse if bottom
hgs
parents:
diff changeset
   200
        
hgs
parents:
diff changeset
   201
        CMsgEditorCustomDraw* iCustomDraw;
hgs
parents:
diff changeset
   202
        
hgs
parents:
diff changeset
   203
        TInt iPreviousItemStart;
hgs
parents:
diff changeset
   204
        TInt iPreviousItemLength;
hgs
parents:
diff changeset
   205
    };
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
#endif // CMSGBODYCONTROLEDITOR_H
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
// End of File