src/hbcore/i18n/hbnumbergrouping.cpp
author hgs
Mon, 18 Oct 2010 18:23:13 +0300
changeset 34 ed14f46c0e55
parent 3 11d3954df52a
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 "hbnumbergrouping.h"
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include "hbngnormalnumber_p.h"
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
/*!
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
    @stable
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
    @hbcore
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
    \class HbNumberGrouping
34
hgs
parents: 3
diff changeset
    33
    \brief The HbNumberGrouping class formats numbers according to the conventions of a certain locale. 
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
    
34
hgs
parents: 3
diff changeset
    35
    The grouping of numbers may vary in different locales. For example, for 
hgs
parents: 3
diff changeset
    36
    Finland, the number \c "123456789.00" would be formatted as \c "123 456 
hgs
parents: 3
diff changeset
    37
    789,00". The grouping may also vary depending on the context of where 
hgs
parents: 3
diff changeset
    38
    numbers are used. HbNumberGrouping provides functions for grouping currency 
hgs
parents: 3
diff changeset
    39
    values and generic numbers.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
34
hgs
parents: 3
diff changeset
    41
    For example, to format \c "1234567890" according to the current system 
hgs
parents: 3
diff changeset
    42
    locale:
hgs
parents: 3
diff changeset
    43
    
hgs
parents: 3
diff changeset
    44
    \code
hgs
parents: 3
diff changeset
    45
    QString number("1234567890");
hgs
parents: 3
diff changeset
    46
    QString result = HbNumberGrouping::formatGeneric(number);
hgs
parents: 3
diff changeset
    47
    \endcode
hgs
parents: 3
diff changeset
    48
    
hgs
parents: 3
diff changeset
    49
    Use HbStringUtil to display the number using the locale digit type, and use 
hgs
parents: 3
diff changeset
    50
    HbExtendedLocale and QLocale for other currency formatting.
hgs
parents: 3
diff changeset
    51
    
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
*/
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
/*!
34
hgs
parents: 3
diff changeset
    55
       
hgs
parents: 3
diff changeset
    56
    Returns a number grouped based on the given country format, or the current 
hgs
parents: 3
diff changeset
    57
    locale.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    58
    
34
hgs
parents: 3
diff changeset
    59
    \param number The source number string to be grouped. The characters must be 
hgs
parents: 3
diff changeset
    60
    Latin digits, and always use '.' as the decimal separator. '+' and '-' 
hgs
parents: 3
diff changeset
    61
    characters are also supported. No other characters are supported.
hgs
parents: 3
diff changeset
    62
    
hgs
parents: 3
diff changeset
    63
    \param country (optional) The QLocale::Country enumeration (in QLocale) that 
hgs
parents: 3
diff changeset
    64
    determines the format to be used for converting the number. If \a country is 
hgs
parents: 3
diff changeset
    65
    not given, the number is grouped based on the current locale.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
34
hgs
parents: 3
diff changeset
    67
    \return The modified number as a QString if successful, otherwise an empty 
hgs
parents: 3
diff changeset
    68
    QString.
hgs
parents: 3
diff changeset
    69
    
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
*/
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
QString HbNumberGrouping::formatGeneric( const QString &number,
34
hgs
parents: 3
diff changeset
    72
                                         QLocale::Country country )                          
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
{
34
hgs
parents: 3
diff changeset
    74
    if ( number.size() == 0 ) {
hgs
parents: 3
diff changeset
    75
        return QString();
hgs
parents: 3
diff changeset
    76
    }
hgs
parents: 3
diff changeset
    77
    
hgs
parents: 3
diff changeset
    78
    if ( country == QLocale::AnyCountry) {
hgs
parents: 3
diff changeset
    79
        QLocale locale;
hgs
parents: 3
diff changeset
    80
        country = locale.country();
hgs
parents: 3
diff changeset
    81
    }
hgs
parents: 3
diff changeset
    82
    
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
    return HbNgNormalNumber::normalNumberGrouping(number, country);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
}
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
/*!
34
hgs
parents: 3
diff changeset
    87
   
hgs
parents: 3
diff changeset
    88
    Returns a currency value grouped based on the given country format, or the 
hgs
parents: 3
diff changeset
    89
    current locale.
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
34
hgs
parents: 3
diff changeset
    91
    \param number The source number string to be grouped. The characters must be 
hgs
parents: 3
diff changeset
    92
    Latin digits, and always use '.' as the decimal separator. '+' and '-' 
hgs
parents: 3
diff changeset
    93
    characters are also supported. No other characters are supported.
hgs
parents: 3
diff changeset
    94
    
hgs
parents: 3
diff changeset
    95
    \param country (optional) The QLocale::Country enumeration (in QLocale) that 
hgs
parents: 3
diff changeset
    96
    determines the format to be used for converting the number. If \a country is 
hgs
parents: 3
diff changeset
    97
    not given, the number is grouped based on the current locale.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    98
34
hgs
parents: 3
diff changeset
    99
    \return The modified number as a QString if successful, otherwise an empty 
hgs
parents: 3
diff changeset
   100
    QString.
hgs
parents: 3
diff changeset
   101
    
hgs
parents: 3
diff changeset
   102
    \note The currency symbol is not added to the return value. Use 
hgs
parents: 3
diff changeset
   103
    HbExtendedLocale to handle the currency symbol.
hgs
parents: 3
diff changeset
   104
    
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
*/
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
QString HbNumberGrouping::formatCurrency( const QString &number,
34
hgs
parents: 3
diff changeset
   107
                                          QLocale::Country country )                             
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
{
34
hgs
parents: 3
diff changeset
   109
    if ( number.size() == 0 ) {
hgs
parents: 3
diff changeset
   110
        return QString();
hgs
parents: 3
diff changeset
   111
    }
hgs
parents: 3
diff changeset
   112
    
hgs
parents: 3
diff changeset
   113
    if ( country == QLocale::AnyCountry) {
hgs
parents: 3
diff changeset
   114
        QLocale locale;
hgs
parents: 3
diff changeset
   115
        country = locale.country();
hgs
parents: 3
diff changeset
   116
    }
hgs
parents: 3
diff changeset
   117
    
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
    return HbNgNormalNumber::normalNumberGrouping(number, country);
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
}
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
/*!
34
hgs
parents: 3
diff changeset
   122
    \internal
hgs
parents: 3
diff changeset
   123
    
hgs
parents: 3
diff changeset
   124
    Returns a phone number grouped based on the given country format, or the 
hgs
parents: 3
diff changeset
   125
    current locale.
hgs
parents: 3
diff changeset
   126
    
hgs
parents: 3
diff changeset
   127
    \note The grouping of phone numbers is not supported yet.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   128
34
hgs
parents: 3
diff changeset
   129
    \param number The source number for grouping. The characters must be 
hgs
parents: 3
diff changeset
   130
    Latin digits, and always use '.' as the decimal separator. '+' and '-' 
hgs
parents: 3
diff changeset
   131
    characters are also supported. No other characters are supported.
hgs
parents: 3
diff changeset
   132
    
hgs
parents: 3
diff changeset
   133
    \param country (optional) The QLocale::country numeration (in QLocale) that 
hgs
parents: 3
diff changeset
   134
    determines the format to be used for converting the number. If \a country is 
hgs
parents: 3
diff changeset
   135
    not given, the number is grouped based on the current locale.
3
11d3954df52a Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
   136
34
hgs
parents: 3
diff changeset
   137
    \return The modified number as a QString if successful, otherwise an 
hgs
parents: 3
diff changeset
   138
    empty QString.
hgs
parents: 3
diff changeset
   139
    
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
*/
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
QString HbNumberGrouping::formatPhoneNumber( const QString &number,
34
hgs
parents: 3
diff changeset
   142
                                             QLocale::Country country )                          
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
{
34
hgs
parents: 3
diff changeset
   144
    if ( number.size() == 0 ) {
hgs
parents: 3
diff changeset
   145
        return QString();
hgs
parents: 3
diff changeset
   146
    }
hgs
parents: 3
diff changeset
   147
    
hgs
parents: 3
diff changeset
   148
    if ( country == QLocale::AnyCountry) {
hgs
parents: 3
diff changeset
   149
        QLocale locale;
hgs
parents: 3
diff changeset
   150
        country = locale.country();
hgs
parents: 3
diff changeset
   151
    }
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
34
hgs
parents: 3
diff changeset
   153
    return QString();
0
16d8024aca5e Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
}