summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2019-02-19 15:51:03 +0100
committerAndy Shaw <andy.shaw@qt.io>2019-02-20 09:36:23 +0000
commitb7f5cb186df211c1bfcdbaee06fb7ce9146e9a0e (patch)
tree4fdbdf582a4e4d8ce84392ed928a44ae3912c239
parent65d61277be164a0781f9b57873afc000f36073fa (diff)
downloadqtquickcontrols-b7f5cb186df211c1bfcdbaee06fb7ce9146e9a0e.tar.gz
Update the CalendarHeaderModel when changing the locale set
Change-Id: I8af18ebfcc77f6080cfd5f0cade5042d0cd4a9a4 Fixes: QTBUG-73765 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r--src/controls/Private/CalendarHeaderModel.qml7
-rw-r--r--src/controls/Styles/Base/CalendarStyle.qml1
-rw-r--r--tests/auto/controls/data/tst_calendar.qml8
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)
+ }
}
}