textandlocutils/inlinetext/inc/InlineTextNoMatchesIndicatorSource.h
author hgs
Thu, 24 Jun 2010 11:25:56 +0800
changeset 41 ea44a32a96bc
parent 40 91ef7621b7fc
permissions -rw-r--r--
201024_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
40
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     1
/*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     2
* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     3
* All rights reserved.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     8
*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     9
* Initial Contributors:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    11
*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    12
* Contributors:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    13
*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    14
* Description: 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    15
*     Classes used for holding inline text for the Form MTmInlineTextSource interface.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    16
*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    17
*/
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    18
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    19
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    20
#ifndef INLINETEXTNOMATCHESINDICATORSOURCE_H
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    21
#define INLINETEXTNOMATCHESINDICATORSOURCE_H
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    22
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    23
// INCLUDES
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    24
41
ea44a32a96bc 201024_03
hgs
parents: 40
diff changeset
    25
#include "InlineTextBase.h"
40
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    26
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    27
#include <tagma.h>
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    28
#else
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    29
#include <tagma.h>
41
ea44a32a96bc 201024_03
hgs
parents: 40
diff changeset
    30
#include <tagmalayoutandsource.h>
40
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    31
#endif
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    32
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    33
// CONSTANTS
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    34
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    35
// CLASS DECLARATION
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    36
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    37
/**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    38
* Concrete implementation of MTmInlineTextSource for marking text has no predictive
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    39
* text entry matches.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    40
* 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    41
*  @lib InlineText
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    42
*  @since 3.2
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    43
*/
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    44
NONSHARABLE_CLASS(CInlineTextNoMatchesIndicatorSource) : public CInlineTextSource
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    45
    {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    46
    public:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    47
    // 2 stage constructor
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    48
    IMPORT_C static CInlineTextNoMatchesIndicatorSource* NewL( const MTmSource& aTextSource );
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    49
    // destructor
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    50
    ~CInlineTextNoMatchesIndicatorSource();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    51
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    52
    public: // From CInlineTextSource
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    53
    /**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    54
    * Implementation of framework method. Documented in header
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    55
    */
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    56
    virtual void CheckFormattingL(const TTmDocPos& aFrom, const TTmDocPos& aTo );
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    57
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    58
    private:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    59
    /**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    60
    * C++ constructor. 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    61
    */
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    62
    CInlineTextNoMatchesIndicatorSource( const MTmSource& aTextSource );
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    63
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    64
    /**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    65
    * non-virtual implementation method for CheckFormattingL
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    66
    */
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    67
    void DoFormatL( const TTmDocPos& aFrom, const TTmDocPos& aTo );
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    68
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    69
    /**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    70
    * Framework method implemented to store the inline text at the position and leading-ness
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    71
    *
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    72
    * @param aPos           Position of gap ( 0 = before charaacter 0; 1 = after character 0/before char 1 ...)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    73
    * @param aLeadingEdge   use ETrue if the inline text is associated with the next character
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    74
    * @param aTextSample    text upon which to base decision as to what No Matches text
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    75
    *                       to use
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    76
    */
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    77
    void StoreNoMatchesIndicatorInlineTextL( 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    78
        TInt aPos,
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    79
        TBool aLeadingEdge,
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    80
        const TDesC& aTextSample );
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    81
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    82
    /**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    83
    * This returns a text sensitive no matches indication
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    84
    *
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    85
    * @param aRightToLeft   ETrue if chunk is right to left directional text.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    86
    * @param aBuffer        const TDesC& buffer containing text to determine language dependent, 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    87
    * @returns a TPtr to the No Matches indication text to use for this buffer
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    88
    */
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    89
    TPtrC TextForUnknownPredictiveTextIndication( const TDesC& aTextSample ) const;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    90
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    91
    /**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    92
    * Returns a value that is the base value of a unicode code page. The significant content of
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    93
    * the buffer ( indices [1,aBufferLength]) and is examined from low to high index.  
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    94
    * Code page is the here defined as the unicode value excluding its lowest byte - Masked 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    95
    * by 0xFF00 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    96
    *
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    97
    * If a character with non-zero code page is found, that value is returned.  Otherwise, 0x0000
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    98
    * is returned
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    99
    * 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   100
    * To totally dependable, this routine depends upon the chunk being of uniform codepage, 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   101
    * or mixed codepage 0 + one other codepage.  For no-matches indicator text, this is the case
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   102
    *
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   103
    * @param aTextSample    buffer containing text, 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   104
    * @returns              Codepage of first
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   105
    */
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   106
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   107
    TUint CodeBaseOfText( const TDesC& aTextSample ) const;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   108
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   109
    /**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   110
    * Utility method to test whether the next character (in the next chunk) is also in the 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   111
    * No matches indicator markup.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   112
    *
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   113
    * @param aNexPos        position in the text source of the next character (if there is one)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   114
    * @returns              ETrue only if there is another character and that is has the
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   115
    *                       no matches indicator markup.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   116
    */
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   117
    TBool FormatOfNextCharacterIsUnknownInlineFepTextStyle( TInt aNextPos) const;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   118
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   119
    private:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   120
    const MTmSource& iTextSource;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   121
    };
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   122
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   123
#endif
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   124
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   125
// End of File