src/hbcore/i18n/hbstringutil.cpp
author hgs
Mon, 18 Oct 2010 18:23:13 +0300
changeset 34 ed14f46c0e55
parent 7 923ff622b8b9
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/****************************************************************************
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
**
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
** All rights reserved.
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
** Contact: Nokia Corporation (developer.feedback@nokia.com)
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
**
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
** This file is part of the HbCore module of the UI Extensions for Mobile.
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
**
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
** GNU Lesser General Public License Usage
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
** This file may be used under the terms of the GNU Lesser General Public
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
** License version 2.1 as published by the Free Software Foundation and
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
** appearing in the file LICENSE.LGPL included in the packaging of this file.
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
** Please review the following information to ensure the GNU Lesser General
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
** Public License version 2.1 requirements will be met:
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
**
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
** In addition, as a special exception, Nokia gives you certain additional
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
** rights.  These rights are described in the Nokia Qt LGPL Exception
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
**
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
** If you have questions regarding the use of this file, please contact
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
** Nokia at developer.feedback@nokia.com.
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
**
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
****************************************************************************/
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include <hbextendedlocale.h>
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include <QtAlgorithms>
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include "hbstringutil_p.h"
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "hbstringutil.h"
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#if defined(__SYMBIAN32__)
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
#include <e32std.h>
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
#include <e32def.h>
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
#include <e32des16.h>
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
#include <collate.h>
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
#define Q_OS_SYMBIAN
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
#endif
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
#ifndef QT_NO_REGEXP
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
#include <QRegExp>
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
#endif
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
/*!
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
    45
    @stable
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
    @hbcore
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
    \class HbStringUtil
34
hgs
parents: 7
diff changeset
    48
    \brief The HbStringUtil class supports locale-based comparing and ordering of strings, and digit conversion.
hgs
parents: 7
diff changeset
    49
    
hgs
parents: 7
diff changeset
    50
    \section _hbstringutil_stringcomparison Comparing and ordering strings
hgs
parents: 7
diff changeset
    51
    
hgs
parents: 7
diff changeset
    52
    Using HbStringUtil, you can execute locale-aware operations on collated 
hgs
parents: 7
diff changeset
    53
    strings, such as comparisons and finding data sequences in target strings. 
hgs
parents: 7
diff changeset
    54
    HbStringUtil also provides similar functions for operations on folded data.
hgs
parents: 7
diff changeset
    55
    
hgs
parents: 7
diff changeset
    56
    Choose the right HbStringUtil functions for your purpose, depending on 
hgs
parents: 7
diff changeset
    57
    whether you want to operate on collated or folded data:
hgs
parents: 7
diff changeset
    58
    
hgs
parents: 7
diff changeset
    59
    <ul>
hgs
parents: 7
diff changeset
    60
    
hgs
parents: 7
diff changeset
    61
    <li>Because different languages have different alphabets, they also require 
hgs
parents: 7
diff changeset
    62
    different ways of ordering strings. The technical term for ordering and 
hgs
parents: 7
diff changeset
    63
    comparing strings in a locale-specific manner is \b collating. When 
hgs
parents: 7
diff changeset
    64
    comparing strings in natural languages, it is recommended that you use the 
hgs
parents: 7
diff changeset
    65
    HbStringUtil collation functions: matchC(), compareC() and findC(), and 
hgs
parents: 7
diff changeset
    66
    sort() for operations on multiple strings.
hgs
parents: 7
diff changeset
    67
    
hgs
parents: 7
diff changeset
    68
    For example, for languages using the Latin script, collation defines when 
hgs
parents: 7
diff changeset
    69
    punctuation should be ignored, how accents are handled, and so on. A 
hgs
parents: 7
diff changeset
    70
    locale's settings usually include rules for collation.
hgs
parents: 7
diff changeset
    71
    
hgs
parents: 7
diff changeset
    72
    As an example of handling accents, in German, the letter "o with umlaut" or 
hgs
parents: 7
diff changeset
    73
    "ö" is just a variation of "o", whereas in Swedish it is the letter "ö", 
hgs
parents: 7
diff changeset
    74
    which comes last in the alphabet. There can also be country-specific 
hgs
parents: 7
diff changeset
    75
    variations within a language, for example, between Iberian Spanish and Latin 
hgs
parents: 7
diff changeset
    76
    American Spanish.</li>
hgs
parents: 7
diff changeset
    77
    
hgs
parents: 7
diff changeset
    78
    <li>\b Folding normalises text for comparison, for example, by removing case 
hgs
parents: 7
diff changeset
    79
    distinctions and accents from characters. This can be useful, for example, 
hgs
parents: 7
diff changeset
    80
    if you need to determine if two file names are identical.
hgs
parents: 7
diff changeset
    81
    
hgs
parents: 7
diff changeset
    82
    Folding is not locale-aware. For example, folding is not able to handle 
hgs
parents: 7
diff changeset
    83
    character relationships that are not one-to-one, for example, mapping from 
hgs
parents: 7
diff changeset
    84
    the German uppercase SS to the lowercase ß. When you need to compare 
hgs
parents: 7
diff changeset
    85
    strings in natural languages, use collation instead.</li>
hgs
parents: 7
diff changeset
    86
    
hgs
parents: 7
diff changeset
    87
    </ul>
hgs
parents: 7
diff changeset
    88
    
hgs
parents: 7
diff changeset
    89
    \section _hbstringutil_digitconversion Digit conversion
hgs
parents: 7
diff changeset
    90
    
hgs
parents: 7
diff changeset
    91
    Internal processing of numeric expressions uses Latin digits. To display 
hgs
parents: 7
diff changeset
    92
    digits correctly to the user, you need to convert them to the appropriate 
hgs
parents: 7
diff changeset
    93
    digit type.
hgs
parents: 7
diff changeset
    94
   
hgs
parents: 7
diff changeset
    95
    If you are inserting numbers into a localizable string at runtime using 
hgs
parents: 7
diff changeset
    96
    arguments, you can localize the digit type used for the numbers using the \c 
hgs
parents: 7
diff changeset
    97
    L notation in the placeholder in the string (see hbTrId()). However, this 
hgs
parents: 7
diff changeset
    98
    only works for integers. When displaying more complex numeric expressions 
hgs
parents: 7
diff changeset
    99
    such as dates and times, use HbStringUtil to convert the digits to the digit 
hgs
parents: 7
diff changeset
   100
    type appropriate to the UI language.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
34
hgs
parents: 7
diff changeset
   102
    \note In internal processing, converting numbers from one digit type to 
hgs
parents: 7
diff changeset
   103
    another is not always allowed. For example, native digits are filtered out 
hgs
parents: 7
diff changeset
   104
    of IP addresses, and native digits in phone numbers are converted and sent 
hgs
parents: 7
diff changeset
   105
    to the network as Latin digits. This is because different networks may not 
hgs
parents: 7
diff changeset
   106
    be able to handle native digits.
hgs
parents: 7
diff changeset
   107
    
hgs
parents: 7
diff changeset
   108
    HbExtendedLocale, QLocale and HbNumberGrouping also provide functions for 
hgs
parents: 7
diff changeset
   109
    locale-dependent number formatting.
hgs
parents: 7
diff changeset
   110
hgs
parents: 7
diff changeset
   111
    \sa HbLocaleUtil
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
*/
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
/*!
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
    \enum HbStringUtil::Option
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
34
hgs
parents: 7
diff changeset
   117
    Defines the collation levels ('flags') for matchC() and compareC(). This is 
hgs
parents: 7
diff changeset
   118
    based on the Symbian TCollationMethod enumeration, and it is not used on 
hgs
parents: 7
diff changeset
   119
    other platforms.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
    
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
*/
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
/*!
34
hgs
parents: 7
diff changeset
   124
    \var HbStringUtil::Default
hgs
parents: 7
diff changeset
   125
    Use the default system flags.
hgs
parents: 7
diff changeset
   126
   
hgs
parents: 7
diff changeset
   127
*/
hgs
parents: 7
diff changeset
   128
hgs
parents: 7
diff changeset
   129
/*!     
hgs
parents: 7
diff changeset
   130
    \var HbStringUtil::IgnoreNone
hgs
parents: 7
diff changeset
   131
    
hgs
parents: 7
diff changeset
   132
    Do not ignore any keys (by default, for example, punctuation marks and 
hgs
parents: 7
diff changeset
   133
    spaces are ignored).
hgs
parents: 7
diff changeset
   134
hgs
parents: 7
diff changeset
   135
*/
hgs
parents: 7
diff changeset
   136
    
hgs
parents: 7
diff changeset
   137
/*!    
hgs
parents: 7
diff changeset
   138
    \var HbStringUtil::SwapCase
hgs
parents: 7
diff changeset
   139
    
hgs
parents: 7
diff changeset
   140
    Reverse the normal order for characters that only differ in case.
hgs
parents: 7
diff changeset
   141
hgs
parents: 7
diff changeset
   142
    
hgs
parents: 7
diff changeset
   143
*/
hgs
parents: 7
diff changeset
   144
    
hgs
parents: 7
diff changeset
   145
/*!    
hgs
parents: 7
diff changeset
   146
    \var HbStringUtil::AccentsBackwards
hgs
parents: 7
diff changeset
   147
    
hgs
parents: 7
diff changeset
   148
    Compare secondary keys representing accents in reverse order (from right to 
hgs
parents: 7
diff changeset
   149
    left). This is needed for French when comparing words that only differ in 
hgs
parents: 7
diff changeset
   150
    accents.
hgs
parents: 7
diff changeset
   151
hgs
parents: 7
diff changeset
   152
    
hgs
parents: 7
diff changeset
   153
*/
hgs
parents: 7
diff changeset
   154
    
hgs
parents: 7
diff changeset
   155
/*!    
hgs
parents: 7
diff changeset
   156
    \var HbStringUtil::SwapKana
hgs
parents: 7
diff changeset
   157
    
hgs
parents: 7
diff changeset
   158
    Reverse the normal order for characters that only differ in whether they are 
hgs
parents: 7
diff changeset
   159
    Katakana or Hiragana.
hgs
parents: 7
diff changeset
   160
hgs
parents: 7
diff changeset
   161
    
hgs
parents: 7
diff changeset
   162
*/
hgs
parents: 7
diff changeset
   163
   
hgs
parents: 7
diff changeset
   164
/*!    
hgs
parents: 7
diff changeset
   165
    \var HbStringUtil::FoldCase
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
    
34
hgs
parents: 7
diff changeset
   167
    Fold all characters to lowercase before extracting keys. This is needed when 
hgs
parents: 7
diff changeset
   168
    comparing file names; case is ignored but other Unicode collation level 2 
hgs
parents: 7
diff changeset
   169
    distinctions are not.
hgs
parents: 7
diff changeset
   170
hgs
parents: 7
diff changeset
   171
*/
hgs
parents: 7
diff changeset
   172
   
hgs
parents: 7
diff changeset
   173
/*!    
hgs
parents: 7
diff changeset
   174
    \var HbStringUtil::MatchingTable
hgs
parents: 7
diff changeset
   175
    
hgs
parents: 7
diff changeset
   176
    Specify a specific collation method to be used for matching purposes.
hgs
parents: 7
diff changeset
   177
    
hgs
parents: 7
diff changeset
   178
*/
hgs
parents: 7
diff changeset
   179
   
hgs
parents: 7
diff changeset
   180
/*!    
hgs
parents: 7
diff changeset
   181
    \var HbStringUtil::IgnoreCombining
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   182
    
34
hgs
parents: 7
diff changeset
   183
    Ignore a check for adjacent combining characters. A combining character 
hgs
parents: 7
diff changeset
   184
    effectively changes the character it combines with into another character, 
hgs
parents: 7
diff changeset
   185
    which means a match does not occur. Setting this flag allows character 
hgs
parents: 7
diff changeset
   186
    matching regardless of any combining characters.
hgs
parents: 7
diff changeset
   187
        
hgs
parents: 7
diff changeset
   188
*/
hgs
parents: 7
diff changeset
   189
hgs
parents: 7
diff changeset
   190
/*!
hgs
parents: 7
diff changeset
   191
      
hgs
parents: 7
diff changeset
   192
    Searches \a strFrom for a match of \a strToMatch based on the locale's 
hgs
parents: 7
diff changeset
   193
    collation settings. You can optionally specify the level of collation with 
hgs
parents: 7
diff changeset
   194
    \a maxLevel and \a flags, and the wild card and escape characters for the 
hgs
parents: 7
diff changeset
   195
    search with \a wildChar, \a wildSequenceChar and \a escapeChar. If the 
hgs
parents: 7
diff changeset
   196
    parameters are not specified, the default values are used.
hgs
parents: 7
diff changeset
   197
    
hgs
parents: 7
diff changeset
   198
    \param strFrom The source string.    
hgs
parents: 7
diff changeset
   199
    \param strToMatch The string whose data is to be searched within the source 
hgs
parents: 7
diff changeset
   200
    string. The value can contain the wildcard characters "*" and "?", where "*" 
hgs
parents: 7
diff changeset
   201
    matches zero or more consecutive occurrences of any character, and "?" 
hgs
parents: 7
diff changeset
   202
    matches a single occurrence of any character (default).
hgs
parents: 7
diff changeset
   203
    \param maxLevel (optional) The level of collation. Possible values:
hgs
parents: 7
diff changeset
   204
    - \c 0: Only character identities are distinguished.
hgs
parents: 7
diff changeset
   205
    - \c 1: Character identities and accents are distinguished.
hgs
parents: 7
diff changeset
   206
    - \c 2: Character identities, accents, and case are distinguished.    
hgs
parents: 7
diff changeset
   207
    - \c 3: All valid Unicode characters are considered different.
hgs
parents: 7
diff changeset
   208
    - For details, see Symbian documentation on collation, for example, as used 
hgs
parents: 7
diff changeset
   209
    by TDesC16::MatchC().
hgs
parents: 7
diff changeset
   210
    \param flags A list of (comma-separated) HbStringUtil::Option flags that 
hgs
parents: 7
diff changeset
   211
    will be used. The default value is \c Default.
hgs
parents: 7
diff changeset
   212
    \param wildChar (optional) Wild card character ('?' by default).
hgs
parents: 7
diff changeset
   213
    \param wildSequenceChar (optional) Wild card sequence character ('*' by default).
hgs
parents: 7
diff changeset
   214
    \param escapeChar (optional) The escape character, for example, '?', '*' or '\\\\' (default).
hgs
parents: 7
diff changeset
   215
    
hgs
parents: 7
diff changeset
   216
    \return The offset from the beginning of \a strFrom where the match first 
hgs
parents: 7
diff changeset
   217
    occurs. If the data sequence in \a strToMatch is not found, returns -1.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
    
6
c3690ec91ef8 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 3
diff changeset
   219
    Example:
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
    \snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,3}
34
hgs
parents: 7
diff changeset
   221
    
hgs
parents: 7
diff changeset
   222
    \attention On the Symbian platform, this class uses a Symbian-specific 
hgs
parents: 7
diff changeset
   223
    collation match. On other platforms, the search is not locale-based, and 
hgs
parents: 7
diff changeset
   224
    only the \a strFrom and \a strToMatch parameters are used.
hgs
parents: 7
diff changeset
   225
    
hgs
parents: 7
diff changeset
   226
    \sa findC()
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
int HbStringUtil::matchC( const QString &strFrom, const QString &strToMatch,
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
                                    int maxLevel, Options flags,
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
                                    int wildChar, int wildSequenceChar, int escapeChar )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
{
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
#if defined( Q_OS_SYMBIAN )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
    TPtrC s1Ptr( strFrom.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
    TPtrC s2Ptr( strToMatch.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
34
hgs
parents: 7
diff changeset
   236
    if ( (maxLevel < 0) || (maxLevel > 3) ) {
hgs
parents: 7
diff changeset
   237
        maxLevel = 0;
hgs
parents: 7
diff changeset
   238
    }
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
    if ( (flags < 0) || (flags > 127) ) {
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
        flags = Default;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   241
    }
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
    TCollationMethod m = *Mem::GetDefaultMatchingTable();
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
    m.iFlags |= flags;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   246
    return s1Ptr.MatchC(s2Ptr, wildChar, wildSequenceChar, escapeChar, maxLevel, &m);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   247
#else
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   248
    Q_UNUSED(maxLevel);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   249
    Q_UNUSED(flags);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
    Q_UNUSED(wildChar);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
    Q_UNUSED(wildSequenceChar);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
    Q_UNUSED(escapeChar);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
#ifdef QT_NO_REGEXP
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   254
    // if no regular expressions defined do standard MatchF
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
    return strFrom.indexOf( strToMatch, 0, Qt::CaseSensitive );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
#else    
34
hgs
parents: 7
diff changeset
   257
    // works with standard wildcards
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
    QRegExp locStrToMatch( strToMatch, Qt::CaseSensitive, QRegExp::Wildcard );    
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
    return strFrom.indexOf( locStrToMatch, 0 );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
#endif    
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
    
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
#endif
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
/*!
34
hgs
parents: 7
diff changeset
   266
 
hgs
parents: 7
diff changeset
   267
    Compares \a string1 with \a string2 based on the locale's collation 
hgs
parents: 7
diff changeset
   268
    settings. You can optionally specify the level of collation with \a maxLevel 
hgs
parents: 7
diff changeset
   269
    and \a flags. If the parameters are not specified, the default values are 
hgs
parents: 7
diff changeset
   270
    used.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   271
    
34
hgs
parents: 7
diff changeset
   272
    \param string1 The source string.
hgs
parents: 7
diff changeset
   273
    \param string2 The string whose data is to be compared with the source string.
hgs
parents: 7
diff changeset
   274
    \param maxLevel (optional) The level of collation. Possible values:
hgs
parents: 7
diff changeset
   275
    - \c 0: Only character identities are distinguished.
hgs
parents: 7
diff changeset
   276
    - \c 1: Character identities and accents are distinguished.
hgs
parents: 7
diff changeset
   277
    - \c 2: Character identities, accents, and case are distinguished.    
hgs
parents: 7
diff changeset
   278
    - \c 3: All valid Unicode characters are considered different (default).
hgs
parents: 7
diff changeset
   279
    - For details, see Symbian documentation on collation, for example, as used 
hgs
parents: 7
diff changeset
   280
    by TDesC16::CompareC().
hgs
parents: 7
diff changeset
   281
    \param flags (optional) A list of (comma-separated) HbStringUtil::Option flags that 
hgs
parents: 7
diff changeset
   282
    will be used. The default value is \c Default.
hgs
parents: 7
diff changeset
   283
        
hgs
parents: 7
diff changeset
   284
    \return Positive if the \a string1 is greater (that is, comes after \a 
hgs
parents: 7
diff changeset
   285
    string2 when the strings are ordered), negative if \a string2 is greater, 
hgs
parents: 7
diff changeset
   286
    and zero if the content of the strings matches.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
    
6
c3690ec91ef8 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 3
diff changeset
   288
    Example:
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
    \snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,1}
34
hgs
parents: 7
diff changeset
   290
    
hgs
parents: 7
diff changeset
   291
    \attention Locale-specific collation settings are used, and the return value 
hgs
parents: 7
diff changeset
   292
    may vary on different platforms. The \a maxLevel and \a flags parameters are 
hgs
parents: 7
diff changeset
   293
    not used.
hgs
parents: 7
diff changeset
   294
    
hgs
parents: 7
diff changeset
   295
    \sa compareF()
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
int HbStringUtil::compareC( const QString &string1, const QString &string2,
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
                                        int maxLevel, Options flags )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
{
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
#if defined( Q_OS_SYMBIAN )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
    TPtrC s1Ptr(string1.utf16());
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
    TPtrC s2Ptr(string2.utf16());
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
   
34
hgs
parents: 7
diff changeset
   304
    if ( (maxLevel < 0) || (maxLevel > 3) ) {
hgs
parents: 7
diff changeset
   305
        maxLevel = 3;
hgs
parents: 7
diff changeset
   306
    }
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
    if ( (flags < 0) || (flags > 127) ) {
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
        flags = Default;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
    }
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
    
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
    TCollationMethod m = *Mem::CollationMethodByIndex( 0 );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
    m.iFlags |= flags;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   313
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
    return s1Ptr.CompareC( s2Ptr, maxLevel, &m);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
#else
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
    Q_UNUSED(maxLevel);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
    Q_UNUSED(flags);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
    return string1.localeAwareCompare( string2 );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
#endif    
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
/*!
34
hgs
parents: 7
diff changeset
   323
   
hgs
parents: 7
diff changeset
   324
    Searches \a strFrom for the first occurrence of \a strToFind based on the 
hgs
parents: 7
diff changeset
   325
    locale's collation settings. You can optionally specify the collation level 
hgs
parents: 7
diff changeset
   326
    with \a maxLevel. If the parameter is not specified, the default value is 
hgs
parents: 7
diff changeset
   327
    used.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   328
    
34
hgs
parents: 7
diff changeset
   329
    \param strFrom The source string.
hgs
parents: 7
diff changeset
   330
    \param strToFind The string whose data is to be searched within the source string.
hgs
parents: 7
diff changeset
   331
    \param maxLevel (optional) The level of collation. Possible values:
hgs
parents: 7
diff changeset
   332
    - \c 0: Only character identities are distinguished (default).
hgs
parents: 7
diff changeset
   333
    - \c 1: Character identities and accents are distinguished.
hgs
parents: 7
diff changeset
   334
    - \c 2: Character identities, accents, and case are distinguished.    
hgs
parents: 7
diff changeset
   335
    - \c 3: All valid Unicode characters are considered different.
hgs
parents: 7
diff changeset
   336
    - For details, see Symbian documentation on collation, for example, as used 
hgs
parents: 7
diff changeset
   337
    by TDesC16::FindC().
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   338
    
34
hgs
parents: 7
diff changeset
   339
    \return The offset from the beginning of \a strFrom where the match first 
hgs
parents: 7
diff changeset
   340
    occurs. If the data sequence in \a strToFind cannot be found, returns -1. If 
hgs
parents: 7
diff changeset
   341
    the length of \a strToFind is zero, returns zero.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
    
6
c3690ec91ef8 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 3
diff changeset
   343
    Example:
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   344
    \snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,5}
34
hgs
parents: 7
diff changeset
   345
    
hgs
parents: 7
diff changeset
   346
    \attention On the Symbian platform, this class uses a Symbian-specific 
hgs
parents: 7
diff changeset
   347
    collation search. On other platforms, the search is not locale-based, and 
hgs
parents: 7
diff changeset
   348
    the \a maxLevel parameter is not used.
hgs
parents: 7
diff changeset
   349
    
hgs
parents: 7
diff changeset
   350
    \sa matchC()
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   351
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   352
int HbStringUtil::findC( const QString &strFrom,
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   353
                         const QString &strToFind,
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   354
                         int           maxLevel )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
{
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
#if defined( Q_OS_SYMBIAN )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   357
    TPtrC s1Ptr( strFrom.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
    TPtrC s2Ptr( strToFind.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
    
34
hgs
parents: 7
diff changeset
   360
    if ( (maxLevel < 0) || (maxLevel > 3) ) {
hgs
parents: 7
diff changeset
   361
        maxLevel = 0;
hgs
parents: 7
diff changeset
   362
    }
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
    return s1Ptr.FindC( s2Ptr.Ptr(),
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   364
                        s2Ptr.Length(),
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
                        maxLevel );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
#else
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
    Q_UNUSED(maxLevel);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   368
    return strFrom.indexOf( strToFind, 0, Qt::CaseSensitive );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   369
#endif 
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   370
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   371
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   372
/*!
34
hgs
parents: 7
diff changeset
   373
     
hgs
parents: 7
diff changeset
   374
    Searches the folded data in \a strFrom for a match with the folded data in 
hgs
parents: 7
diff changeset
   375
    \a strToMatch.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   376
    
34
hgs
parents: 7
diff changeset
   377
    \param strFrom The source string.    
hgs
parents: 7
diff changeset
   378
    \param strToMatch The string whose data is to be searched within the source 
hgs
parents: 7
diff changeset
   379
    string. The value can contain the wildcard characters "*" and "?", where "*" 
hgs
parents: 7
diff changeset
   380
    matches zero or more consecutive occurrences of any character, and "?" 
hgs
parents: 7
diff changeset
   381
    matches a single occurrence of any character.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   382
    
34
hgs
parents: 7
diff changeset
   383
    \return The offset from the beginning of \a strFrom where the match first 
hgs
parents: 7
diff changeset
   384
    occurs. If the data sequence in \a strToMatch is not found, returns -1.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   385
    
6
c3690ec91ef8 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 3
diff changeset
   386
    Example:
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
    \snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,4}
34
hgs
parents: 7
diff changeset
   388
    
hgs
parents: 7
diff changeset
   389
    \attention On the Symbian platform, this class uses a Symbian-specific 
hgs
parents: 7
diff changeset
   390
    folding match. On other platforms, the search is not locale-based.
hgs
parents: 7
diff changeset
   391
    
hgs
parents: 7
diff changeset
   392
    \sa findF()
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
int HbStringUtil::matchF( const QString &strFrom,
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
                          const QString &strToMatch )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
{
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
#if defined( Q_OS_SYMBIAN )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
    TPtrC s1Ptr( strFrom.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
    TPtrC s2Ptr( strToMatch.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
    return s1Ptr.MatchF( s2Ptr );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   401
#else
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   402
    // folding is just case insensitive      
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   403
#ifdef QT_NO_REGEXP
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
    // if no regular expressions defined do standard FindF
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
    return strFrom.indexOf( strToMatch, 0, Qt::CaseInsensitive );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
#else    
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   407
    QRegExp locStrToMatch( strToMatch, Qt::CaseInsensitive, QRegExp::Wildcard );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
    return strFrom.indexOf( locStrToMatch, 0 );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
#endif
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
    
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
#endif      
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
/*!
34
hgs
parents: 7
diff changeset
   415
hgs
parents: 7
diff changeset
   416
    Searches the folded data in \a strFrom for the first occurrence of the 
hgs
parents: 7
diff changeset
   417
    folded data in \a strToFind.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   418
    
34
hgs
parents: 7
diff changeset
   419
    \param strFrom The source string.
hgs
parents: 7
diff changeset
   420
    \param strToFind The string whose data is to be searched within the source string.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   421
    
34
hgs
parents: 7
diff changeset
   422
    \return The offset from the beginning of \a strFrom where the match first 
hgs
parents: 7
diff changeset
   423
    occurs. If the data sequence in \a strToFind cannot be found, returns -1. If 
hgs
parents: 7
diff changeset
   424
    the length of \a strToFind is zero, returns zero.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
    
6
c3690ec91ef8 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 3
diff changeset
   426
    Example:
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   427
    \snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,6}
34
hgs
parents: 7
diff changeset
   428
    
hgs
parents: 7
diff changeset
   429
    \attention On the Symbian platform, this class uses a Symbian-specific 
hgs
parents: 7
diff changeset
   430
    folding search. On other platforms, the search is not locale-based, and the 
hgs
parents: 7
diff changeset
   431
    \a maxLevel parameter is not used.
hgs
parents: 7
diff changeset
   432
    
hgs
parents: 7
diff changeset
   433
    \sa matchF()
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
int HbStringUtil::findF( const QString &strFrom,
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
                         const QString &strToFind )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
{
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   438
#if defined( Q_OS_SYMBIAN )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
    TPtrC s1Ptr( strFrom.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
    TPtrC s2Ptr( strToFind.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
    return s1Ptr.FindF( s2Ptr );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
#else
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
    // folding is just case insensitive    
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
    return strFrom.indexOf( strToFind, 0, Qt::CaseInsensitive );   
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   445
#endif 
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   446
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   447
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
/*!
34
hgs
parents: 7
diff changeset
   449
hgs
parents: 7
diff changeset
   450
    Compares the folded data in \a string1 with the folded data in \a string2.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   451
    
34
hgs
parents: 7
diff changeset
   452
    \param string1 The source string.
hgs
parents: 7
diff changeset
   453
    \param string2 The string whose data is to be compared with the source string.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   454
    
34
hgs
parents: 7
diff changeset
   455
    \return Positive if \a string1 is greater (that is, comes after \a string2 
hgs
parents: 7
diff changeset
   456
    when the strings are ordered), negative if \a string2 is greater, and zero 
hgs
parents: 7
diff changeset
   457
    if the content of the strings matches.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   458
    
6
c3690ec91ef8 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 3
diff changeset
   459
    Example:
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
    \snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,2}
34
hgs
parents: 7
diff changeset
   461
    
hgs
parents: 7
diff changeset
   462
    \attention On the Symbian platform, this class uses Symbian-specific folding 
hgs
parents: 7
diff changeset
   463
    comparison. On other platforms, the comparison is not locale-based.
hgs
parents: 7
diff changeset
   464
    
hgs
parents: 7
diff changeset
   465
    \sa compareC()
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   466
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
int HbStringUtil::compareF( const QString &string1,
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   468
                            const QString &string2 )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   469
{
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   470
#if defined( Q_OS_SYMBIAN )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   471
    TPtrC s1Ptr( string1.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   472
    TPtrC s2Ptr( string2.utf16() );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   473
    return s1Ptr.CompareF( s2Ptr );
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   474
#else
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
    // folding is just case insensitive     
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   476
    return string1.compare( string2, Qt::CaseInsensitive );   
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   477
#endif 
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   478
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   479
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   480
/*!
34
hgs
parents: 7
diff changeset
   481
    
hgs
parents: 7
diff changeset
   482
    Returns the starting digit range of the native digit.
hgs
parents: 7
diff changeset
   483
    
hgs
parents: 7
diff changeset
   484
    \param ch The native digit.
hgs
parents: 7
diff changeset
   485
    
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   487
static QChar nativeDigitBase(QChar ch)
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
{
7
923ff622b8b9 Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 6
diff changeset
   489
    DigitType d[] = { WesternDigit, ArabicIndicDigit, EasternArabicIndicDigit, DevanagariDigit, ThaiDigit };
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   490
    int i = 0;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   491
    int num = sizeof(d)/sizeof(d[0]);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   492
    while(i<num) {
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
        if (ch>QChar(d[i]) && ch<QChar(d[i]+10)) { return d[i]; }
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
        i++;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
    }
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   496
    return ch;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
/*!
34
hgs
parents: 7
diff changeset
   500
    
hgs
parents: 7
diff changeset
   501
    Converts digits to the native digits based on the current UI language.
hgs
parents: 7
diff changeset
   502
    
hgs
parents: 7
diff changeset
   503
    \param str The digits to be converted.
hgs
parents: 7
diff changeset
   504
    
hgs
parents: 7
diff changeset
   505
    For example:
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   506
    
34
hgs
parents: 7
diff changeset
   507
    \code
hgs
parents: 7
diff changeset
   508
    QString date = "07.09.2010";
hgs
parents: 7
diff changeset
   509
    QString result = HbStringUtil::convertDigits(date);
hgs
parents: 7
diff changeset
   510
    \endcode
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   511
    
34
hgs
parents: 7
diff changeset
   512
    \sa convertDigitsTo(), QLocale::toString()
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
QString HbStringUtil::convertDigits( const QString str ) 
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
{
34
hgs
parents: 7
diff changeset
   516
    DigitType digitType = WesternDigit;
hgs
parents: 7
diff changeset
   517
#if defined( Q_OS_SYMBIAN )
hgs
parents: 7
diff changeset
   518
    TExtendedLocale extLocale;
hgs
parents: 7
diff changeset
   519
    extLocale.LoadSystemSettings();
hgs
parents: 7
diff changeset
   520
    TDigitType type = extLocale.GetLocale()->DigitType();
hgs
parents: 7
diff changeset
   521
    switch (type)
hgs
parents: 7
diff changeset
   522
        {
hgs
parents: 7
diff changeset
   523
        case EDigitTypeArabicIndic:
hgs
parents: 7
diff changeset
   524
            digitType = ArabicIndicDigit;
hgs
parents: 7
diff changeset
   525
            break;
hgs
parents: 7
diff changeset
   526
        case EDigitTypeEasternArabicIndic:
hgs
parents: 7
diff changeset
   527
            digitType = EasternArabicIndicDigit;
hgs
parents: 7
diff changeset
   528
            break;
hgs
parents: 7
diff changeset
   529
        default:
hgs
parents: 7
diff changeset
   530
            break;
hgs
parents: 7
diff changeset
   531
        };
hgs
parents: 7
diff changeset
   532
#else
hgs
parents: 7
diff changeset
   533
    HbExtendedLocale locale = HbExtendedLocale::system();
hgs
parents: 7
diff changeset
   534
    QChar zero = locale.zeroDigit();
hgs
parents: 7
diff changeset
   535
    if (zero == 0x660) {
hgs
parents: 7
diff changeset
   536
        digitType = ArabicIndicDigit;
hgs
parents: 7
diff changeset
   537
    }
hgs
parents: 7
diff changeset
   538
    if (zero == 0x6F0) {
hgs
parents: 7
diff changeset
   539
        digitType = EasternArabicIndicDigit;
hgs
parents: 7
diff changeset
   540
    }
hgs
parents: 7
diff changeset
   541
#endif
hgs
parents: 7
diff changeset
   542
    QString converted = HbStringUtil::convertDigitsTo(str, digitType);
hgs
parents: 7
diff changeset
   543
    return converted;
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   545
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
/*!
34
hgs
parents: 7
diff changeset
   547
hgs
parents: 7
diff changeset
   548
    Returns digits converted into the specified digit type. If you need to 
hgs
parents: 7
diff changeset
   549
    process an integer, use QLocale::toString() to first convert it to a string.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   550
    
34
hgs
parents: 7
diff changeset
   551
    \param str The digits to be converted.
hgs
parents: 7
diff changeset
   552
    \param digitType The digit type that the given digits are to be converted to. Possible values:
hgs
parents: 7
diff changeset
   553
    - \c WesternDigit - Latin digits
hgs
parents: 7
diff changeset
   554
    - \c ArabicIndicDigit - Arabic-Indic digits
hgs
parents: 7
diff changeset
   555
    - \c EasternArabicIndicDigit - Eastern Arabic-Indic digits
hgs
parents: 7
diff changeset
   556
    - \c DevanagariDigit - Devanagari digits
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   557
    
34
hgs
parents: 7
diff changeset
   558
    \sa convertDigits(), QLocale::toString()
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   559
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
QString HbStringUtil::convertDigitsTo( const QString str, const DigitType digitType ) 
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   561
{
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
    QString convDigit;
7
923ff622b8b9 Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 6
diff changeset
   563
    int length = str.length();
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
    for(int i=0; i<length; i++) 
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   565
       {
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   566
       ushort digit = str[i].unicode();
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   567
       ushort digitBase = nativeDigitBase(str[i]).unicode();
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   568
       ushort convertedDigit = 0;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   569
       switch (digitBase) 
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
           {
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   571
           case WesternDigit:
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   572
           case ArabicIndicDigit:
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   573
           case EasternArabicIndicDigit:
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
           case DevanagariDigit:
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
           case ThaiDigit:
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   576
               convertedDigit += digitType + digit - digitBase; 
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   577
               convDigit[i] = QChar(convertedDigit);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   578
               break;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   579
           default:
34
hgs
parents: 7
diff changeset
   580
               convDigit[i] = QChar(digit);
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   581
               break;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   582
           };
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   583
       }
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
    return convDigit;
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   585
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   586
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   587
/*!
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   588
    
34
hgs
parents: 7
diff changeset
   589
    Sorts QString objects into alphabetical order based on the locale's 
hgs
parents: 7
diff changeset
   590
    collation settings. This overwrites the original content of \a strList.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 1
diff changeset
   591
    
34
hgs
parents: 7
diff changeset
   592
    \param strList The list of QStrings that need to be sorted.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   593
    
6
c3690ec91ef8 Revision: 201023
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 3
diff changeset
   594
    Example:
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   595
    \snippet{unittest_hbstringutil/unittest_hbstringutil.cpp,7}
34
hgs
parents: 7
diff changeset
   596
    
hgs
parents: 7
diff changeset
   597
    \attention Locale-specific collation settings are used, and the return value 
hgs
parents: 7
diff changeset
   598
    may vary on different platforms.
hgs
parents: 7
diff changeset
   599
    
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   600
 */
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   601
void HbStringUtil::sort( QStringList &strList )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   602
{
34
hgs
parents: 7
diff changeset
   603
    if ( strList.size() > 1 ) {
hgs
parents: 7
diff changeset
   604
        qSort(strList.begin(), strList.end(), hbStringUtil_SortHelper);
hgs
parents: 7
diff changeset
   605
    }
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   606
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   607
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   608
bool hbStringUtil_SortHelper( const QString &s1, const QString &s2 )
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   609
{
34
hgs
parents: 7
diff changeset
   610
    if ( HbStringUtil::compareC(s1, s2) < 0 ) {
hgs
parents: 7
diff changeset
   611
        // s1 is before s2
hgs
parents: 7
diff changeset
   612
        return true;
hgs
parents: 7
diff changeset
   613
    } else {
hgs
parents: 7
diff changeset
   614
        // s1 is after s2 (or they are equal) 
hgs
parents: 7
diff changeset
   615
        return false;
hgs
parents: 7
diff changeset
   616
    }           
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   617
}