From 7f50eca469a24809d6d5812ee94b447966ff81f9 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Tue, 14 Jan 2014 12:34:35 +0100 Subject: Allow assignment of a QML Locale object to a C++ QLocale property. Task-number: QTBUG-36125 Change-Id: I58454db0c47684aed3e95c52a8135fd5fd6bf2f9 Reviewed-by: Simon Hausmann --- src/qml/qml/qqmllocale_p.h | 58 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) (limited to 'src/qml/qml/qqmllocale_p.h') diff --git a/src/qml/qml/qqmllocale_p.h b/src/qml/qml/qqmllocale_p.h index 8ca67a8c83..1f26f1834f 100644 --- a/src/qml/qml/qqmllocale_p.h +++ b/src/qml/qml/qqmllocale_p.h @@ -118,7 +118,8 @@ public: Saturday = Qt::Saturday }; - static QV4::ReturnedValue locale(QV8Engine *v8engine, const QString &lang); + static QV4::ReturnedValue locale(QV8Engine *v8engine, const QString &localeName); + static QV4::ReturnedValue wrap(QV8Engine *engine, const QLocale &locale); static void registerStringLocaleCompare(QV4::ExecutionEngine *engine); @@ -128,6 +129,61 @@ private: static QV4::ReturnedValue method_localeCompare(QV4::CallContext *ctx); }; +class QQmlLocaleData : public QV4::Object +{ + Q_MANAGED +public: + QQmlLocaleData(QV4::ExecutionEngine *engine) + : QV4::Object(engine) + { + setVTable(&static_vtbl); + } + + QLocale locale; + + static QLocale *getThisLocale(QV4::CallContext *ctx) { + QQmlLocaleData *thisObject = ctx->callData->thisObject.asObject()->as(); + if (!thisObject) { + ctx->throwTypeError(); + return 0; + } + return &thisObject->locale; + } + + static QV4::ReturnedValue method_currencySymbol(QV4::CallContext *ctx); + static QV4::ReturnedValue method_dateTimeFormat(QV4::CallContext *ctx); + static QV4::ReturnedValue method_timeFormat(QV4::CallContext *ctx); + static QV4::ReturnedValue method_dateFormat(QV4::CallContext *ctx); + static QV4::ReturnedValue method_monthName(QV4::CallContext *ctx); + static QV4::ReturnedValue method_standaloneMonthName(QV4::CallContext *ctx); + static QV4::ReturnedValue method_dayName(QV4::CallContext *ctx); + static QV4::ReturnedValue method_standaloneDayName(QV4::CallContext *ctx); + + static QV4::ReturnedValue method_get_firstDayOfWeek(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_measurementSystem(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_textDirection(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_weekDays(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_uiLanguages(QV4::CallContext *ctx); + + static QV4::ReturnedValue method_get_name(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_nativeLanguageName(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_nativeCountryName(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_decimalPoint(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_groupSeparator(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_percent(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_zeroDigit(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_negativeSign(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_positiveSign(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_exponential(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_amText(QV4::CallContext *ctx); + static QV4::ReturnedValue method_get_pmText(QV4::CallContext *ctx); + +private: + static void destroy(Managed *that) + { + static_cast(that)->~QQmlLocaleData(); + } +}; QT_END_NAMESPACE -- cgit v1.2.3