From b7f5cb186df211c1bfcdbaee06fb7ce9146e9a0e Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Tue, 19 Feb 2019 15:51:03 +0100 Subject: Update the CalendarHeaderModel when changing the locale set Change-Id: I8af18ebfcc77f6080cfd5f0cade5042d0cd4a9a4 Fixes: QTBUG-73765 Reviewed-by: Mitch Curtis --- src/controls/Private/CalendarHeaderModel.qml | 7 +++++-- src/controls/Styles/Base/CalendarStyle.qml | 1 + tests/auto/controls/data/tst_calendar.qml | 8 ++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/controls/Private/CalendarHeaderModel.qml b/src/controls/Private/CalendarHeaderModel.qml index b978dbdc..40328a8b 100644 --- a/src/controls/Private/CalendarHeaderModel.qml +++ b/src/controls/Private/CalendarHeaderModel.qml @@ -89,7 +89,10 @@ ListModel { dayOfWeek: Locale.Saturday } - Component.onCompleted: { + Component.onCompleted: updateFirstDayOfWeek() + onLocaleChanged: updateFirstDayOfWeek() + + function updateFirstDayOfWeek() { var daysOfWeek = [Locale.Sunday, Locale.Monday, Locale.Tuesday, Locale.Wednesday, Locale.Thursday, Locale.Friday, Locale.Saturday]; var firstDayOfWeek = root.locale.firstDayOfWeek; @@ -97,7 +100,7 @@ ListModel { var shifted = daysOfWeek.splice(firstDayOfWeek, daysOfWeek.length - firstDayOfWeek); daysOfWeek = shifted.concat(daysOfWeek) - if (firstDayOfWeek !== Locale.Sunday) { + if (firstDayOfWeek !== root.get(0).dayOfWeek) { for (var i = 0; i < daysOfWeek.length; ++i) { root.setProperty(i, "dayOfWeek", daysOfWeek[i]); } diff --git a/src/controls/Styles/Base/CalendarStyle.qml b/src/controls/Styles/Base/CalendarStyle.qml index 20459274..ef0cb779 100644 --- a/src/controls/Styles/Base/CalendarStyle.qml +++ b/src/controls/Styles/Base/CalendarStyle.qml @@ -410,6 +410,7 @@ Style { anchors.leftMargin: (control.weekNumbersVisible ? weekNumbersItem.width : 0) anchors.right: parent.right spacing: gridVisible ? __gridLineWidth : 0 + property alias __repeater: repeater Repeater { id: repeater diff --git a/tests/auto/controls/data/tst_calendar.qml b/tests/auto/controls/data/tst_calendar.qml index 1f8d9a8d..08bd756d 100644 --- a/tests/auto/controls/data/tst_calendar.qml +++ b/tests/auto/controls/data/tst_calendar.qml @@ -985,5 +985,13 @@ Item { compare(testcase.aysncDelegatesDestructed[i], true); } } + + function test_firstDayOfWeekAfterLocaleChange() { + calendar.selectedDate = new Date(2013, 0, 1); + calendar.locale = Qt.locale("en"); + compare(calendar.__panel.dayOfWeekHeaderRow.__repeater.model.get(0).dayOfWeek, 0) + calendar.locale = Qt.locale("fr"); + compare(calendar.__panel.dayOfWeekHeaderRow.__repeater.model.get(0).dayOfWeek, 1) + } } } -- cgit v1.2.1