qlocale.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:18k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtCore module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QLOCALE_H
  38. #define QLOCALE_H
  39. #include <QtCore/qstring.h>
  40. #include <QtCore/qobjectdefs.h>
  41. QT_BEGIN_HEADER
  42. QT_BEGIN_NAMESPACE
  43. QT_MODULE(Core)
  44. class QDataStream;
  45. class QDate;
  46. class QDateTime;
  47. class QTime;
  48. class QVariant;
  49. class QLocale;
  50. #ifndef QT_NO_SYSTEMLOCALE
  51. class Q_CORE_EXPORT QSystemLocale
  52. {
  53. public:
  54.     QSystemLocale();
  55.     virtual ~QSystemLocale();
  56.     enum QueryType {
  57.         LanguageId, // uint
  58.         CountryId, // uint
  59.         DecimalPoint, // QString
  60.         GroupSeparator, // QString
  61.         ZeroDigit, // QString
  62.         NegativeSign, // QString
  63.         DateFormatLong, // QString
  64.         DateFormatShort, // QString
  65.         TimeFormatLong, // QString
  66.         TimeFormatShort, // QString
  67.         DayNameLong, // QString, in: int
  68.         DayNameShort, // QString, in: int
  69.         MonthNameLong, // QString, in: int
  70.         MonthNameShort, // QString, in: int
  71.         DateToStringLong, // QString, in: QDate
  72.         DateToStringShort, // QString in: QDate
  73.         TimeToStringLong, // QString in: QTime
  74.         TimeToStringShort, // QString in: QTime
  75.         DateTimeFormatLong, // QString
  76.         DateTimeFormatShort, // QString
  77.         DateTimeToStringLong, // QString in: QDateTime
  78.         DateTimeToStringShort, // QString in: QDateTime
  79.         MeasurementSystem // uint
  80.     };
  81.     virtual QVariant query(QueryType type, QVariant in) const;
  82.     virtual QLocale fallbackLocale() const;
  83. #ifdef QLOCALE_CPP
  84. private:
  85.     QSystemLocale(bool);
  86.     friend QSystemLocale *QSystemLocale_globalSystemLocale();
  87. #endif
  88. };
  89. #endif
  90. struct QLocalePrivate;
  91. class Q_CORE_EXPORT QLocale
  92. {
  93.     Q_GADGET
  94.     Q_ENUMS(Language)
  95.     Q_ENUMS(Country)
  96.     friend class QString;
  97.     friend class QByteArray;
  98.     friend class QIntValidator;
  99.     friend class QDoubleValidator;
  100. public:
  101.     enum Language {
  102.         C = 1,
  103.         Abkhazian = 2,
  104.         Afan = 3,
  105.         Afar = 4,
  106.         Afrikaans = 5,
  107.         Albanian = 6,
  108.         Amharic = 7,
  109.         Arabic = 8,
  110.         Armenian = 9,
  111.         Assamese = 10,
  112.         Aymara = 11,
  113.         Azerbaijani = 12,
  114.         Bashkir = 13,
  115.         Basque = 14,
  116.         Bengali = 15,
  117.         Bhutani = 16,
  118.         Bihari = 17,
  119.         Bislama = 18,
  120.         Breton = 19,
  121.         Bulgarian = 20,
  122.         Burmese = 21,
  123.         Byelorussian = 22,
  124.         Cambodian = 23,
  125.         Catalan = 24,
  126.         Chinese = 25,
  127.         Corsican = 26,
  128.         Croatian = 27,
  129.         Czech = 28,
  130.         Danish = 29,
  131.         Dutch = 30,
  132.         English = 31,
  133.         Esperanto = 32,
  134.         Estonian = 33,
  135.         Faroese = 34,
  136.         FijiLanguage = 35,
  137.         Finnish = 36,
  138.         French = 37,
  139.         Frisian = 38,
  140.         Gaelic = 39,
  141.         Galician = 40,
  142.         Georgian = 41,
  143.         German = 42,
  144.         Greek = 43,
  145.         Greenlandic = 44,
  146.         Guarani = 45,
  147.         Gujarati = 46,
  148.         Hausa = 47,
  149.         Hebrew = 48,
  150.         Hindi = 49,
  151.         Hungarian = 50,
  152.         Icelandic = 51,
  153.         Indonesian = 52,
  154.         Interlingua = 53,
  155.         Interlingue = 54,
  156.         Inuktitut = 55,
  157.         Inupiak = 56,
  158.         Irish = 57,
  159.         Italian = 58,
  160.         Japanese = 59,
  161.         Javanese = 60,
  162.         Kannada = 61,
  163.         Kashmiri = 62,
  164.         Kazakh = 63,
  165.         Kinyarwanda = 64,
  166.         Kirghiz = 65,
  167.         Korean = 66,
  168.         Kurdish = 67,
  169.         Kurundi = 68,
  170.         Laothian = 69,
  171.         Latin = 70,
  172.         Latvian = 71,
  173.         Lingala = 72,
  174.         Lithuanian = 73,
  175.         Macedonian = 74,
  176.         Malagasy = 75,
  177.         Malay = 76,
  178.         Malayalam = 77,
  179.         Maltese = 78,
  180.         Maori = 79,
  181.         Marathi = 80,
  182.         Moldavian = 81,
  183.         Mongolian = 82,
  184.         NauruLanguage = 83,
  185.         Nepali = 84,
  186.         Norwegian = 85,
  187.         NorwegianBokmal = Norwegian,
  188.         Occitan = 86,
  189.         Oriya = 87,
  190.         Pashto = 88,
  191.         Persian = 89,
  192.         Polish = 90,
  193.         Portuguese = 91,
  194.         Punjabi = 92,
  195.         Quechua = 93,
  196.         RhaetoRomance = 94,
  197.         Romanian = 95,
  198.         Russian = 96,
  199.         Samoan = 97,
  200.         Sangho = 98,
  201.         Sanskrit = 99,
  202.         Serbian = 100,
  203.         SerboCroatian = 101,
  204.         Sesotho = 102,
  205.         Setswana = 103,
  206.         Shona = 104,
  207.         Sindhi = 105,
  208.         Singhalese = 106,
  209.         Siswati = 107,
  210.         Slovak = 108,
  211.         Slovenian = 109,
  212.         Somali = 110,
  213.         Spanish = 111,
  214.         Sundanese = 112,
  215.         Swahili = 113,
  216.         Swedish = 114,
  217.         Tagalog = 115,
  218.         Tajik = 116,
  219.         Tamil = 117,
  220.         Tatar = 118,
  221.         Telugu = 119,
  222.         Thai = 120,
  223.         Tibetan = 121,
  224.         Tigrinya = 122,
  225.         TongaLanguage = 123,
  226.         Tsonga = 124,
  227.         Turkish = 125,
  228.         Turkmen = 126,
  229.         Twi = 127,
  230.         Uigur = 128,
  231.         Ukrainian = 129,
  232.         Urdu = 130,
  233.         Uzbek = 131,
  234.         Vietnamese = 132,
  235.         Volapuk = 133,
  236.         Welsh = 134,
  237.         Wolof = 135,
  238.         Xhosa = 136,
  239.         Yiddish = 137,
  240.         Yoruba = 138,
  241.         Zhuang = 139,
  242.         Zulu = 140,
  243.         NorwegianNynorsk = 141,
  244.         Nynorsk = NorwegianNynorsk, // ### obsolete
  245.         Bosnian = 142,
  246.         Divehi = 143,
  247.         Manx = 144,
  248.         Cornish = 145,
  249.         Akan = 146,
  250.         Konkani = 147,
  251.         Ga = 148,
  252.         Igbo = 149,
  253.         Kamba = 150,
  254.         Syriac = 151,
  255.         Blin = 152,
  256.         Geez = 153,
  257.         Koro = 154,
  258.         Sidamo = 155,
  259.         Atsam = 156,
  260.         Tigre = 157,
  261.         Jju = 158,
  262.         Friulian = 159,
  263.         Venda = 160,
  264.         Ewe = 161,
  265.         Walamo = 162,
  266.         Hawaiian = 163,
  267.         Tyap = 164,
  268.         Chewa = 165,
  269.         LastLanguage = Chewa
  270.     };
  271.     enum Country {
  272.         AnyCountry = 0,
  273.         Afghanistan = 1,
  274.         Albania = 2,
  275.         Algeria = 3,
  276.         AmericanSamoa = 4,
  277.         Andorra = 5,
  278.         Angola = 6,
  279.         Anguilla = 7,
  280.         Antarctica = 8,
  281.         AntiguaAndBarbuda = 9,
  282.         Argentina = 10,
  283.         Armenia = 11,
  284.         Aruba = 12,
  285.         Australia = 13,
  286.         Austria = 14,
  287.         Azerbaijan = 15,
  288.         Bahamas = 16,
  289.         Bahrain = 17,
  290.         Bangladesh = 18,
  291.         Barbados = 19,
  292.         Belarus = 20,
  293.         Belgium = 21,
  294.         Belize = 22,
  295.         Benin = 23,
  296.         Bermuda = 24,
  297.         Bhutan = 25,
  298.         Bolivia = 26,
  299.         BosniaAndHerzegowina = 27,
  300.         Botswana = 28,
  301.         BouvetIsland = 29,
  302.         Brazil = 30,
  303.         BritishIndianOceanTerritory = 31,
  304.         BruneiDarussalam = 32,
  305.         Bulgaria = 33,
  306.         BurkinaFaso = 34,
  307.         Burundi = 35,
  308.         Cambodia = 36,
  309.         Cameroon = 37,
  310.         Canada = 38,
  311.         CapeVerde = 39,
  312.         CaymanIslands = 40,
  313.         CentralAfricanRepublic = 41,
  314.         Chad = 42,
  315.         Chile = 43,
  316.         China = 44,
  317.         ChristmasIsland = 45,
  318.         CocosIslands = 46,
  319.         Colombia = 47,
  320.         Comoros = 48,
  321.         DemocraticRepublicOfCongo = 49,
  322.         PeoplesRepublicOfCongo = 50,
  323.         CookIslands = 51,
  324.         CostaRica = 52,
  325.         IvoryCoast = 53,
  326.         Croatia = 54,
  327.         Cuba = 55,
  328.         Cyprus = 56,
  329.         CzechRepublic = 57,
  330.         Denmark = 58,
  331.         Djibouti = 59,
  332.         Dominica = 60,
  333.         DominicanRepublic = 61,
  334.         EastTimor = 62,
  335.         Ecuador = 63,
  336.         Egypt = 64,
  337.         ElSalvador = 65,
  338.         EquatorialGuinea = 66,
  339.         Eritrea = 67,
  340.         Estonia = 68,
  341.         Ethiopia = 69,
  342.         FalklandIslands = 70,
  343.         FaroeIslands = 71,
  344.         FijiCountry = 72,
  345.         Finland = 73,
  346.         France = 74,
  347.         MetropolitanFrance = 75,
  348.         FrenchGuiana = 76,
  349.         FrenchPolynesia = 77,
  350.         FrenchSouthernTerritories = 78,
  351.         Gabon = 79,
  352.         Gambia = 80,
  353.         Georgia = 81,
  354.         Germany = 82,
  355.         Ghana = 83,
  356.         Gibraltar = 84,
  357.         Greece = 85,
  358.         Greenland = 86,
  359.         Grenada = 87,
  360.         Guadeloupe = 88,
  361.         Guam = 89,
  362.         Guatemala = 90,
  363.         Guinea = 91,
  364.         GuineaBissau = 92,
  365.         Guyana = 93,
  366.         Haiti = 94,
  367.         HeardAndMcDonaldIslands = 95,
  368.         Honduras = 96,
  369.         HongKong = 97,
  370.         Hungary = 98,
  371.         Iceland = 99,
  372.         India = 100,
  373.         Indonesia = 101,
  374.         Iran = 102,
  375.         Iraq = 103,
  376.         Ireland = 104,
  377.         Israel = 105,
  378.         Italy = 106,
  379.         Jamaica = 107,
  380.         Japan = 108,
  381.         Jordan = 109,
  382.         Kazakhstan = 110,
  383.         Kenya = 111,
  384.         Kiribati = 112,
  385.         DemocraticRepublicOfKorea = 113,
  386.         RepublicOfKorea = 114,
  387.         Kuwait = 115,
  388.         Kyrgyzstan = 116,
  389.         Lao = 117,
  390.         Latvia = 118,
  391.         Lebanon = 119,
  392.         Lesotho = 120,
  393.         Liberia = 121,
  394.         LibyanArabJamahiriya = 122,
  395.         Liechtenstein = 123,
  396.         Lithuania = 124,
  397.         Luxembourg = 125,
  398.         Macau = 126,
  399.         Macedonia = 127,
  400.         Madagascar = 128,
  401.         Malawi = 129,
  402.         Malaysia = 130,
  403.         Maldives = 131,
  404.         Mali = 132,
  405.         Malta = 133,
  406.         MarshallIslands = 134,
  407.         Martinique = 135,
  408.         Mauritania = 136,
  409.         Mauritius = 137,
  410.         Mayotte = 138,
  411.         Mexico = 139,
  412.         Micronesia = 140,
  413.         Moldova = 141,
  414.         Monaco = 142,
  415.         Mongolia = 143,
  416.         Montserrat = 144,
  417.         Morocco = 145,
  418.         Mozambique = 146,
  419.         Myanmar = 147,
  420.         Namibia = 148,
  421.         NauruCountry = 149,
  422.         Nepal = 150,
  423.         Netherlands = 151,
  424.         NetherlandsAntilles = 152,
  425.         NewCaledonia = 153,
  426.         NewZealand = 154,
  427.         Nicaragua = 155,
  428.         Niger = 156,
  429.         Nigeria = 157,
  430.         Niue = 158,
  431.         NorfolkIsland = 159,
  432.         NorthernMarianaIslands = 160,
  433.         Norway = 161,
  434.         Oman = 162,
  435.         Pakistan = 163,
  436.         Palau = 164,
  437.         PalestinianTerritory = 165,
  438.         Panama = 166,
  439.         PapuaNewGuinea = 167,
  440.         Paraguay = 168,
  441.         Peru = 169,
  442.         Philippines = 170,
  443.         Pitcairn = 171,
  444.         Poland = 172,
  445.         Portugal = 173,
  446.         PuertoRico = 174,
  447.         Qatar = 175,
  448.         Reunion = 176,
  449.         Romania = 177,
  450.         RussianFederation = 178,
  451.         Rwanda = 179,
  452.         SaintKittsAndNevis = 180,
  453.         StLucia = 181,
  454.         StVincentAndTheGrenadines = 182,
  455.         Samoa = 183,
  456.         SanMarino = 184,
  457.         SaoTomeAndPrincipe = 185,
  458.         SaudiArabia = 186,
  459.         Senegal = 187,
  460.         Seychelles = 188,
  461.         SierraLeone = 189,
  462.         Singapore = 190,
  463.         Slovakia = 191,
  464.         Slovenia = 192,
  465.         SolomonIslands = 193,
  466.         Somalia = 194,
  467.         SouthAfrica = 195,
  468.         SouthGeorgiaAndTheSouthSandwichIslands = 196,
  469.         Spain = 197,
  470.         SriLanka = 198,
  471.         StHelena = 199,
  472.         StPierreAndMiquelon = 200,
  473.         Sudan = 201,
  474.         Suriname = 202,
  475.         SvalbardAndJanMayenIslands = 203,
  476.         Swaziland = 204,
  477.         Sweden = 205,
  478.         Switzerland = 206,
  479.         SyrianArabRepublic = 207,
  480.         Taiwan = 208,
  481.         Tajikistan = 209,
  482.         Tanzania = 210,
  483.         Thailand = 211,
  484.         Togo = 212,
  485.         Tokelau = 213,
  486.         TongaCountry = 214,
  487.         TrinidadAndTobago = 215,
  488.         Tunisia = 216,
  489.         Turkey = 217,
  490.         Turkmenistan = 218,
  491.         TurksAndCaicosIslands = 219,
  492.         Tuvalu = 220,
  493.         Uganda = 221,
  494.         Ukraine = 222,
  495.         UnitedArabEmirates = 223,
  496.         UnitedKingdom = 224,
  497.         UnitedStates = 225,
  498.         UnitedStatesMinorOutlyingIslands = 226,
  499.         Uruguay = 227,
  500.         Uzbekistan = 228,
  501.         Vanuatu = 229,
  502.         VaticanCityState = 230,
  503.         Venezuela = 231,
  504.         VietNam = 232,
  505.         BritishVirginIslands = 233,
  506.         USVirginIslands = 234,
  507.         WallisAndFutunaIslands = 235,
  508.         WesternSahara = 236,
  509.         Yemen = 237,
  510.         Yugoslavia = 238,
  511.         Zambia = 239,
  512.         Zimbabwe = 240,
  513.         SerbiaAndMontenegro = 241,
  514.         LastCountry = SerbiaAndMontenegro
  515.     };
  516.     enum MeasurementSystem { MetricSystem, ImperialSystem };
  517.     enum FormatType { LongFormat, ShortFormat };
  518.     enum NumberOption { OmitGroupSeparator = 0x01, RejectGroupSeparator = 0x02 };
  519.     Q_DECLARE_FLAGS(NumberOptions, NumberOption)
  520.     QLocale();
  521.     QLocale(const QString &name);
  522.     QLocale(Language language, Country country = AnyCountry);
  523.     QLocale(const QLocale &other);
  524.     QLocale &operator=(const QLocale &other);
  525.     Language language() const;
  526.     Country country() const;
  527.     QString name() const;
  528.     short toShort(const QString &s, bool *ok = 0, int base = 0) const;
  529.     ushort toUShort(const QString &s, bool *ok = 0, int base = 0) const;
  530.     int toInt(const QString &s, bool *ok = 0, int base = 0) const;
  531.     uint toUInt(const QString &s, bool *ok = 0, int base = 0) const;
  532.     qlonglong toLongLong(const QString &s, bool *ok = 0, int base = 0) const;
  533.     qlonglong toULongLong(const QString &s, bool *ok = 0, int base = 0) const;
  534.     float toFloat(const QString &s, bool *ok = 0) const;
  535.     double toDouble(const QString &s, bool *ok = 0) const;
  536.     QString toString(qlonglong i) const;
  537.     QString toString(qulonglong i) const;
  538.     inline QString toString(short i) const;
  539.     inline QString toString(ushort i) const;
  540.     inline QString toString(int i) const;
  541.     inline QString toString(uint i) const;
  542.     QString toString(double i, char f = 'g', int prec = 6) const;
  543.     inline QString toString(float i, char f = 'g', int prec = 6) const;
  544.     QString toString(const QDate &date, const QString &formatStr) const;
  545.     QString toString(const QDate &date, FormatType format = LongFormat) const;
  546.     QString toString(const QTime &time, const QString &formatStr) const;
  547.     QString toString(const QTime &time, FormatType format = LongFormat) const;
  548.     QString toString(const QDateTime &dateTime, FormatType format = LongFormat) const;
  549.     QString toString(const QDateTime &dateTime, const QString &format) const;
  550.     QString dateFormat(FormatType format = LongFormat) const;
  551.     QString timeFormat(FormatType format = LongFormat) const;
  552.     QString dateTimeFormat(FormatType format = LongFormat) const;
  553. #ifndef QT_NO_DATESTRING
  554.     QDate toDate(const QString &string, FormatType = LongFormat) const;
  555.     QTime toTime(const QString &string, FormatType = LongFormat) const;
  556.     QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const;
  557.     QDate toDate(const QString &string, const QString &format) const;
  558.     QTime toTime(const QString &string, const QString &format) const;
  559.     QDateTime toDateTime(const QString &string, const QString &format) const;
  560. #endif
  561.     QChar decimalPoint() const;
  562.     QChar groupSeparator() const;
  563.     QChar percent() const;
  564.     QChar zeroDigit() const;
  565.     QChar negativeSign() const;
  566.     QChar exponential() const;
  567.     QString monthName(int, FormatType format = LongFormat) const;
  568.     QString dayName(int, FormatType format = LongFormat) const;
  569.     MeasurementSystem measurementSystem() const;
  570.     inline bool operator==(const QLocale &other) const;
  571.     inline bool operator!=(const QLocale &other) const;
  572.     static QString languageToString(Language language);
  573.     static QString countryToString(Country country);
  574.     static void setDefault(const QLocale &locale);
  575.     static QLocale c() { return QLocale(C); }
  576.     static QLocale system();
  577.     static QList<Country> countriesForLanguage(Language lang);
  578.     void setNumberOptions(NumberOptions options);
  579.     NumberOptions numberOptions() const;
  580. //private:                        // this should be private, but can't be
  581.     struct Data {
  582.         quint16 index;
  583.         quint16 numberOptions;
  584.     }
  585. #if (defined(__arm__) || defined(__ARMEL__))
  586.         Q_PACKED
  587. #endif
  588.         ;
  589. private:
  590.     friend struct QLocalePrivate;
  591.     // ### We now use this field to pack an index into locale_data and NumberOptions.
  592.     // ### Qt 5: change to a QLocaleData *d; uint numberOptions.
  593.     union {
  594.         void *v;
  595.         Data p;
  596.     };
  597.     const QLocalePrivate *d() const;
  598. };
  599. Q_DECLARE_TYPEINFO(QLocale, Q_MOVABLE_TYPE);
  600. Q_DECLARE_OPERATORS_FOR_FLAGS(QLocale::NumberOptions)
  601. inline QString QLocale::toString(short i) const
  602.     { return toString(qlonglong(i)); }
  603. inline QString QLocale::toString(ushort i) const
  604.     { return toString(qulonglong(i)); }
  605. inline QString QLocale::toString(int i) const
  606.     { return toString(qlonglong(i)); }
  607. inline QString QLocale::toString(uint i) const
  608.     { return toString(qulonglong(i)); }
  609. inline QString QLocale::toString(float i, char f, int prec) const
  610.     { return toString(double(i), f, prec); }
  611. inline bool QLocale::operator==(const QLocale &other) const
  612.     { return d() == other.d() && numberOptions() == other.numberOptions(); }
  613. inline bool QLocale::operator!=(const QLocale &other) const
  614.     { return d() != other.d() || numberOptions() != other.numberOptions(); }
  615. #ifndef QT_NO_DATASTREAM
  616. Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QLocale &);
  617. Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QLocale &);
  618. #endif
  619. QT_END_NAMESPACE
  620. QT_END_HEADER
  621. #endif // QLOCALE_H