From ab536c3c71deaaa3b67ca87c47628355d9f348e8 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Thu, 21 Jun 2012 17:44:04 +0200 Subject: Make QCalendarWidget use its locale's firstDayOfWeek. QCalendarWidget currently uses Qt::Sunday as the default first day of the week. It has been suggested that a better user experience would see the calendar's locale be used instead. Task-number: QTBUG-19811 Change-Id: I4441bf9ffd52213ef622a4a7f498530b7cc9e110 Reviewed-by: Olivier Goffart Reviewed-by: Denis Dzyubenko --- .../qcalendarwidget/tst_qcalendarwidget.cpp | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'tests/auto/widgets') diff --git a/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp b/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp index 4857900dc8..1b48278b0a 100644 --- a/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp +++ b/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp @@ -73,6 +73,8 @@ private slots: void setWeekdayFormat(); void showPrevNext_data(); void showPrevNext(); + + void firstDayOfWeek(); }; // Testing get/set functions @@ -361,5 +363,41 @@ void tst_QCalendarWidget::showPrevNext() } } +void tst_QCalendarWidget::firstDayOfWeek() +{ + // Ensure the default locale is chosen. + QCalendarWidget calendar; + QLocale locale; + QCOMPARE(calendar.firstDayOfWeek(), locale.firstDayOfWeek()); + + QLocale germanLocale(QLocale::German); + QLocale::setDefault(germanLocale); + QCalendarWidget germanLocaleCalendar; + QCOMPARE(germanLocaleCalendar.firstDayOfWeek(), germanLocale.firstDayOfWeek()); + + // Ensure calling setLocale works as well. + QLocale frenchLocale(QLocale::French); + calendar.setLocale(frenchLocale); + QCOMPARE(calendar.firstDayOfWeek(), frenchLocale.firstDayOfWeek()); + + // Ensure that widget-specific locale takes precedence over default. + QLocale::setDefault(QLocale::English); + QCOMPARE(calendar.firstDayOfWeek(), frenchLocale.firstDayOfWeek()); + + // Ensure that setting the locale of parent widget has an effect. + QWidget* parent = new QWidget; + calendar.setParent(parent); + QLocale hausaLocale(QLocale::Hausa); + parent->setLocale(hausaLocale); + QCOMPARE(calendar.firstDayOfWeek(), hausaLocale.firstDayOfWeek()); + + // Ensure that widget-specific locale takes precedence over parent. + calendar.setLocale(germanLocale); + // Sanity check... + QCOMPARE(calendar.locale(), germanLocale); + QCOMPARE(parent->locale(), hausaLocale); + QCOMPARE(calendar.firstDayOfWeek(), germanLocale.firstDayOfWeek()); +} + QTEST_MAIN(tst_QCalendarWidget) #include "tst_qcalendarwidget.moc" -- cgit v1.2.3