SIC: QLocale: Make QSystemLocale a private class

As discussed on list and approved by Lars and Thiago.

Make QSystemLocale private to give us time and space to change it to a
better implementation.

Change-Id: Ifd806972f3996c43a876f544f78c6557ad71cd75
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
This commit is contained in:
John Layt 2012-01-27 20:21:21 +00:00 committed by Qt by Nokia
parent 29c4a27a94
commit 23457bd6d9
5 changed files with 71 additions and 109 deletions

2
dist/changes-5.0.0 vendored
View File

@ -198,6 +198,8 @@ information about a particular change.
longer take a parameter for base, they will only perform localised base 10 longer take a parameter for base, they will only perform localised base 10
conversions. For converting other bases use the QString methods instead. conversions. For converting other bases use the QString methods instead.
- QSystemLocale has been removed from the public API.
**************************************************************************** ****************************************************************************
* General * * General *
**************************************************************************** ****************************************************************************

View File

@ -61,71 +61,6 @@ class QTextStreamPrivate;
class QLocale; class QLocale;
#ifndef QT_NO_SYSTEMLOCALE
class Q_CORE_EXPORT QSystemLocale
{
public:
QSystemLocale();
virtual ~QSystemLocale();
struct CurrencyToStringArgument
{
CurrencyToStringArgument() { }
CurrencyToStringArgument(const QVariant &v, const QString &s)
: value(v), symbol(s) { }
QVariant value;
QString symbol;
};
enum QueryType {
LanguageId, // uint
CountryId, // uint
DecimalPoint, // QString
GroupSeparator, // QString
ZeroDigit, // QString
NegativeSign, // QString
DateFormatLong, // QString
DateFormatShort, // QString
TimeFormatLong, // QString
TimeFormatShort, // QString
DayNameLong, // QString, in: int
DayNameShort, // QString, in: int
MonthNameLong, // QString, in: int
MonthNameShort, // QString, in: int
DateToStringLong, // QString, in: QDate
DateToStringShort, // QString in: QDate
TimeToStringLong, // QString in: QTime
TimeToStringShort, // QString in: QTime
DateTimeFormatLong, // QString
DateTimeFormatShort, // QString
DateTimeToStringLong, // QString in: QDateTime
DateTimeToStringShort, // QString in: QDateTime
MeasurementSystem, // uint
PositiveSign, // QString
AMText, // QString
PMText, // QString
FirstDayOfWeek, // Qt::DayOfWeek
Weekdays, // QList<Qt::DayOfWeek>
CurrencySymbol, // QString in: CurrencyToStringArgument
CurrencyToString, // QString in: qlonglong, qulonglong or double
UILanguages, // QStringList
StringToStandardQuotation, // QString in: QStringRef to quote
StringToAlternateQuotation, // QString in: QStringRef to quote
ScriptId, // uint
ListToSeparatedString, // QString
LocaleChanged, // system locale changed
NativeLanguageName, // QString
NativeCountryName // QString
};
virtual QVariant query(QueryType type, QVariant in) const;
virtual QLocale fallbackLocale() const;
private:
QSystemLocale(bool);
friend QSystemLocale *QSystemLocale_globalSystemLocale();
};
#endif
struct QLocalePrivate; struct QLocalePrivate;
class Q_CORE_EXPORT QLocale class Q_CORE_EXPORT QLocale
{ {
@ -811,10 +746,6 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QLocale &);
QT_END_NAMESPACE QT_END_NAMESPACE
#ifndef QT_NO_SYSTEMLOCALE
Q_DECLARE_METATYPE(QSystemLocale::CurrencyToStringArgument)
#endif
QT_END_HEADER QT_END_HEADER
#endif // QLOCALE_H #endif // QLOCALE_H

View File

@ -711,6 +711,7 @@
*/ */
/*! /*!
\internal
\class QSystemLocale \class QSystemLocale
\brief The QSystemLocale class can be used to finetune the system locale \brief The QSystemLocale class can be used to finetune the system locale
of the user. of the user.

View File

@ -61,6 +61,71 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
#ifndef QT_NO_SYSTEMLOCALE
class QSystemLocale
{
public:
QSystemLocale();
virtual ~QSystemLocale();
struct CurrencyToStringArgument
{
CurrencyToStringArgument() { }
CurrencyToStringArgument(const QVariant &v, const QString &s)
: value(v), symbol(s) { }
QVariant value;
QString symbol;
};
enum QueryType {
LanguageId, // uint
CountryId, // uint
DecimalPoint, // QString
GroupSeparator, // QString
ZeroDigit, // QString
NegativeSign, // QString
DateFormatLong, // QString
DateFormatShort, // QString
TimeFormatLong, // QString
TimeFormatShort, // QString
DayNameLong, // QString, in: int
DayNameShort, // QString, in: int
MonthNameLong, // QString, in: int
MonthNameShort, // QString, in: int
DateToStringLong, // QString, in: QDate
DateToStringShort, // QString in: QDate
TimeToStringLong, // QString in: QTime
TimeToStringShort, // QString in: QTime
DateTimeFormatLong, // QString
DateTimeFormatShort, // QString
DateTimeToStringLong, // QString in: QDateTime
DateTimeToStringShort, // QString in: QDateTime
MeasurementSystem, // uint
PositiveSign, // QString
AMText, // QString
PMText, // QString
FirstDayOfWeek, // Qt::DayOfWeek
Weekdays, // QList<Qt::DayOfWeek>
CurrencySymbol, // QString in: CurrencyToStringArgument
CurrencyToString, // QString in: qlonglong, qulonglong or double
UILanguages, // QStringList
StringToStandardQuotation, // QString in: QStringRef to quote
StringToAlternateQuotation, // QString in: QStringRef to quote
ScriptId, // uint
ListToSeparatedString, // QString
LocaleChanged, // system locale changed
NativeLanguageName, // QString
NativeCountryName // QString
};
virtual QVariant query(QueryType type, QVariant in) const;
virtual QLocale fallbackLocale() const;
private:
QSystemLocale(bool);
friend QSystemLocale *QSystemLocale_globalSystemLocale();
};
#endif
struct Q_CORE_EXPORT QLocalePrivate struct Q_CORE_EXPORT QLocalePrivate
{ {
public: public:
@ -261,5 +326,8 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QStringRef) Q_DECLARE_METATYPE(QStringRef)
Q_DECLARE_METATYPE(QList<Qt::DayOfWeek>) Q_DECLARE_METATYPE(QList<Qt::DayOfWeek>)
#ifndef QT_NO_SYSTEMLOCALE
Q_DECLARE_METATYPE(QSystemLocale::CurrencyToStringArgument)
#endif
#endif // QLOCALE_P_H #endif // QLOCALE_P_H

View File

@ -123,9 +123,6 @@ private slots:
void monthName(); void monthName();
void standaloneMonthName(); void standaloneMonthName();
// QSystemLocale tests
void queryDateTime();
void ampm(); void ampm();
void currency(); void currency();
void quoteString(); void quoteString();
@ -1778,43 +1775,6 @@ a(QLatin1String("0.0000000000000000000000000000000000000000000000000000000000000
QVERIFY(!ok); QVERIFY(!ok);
} }
class SystemLocale : public QSystemLocale
{
public:
virtual QVariant query(QueryType type, QVariant in) const
{
switch (type) {
case DateTimeFormatLong: return QLatin1String("dddd ddd dd d MMMM MMM MM M yyyy hh:mm:ss.zzz");
case DateTimeFormatShort: return QLatin1String("d M yy h:m");
case DateTimeToStringLong:
case DateTimeToStringShort:
return in.toDateTime().toString(type == DateTimeToStringShort
? QLatin1String("dMyyhm")
: QLatin1String("ddMMyyyyhhmmsszzz"));
default:
break;
}
return QSystemLocale::query(type, in);
}
};
void tst_QLocale::queryDateTime()
{
SystemLocale loc;
QCOMPARE(QLocale::system().dateTimeFormat(QLocale::LongFormat),
loc.query(QSystemLocale::DateTimeFormatLong, QVariant()).toString());
QCOMPARE(QLocale::system().dateTimeFormat(QLocale::ShortFormat),
loc.query(QSystemLocale::DateTimeFormatShort, QVariant()).toString());
QCOMPARE(QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::ShortFormat),
QString("1127412"));
QCOMPARE(QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::NarrowFormat),
QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::ShortFormat));
QCOMPARE(QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::LongFormat),
QString("01121974010203004"));
}
void tst_QLocale::ampm() void tst_QLocale::ampm()
{ {
QLocale c(QLocale::C); QLocale c(QLocale::C);